数字签名技术

广东海洋大学寸金学院

课程名称:网络安全技术

论文题目:数字签名方案的设计或分析

考查课论文 系 别: 信息技术系 专 业: 信息管理与信息系统 班 级: 1班 姓 名: 张伟兴 学号: [1**********]31 任课老师: 陈瑞志 指导教师: 日 期:2015年 5 月 27 日 教务处制

数字签名方案的设计或分析

摘要:网络通信促进和加速社会信息化的发展,但是网络环境下的信息安全并不令人乐观,信息在传输的过程中有可能被删除、篡改和重放,给人们的生活和工作造成了许多麻烦。正是在这种情况下,数字签名技术便应运而生了。 随着对数字签名技术研究的深入和实际应用的需要,普通的数字签名已不能满足人们的需要,许多有着特殊用途的数字签名方案被提了出来。

本文主要介绍了信息加密技术的应用。RSA 算法是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,它是第一个既能用于数据加密也能用于数字签名的算法,是公钥密码体制的代表。数字签名是起到身份认证、核准数据完整性的一种信息安全技术。它通过认证技术来辨认真伪。RSA 数字签名体制使用的是RSA 公开密钥密码算法进行数字签名。

关键词:信息加密,数字签名,RAS

De sign or analysis of digital signature scheme

Abstract :Network communication to promote and accelerate the development of the information society, but in the information security under the network environment is not optimistic, information in the process of transmission may be deleted, tampering and replay, caused a lot of trouble to people's life and work. It is in this case, the digital signature technology came into Bing. With the needs of the research on digital signature technology in-depth and practical application, ordinary digital signature has been unable to meet the people's need that many special purpose digital signature scheme is proposed.

This paper mainly introduces the application of information encryption technology.. RSA algorithm is currently recognized is the most mature and perfect in a public key cryptosystem in theory and practical application, it is the first both for data encryption can also be used for digital signature algorithm, is representative of the public key cryptosystem. Digital signature is a kind of information securitytechnology which is the identity authentication and approval data integrity.. It identifies the authenticity by authentication technology. RSA digital signature system is RSA public key encryption algorithm for digital signature.

Key words:Information encryption, digital signature, RAS

1 研究背景

计算机技术的高速发展为人类提供了高度的自动化和现代化,而网络的迅猛发展为人们提供了便捷、快速的信息交流方式,使人类社会迅速进入了信息化时代。由于信息的传递、存储、处理等过程往往是在开放的通信网络上进行的,因而因特网的信息容易受到窃听、截取、修改、伪造、重放等各种攻击手段的威胁,其安全及其脆弱。特别是网络系统面临着很大的威胁,并成为严重的社会问题之一。

网络安全成为现在网络应用亟待解决的一个问题。网络安全包括物理安全、网络系统安全、数据安全、信息内容安全和信息基础设施安全等。

数字签名,也有人称之为数字签字、电子签名、电子签章等,是对传统手写签名的模拟,是当前网络安全领域的一个研究热点。它是电子政务、电子商务、电子银行、电子证券等等系统必备的关键性技术,在日常电子邮件的安全保障中也有大量的应用。

2RSA 数字签名基本概念和RSA 数字签名算法的实现原理

2.1 RSA数字签名基本概念

RSA 数字签名体制使用了RSA 公开密钥密码算法进行数字签名,鉴于RSA 算法在实践中已经被证明了的安全性,RSA 数字签名体制在许多安全标准中得以广泛应用。ISO/IEC 9796和ANSI X9.30-199X 以及美国联邦信息处理标准FIPS 186-2已经将RSA 作为推荐的数字签名标准算法之一。

RSA 数字签名算法,包括签名算法和验证签名算法。它是利用的RSA 算法的加密和解密算法的原理进行的一种数字签名,实际上是通过一个哈希函数来实现的(本设计是通过的MD5算法)产生消息摘要MD 来实现的所需加密的对象。

数字签名的特点是它代表了消息的特征,消息如果发生改变,数字签名的值也将发生改变,不同的消息将得到不同的数字签名。安全的数字签名使接收方可以得到保证:消息确实来自发送方。因为签名的私钥只有发送方自己保存,他人无法做一样的数字签名,如果第三方冒充发送方发出一个消息,而接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,加密出来的数字签名和经过计算的数字签名必然是不相同的,这就提供了一个安全的确认发送方身份的方法,即数字签名的真实性得到了保证。

