计算机 密码学 实验二:对称密码算法DES
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二:对称密码算法DES 安全0901 王宇航 09283020
实验报告
实验目的:
1. 掌握DES算法的基本原理
2. 掌握DES算法输入输出格式
3. 掌握DES算法的密钥格式
4. 掌握DES算法加解密过程
实验原理:
信息加密根据所采用的密钥类型可分为对称密码算法和非对称密码算法。
对称密码算法是指加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个。
在对称密码发展历史上,曾经出现过很多优秀的算法,包括DES,3des,AES等,本部分我们以des,AES,SMS4为例介绍对称密码算法的实现机制。
1、数据加密标准(DES)简介
1973年,美国国家标准局(NBS)在认识到建立数据保护标准既明显又急迫需要的情况下,开始征集联邦数据加密标准的方案。
1975年3月17日,NBS公布了IBM公司提供的密码算法,以标准建议的形式在全国范围内征求意见。
经过两年多的公开讨论之后,1977年7月15日,NBS宣布接受这个建议,作为联邦信息处理标准46号,数据加密标准(Data Encryption Standard),即DES正式颁布,供商业界和非国防性政府部门使用。
DES是将二进制序列的明文分成每64bit一组,用长为64bit的密钥对其进行16轮代换和换位加密,最后形成密文。
DES的巧妙之处在于,除了密钥输入顺序之外,其加密和解密的步骤完全相同,这就使得在制作DES芯片时,易于做到标准化和通用化,这一点尤其适合现代通信的需要。
在DES出现以后,经过许多专家学者的分析论证,证明它是一种性能良好的数据加密算法,不仅随机特性好,线性复杂度高,而且易于实现,加上能够标准化和通用化,因此,DES在国际得到了广泛的应用。
DES是一种对称密码体制,它所使用的加密和解密密钥是相同的,是一种典型的按分组方式工作的密码。
其基本思想是将二进制序列的明文分成每64bit 一组,用长为64bit的密钥对其进行16轮代换和换位加密,最后形成密文。
DES 的巧妙之处在于,除了密钥输入顺序之外,其加密和解密的步骤完全相同,这就使得在制作DES芯片时,易于做到标准化和通用化,这一点尤其适合现代通信的
需要。
在DES出现以后,经过许多专家学者的分析论证,证明它是一种性能良好的数据加密算法,不仅随机特性好,线性复杂度高,而且易于实现,加上能够标准化和通用化,因此,DES在国际得到了广泛的应用。
2、DES加密、解密原理
DES工作的基本原理是,其入口参数有三个:key、data、mode。
key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。
当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式
为解密模式时,key用于对数据解密。
DES的过程是:加密前,先将明文分成64位的分组,然后将64位二进制码输入到密码器中。
密码器对输入的64位码首先进行初始置换,然后在64位主密钥产生的16个子密钥控制下进行16轮乘积变换,接着再进行末置换,即可得到64位已加密的密文。
DES算法的主要步骤如
图2-1所示。
图2-1 DES算法框图
假定信息空间都是{0,1}组成的字符串,信息被分成64位的块,密钥是56位。
经过DES加密的密文也是64位的块。
设m是一个64位的信息块,k为56
位的密钥,即:
m=m1,m2,…,m64k=k1,k2,…,k64
其中k8,k16,k24,k32,k40,k48,k56,k64是奇偶校验位。
真正起作用的
密钥仅56位。
下面分别介绍DES各个部分的细节。
1、初始置换IP
将64个明文比特的位置进行置换,得到一个乱序的64位明文组,然后分成左右两段,每段为32位,以L0和R0表示,如图2-2所示。
如图可知IP中各列元素位置号数相差为8,相当于将原明文各字节按列写出,各列比特经过偶采样和奇采样置换后,再对各行进行逆序,然后将阵中元素按行读出。
例如:输入 m=m1,m2,…,m64
输出IP(m)= m58,m50,m42…,m15,m7
图2-2初始置换IP
2、逆初始置换IP-1
将16轮迭代后给出的64位组进行置换,得到输出的密文组,如图2-3所示。
输出结果为阵中元素按行读的结果。
注意到IP 中的第58位正好是1,也就是说
在IP的置换下第58位换为第一位,同样,在IP 的置换
下,应将第1位换回第58位,依此类推。
由此可见,输
入组m和IP (IP(m))是一样的。
IP和IP-1在密码上
的意义不大,它的作用在于打乱原来输入m的ASCII码
字划分关系。
图2-3 逆初始置换IP-1
3、乘积变换T
它是DES算法的核心部分,如图2-4。
将经过IP置
换后的的数据分成32bit左右两组,在迭代过程中彼此
左右交换位置。
每次迭代只对右边的32bit进行一系列
的加密变换,在次轮迭代即将结束时,把左边的32bit
与右边的32bit诸位模2相加,作为下一轮迭代时右边
的段,并将原来右边的未经变
换的段直接送到左边的寄存器中作为下一轮迭代时左边的段。
在每一轮迭代时,右边段要经过选择扩展运算E,密钥加密运算,选择压缩运算S,置换运算P和左右混合运算。
图2-4 乘积变换
4、选择扩展运算E
这个运算将数据的右半部分Ri从32位扩展到了48位。
由于这个运算改变了位的次序,重复了某些位,故被称为扩展置换。
其变换表在表2-1中给出。
令s
表示E输入的下标,则E的输出将是对原下标s≡0或1(mod 4)的各比特重复一次得到的。
即对原第32,1,4,5,8,9,12,13,16,17,20,21,24,25,28,29各位重复一次得到的数据扩展。
将表中数据按行读出即得到48位输出。
这个操作有两个目的:产生了与密钥同长度的数据以进行异或运算;提供了更长的结果,使得在替代运算时能进行压缩。
表2-1 选择扩展运算变换表
32 01 02 03 04 05
04 05 06 07 08 09
08 09 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 01
将子密钥产生器输出的48位
子密钥与选择扩展运算E输出的
48位数据按位模2相加。
如图2-5
所示。
图2-5 密钥加密运算
6、选择压缩运算S
将前面送来的48位数据自左
至右分成8组,每组6位。
然后并
行送入8个S-盒,每个S-盒为
一非线性代换网络,有4个输出。
盒S1至S8的选择函数关系如表
2-2所示。
运算S的框图在图2-6
中给出。
表2-2 DES的选择压缩函数表
8个S盒用于将将6位的输入
映射为4位的输出。
下面以S1 盒
为例说明具体变换过程:
若输入为b1b2b3b4b5b6,其中b1b6两
位二进制数表示0~3之间的某个数
b2b3b4b5四位二进制数表示0~15之间
的某个数。
在表3.1中S1盒的b1b6行
b2b3b4b5列对应一个数m,0≤m≤15,若
m用二进制表示为m1m2m3m4,则m1m2m3m4
便是它的4bit输出。
例如,输入为101100,b1b6=10=2,
b2b3b4b5=0110=6,即在S1盒中的第2行
第6列求得数2,所以它的4bit输出
为0010。
如图2-7所示。
图2-7 S盒变换
S盒是DES的核心,也是DES算法
最敏感的部分,其设计原理至今仍讳莫如深,显得非常神秘——所有的替换都是固定的,但是又没有明显的理由说明为什么要这样。
有许多密码学家担心美国国家安全局在设计S盒时隐藏了某些“陷门”,使得只有他们才可以破译算法,但在研究中并没有找到其弱点。
美国国家安全局曾透露了S盒的几条设计准则:
(1)所有的S盒都不是它输入的线性仿射函数。
换句话说,就是没有一个线性方程能将四个输出比特表示成六个输入比特的函数。
(2)改变S盒的1位输入,输出至少改变2位。
这意味着S盒是经过精心设计的,它在最大程度上增大了扩散量。
(3) S盒的任意一位输出保持不变时,0和1的个数之差极小。
即如果保持一位不变而改变其它五位,那么其输出0和1的个数不应相差太多。
7、置换运算P
对S1至S8盒输出的32位数据进行坐标变换。
如图2-8所示。
置换P输出的32位数据与左边32位(即Ri-1诸位)模2相加所得到的32位作为下一轮迭代用的右边的数字段,并将 Ri-1并行送到左边的寄存器作为下一轮迭代用的左边的数字段。
图2-8 置换运算P
8、子密钥产生器
64位初始密钥经过置换选择PC-1、循环移位置换、置换选择PC-2,产生16次迭代所需的子密钥k i,如图2-9所示。
在64位初始密钥中有8位为校验位,其位置号为8,16,24,32,48,56和64。
其余56位为有效位,用于子密钥计算。
将这56位送入置换选择PC—1,参看图3-15。
经过坐标置换后分为两组,每组为28位,分别送入C寄存器和D 寄存器中。
在各次迭代中,C和D寄存器分别将存数进行左循环移位置换。
每次移位后,将C和D寄存器的存数送给置换选择PC—2,参看图2-11。
置换选择PC—2将C中第9,18,22,25位和D中第7,10,15,26位删去,并将其余数字置换位置后送出48位数字作为第i次迭代时所用的子密钥。
例如:k=k1k2…k64 则:C0=k57k49…k36 D0=k63k55…k12k4
下面介绍如何从C i、D i求C i+1、D i+1,i=0,1,2, (15)
首先要作左移(LS)运算,左移的位数见图2-9右上的表。
例如,设:C1=c1c2…c28,D1=d1d2…d28
则,C2=c2c3…c28c1,D2=d2d3…d28d1
例如:k=k1k2…k64则:
C0=k57k49…k36 D0=k63k55…k12k4
图2-9子密钥产生框图
图2-10置换选择PC -1
图2-11 置换选择PC-2
至此,我们已经将DES算法的基本构成作了介绍,加密过程可以归纳如下:
令IP表示初始置换,i为迭代次数变量,f为加密函数,k i为密钥,表示模2加。
加密过程:
L0R0←IP(64位输入码组)
L i←R i-1i=1,2,…,16
R i← L i-1 f (R i-1,k i) i=1,2,…,16
(64位密文)←IP -1(L16R16)
DES的解密过程和加密过程相似,区别仅仅在于第一次迭代时用子密钥K16,第二次K14、...,最后一次用K1,算法本身并没有任何变化。
3、DES的安全性
DES的出现是密码学史上的一个创举。
以前任何设计者对于密码体制及其设计细节都是严加保密的,而DES公开发表,任何人都可以研究和分析,无须经过许可就可以制作DES的芯片和以DES为基础的保密设备。
DES的安全性完全依赖与所用的密钥。
自从DES问世至今,尽管一开始人们就对它有颇多的担心和争议,这些年来许许多多的人对它进行各种各样的研究攻击,但是至今为止并没有人真正地破译DES。
从目前的成果来看,除了穷举搜索攻击之外,就没有更好的方法破译DES 了。
而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,但对于目前超高速计算机,强力猜测DES密钥仅需几十分钟时间。
DES的安全性已不能满足现代加密的需要,2000年美国政府宣布用新的加密算法AES取代DES尽管将。
从标准上废除,DES依然很流行(其变形三重DES 仍然相当安全)。
实验步骤:
第一轮结果的截图:
源代码文件:
实验结果截图:。