当前位置:文档之家› 密码学课程实验指导书

密码学课程实验指导书

密码学课程实验指导书一、密码学课程实验的意义当前,重视实验与实践教育是各国高等教育界的发展潮流,实验与实践教学与理论教学是相辅相成的,具有同等重要的地位。

它是在开放教育的基础上,为配合理论教学、培养学生分析问题和解决问题的能力以及加强训练学生专业实践能力而设置的教学环节;对于完成教学计划、落实教学大纲,确保教学质量,培养学生分析问题、解决问题的能力和实践操作技能更具有特别重要的意义。

密码学是信息安全与保密技术的核心,是一门实践性非常强的课程,实践教学是培养密码技术应用性人才的重要途径,实践教学质量的好环,实际上也决定了应用型人才培养质量的高低。

因此,加强密码学课程实践教学环节,提高实践教学质量,对培养高质量的应用型人才至关重要。

二、实验的目的与要求本实验指导书并不给出一些非常具体的实验步骤,让学生们照着做一遍的实验“指导书”。

这样的实验无法发掘这群充满活力的人群的智慧和创造性。

本书中的每个实验都是按照这种模式编写的:先给出有关的理论介绍,然后抛砖引玉地给出几范例,再给出一个简单的实验要求。

同时,希望每个实验都完成准备-预约-实验-答辩4个环节。

实验内容包含对称密码和公钥密码二个方面,以DES和RSA为代表通过具体实验使学生掌握这二类密码的结构、特性、攻击方法以及实际应用技术。

第一部分数据加密标准DES1.实验目的(1)掌握DES中各加密函数对其性能影响;(2)DES的特性分析,包括互补性和弱密钥;(3)DES的实际应用,包括各种数据类型的加/脱密、DES的短块处理。

2.实验原理信息加密根据采用的密钥类型可以划分为对称密码算法和非对称密码算法。

对称密码算法是指加密系统的加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个,更形象的说就是用同一把钥匙开锁和解锁。

在对称密码算法的发展历史中曾出现过多种优秀的算法,包括DES 、3DES 、AES 等。

下面我们以DES 算法为例介绍对称密码算法的实现机制。

DES 算法是由美国IBM 公司在20世纪70年代提出,并被美国政府、美国国家标准局和美国国家标准协会采纳和承认的一种标准加密算法。

它属于分组加密算法,即在明文加密和密文解密过程中,信息都是按照固定长度分组后进行处理的。

混淆和扩散是它采用的两个最重要的安全特性。

混淆是指通过密码算法使明文和密文以及密钥的关系非常复杂,无法从数学上描述或者统计。

扩散是指明文和密钥中每一位信息的变动,都会影响到密文中许多位信息的变动,从而隐藏统计上的特性,增加密码的安全。

DES 算法将明文分成64位大小的众多数据块,即分组长度为64位,同时用56位密钥对64位明文信息加密,最终形成64位的密文。

如果明文长度不足64位,则将其扩展为64位(如补零等方法)。

具体加密过程首先是将输入的数据进行初始换位(IP ),即将明文M 中数据的排列顺序按一定的规则重新排列,生成新的数据序列,以打乱原来的次序。

然后将变换后的数据平分成左右两部分,左边记为L 0,右边记为R 0,然后对R 0实行在子密钥(由加密密钥产生)控制下的变换f ,结果记为01(,)f R K ,再与L 0做逐位异或运算,其结果记为R 1,R 0则作为下一轮的L 1。

如此循环16轮,最后得到L 16、R 16。

再对L 16、R 16实行逆初始置换IP -1,即可得到加密数据。

解密过程与此类似,不同之处仅在于子密钥的使用顺序正好相反。

DES 全部16轮的加密过程如图1-1所示。

DES 的加密算法包括3个基本函数。

1.初始换位(IP )它的作用是把输入的64位数据块的排列顺序打乱,每位数据按照下面换位规则重新组合,即将第58位换到第1位,第50位换到第2位,……,依次类推,重组后的64位输出分为L 0、R 0(左、右)两部分,每部分分别为32位。

58,50,42,36,18,10,2,60,52,44,36,28,20,12,462,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,361,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7 R 0和K 1经过01(,)f R K 变换后的输出结果,再和L 0进行异或运算,输出结果做为R 1,R 0则赋给L 1。

L 1和R 1同样再做类似运算生成L 2和R 2,……,经过16次运算后生成L 16的R 16。

2.f 函数f 函数是多个置换函数和替代函数的组合函数,它将32位比特的输入变换为32位的输出,如图1-2所示。

R i 经过扩展运算E 变换后扩展为48位的i E(R ),与K i+1进行异或运算后输出的结果分成8组,每组6比特的并联B ,B=B 1B 2B 3B 4B 5B 6B 7B 8,再经过8个S 盒的选择压缩运算转换为4位,8个4位合并为32位后再经过P 变换输出为32位的i i+1f(R ,K )。