数字签名通过认证技术来辨认真伪。认证技术主要包括数字签名认证、身份认证以及公开密钥证明等。数字签名认证机制提供了一种对数字签名进行鉴别的方法;身份认证机制提供了辨别和确认通信双方真实身份的方法;公开密钥证明机制则对密钥进行验证。网络时代中,人们验证数字签名来确定你正在和谁打交道,验证你的文件是否已被黑客篡改。数据的安全性和真实性已成为网络安全中至关重要的一部分。

数字签名类似手书签名,它具有以下的性质:

1)能够验证签名产生者的身份,以及产生签名的日期和时间;

2)能用于证实被签消息内容;

3)数字签名可由第三方验证,从而能够解决通信双方的争议。

为了实现数字签名的以上性质,它就应满足下列要求:

1)签名是可信的:任何人都可以验证签名的有效性;

2)签名是不可伪造的:除了合法的签名者外,任何人伪造其签名是困难的;

3)签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息;

4)签名的消息是不可改变的:经签名的消息不能篡改,一旦签名的消息被篡改,任何人都可以发现消息与签名之间的不一致性;

5)签名是不可抵赖的:签名者事后不能否认自己的签名。可以由第三方或仲裁方来确认双方的信息,以做出仲裁。

数字签名的原理是:(发送方和接收方根据要求各自产生自己的一对公钥和私钥)

1)被发送文件采用某种算法对原始消息进行运算,得到一个固定长度的数字串,称为消息摘要(MD ),不同的消息得到的消息摘要各异,但是对相同的消息它的消息摘要却是唯一的;

2)发送方生成消息的消息摘要,用自己的私钥对摘要进行加密来形成发送方的数字签名;

3)这个数字签名将作为消息的附件和消息一同用接收方的公钥进行加密,将加密后的密文一起发送给接收方;

4)接收方首先把接收到的密文用自己的私钥解密,得到原始消息和数字签名,再用发送方的公钥解密数字签名,随后用同样的算法计算出消息摘要;

5)如果计算出来的消息摘要和发送方发送给他的消息摘要(通过解密数字签名得到的)是相同的,这样接收方就能确认数字签名确实是发送方的,否则就认为收到的消息是伪造的或是中途被篡改的。

3 RSA算法的实现

3.1 数据结构

RSA 密码系统的安全性依赖于大数分解的难度, 一般建议用户选择的素数p 和q 至少为100位, 则n=pq是至少为200位的十进制数. 因此实现RSA 算法有必要定义大数的数据结构. typedefstruct

{

unsigned long intbn[MAX_LENGTH];

unsigned int size;

}BigNum

密钥生成, 加密和解密涉及到一些大数的基本运算. 定义大数的基本运算库, 包括加, 减, 乘, 除, 取模运算等, 其中最重要的模乘运算和模幂运算.

模幂算法是加密解密的核心算法. 计算模幂的一种有效算法是" 平方-乘" 方法, 通过对指数的二进制化来实现.

Procedure modmult

begin

typedefstruct {

unsigned int bits; /* 公钥n 的位数 */

unsigned char modulus[MAX_RSA_ LEN] ;/*公钥n*/

unsigned char exponent[MAX_RSA_LEN]; /*公钥e*/

} RSA_PUBLIC_KEY;

图3 RSA公钥

Z=1

for i=l-1 downto 0 do:

begin

Z=Z 2 mod n;

if bi=1 then Z=Z*x mod n;

end

end

3.2 密钥的生成

3.2.1 RSA公钥和私钥的结构定义

根据文档PKCS#1定义RSA 公钥和私钥分别如图2和图3. 理论上讲,RSA 私钥只需包括解密模数和解密指数. 但是为加快RSA 解密计算的效率, 采用中国剩余定理算法, 因此RSA 私钥包含p,q,d mod (p-1),d mod (q-1),q-1 mod p,其中p,q 为大素数, d mod (p-1), d mod (q-1),q-1 mod p由计算过程生成.

3.2.2 生成密钥步骤

