实验五-对称密码基本加密实验-DES、3DES

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验五对称密码基本加密实验-DES、3DES【实验目的】理解对称密码体制和分组密码算法的基本思想理解DES、3DES等算法的基本原理掌握上述密码算法的输入输出格式和密钥格式掌握上述密码算法的加解密过程和实现方法【实验原理】对称密码体制使用相同的加密密钥和解密密钥,其安全性主要依赖于密钥的保密性。分组密码是对称密码体制的重要组成部分,其基本原理为:将明文消息编码后的序列m0,m1,m2,…,mi划分为长度为L(通常为64或128)位的组m=(m0,m1,m2,…,mL-1),每组分别在密钥k=(k0,k1,k2,…,kt-1)(密钥长度为t)的控制下变换成等长的一组密文输出序列c=(c0,c1,c2,…,cL-1)。分组密码的模型如下图所示:加密算法m=(m0,m1,m2,…,mL-1)明文分组密文分组c=(c0,c1,c2,…,cL-1)k=(k0,k1,k2,…,kt-1)k=(k0,k1,k2,…,kt-1)m=(m0,m1,m2,…,mL-1)明文分组加密算法分组密码实际上是在密钥的控制下,从一个足够大和足够好的置换子集中简单而迅速地选出一个置换,用来对当前输入的明文分组进行加密变换。现在所使用的对称分组加密算法大多数都是基于Feistel分组密码结构的,遵从的基本指导原则是Shannon提出的扩散和混乱,扩散和混乱是分组密码的最本质操作。分组密码与流密码的对比:分组密码以一定大小的分组作为每次处理的基本单元,而流密码则以一个元素(如一个字母或一个比特)作为基本的处理单元;流密码使用一个随时间变化的加密变换,具有转换速度快、低错误传播的优点,软硬件实现简单,缺点是低扩散、插入及修改不敏感;分组密码使用的是一个不对时间变化的固定变换,具有扩散性好、插入敏感等优点,缺点是加解密处理速度慢、存在错误传播。一、DES算法数据加密标准(DataEncryptionStandard,DES)中的算法是第一个也是最重要的现代对称加密算法,其分组长度为64比特,使用的密钥长度为56比特(实际上函数要求一个64位的密钥作为输入,但其中用到的有效长度只有56位,剩余8位可作为奇偶校验位或完全随意设置),DES加解密过程类似,加解密使用同样的算法,唯一不同的是解密时子密钥的使用次序要反过来。DES的整个体制是公开的,系统安全性完全依靠密钥的保密。DES的运算可分为如下三步:(1)对输入分组进行固定的“初始置换”IP,可写为(L0,R0)=IP(输入分组),其中L0和R0称为“(左,右)半分组”,都是32比特的分组,IP是公开的固定的函数,无明显的密码意义。(2)将下面的运算迭代16轮(i=1,2,…,16):Li=Ri-1,Ri-1=Li-1f(Ri-1,ki);这里ki称为轮密钥,是56比特输入密钥的一个48比特字串,f称为S盒函数(S表示交换),是一个代换密码,目的是获得很大程度的信息扩散。(3)将十六轮迭代后得到的结果(L16,R16)输入到IP的逆置换来消除初始置换的影响,这一步的输出就是DES算法的输出,即输出分组=IP-1(R16,L16),此处在输入IP-1之前,16轮迭代输出的两个半分组又进行了一次交换。DES的加密与解密算法都是用上述三个步骤,不同的是如果在加密算法中使用的轮密钥为k1,k2,…,k16,则解密算法中的轮密钥就应当是k16,k15,…,k1,可记为(k1`,k2`,…,k16`)=(k16,k15,…,k1)。DES算法的一轮迭代处理过程如下图所示:Ri-1(32位)Li-1(32位)Ri(32位)Li(32位)+密钥产生器F变换扩展变换E选择压缩变换S盒代替置换运算P+Ki48位48位48位32位32位在加密密钥k下,将明文消息m加密为密文c,使用DES将c在k下解密为明文,解密过程如下:(L0`,R0`)=IP(c)=IP(IP-1(R16,L16)),即(L0`,R0`)=(R16,L16);在第一轮中,L1`=R0`=L16=R15,R1`=L0`f(R0`,k1`)=R16f(L16,k1`)=[L16f(R15,k16)]f(R15,k16)=L15,即(L1`,R1`)=(R15,L15);同样的,在接下来的15轮迭代中,可以得到(L2`,R2`)=(R14,L14),……,(L16`,R16`)=(R0,L0);最后一轮结束后,交换L16`和R16`,即(R16`,L16`)=(L0,R0),IP-1(L0,R0)=IP-1(IP(m))=m,解密成功。二、3DES算法DES的一个主要缺点是密钥长度较短,同时也被认为是DES仅有的最严重的弱点,容易遭受穷举密钥搜索攻击。克服密钥较短缺陷的一个解决方法是使用不同的密钥,多次运行DES算法,3DES应运而生。3DES具有四种使用模式,其中的一种为加密-解密-加密的3DES方案,加解密过程可表示为:,其中。【实验环境】ISES客户端MicrosoftCLRDebugger2005或其它调试器【实验内容】通过运算器工具实现DES、3DES算法的加解密计算通过流程演示工具完成DES算法加解密运算的逐步演示和实例演示通过轮密钥查看工具查看3DES对DES、3DES算法的加解密进行扩展实验对DES、3DES算法的加解密进行算法跟踪【实验步骤】一、DES在加密算法选项里选择DES,以下实验步骤保持算法不变。(一)加解密计算(1)加密在明文栏的下拉菜单里选择文本或十六进制,然后在后面相应的文本框内输入所要加密的明文;在密钥栏的下拉菜单里选择文本或十六进制,然后在后面相应的文本框内输入相应的密钥;点击“加密”按钮,在密文文本框内就会出现加密后的密文;结果如下所示:(2)解密在密文栏相应的文本框内输入所要解密的密文;在密钥栏的下拉菜单里选择文本或十六进制,然后在后面相应的文本框内输入相应的密钥;点击“解密”按钮,在明文文本框内就会出现解密后的明文。(二)分步演示(1)点击“扩展实验”框中的“DES分步演示”按钮,进入DES分步演示窗口,打开后默认进入分步演示页面。(2)密钥生成在“子密钥产生过程”框中,选择密钥的输入形式后,输入密钥;DES要求密钥长度为64位,即选择“ASCII”(输入形式为ASCII码)时应输入8个字符,选择“HEX”(输入形式为十六进制)时应输入16个十六进制码;点击“比特流”按钮生成输入密钥的比特流;点击“等分密钥”按钮,将生成的密钥比特流进行置换选择后,等分为28位的C0和D0两部分;分别点击两侧的“循环左移”按钮,对C0和D0分别进行循环左移操作(具体的循环左移的移位数与轮序有关,此处演示为第一轮,循环左移1位),生成同样为28位的C1和D1;点击“密钥选取”按钮,对C1和D1进行置换选择,选取48位的轮密钥,此处生成第一轮的密钥K1。上述密钥生成过程如下图所示:(3)加密过程在“加密过程”框中,选择明文的输入形式后,输入明文;DES要求明文分组长度为64位,输入要求参照密钥输入步骤;点击“比特流”按钮生成输入的明文分组的比特流;点击“初始置换IP”对明文比特流进行初始置换,并等分为32位左右两部分L0和R0;点击“扩展置换E”按钮对32位R0进行扩展置换,将其扩展到48位;点击“异或计算”按钮,将得到的扩展结果与轮密钥K1进行异或,得到48位异或结果;分别点击“S1”、“S2”、…、“S8”按钮,将得到的48位异或结果通过S代换产生32位输出;点击“异或计算”按钮,将得到的32位输出与L0进行异或,得到R1;同时令L1=R1,进入下一轮加密计算。依次进行16轮计算,最终得到L16和R16;点击“终结置换”按钮,对交换后的L16和R16进行初始逆置换IP-1,即可得到密文。(三)DES实例(1)点击DES分步演示窗体中的“DES实例”标签,进入DES实例演示页面。(2)加密实例输入明文、初始化向量和密钥,选择工作模式和填充模式,点击“加密”按钮,对输入的明文使用DES算法按照选定的工作模式和填充模式进行加密;在轮密钥显示框内以十六进制显示各轮加密使用的密钥,加密结果以两种形式显示在密文框中。上述过程如下图所示。(3)解密实例输入密文、密钥和初始化向量,选择工作模式和填充模式,点击“解密”按钮,对输入的密文使用DES算法按照选定的工作模式和填充模式进行解密;在轮密钥显示框内以十六进制显示各轮加密使用的密钥,解密结果以两种形式显示在明文框中。(四)DES扩展实验(1)点击“扩展实验”框中的“DES扩展实验”按钮,进入DES扩展实验窗口,打开后默认进入扩展实验主页面,进行加解密。(2)确保在主窗口中选中了“加密”按钮,将DES的工作模式设置为“加密运算”。(3)文本框内输入待加密16个字节长的明文ASCII码串(64比特),16个字节长的密钥ASCII码串(64比特),点击“运行”按钮,得到DES的加密结果,如下图所示。(4)观察“初始置换”(初始置换IP)。在主窗口中点击“初始置换”按钮,进入“首置换”卡片,再次点击“运行”,即可观察明文的初始变换过程,如下图所示。可以根据需要,调节变换显示的速度。(5)观察密钥变换。在主窗口中点击“密码表”按钮,打开密码变换卡片组。①选择“密码表”卡片,观察16轮加密变换的密钥,如下图所示。②选择“密码盒”卡片,观察16轮加密变换密钥的生成过程。点击“置换选择1”按钮,得到该密钥的初始变换,选择想要测试加密密钥的轮次,再点击“置换选择2”按钮,即可得到相应的加密密钥,如下图所示。初始置换IP置换选择2循环左移位数表(6)观察加密函数。点击主窗口的“F(Ri,Ki+1)”按钮,进入加密函数变换卡片。①依次顺序点击“F(Ri,Ri+1)”卡片中的各个按钮,可以得到“选择运算E”、“代替函数组S”和“置换运算P”的运算结果,如下图所示。②选择“F(Ri,Ri+1)”卡片右下角的“Ebox”、“Sbox”或“Pbox”,并点击“查看”按钮,可以详细观察相应的变换过程,如下图所示(以Ebox为例)。(7)观察“末置换”(逆初始变换IP-1)。在主窗口中点击“末置换”按钮,进入“末置换”卡片,再次点击“运行”,即可观察加密过程的末置换(逆初始变换IP-1)的执行过程,如下图所示。只有当主窗口中循环轮次等于16时,“末置换”按钮才变为有效的,否则无法激活该窗口。(8)解密时,确保在主窗口中选中了“解密”按钮,将DES的工作模式设置为“解密运算”文本框内输入待解密16个字节长的密文ASCII码串(64比特),16个字节长的密钥ASCII码串(64比特),点击“运行”按钮,得到DES的解密结果,如下图所示。解密运算的其他过程与加密过程一样,不再赘述。(五)算法跟踪选择DES算法,在算法计算的相应区域输入明/密文和密钥;点击“跟踪加密”/“跟踪解密”按钮,进入调试器,选择对应的算法函数进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。具体步骤可参照古典密码实验中实验步骤二。二、3DES在加密算法选项里选择3DES,以下实验步骤保持算法不变。(一)加解密计算选择明/密文和密钥的格式,输入明/密文和密钥;点击“加密”/“解密”按钮,进行加/解密计算;查看计算结果。具体步骤可参照DES的加解密计算的实验步骤。(二)查看轮密钥(1)点击“扩展实验”框中的“查看轮密钥”按钮,进入查看轮密钥窗体。(2)输入明文、初始化向量和密钥,密钥长度为128位或192位,对应于原理中的两种情况,此处以输入128位密钥为例;选择工作模式和填充模式,点击“加密”按钮,使用3DES算法按照选定的工作模式和填充模式进行加密;在“密钥”框中查看各轮的密钥,在“密文”框中查看生成的密文。(三)扩展实验(1)点击扩展实验下的“3DES扩展实验”按钮,进入3DES扩展实验主窗体,(2)点击主窗体内最左边的“3DES密码”按钮,进入3DES加解密实验。分别在“明文ACSII码串”、“密钥K1的ASCII码串”中输入16个十六进制的数值,点击左上角的“DES”按钮,在“一重DES密文ASCII码串”

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功