现代密码学实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:现代密码学实验报告

姓名:夏金启学号:20101003933

院(系):计算机学院专业:信息安全指导教师:任伟职称:副教授

评阅人:职称:

2012年12月

一古典密码

1.1实验原理

代换是古典密码中用到的最基本的处理技巧,它在现代密码学中得到了广泛的应用,内容非常的丰富,人们采用代换密码进行加密时并没有固定的模式。按照一个明文字母是否总是被一个固定的字母代换进行划分时,代换密码可以分为两大类:

单表代换密码:对明文消息中出现的同一个字母,在加密时都用同一个固定的字母来代换,不管它出现在什么地方。移位密码和仿射密码都属于单表代换密码。

多表代换密码:明文消息中出现的同一个字母,在加密时不是完全被同一个固定的字母代换,而是根据其出现的位置次序,用不同的字母代换,如维吉利亚密码和Playfair密码。

1:移位密码

明文空间P与密文空间C都是26个英文字母的集合,密钥空间K={0,1,2,…,25}。在实际进行加密解密运算时,把26个字母依次与0,1,2,…,25对应。因而也可以说P=C=K={0,1,…,25}=Z。E={e:Z->Z,e(x)=x+k(mod 26)},即对每个K∈Z,相应的加密变换为ek(m)=m+k(mod 26),其中m∈Z为明文。D={d:Z->Z,d(x)=x-k(mod 26)},即对密钥k,解密变换为dk(y)=y-k(mod 26),其中y∈Z为密文。解密之后要把Z中的元素再变换为英文字母。

2:仿射密码

明、密文空间与移位密码相同,密钥空间为K={(k1,k2)|k1,k2∈Z,其中gcd(k1,26=1)} gcd表示两个数的最大公因子,gcd(k1,26)=1,即表示k1还26互素。对任意的k=(k1,k2)∈K,加密变换为e(m)=k1*m+k2*(mod 26).相应的解密变化为d(c)=k1^(-1)*(c-k2)(mod 26),其中:k1*k1^(-1)=1(mod 26).

3:维吉利亚密码

该密码有一个参数n。在加解密时同样把英文字母用数字代替进行运算,并按n个字母一组进行变换。明、密文空间及密钥空间都是n长的字母串的集合,因此可以表示P=C=K=Z^(26).加密变换如下:

设密钥k=(k1,k2,…,kn),明文P=(m1,m2,…,mn),加密函数为e(p)=(c1,c2,…,cn),其中Ci=(mi+ki)(mod 26),i=1,2,…,n。

对密文c=(m1,m2,…,mn),密钥k=(k1,k2,…,kn),解密变换为:e(c)=(m1,m2,…,mn),其中m1=(c1-k1)(mod 26),i=1,2,…,n。

其中mi=(ci-ki)(mod 26),i=1,2,…,n。

4:一般的单表代换密码

单表代换密码的原理是:以26个字母的集合上的一个置换∏为密钥对明文消息中的每个字母依次进行变换,变换的方法是把明文中的每个字母用它在置换∏下的像去替换。解密时用∏的逆置换进行替换。可描述为P=C={0,1,2,…,25}=Z,K={∏:Z->Z|∏是置换}。密钥∏对应的加密变换e(x)= ∏(x),解密变换为d(y)= ∏^(-1)(y).前面描述的移位密码和仿射密码都是单表代换密码,而维吉利亚密码不是单表代换密码。

5:列置换密码

置换密码是把明文中各字符的位置次序重新排列来得到密文的一种密码体制。列置换密码的加密方法如下:把明文字符以固定的宽度m(分组长度)水平地(按行)写在一张纸上,按1,2,3,…,m的一个置换∏交换列的次序位置,再按垂直方向(按列)读出即得密文。解密就是就是将密文按照相同的宽度m垂直的写在纸上,按置换∏的逆置换交换列的位置次序,然后水平的读出得到明文,置换∏就是密钥。

.6:周期置换密码

周期置换密码是将明文字符按照一定长度m分组,把每组中的字符按1,2,…,m的一个置换∏重排位置次序来得到密文的一种加密方法。其中的密钥就是置换∏,在∏的描述中包含了分组长度的信息。解密时,对密文字符按长度m分组,并按∏的逆置换∏^(-1)把每组字符重排位置次序来得到明文。

2.1实验结果

实验截图:

二Elgamal签名设计

1.1课题内容和要求

1主要实现的模块包括,计算体系参数,计算密钥,对文件签名,验证签名文件。该部分可参考前面给出的问题描述再加以细化一些计算体系参数。

随机素数p,用户的私有密钥x,g和x计算得到的整数y,消息m,随机数k。计算密钥。公开密钥(p,g,y),私有密钥x对文件签名任何一个给定的消息都可以产生多个有效的ELGamal签名。验证签名文件验证算法能够将上述多个ELGamal签名中的任何一个当作可信的签名接受。

2设计思路分析

ElGamal算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。

3密钥对产生办法

首先选择一个素数p,两个随机数, g 和x,g, x < p, 计算y = g^x ( mod p ),则其公钥为y, g 和p。私钥是x。g和p可由一组用户共享。

ElGamal用于数字签名。被签信息为M,首先选择一个随机数k, k与p - 1互质,计算

a= g^k ( mod p )

再用扩展Euclidean 算法对下面方程求解b:

M = xa + kb ( mod p - 1 )

签名就是( a, b )。随机数k须丢弃。

验证时要验证下式:

y^a * a^b ( mod p ) = g^M ( mod p )

同时一定要检验是否满足1<= a < p。否则签名容易伪造。ElGamal签名的安全性依赖于乘法群(IFp)* 上的离散对数计算。素数p必须足够大,且p-1至少包含一个大素数。因子以抵抗Pohlig & Hellman算法的攻击。M一般都应采用信息的HASH值(如SHA算法)。ElGamal的安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。

4一般的ElGam数字签名方案

在系统中有两个用户A和B,A要发送消息到B,并对发送的消息进行签名。B收到A发送的消息和签名后进行验证。

2.1系统初始化

相关文档
最新文档