typedefstruct {

unsigned int bits; /*公钥n 的长度*/

unsigned char modulus[MAX_RSA_LEN]; /*公钥n */

unsigned char publicExponent[MAX_RSA_ LEN]; /*公钥e */

unsigned char exponent[MAX_RSA_LEN]; /*私钥d*/

unsigned char prime[2][MAX_RSA_ LEN]; /*两个素数因子*/

unsigned char primeExponent[2][MAX_RSA_PRIME_LEN];

unsigned char coefficient[MAX_RSA_PRIME_LEN];

} RSA_PRIVATE_KEY;

生成RSA 密钥需完成下列步骤:

(1) 选择e 的值为3或者25537;

(2) 随机生成大素数p, 直到gcd (e,p-1)=1;

其中gcd(a,b)表示a,b 取最大公约数

(3) 随机生成不同于p 的大素数q, 直到

gcd (e,q-1)=1;

(4) 计算n=pq , (n)=(p-1)(q-1);

(5) 计算d, 满足de1 (mod (n));

(6) 计算d mod (p-1), d mod (q-1);

(7) 计算q-1 mod p;

(8) 将n,e 放入RSA 公钥; 将n,e,d mod (p-1),d mod (q-1) q-1 mod p放入RSA 私钥.

3.2.2.1 随机数的产生

随机数不仅用于密钥生成, 也用作公钥加密时的填充字符. 它必须具有足够的随机性, 以防止破译者掌握随机数的规律性后重现密钥的配制过程或者探测到加密块中的明文. 因为在计算机上不可能产生真正的随机数, 实际采用周期大于2256位的伪随机序列发生器.

实现过程为:

(1) 记录相邻两次敲击键盘的时间间隔, 直到不再需要随机事件.

(2) 做MD5计算, 直到不再需要伪随机数.

3.2.2.2 素数的产生

对随机数作素性检测, 若通过则为素数; 否则增加一个步长后再做素性检测, 直到找出素数. 素性检测采用Fermat 测试. 这个算法的理论依据是费尔马小定理:如果m 是一个素数, 且a 不是m 的倍数, 那么根据费尔马小定理有:a m-1=1 ( mod m). 实际应用时:a m-1 = 1 ( mod m) a m = a ( mod m) a= a m ( mod m), 因此对于整数m, 只需计算a m ( mod m),再将结果与a 比较, 如果两者相同, 则m 为素数. 选取a=2,则a 一定不会是任何素数的倍数.

3.3 加密过程

加密规则为:Ek(x)=xb mod n,xZn

加密过程的输入为:明文数据D, 模数n, 加密指数e(公钥加密) 或解密指数d(私钥加密). 输出为密文.D 的长度不超过[log2n]-11,以确保转换为PKCS 格式时, 填充串的数目不为0. 格式化明文. 采用PKCS 格式: EB = 00 || BT || PS || 00 || D 其中BT 表示块的类型,PS 为填充串,D 为明文数据. 开头为0确保EB 长度大于k. 对公钥加密BT=02,对私钥解密BT=01.当BT=02时,PS 为非0随机数; 当BT=01,PS值为FF.

明文由字符型数据转换成整型数据.

RSA计算. 为整数加密块x 作模幂运算:y = x^c mod n,0

密文由整型数据转换成字符型数据.

3.4 解密过程

解密规则为 Dk(x)=yc mod n,yZn,Zn为整数集合,x 为密文.

解密过程的输入为:密文ED; 模数n; 加密指数e(公钥解密) 或解密指数d(私钥解密), 结果为明文.

(1) 密文整型化.

(2) RSA计算. 对密文做模幂运算:x = y^c mod n, 0

(3) 此时明文为整型数据, 转换为ASCII 型数据, 得到PKCS 格式的明文.

(4) 从PKCS 格式明文中分离出原明文. 从PKCS 格式分离明文的过程也是检查

数据完整性的过程. 若出现以下问题则解密失败:不能清楚的分割; 填充字符

少于64位或与BT 所注明的类型不匹配;BT 与实际操作类型不符.

RSA 数字签名算法的实现

RSA数字签名算法, 包括签名算法和验证签名算法. 首先用MD5算法对信息作散列计算. 签名的过程需用户的私钥, 验证过程需用户的公钥.A 用签名算法将字符串形式的消息处理成签名;B 用验证签名算法验证签名是否是A 对消息的签名, 确认是A 发送的消息; 消息没有

被攥改过;A 一定发送过消息.

1 签名算法

签名算法包括三步:消息摘要计算,RSA 加密.

