现代密码学实验指导书
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、
实验原理
信息加密根据采用的密钥类型可以划分为对称密码算法和非对称密码算法。对称密码算 法是指加密系统的加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导 出另一个,更形象的说是用同一把钥匙加锁和开锁。按加密模式分,对称加密算法可分为序 列密码(流密码)和分组密码(块密码)两类,两者的区别在于前者是在随时间变化的密钥 (随时间变化的函数)的作用加密每个比特(或字符) ,具有记忆性;而后则是使用相同的密 钥对不同的明文分组加密。 DES 算法是由美国 IBM 公司在 20 世纪 70 年代提出,并被美国政府、美国国家标准局和美 国国家标准协会采纳和承认的一种标准加密算法,属于分组加密算法。基本参数:分组长度: 64bit;迭代次数:16;密钥编排方案:64 为的输入中 56 位有效,并生成 16 个 48 比特的轮 密钥,基本结构:
三、实验内容
利用自己熟悉的计算机语言编写代码实现以下算法,加深掌握模运算的性质。 z z Euclid 算法、Stein 算法 扩展 Euclid 算法
四、实验方法与步骤 1. Euclid 算法和 Stein 算法
Euclid(a, b ) 1. x ← a; y ← b 2. if y = 0 return x = gcd(a, b ) 3. r = x %y 4. x ← y 5. y ← r 6. goto 2
二、
实验原理
本实验是在特征值为 2 的有限域GF(2m)中,如何使用次数为n的不可约多项式表示有限 域,以及在有限域中元素间的加法和乘法运算方法。本实验的准备知识包括基本的群和有限 域的相关知识。
1.
GF(2n)中的多项式:f(x)=an-1xn-1+ an-2xn-2+ … + a1x+ a0,每个系数只能从{0,1}中取
2
⎛f ⎞ 如果 x 是完全随机的英语字母 ,则 I c (x ) = ∑ ⎜ i ⎟ ≈ i =0 ⎝ n ⎠
从而有: z1 = y 1 y 1+ m y 1+ 2 m ...., z 2 = y 2 y 2 + m y 2 + 2 m ...., ...... z m = y m y m + m y m + 2 m ....y n
⎛ 1 ⎞ ⎟ = 0.038 ⎜ ∑ i = 0 ⎝ 26 ⎠
25
2
已知密文 y = y 1 y 2 .....y n ,将 y 分成 m 个子串:z i = y i y i + m y i + 2 m ...,(i = 1,2 ,...m ),
如果 m 是密钥的长度,则 z i 是用同一个密钥通过移 文,所以有: I c (z i ) ≈ 0 .065 。
⎛ fi ⎞
⎝ ⎠ = ⎛n⎞ ⎜ ⎜2⎟ ⎟ ⎝ ⎠
∑
i =0
25
f i (f i − 1) ≈ n (n − 1)
25
∑
i =0
2
25
⎛ fi ⎞ ⎜ ⎟ ⎝n⎠
25
⎛f ⎞ 如果 x 是英语文本串,则 I c (x ) = ∑ ⎜ i ⎟ ≈ i =0 ⎝ n ⎠
∑p
i =0 25
2
≈ 0.065
的结果,并由此建立两个同余方程。 3. 求解根据同余方程组解出密钥(a,b)并判断(a,26)=1 是否成立,不成立则重新 假设出现较多的是有其他明文字母被加密的结果,重新建立同余方程组并判断。 4. 当条件(a,26)=1 成立,则将所有明文解密,一般情况下,若恢复的明文可读,则 密钥正确。 多表代换的密码分析方法(以维吉尼亚密码为例) 针对该密码的有效分析方法包括卡西斯基确定密钥长度,重合指数法确定密钥长度 和个子密钥。重合指数方法原理如下:
位加密得到的密
反之, 如果m不是密钥的长度, 则z i 是随机的字母串,所以 有:I c (z i ) ≈ 0.038。
三、 实验内容 z 利用自己熟悉的程序设计语言实现移位密码或或仿射密码或维吉尼亚密码或置换密 码。 z 语言统计分析方法的基础上对下面经仿射密码加密生成的密文进行统计分析:
KQEREJEBCPPCJCRKIEACUZBKRVPKRBCIBQCARBJCVFCUPKRIOFKPACUZQE PBKRXPEIIEABDKPBCPFCDCCAFIEABDKPBCPFEQBKAZBKRHAIBKAPCCIBURC
非对称密码技术 …………………………………………………………()
实验 1
一、实验目的
Zn 中乘法逆元算法的实现
通过本实验使学生掌握最大公因子算法的实现、剩余类中元素的乘法逆元的求解
二、实验原理
本实验是在辗转相除法的基础上求解最大公因子的算法和实现、在剩余类中元素的乘法 逆元求解。 本实验的准备知识包括基本的带余除法运算、模运算及其基本性质、素数等概念
a 0 ← m , b 0 ← b , t 0 ← 0, t = 1, q ← ⎣a 0 /b 0 ⎦, r ← a 0 -qb 0 , temp = t 0 − qt . while ⎧ temp ← (t 0 − qt ) mod m ⎪ do ⎨ t 0 ← t,t ← temp , a 0 ← b 0 , b 0 ← r ⎪ q ← a /b , r ← a -qb ⎣ 0 0⎦ 0 0 ⎩ if b 0 ≠ 1 then b 无模 m 的逆元 else return (t ) r > 0
现信息的相互转换。传统密码的主要应用对象是文字信息,利用相应的转换方法将可正 常阅读的文字转换成不可识别(掌握该转换方法的人除外)的杂乱无章的信息。传统密 码按照其实现方式,可以简单的分成代换技术和置换技术两种。本实验是语言统计分析 方法的基础上对仿射密码生成的密文进行分析并进一步确定密钥、利用重合指数法对维 基尼亚密码生成的密文进行分析,确定加密密钥。 许多密码分析方法都利用了英文语言的统计特性。目前已经有许多从各种小说、杂 志和报纸上统计的 26 个英文字母出现的频率,如下表所示:
3. 维吉尼亚密码的分析方法
z z 用卡西斯基测试法或重合指数法确定密钥长度 确定每个子密钥
五、
ห้องสมุดไป่ตู้
实验报告要求
程序给出源代码和相应的注释,密码分析部分给出详细推导或计算过程和程序实现则要 给出全部代码。
实验 3
一、
非对称密码--分组密码
实验目的
通过 DES 算法对实际的数据进行加密和解密来深刻了解 DES 的运行原理。
a
0.082
b
0.015
c
0.028
d
0.043
e
0.127
f
0.022
g
0.020
h
0.061
i
0.070
j
0.002
k
0.008
l
0.040
m
0.024
n
0.067
o
0.075
p
0.019
q
0.001
r
0.060
s
0.063
t
0.091
u
0.028
v
0.010
w
0.023
x
0.001
y
0.020
5. if (a-b ) < 0, (t ← a, a ← b, b ← t ); 6. a ← (a-b )
7. if a = 0, g = 2 g b, input b, end , else goto 4.
(
)
2. 扩展 Euclid 算法
设m ∈ Z + ,b ∈ Z,求 b 的模 m 的乘法逆元 b −1。
值,所以GF(2n)中共有个多项式,该集合中的加法和乘法是关于系数模 2,次数模一 个次数为n的不可约多项式,如AES中选定的不可约多项式为m(x)=x8+x4+x3+x+1, 且每个多项式由n个二进制系数(an-1, an-2,…a0)唯一表示,所以GF(2n)中的每个 多项式都可以表示成一个n位的二进制数。
轮密钥的扩展
一次迭代中的基本结构和轮密钥的扩展
F 函数的处理流程
三、
z
实验内容
输入十六进制的分组数据(把输入的字符转换成二进制数) ,分别执行一轮迭代中的 置换和代换,比较输入或输出
z
改变输入数据中的某一位,在执行一次代换或置换,比较和上次的结果的输出变化, 分别执行多次代换或置换,观察数据改变前后输出结果的差别
四、
实验方法与步骤
1. 选定程序设计语言,编写代码、添加注释。
2. 语言统计分析方法的基础上对仿射密码生成的密文进行分析
z z 统计字母出现的频率 用出现频率最多的替代 e,次多的替代 t,建立同余方程组并求解密钥(a,b) 并判断连个参数是否互素。 z 成立则获得密钥,否则用后续的出现较多的字母替代 t,并建立方程组求解。
《现代密码学》 实验指导书
刘志猛 编
计算机科学与技术学院 2008 年 9 月
目
录
实验 1 实验 2 实验 3 实验 4 实验 5
基本算法的实现 …………………………………………………………() 传统密码技术 ……………………………………………………………() 对称密码技术(DES) ……………………………………………………() AES 中 S 盒的构造方法与实现 ………………………………………()
五、实验报告要求
给出具体的数据:最大公因子的参数至少 3 位十进制整数,逆元求解中模数至少为 4 位 十进制整数。
实验 2
一、
传统密码技术
实验目的
通过编程实现代换密码或置换密码算法,采用语言统计法分析经代换技术加密的密
文进行,加深对传统密码体制的了解,为深入学习现代密码技术奠定基础。
二、
实验原理
传统密码算法历史上曾被广泛应用,大都比较简单,通常使用手工或机械装置来实
CDKDCCJCIDFUIXPAFFERBICZDFKABICBBENEFCUPJCVKABPCYDCCDPKBCOC PERKIVKSCPICBRKIJPKABI
z 用重合指数法对经维基尼亚密码加密生成的密文:
CHREEVOAHMAERATBIAXXWTNXBEEOPHBSBQMQEQERBWRVXUOAKXAOSXX WEAHBWGJMMQMNKGRFVGXWTRZXWIAKLXFPSKAUTEMNDCMGTSXMXBTUIA DNGMGPSRELXNJELXVRVPRTULHDNQWTWDTYGBPHXTFALJHASVBFXNGLLC HRZBWELEKMSJIKNBHWRJGNMGJSGLXFHYPHAGNRBIEQJTAMRVLCRREMND GLXRRIMGNSNRWCHRQHAEYEVTAQEBBIPEEWEVKAKOEWADREMXMTBJJCH RTKDNVRZCHRCLQOHPWQAIIWXNRMGWOIIFKEE
记为 I c (x ) 定义为 x 中两个随机元素相同的 概率。
设 A , B, C,... 在字符串 x 中出现的次数分别为 I c (x ) =
25
设 x = x 1 x 2 ...x n 是一个含有 n 个字符的字符串, x 的重合指数
f 0 ,f 1,...f 25,则
2
∑⎜ ⎟ ⎜2 ⎟
i =0
z
阅读辅助材料,熟悉 DES 加密和解密的过程。
四、
实验方法与步骤
1. 编写相应的程序,观察相应的结果 2. 阅读示例,理解 DES 的设计思想
五、
实验报告要求
给出详细计算过程和源代码,思考原因
实验 4
一、
AES 中 S 盒的构造方法与实现
实验目的
通过本实验使学生掌握 AES 中 S 盒的构造方法,以及多项式的计算技巧
Stein(a,b ) :a,b ∈ Z,a > 0,b > 0, 求g = gcd(a,b ) 1. g ← 0 2. if a,b是偶数, (a ← a/ 2, b ← b/ 2, g ← g + 1, goto 2); 3. if b是偶数,(t ← a, a ← b, b ← t ); 4. if a是偶数,(a ← a/ 2, goto 4 );
另外,考虑两个字母组或三个字母组组成的固定序列也是很有用的,常见的两字母(按 出现次数递减排序) :TH,HE,IN,ER,AN,RE,DE,ON,ES,ST,EN,AT,TO,NT,HA,ND,OU,EA,NG...; 常见的三字母组(按出现次数递减排序) :THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH, FORD 和 TH。 单表代换密码的语言统计方法步骤(以仿射密码为例) 1. 对密文中字母出现的频率进行统计 2. 将出现最多的字母假设是明文字母 e 被加密的结果,次多字母是明文字母 t 被加密
z
0.001
其中:以上字母分成 5 组: 1. 2. 3. 4. 5. e 的概率大约为 0.120 t,a,o,i,n,s,h,r 的概率为 0.06-0.09 d,l 的概率大约为 0.4 c,d,m,w,f,g,y.p,b 的概率为 0.015-0.023 v,k,j,x,q,z 的概率小于 0.01