2011年9月5日

摘要: RSA算法从本节起,我们利用前面的数学知识,推导公钥密码学中的重要加解密算法:RSA算法。从数学上来讲,解密是加密的逆函数,如果用函数f来表示加密,函数g表示解密,则对于任意明文c,都有g(f(c))=c。而且加密函数f要容易计算,解密函数g则需要带有秘密的参数(即私钥)才能计算。在正式开始之前,我们回顾一下现在走到了哪里。我们得到了集合Zn,其元素是等价类,比如[0]、[-2]、[3]等。为了表述方便,在每个等价类中分别选择一个典型的元素作为等价类的代表。不出意外,它们分别是0、1、2、……、n-1共n个元素。Zn关于运算+和*构成含厶有限交换环,注意这里的交换是针对乘法运算*而言。为了保持 阅读全文
posted @ 2011-09-05 02:40 efzju 阅读(652) 评论(0) 推荐(0) 编辑
 

2011年9月4日

摘要: 数学基础(五)--群、环、域上一节后面提到几个关于元素阶的定理,为什么要强调元素的阶呢?因为由元素的阶可以产生所谓的离散对数问题(简称DLP),而DLP是密码学的数学基础之一。先回顾一下对数的概念,如果a的n次方等于b,那么称n是以a为底b的对数,给出a、b,要求n的值,就称为求解对数问题,简称对数问题。那群中的对数问题又是什么?前面已知,有限群中任意一个元素的阶都存在,并且元素的阶整除于群中元素的个数(即有限群的阶)。如果群中存在一个特殊的元素(假设记为a),满足:a的阶正好等于群的阶,则称此群为循环群,相应称a为循环群的生成元。生成元有什么用?设|a|=n=|G|,则可以证明,集合{1(单 阅读全文
posted @ 2011-09-04 02:53 efzju 阅读(1982) 评论(0) 推荐(0) 编辑
 

2011年8月14日

摘要: 数学基础(四)--群的性质声明:凡是在本系列中涉及到数学知识,我会尽量解释、证明其中的原理,但不会对所有论证细节进行推敲(此时通常都会推荐参考教科书)因为我们的目标是快速掌握密码学的基本数学基础。之所以给出较为详尽的推导过程,主要是满足一些读者刨根问底的需要。继续话题。根据定义,群(G,+)的运算满足结合律:对于任意a、b、c∈G,a+(b+c)=(a+b)+c。这条性质有什么用呢?先看一个例子,假设要将群G中的4个元素a,b,c,d用+先后串起来进行运算,有很多种运算次序,我们考虑其中的一类情况:即4个元素相对的位置顺序不变,变化的只是运算的优先级,比如:((a+b)+c)+d--先计算a+ 阅读全文
posted @ 2011-08-14 02:19 efzju 阅读(731) 评论(0) 推荐(0) 编辑
 

2011年8月2日

摘要: 数学基础(三)从本节起,我们开始进入大学数学的领域--近世代数(也称抽象代数)。先给出几个基本概念/定义。[代数运算]:对于集合A的任意元素a、b,如果按某一运算法则(通常用某个记号,比如*来表示)进行运算,可以得到唯一的结果c∈A,则称运算法则*为集合A上的一个二元代数运算。说明:1、代数运算的实质是:定义域和值域都在同一集合上的映射(或函数)。2、在此语境下,我们也说“集合A在运算法则*下封闭”,或“集合A对运算法则*封闭”,这些说法都是等价的。3、我们讨论的代数运算都只涉及2个元素,所以通常省去“二元”,称为代数运算,或者简称运算。4、需要明确的是,*只是一个运算符号,一个记号而已,我们 阅读全文
posted @ 2011-08-02 23:20 efzju 阅读(790) 评论(0) 推荐(0) 编辑
 

2011年8月1日

摘要: 数学基础(二)先复习上节我们最后讲到的[等价关系]:如果二元关系R同时满足自反、对称和传递性,称R为等价关系。Z上的同余关系~是等价关系。继续往前走……[集合的交集]:参见标准教科书。通常用符号∩表示。[集合的并集]:参见标准教科书。通常用符号∪表示。[空集]:参见标准教科书。通常用符号φ表示。[等价类]:设R是集合A上的等价关系,对于a∈A,称集合{x∈A|xRa(或aRx)}为a关于R的等价类--注意R为等价类,所以xRa等同于aRx直观意义上看,a关于R的等价类就是A中所有与a等价的元素的集合,a的等价类记为[a]。即[a]={x∈A|xRa},由集合的概念,x∈[a]←→xRa。很明显 阅读全文
posted @ 2011-08-01 00:23 efzju 阅读(822) 评论(0) 推荐(0) 编辑
 

2011年7月30日

摘要: 数学基础(一)进入数学世界后,一切都要遵从这里的规矩。通常而言,都是先给出基本的定义,再用逻辑法则进行推导,最后得到结论(有时用“定理”、“推论”表示之)。下面我们就按照这一套路,从高中的基本概念开始,逐步走入大学的数学殿堂,直至达到我们的最终目标--密码学。后面涉及的符号先说明如下:1、所有定义都以方括号[]表示 2、←、→分别表示 从右边推导左边 和 从左边推导右边 的过程 3、重要的结论,用定理表示,粗体[集合]、[元素]:一些事物的全体叫做一个集合,集合中的每一个事物称为这个集合的元素。(好象是废话,此处特意强调)举例1:全体整数(…、-2、-1、0、1、2、…),构成一个集合,称为整 阅读全文
posted @ 2011-07-30 23:38 efzju 阅读(764) 评论(0) 推荐(0) 编辑
 

2011年7月28日

摘要: 公钥密码体制初步分析下面我们来看看公钥密码体制是如何满足前述要求的,简言之,要做到在验证对方真实身份的基础上,秘密地和对方进行通信(即不被第三方知道通信内容),同时可以检测明文是否被修改(请回忆前面讲的Dolev-Yao模型中攻击者的能力),最后在通信结束后,能够让对方无法否认进行过此次通信。一、通信内容保密--对要传输的数据进行保护,让其他人无法看到/知道没问题,这个对称密码和公钥密码体制都可以做到。二、数据的完整性--能够验证接收到的数据在传输过程中是否被修改回答此问题之前,再打断一次,请注意:数据的机密性并不能保证数据的完整性,必须要通过其它手段予以确保(在讨论对称密码时已经以XOR为例 阅读全文
posted @ 2011-07-28 08:42 efzju 阅读(592) 评论(0) 推荐(0) 编辑
 

2011年7月27日

摘要: 公钥密码体制(又称为非对称密码体制)前面已经讲过对称密码体制的基本概念,下面是对应的思维导图我们现在知道,对称密码体制的一个很大的缺点就是(当然它也有优点,后面再述):密钥必须由多人共享(这也是为什么叫对称密钥的原因),安全性不完全可控。先不考虑共享密钥被主观泄露的可能,单从客观角度看,密钥泄露的可能性大小就与共享密钥的人数成正比(可以类比一下:A的钱包中有N张银行卡,B的钱包中有1张银行卡,如果两人钱包都丢了,谁会觉得更麻烦?)。另外,如果A要和多方通信,需要维护多份对称密钥,也很麻烦。有没有一种办法能够克服以上对称密钥的弊端呢?1976年,Whitfield Diffie与Martin H 阅读全文
posted @ 2011-07-27 00:40 efzju 阅读(804) 评论(0) 推荐(0) 编辑
 

2011年7月26日

摘要: 密码学模型与密码算法前已得知,用密钥处理明文的过程称为加密,加密过程在计算机上的实现称为加密算法。同理,解密过程在计算机上的实现称为解密算法,加/解密算法和后面将提到的签名/验证等算法统称为密码算法。对于保护明文的密钥自然需要通信双方加以保密,不能泄露。剩下的问题是:加/解密算法需不需要保密?乍一想,你可能会说,算法如果不保密,岂不是能够被不怀好意的第三方把明文还原出来?错!请注意,我们还有密钥。回顾前面讲到的异或的例子,假设E截获了A发给B的密文,虽然E知道加/解密算法,但是E不知道A、B之间共享的密钥,因而E仍无法得到原始的明文。所以只要保证共享密钥(此处是对称密钥)的安全性,就保证了明文 阅读全文
posted @ 2011-07-26 00:24 efzju 阅读(872) 评论(0) 推荐(0) 编辑
 

2011年7月24日

摘要: 对称密码体制是如何满足上述要求的一、通信内容保密--对要传输的数据进行保护,让其他人无法看到/知道 思路 类比 初级示例(高级示例请参见DES、AES算法) A要向B发送一个机密的消息 A要给B寄一份秘密的信件 A向B发送的消息是字符串:Love(ASCII表示为 0x4C 0x6F 0x76 0x65) A、B事先共享一个密钥A、B各有一把相同的钥匙 A、B共享密钥也是字符串:Love(这里取最简单的例子,即消息与密钥相等) A发送消息前先用密钥处理一下 A写好信后用钥匙锁上箱子 A发送前将密钥与原始消息逐位进行异或,得到的结果为 0x00 0x00 0x00 0x00 A发送处理后的消息( 阅读全文
posted @ 2011-07-24 23:41 efzju 阅读(807) 评论(0) 推荐(1) 编辑