消息摘要计算. 消息在签名前首先通过MD5计算, 生成128位的消息摘要

digest.

对摘要作RSA 计算. 用加密算法, 采用签名者的私钥加密消息摘要, 得到加密后的字符串. 加密算法中使用的加密块为01类型.

2 验证签名算法

验证签名算法包括两步:RSA解密得签名者的消息摘要, 验证者对原消息计算摘要, 比较两个消息摘要. 验证签名的过程输入为消息, 签名者的公钥, 签名; 输出为验证的结果, 即是否是正确的签名.

RSA解密. 签名实际是加密的字符串. 用3.5所述的解密算法, 采用签名者的公钥对这个加密的字符串解密. 解密的结果应为128位的消息摘要. 在解密过程中, 若出现得到的加密块的类型不是01, 则解密失败. 签名不正确.

消息摘要计算和比较. 验证者对消息用MD5算法重新计算, 得到验证者自己的消息摘要. 验证者比较解密得到的消息摘要和自己的消息摘要, 如果两者相同, 则验证成功, 可以确认消息的完整性及签名确实为签名者的; 否则, 验证失败.

4 结束语

本文讨论了RSA 算法的基本原理和基本实现.RSA 算法是一种安全技术, 但是RSA 算法的安全性只是一种计算安全性, 绝不是无条件的安全性, 这是由它的理论基础决定的. 因此, 在实现RSA 算法的过程中, 每一步都应尽量从安全性考虑. 本文采取的一些主要算法是目前在数学上被认可的安全的算法之一.

本文所提到的算法及实现原理已在作为设计的安全电子邮件系统中完全实现并获得满意的效果.

参 考 文 献

[1]StallingsW.密码编码与网络安全: 原理与实践[M ]. 北京: 电子工业出版社, 2001. 239~ 241

[2]洪 琳, 李 展. 数字签名、数字信封和数字证书[ J ]. 计算机应用, 2000, 20 (2) : 21~ 22

[3]Garm s J , Somerfield D. J ava 安全性编程指南[M ]. 北京: 电子工业出版社, 2002. 136~ 169

[4]冯登国, 裴定一, 科学出版社, 《密码学导引》,1999

[5]刘智勇. 智能交通控制理论及其应用[M].北京. 科学出版社.2003

[6]卢开澄, 《计算机密码学》, 清华大学出版社,1998

广东海洋大学寸金学院

课程名称:网络安全技术

论文题目:数字签名方案的设计或分析

考查课论文 系 别: 信息技术系 专 业: 信息管理与信息系统 班 级: 1班 姓 名: 张伟兴 学号: [1**********]31 任课老师: 陈瑞志 指导教师: 日 期:2015年 5 月 27 日 教务处制

数字签名方案的设计或分析

摘要:网络通信促进和加速社会信息化的发展,但是网络环境下的信息安全并不令人乐观,信息在传输的过程中有可能被删除、篡改和重放,给人们的生活和工作造成了许多麻烦。正是在这种情况下,数字签名技术便应运而生了。 随着对数字签名技术研究的深入和实际应用的需要,普通的数字签名已不能满足人们的需要,许多有着特殊用途的数字签名方案被提了出来。

本文主要介绍了信息加密技术的应用。RSA 算法是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,它是第一个既能用于数据加密也能用于数字签名的算法,是公钥密码体制的代表。数字签名是起到身份认证、核准数据完整性的一种信息安全技术。它通过认证技术来辨认真伪。RSA 数字签名体制使用的是RSA 公开密钥密码算法进行数字签名。

关键词:信息加密,数字签名,RAS

De sign or analysis of digital signature scheme

Abstract :Network communication to promote and accelerate the development of the information society, but in the information security under the network environment is not optimistic, information in the process of transmission may be deleted, tampering and replay, caused a lot of trouble to people's life and work. It is in this case, the digital signature technology came into Bing. With the needs of the research on digital signature technology in-depth and practical application, ordinary digital signature has been unable to meet the people's need that many special purpose digital signature scheme is proposed.

This paper mainly introduces the application of information encryption technology.. RSA algorithm is currently recognized is the most mature and perfect in a public key cryptosystem in theory and practical application, it is the first both for data encryption can also be used for digital signature algorithm, is representative of the public key cryptosystem. Digital signature is a kind of information securitytechnology which is the identity authentication and approval data integrity.. It identifies the authenticity by authentication technology. RSA digital signature system is RSA public key encryption algorithm for digital signature.

