2019-03-20 | UNLOCK

2019-3-20-DES学习

密码学中DES学习

前置基础

双射:既是单射又是满射的映射称为双射,亦称“一一映射”。
满射:值域任何元素都有至少有一个变量与之对应,那这个映射就叫做满射
单射:函数f被称为是单射时,对每一值域内的y,存在至多一个定义域内的x使得f(x) = y
双射的概念在书中介绍DES的函数f时出现

⊕异或,两边相同时为0,与0异或就是本身,对DES加解密的证明过程有帮助

DES基础

avatar
avatar
avatar
这是DES三个最重要的部分,在加解密的过程中,初始置换IP和PC-I是两个表格,比较特殊的是PC-I,PC-I只有56个表项,因为64位密钥实际上其中八的倍数位(初始是第一位)是前七位的奇校验,进行置换的时候会删掉八位校验码。

avatar
avatar
函数f:第一步是把32位的Ri根据E-盒进行扩充置换(这一步跟IP和PC-I差不多,只是置换表不一样而已),然后得到48位的结果(因为其中有16位会映射两个结果),之后和Ki(变换i轮后的密钥k)异或,得到的48位结果分成8组,每组都通过S-盒置换(8个S-盒都不一样),最后32位输出会进行一次P置换(就是简单的对应表)。

avatar
avatar
S-盒比较特殊,是一个4行*16列的查找表(每个项是一个4位二进制数),作为输入的每组的6位二进制数,头尾两位组成的数字作为行数,中间四位组成的数字作为列数(行列都以0为起始值),
比如输入1 0100 0,就是查找S-盒的10(头尾两位)行,0100列。

最后p盒置换表:

avatar

函数f中的S-盒引入了非线性,而E置换则引入了扩散,即让每一位明文对更多的密文产生影响,在DES中,16轮加密后每位密文都受到所有64位明文的影响。

最后是关于加解密为何只需要调换一下Ki的顺序(密钥变化加密的时候是左右两部分向左循环移位,其中1、2、9、16左移一位,其它轮移两位,解密时的Ki就是右移,其中第一轮不移位,2、9、16右移一位,其它轮两位),这里有一个证明公式,配合加解密的图就能看懂了(右上角的d代表解密)
avatar
⊕异或,两边相同时为0,与0异或就是本身,对没有数学基础的人配合这一点就能理解证明公式最重要的最后一步了

《深入浅出密码学》第三章学习困惑

avatar
这里有个矛盾之处,上部分说了是左右两部分移位,下面却说要嘛左部分移位,要嘛右部分移位,根据下面说的28次移位后密钥左右各28位的两部分恢复原样判断这里的要嘛应该是翻译错误。
avatar
这里的Ci和Di应该总共只有56位,感觉还是翻译错误

最后推荐《深入浅出密码学》这本书,挺适合基础薄弱的人看的,虽然部分数论证明过程还是挺难懂。

评论加载中