其中,扩展运算E 与置换P 主要作用是增加算法的扩展效果。

4.逆初始置换函数IP-1它将L16和R16作为输入,进行逆初始换位得到密文输出。

逆初始换位是初始位的逆运算,换位规则如下所列:40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,3138,6,46,14,54,22,62,30,37,5,45,13,53,21,61,2936,4,44,12,52,20,60,28,35,3,43,11,51,19,59,2734,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25DES的加密算法中除了上面介绍的3个基本函数,还有一个非常重要的功能模块,即子密钥的生成模块,具体子密钥的产生流程如图1-3所示。

输入的初始密钥值为64位,但DES算法规定,基中第8、16、 (64)是奇偶检验位,不参与EDS运算。

所以,实际可用位数只有56位,经过缩小选择换位表1-1即密钥置换PC-1的变换后,初始密钥的位数由64位变成了56位,将其平分为两部分C0、D0,然后分别进行第1次循环左移,得到C1、D1,将C1(28位)合并后得到56位的输出结果,再经过缩小选择换位表1-2即密钥置换PC-2,从而得到了密钥K1(48位),依次类推,便可得到K2、……、K16。

需要注意的是,16次循环左移对应的左移位数要依据表1-3的规则进行。

3.实验环境运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VS(Windows)等C语言编译环境。

4.实验题目及要求表1-1 缩小选择换位表1表1-2 缩小选择换位表2表1-3 左移位数规则实验1 DES的编程实现(1)实验原理本实验的原理包括DES算法的加密过程、脱密过程和16个内部密钥生成过程,已在前面进行详细地描述。

(2)实验要求① 输入加密密钥和一串有意义的汉字,显示相应的加密结果;输入密文和脱密密钥,显示所还原的一串有意义的汉字。

② 设计用户界面,界面中要有加/脱密选择、输入明/密文栏、密钥栏和加/脱密结果显示栏。

实验2 DES 的短块处理(1)实验意义在采用DES 实施加密的实际应用中,为增加安全性,通常要求明文的长度等于密文的长度,特别是在对数据库的数据项加密时有这一要求,因此必须设计一种有效的处理方法,使得当明文长度不是64bit 倍数时,加密产生的结果满足上述要求。

(2)实验原理① 将明文X 按64bit 分块,若X 的长度为64bit 的倍数时,则按常规的方法实施加密否则② 设121n n x x x x x +=,其中1n x +长度<64bit (称为短块),加密方式如图1-4所示,脱密方式如图1-5所示。

图1-4 含有短块的加密方式图1-5 含有短块的脱密方式 (3)实验要求① 针对有短块和无短块二种情况,编写并实现具有短块处理功能的DES 通用加/脱密软件。

②短块处理对用户透明。

③设计用户界面,其结构与实验1的用户界面基本相同,但要增设明文长度和密文长度栏。

实验3 DES弱密钥过滤软件设计(1)实验原理①DES中弱密钥的危害<1>明文加密二次后还原成明文<2> 存在232个明文,其密文=明文②过滤软件设计原理弱密钥是使16个内部密钥相同的密钥,由DES的密钥生成算法推出它的4个弱密钥③过滤软件设计<1> 编程求出4个弱密钥<2> 每当用户输入密钥K时,将K与四个弱密钥比较,若K不是弱密钥,则取定密钥K,否则界面窗口显示“请重新输入一个新密钥”的提示。

(2)实验要求①设计用户界面,当用户输入弱密钥时会出现提示信息②编制过滤程序,实现对弱密钥的过滤实验4 DES密码强度测试软件设计(1)实验原理①密文的随机性密文的随机性反映了密码的强度,通过设计随机性测试算法来测试DES的密码强度②随机性测试方法对于一个用DES加密产生的密文序列,分别以下面三种情况设计测试随机性工具<1> 0和1在密文中所占比例<2> 00、01、10、11在密文中所占比例<3> 000、001、010、011、100、101、110、111在密文中所占比例(2)实验要求①设计随机性测试工具②设计用户界面,显示测试结果③修改DES的S盒,对修改后的DES密文进行随机性测试,显示测试结果,在实验报告中对结果进行评价。

第二部分公钥密码RSA1.实验目的①通过实际编程掌握非对称密码算法RSA的加密和解密以及快速加、解密过程,加深对非对称密码算法的认识。

②实现对RSA的解密密钥攻击。

2.实验原理前面讲的对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥的管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。

非对称密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。

在非对称密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。

非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证手段,是现代密码学最重要的发明。

RSA密码体制是目前为止最成功的非对称密码算法,它是在1977年由Rivest、Shamir和Adleman提出的第一个比较完善的非对称密码算法。

它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。

虽然它的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。

相关主题