Key words:Information encryption, digital signature, RAS

1 研究背景

计算机技术的高速发展为人类提供了高度的自动化和现代化,而网络的迅猛发展为人们提供了便捷、快速的信息交流方式,使人类社会迅速进入了信息化时代。由于信息的传递、存储、处理等过程往往是在开放的通信网络上进行的,因而因特网的信息容易受到窃听、截取、修改、伪造、重放等各种攻击手段的威胁,其安全及其脆弱。特别是网络系统面临着很大的威胁,并成为严重的社会问题之一。

网络安全成为现在网络应用亟待解决的一个问题。网络安全包括物理安全、网络系统安全、数据安全、信息内容安全和信息基础设施安全等。

数字签名,也有人称之为数字签字、电子签名、电子签章等,是对传统手写签名的模拟,是当前网络安全领域的一个研究热点。它是电子政务、电子商务、电子银行、电子证券等等系统必备的关键性技术,在日常电子邮件的安全保障中也有大量的应用。

2RSA 数字签名基本概念和RSA 数字签名算法的实现原理

2.1 RSA数字签名基本概念

RSA 数字签名体制使用了RSA 公开密钥密码算法进行数字签名,鉴于RSA 算法在实践中已经被证明了的安全性,RSA 数字签名体制在许多安全标准中得以广泛应用。ISO/IEC 9796和ANSI X9.30-199X 以及美国联邦信息处理标准FIPS 186-2已经将RSA 作为推荐的数字签名标准算法之一。

RSA 数字签名算法,包括签名算法和验证签名算法。它是利用的RSA 算法的加密和解密算法的原理进行的一种数字签名,实际上是通过一个哈希函数来实现的(本设计是通过的MD5算法)产生消息摘要MD 来实现的所需加密的对象。

数字签名的特点是它代表了消息的特征,消息如果发生改变,数字签名的值也将发生改变,不同的消息将得到不同的数字签名。安全的数字签名使接收方可以得到保证:消息确实来自发送方。因为签名的私钥只有发送方自己保存,他人无法做一样的数字签名,如果第三方冒充发送方发出一个消息,而接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,加密出来的数字签名和经过计算的数字签名必然是不相同的,这就提供了一个安全的确认发送方身份的方法,即数字签名的真实性得到了保证。

数字签名通过认证技术来辨认真伪。认证技术主要包括数字签名认证、身份认证以及公开密钥证明等。数字签名认证机制提供了一种对数字签名进行鉴别的方法;身份认证机制提供了辨别和确认通信双方真实身份的方法;公开密钥证明机制则对密钥进行验证。网络时代中,人们验证数字签名来确定你正在和谁打交道,验证你的文件是否已被黑客篡改。数据的安全性和真实性已成为网络安全中至关重要的一部分。

数字签名类似手书签名,它具有以下的性质:

1)能够验证签名产生者的身份,以及产生签名的日期和时间;

2)能用于证实被签消息内容;

3)数字签名可由第三方验证,从而能够解决通信双方的争议。

为了实现数字签名的以上性质,它就应满足下列要求:

1)签名是可信的:任何人都可以验证签名的有效性;

2)签名是不可伪造的:除了合法的签名者外,任何人伪造其签名是困难的;

3)签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息;

4)签名的消息是不可改变的:经签名的消息不能篡改,一旦签名的消息被篡改,任何人都可以发现消息与签名之间的不一致性;

5)签名是不可抵赖的:签名者事后不能否认自己的签名。可以由第三方或仲裁方来确认双方的信息,以做出仲裁。

数字签名的原理是:(发送方和接收方根据要求各自产生自己的一对公钥和私钥)

1)被发送文件采用某种算法对原始消息进行运算,得到一个固定长度的数字串,称为消息摘要(MD ),不同的消息得到的消息摘要各异,但是对相同的消息它的消息摘要却是唯一的;

2)发送方生成消息的消息摘要,用自己的私钥对摘要进行加密来形成发送方的数字签名;

3)这个数字签名将作为消息的附件和消息一同用接收方的公钥进行加密,将加密后的密文一起发送给接收方;

4)接收方首先把接收到的密文用自己的私钥解密,得到原始消息和数字签名,再用发送方的公钥解密数字签名,随后用同样的算法计算出消息摘要;

5)如果计算出来的消息摘要和发送方发送给他的消息摘要(通过解密数字签名得到的)是相同的,这样接收方就能确认数字签名确实是发送方的,否则就认为收到的消息是伪造的或是中途被篡改的。

3 RSA算法的实现

3.1 数据结构

RSA 密码系统的安全性依赖于大数分解的难度, 一般建议用户选择的素数p 和q 至少为100位, 则n=pq是至少为200位的十进制数. 因此实现RSA 算法有必要定义大数的数据结构. typedefstruct

{

unsigned long intbn[MAX_LENGTH];

unsigned int size;

}BigNum

密钥生成, 加密和解密涉及到一些大数的基本运算. 定义大数的基本运算库, 包括加, 减, 乘, 除, 取模运算等, 其中最重要的模乘运算和模幂运算.

模幂算法是加密解密的核心算法. 计算模幂的一种有效算法是" 平方-乘" 方法, 通过对指数的二进制化来实现.

Procedure modmult

begin

typedefstruct {

unsigned int bits; /* 公钥n 的位数 */

unsigned char modulus[MAX_RSA_ LEN] ;/*公钥n*/

unsigned char exponent[MAX_RSA_LEN]; /*公钥e*/

} RSA_PUBLIC_KEY;

图3 RSA公钥

Z=1

for i=l-1 downto 0 do:

begin

Z=Z 2 mod n;

if bi=1 then Z=Z*x mod n;

end

end

3.2 密钥的生成

3.2.1 RSA公钥和私钥的结构定义

根据文档PKCS#1定义RSA 公钥和私钥分别如图2和图3. 理论上讲,RSA 私钥只需包括解密模数和解密指数. 但是为加快RSA 解密计算的效率, 采用中国剩余定理算法, 因此RSA 私钥包含p,q,d mod (p-1),d mod (q-1),q-1 mod p,其中p,q 为大素数, d mod (p-1), d mod (q-1),q-1 mod p由计算过程生成.

3.2.2 生成密钥步骤

typedefstruct {

unsigned int bits; /*公钥n 的长度*/

unsigned char modulus[MAX_RSA_LEN]; /*公钥n */

unsigned char publicExponent[MAX_RSA_ LEN]; /*公钥e */

unsigned char exponent[MAX_RSA_LEN]; /*私钥d*/

unsigned char prime[2][MAX_RSA_ LEN]; /*两个素数因子*/

unsigned char primeExponent[2][MAX_RSA_PRIME_LEN];

unsigned char coefficient[MAX_RSA_PRIME_LEN];

} RSA_PRIVATE_KEY;

生成RSA 密钥需完成下列步骤:

(1) 选择e 的值为3或者25537;

(2) 随机生成大素数p, 直到gcd (e,p-1)=1;

其中gcd(a,b)表示a,b 取最大公约数

(3) 随机生成不同于p 的大素数q, 直到

gcd (e,q-1)=1;

(4) 计算n=pq , (n)=(p-1)(q-1);

(5) 计算d, 满足de1 (mod (n));

(6) 计算d mod (p-1), d mod (q-1);

(7) 计算q-1 mod p;

(8) 将n,e 放入RSA 公钥; 将n,e,d mod (p-1),d mod (q-1) q-1 mod p放入RSA 私钥.

3.2.2.1 随机数的产生

随机数不仅用于密钥生成, 也用作公钥加密时的填充字符. 它必须具有足够的随机性, 以防止破译者掌握随机数的规律性后重现密钥的配制过程或者探测到加密块中的明文. 因为在计算机上不可能产生真正的随机数, 实际采用周期大于2256位的伪随机序列发生器.

实现过程为:

(1) 记录相邻两次敲击键盘的时间间隔, 直到不再需要随机事件.

(2) 做MD5计算, 直到不再需要伪随机数.

3.2.2.2 素数的产生

对随机数作素性检测, 若通过则为素数; 否则增加一个步长后再做素性检测, 直到找出素数. 素性检测采用Fermat 测试. 这个算法的理论依据是费尔马小定理:如果m 是一个素数, 且a 不是m 的倍数, 那么根据费尔马小定理有:a m-1=1 ( mod m). 实际应用时:a m-1 = 1 ( mod m) a m = a ( mod m) a= a m ( mod m), 因此对于整数m, 只需计算a m ( mod m),再将结果与a 比较, 如果两者相同, 则m 为素数. 选取a=2,则a 一定不会是任何素数的倍数.

3.3 加密过程

加密规则为:Ek(x)=xb mod n,xZn

加密过程的输入为:明文数据D, 模数n, 加密指数e(公钥加密) 或解密指数d(私钥加密). 输出为密文.D 的长度不超过[log2n]-11,以确保转换为PKCS 格式时, 填充串的数目不为0. 格式化明文. 采用PKCS 格式: EB = 00 || BT || PS || 00 || D 其中BT 表示块的类型,PS 为填充串,D 为明文数据. 开头为0确保EB 长度大于k. 对公钥加密BT=02,对私钥解密BT=01.当BT=02时,PS 为非0随机数; 当BT=01,PS值为FF.

明文由字符型数据转换成整型数据.

RSA计算. 为整数加密块x 作模幂运算:y = x^c mod n,0

密文由整型数据转换成字符型数据.

3.4 解密过程

解密规则为 Dk(x)=yc mod n,yZn,Zn为整数集合,x 为密文.

解密过程的输入为:密文ED; 模数n; 加密指数e(公钥解密) 或解密指数d(私钥解密), 结果为明文.

(1) 密文整型化.

(2) RSA计算. 对密文做模幂运算:x = y^c mod n, 0

(3) 此时明文为整型数据, 转换为ASCII 型数据, 得到PKCS 格式的明文.

(4) 从PKCS 格式明文中分离出原明文. 从PKCS 格式分离明文的过程也是检查

数据完整性的过程. 若出现以下问题则解密失败:不能清楚的分割; 填充字符

少于64位或与BT 所注明的类型不匹配;BT 与实际操作类型不符.

RSA 数字签名算法的实现

RSA数字签名算法, 包括签名算法和验证签名算法. 首先用MD5算法对信息作散列计算. 签名的过程需用户的私钥, 验证过程需用户的公钥.A 用签名算法将字符串形式的消息处理成签名;B 用验证签名算法验证签名是否是A 对消息的签名, 确认是A 发送的消息; 消息没有

被攥改过;A 一定发送过消息.

1 签名算法

签名算法包括三步:消息摘要计算,RSA 加密.

消息摘要计算. 消息在签名前首先通过MD5计算, 生成128位的消息摘要

digest.

对摘要作RSA 计算. 用加密算法, 采用签名者的私钥加密消息摘要, 得到加密后的字符串. 加密算法中使用的加密块为01类型.

2 验证签名算法

验证签名算法包括两步:RSA解密得签名者的消息摘要, 验证者对原消息计算摘要, 比较两个消息摘要. 验证签名的过程输入为消息, 签名者的公钥, 签名; 输出为验证的结果, 即是否是正确的签名.

RSA解密. 签名实际是加密的字符串. 用3.5所述的解密算法, 采用签名者的公钥对这个加密的字符串解密. 解密的结果应为128位的消息摘要. 在解密过程中, 若出现得到的加密块的类型不是01, 则解密失败. 签名不正确.

消息摘要计算和比较. 验证者对消息用MD5算法重新计算, 得到验证者自己的消息摘要. 验证者比较解密得到的消息摘要和自己的消息摘要, 如果两者相同, 则验证成功, 可以确认消息的完整性及签名确实为签名者的; 否则, 验证失败.

4 结束语

本文讨论了RSA 算法的基本原理和基本实现.RSA 算法是一种安全技术, 但是RSA 算法的安全性只是一种计算安全性, 绝不是无条件的安全性, 这是由它的理论基础决定的. 因此, 在实现RSA 算法的过程中, 每一步都应尽量从安全性考虑. 本文采取的一些主要算法是目前在数学上被认可的安全的算法之一.

本文所提到的算法及实现原理已在作为设计的安全电子邮件系统中完全实现并获得满意的效果.

参 考 文 献

[1]StallingsW.密码编码与网络安全: 原理与实践[M ]. 北京: 电子工业出版社, 2001. 239~ 241

[2]洪 琳, 李 展. 数字签名、数字信封和数字证书[ J ]. 计算机应用, 2000, 20 (2) : 21~ 22

[3]Garm s J , Somerfield D. J ava 安全性编程指南[M ]. 北京: 电子工业出版社, 2002. 136~ 169

[4]冯登国, 裴定一, 科学出版社, 《密码学导引》,1999

[5]刘智勇. 智能交通控制理论及其应用[M].北京. 科学出版社.2003

[6]卢开澄, 《计算机密码学》, 清华大学出版社,1998


相关内容

  • 材料一:数字媒体技术概念
  • 数字媒体技术的概念 数字媒体的概念 1. 媒体 媒体的英文单词是medium ,medium 源于拉丁文的medius ,其含义是两者之间,中介.中间的意思,常用复数形式media . 在<现代汉语词典>(1997年修订本)中的解释是:"指交流.传播信息的工具,如报刊.广播.广 ...

  • 数字媒体管理的意义
  • 目录 1数字媒体管理的意义 .................................................................................................... 3 1.1 数字媒体 . ...................... ...

  • 浅析电子商务中电子签名的法律效力
  • 浅析电子商务中电子签名的法律效力 2006年7月22日,宁波康尔绿色日用品有限公司的业务经理费达力轻点鼠标,通过电子签名,与美国万顺工业有限公司签订了一笔20万美元的丝瓜络供销合同.费达力没想到的是,他签下的这份合同成了浙江省首份外贸电子合同. "康尔"公司与美国"万顺 ...

  • 数字化设计与制造技术的研究现状
  • 数字化设计与制造技术的研究现状 摘要:数字化设计与制造在先进制造技术.医疗康复器械与生物工程等众多相关领域中占有越来越重要的地位.从20世纪50年代数控机床的出现开始,经过了单元制造技术.集成制造技术和网络化制造技术的发展过程,数字化制造技术得到了迅猛的发展.本文在大量阅读相关文献的基础上,对数字化 ...

  • 档案专业技术工作述评
  • 一、研究热点评价 1、数字档案馆的定义 自从数字档案馆概念出现以来,始终没有一个统一、明确的定义。不同的论文作者从不同角度对其进行了各自的阐述。主要观点有:①数字化档案馆是指二进制编码的数字方式存储、处理档案信息内容,应用计算机、通讯和多媒体技术,提供电子网络检索和服务的档案信息系统。[1]②数字档 ...

  • 数字技术对影视制作的影响分析
  • 数字技术对影视制作的影响分析 [摘要]大众文化越来越向科技化发展,而在电影电视的创作中 越来越广泛的使用到了数字技术,数字技术的应用对受众造成了强 大的视觉冲击,让他们在屏幕上看到了气势恢宏的一幕,这在很大 程度上满足了受众的视觉体验.随着大众的认可,越来越多的影视 作品中应用了数字技术,数字技术逐 ...

  • [电子签名法]中第三方认证机构作用的释义
  • <电子签名法>中第三方认证机构作用的释义 <电子签名法>颁布施行以来,争议最大.最多的莫过于"第三方认证机构的作用". <电子签名法>的颁布施行,对于电子认证领域或者我们习惯称呼的"安全认证领域"的确是个"福音&q ...

  • 电子商务安全防范的策略
  • 电子商务安全防范的技术策略 一.从科技层面加强防范措施 (一)几种主要的电子商务安全技术 1. 加密技术 加密技术是电子商务才去的主要安全措施,是实现信息的保密性.完整性的核心.加密技术一方面以用于数据.文件加密,另一方面也是身份认证.数字签名等安全技术的基础.按照密钥的不同,加密技术主要有对称型密 ...

  • 论数字城市建设及其重要意义
  • 第22卷 第3期 2002年9月天津师范大学学报(自然科学版)JournalofTianjinNormalU niversity(NaturalScienceEdition)Vol.22No.3 Sep.2002 文章编号:167121114(2002)0320069204 论数字城市建设及其重要意 ...

  • 文化数字化
  • 中国非物质文化遗产数字化保护 刘康婷 山东建筑大学 管理工程学院 山东 济南 摘要:文章认为数字化技术在非物质文化遗产保护与传承中的重要作用体现在四个方面:即数字化采集和存储技术为非物质文化遗产完整保护提供了保障,数字化复原和再现技术为非物质文化遗产有效传承提供了支撑,数字化展示与传播技术为非物质文 ...