3DES_RSA加密算法数字签名方案可有效提高数字签名的安全性。那么我今天就给大家介绍一下3DES_RSA加密算法数字签名是如何实现的。

一、3DES_RSA加密算法混合数字签名

1、签名方案

数字签名的实现过程一般分为获取明文消息的数字摘要、对数字摘要进行加密和对签名后的消息进行认证。

数字签名常用的加密算法包括单一的数字签名方法如:RSA、ECC等和混合签名加密算法如DES_RSA混合签名加密算法、DES ECC混合签名加密算法,其中DES加密算法主要针对明文文件加密,而RSA加密算法主要用于密钥。

上一世纪90年代中期对RSA加密算法的攻击主要采用了二次筛法进行因子分解的方法,仅具备对RSA-110攻击的可能,而后发展的一般数域法(GNFS)其效率为二次筛法的五倍,已具备了对RSA-130攻击的可能性,在加密算法的速度上,DES加密算法要远远快于RSA加密算法,妥提高数字签名的可靠性,可使用增加RSA加密算法长度或采用对RSA加密算法再次加密,由于RSA加密算法相对较慢,增加长度会大大降低数字签名的速度,我们采用了对RSA随机大素数使用3DES进行加密的方法既考虑了加强RSA数字签名的安全性又减少对签名过程运算速度的影响。

3、DES加密算法

DES加密算法在穷举攻击中相对比较脆弱,有人提出其它方案来取代DES加密算法,而具体比较可行的方案是用DES加密算法进行多次加密,并采用多个密钥,现在广泛被接受的方案为3DES加密算法,并采用两个密钥。具体运算过程为:

3DES_RSA加密算法数字签名的实现

若使用启发性攻击方法对3DES加密进行攻击,所需的期望运算时间大约为:

3DES_RSA加密算法数字签名的实现

由于一般情况下不具有相当数量的(p,c)对,则对3DES加密算法的攻击相当困难。

3DES加密算法的基础是DES加密算法,DES加密算法基本过程为:对64位的明文分组进行操作.将明文分组成左半部分和右半部分,各32位长。然后进行16轮完全相同的运算。在运算过程中数据与密钥结合。经过16轮后.左、右半部分合在一起经过一个末置换砌始置换的逆置换)。3DES加密算法就是将上述过程重复三次,根据选择来确定密饲的个数,实现过程包含两个密钥,第一次运算和第三次运算采用相同的密钥,第二次采用另一个密钥。

3、RSA加密算法

RSA加密算法可以用如下过程简单描述为:

选择p.q(P和q都是素数)。

计算p×q。

计算_Φ(n)=(p-1)×(q-1)。

选择整数e,gcd(Φ(n),e)=1,1<e<Φ(n)。

计算d.d=e-1modΦ(n)。

共钥:KU={e,n}。

私钥:KR={d,n}。

加密:M<n,C=Me(mod n)。

RSA加密算法的安全性是基于大数分解的难度,其中共钥和私钥是一对大素数(100到200位十进制或更大)的函数,从一个公开的密钥和密文中恢复出明文的难度等价于分解两个大素数之积。

4、3DES_RSA加密算法

RSA加密算法需要两个随机大素数,其生成的过程首先生成随机大数,生成算法采用ANSI X9.17方法生成伪随机数,该加密算法采用3DES的EDE模式,如图1所示:

3DES_RSA加密算法数字签名的实现

3DES_RSA加密算法的输入是:一个整数m.初始化64比特的种子s,3DES的密钥k1,k2,算法的输出是m个64比特串V1,V2......Vm。其计算过程为:

(1)计算I=EK(D)

(2)for(i=1 to m)

(a)Vi=Ek(i+8)

(b)s=Ek(VI+1)

(3)返回(V1,V2……Vm)

然后由上述的6位比特串生成512位随机效。

RSA加密算法中所需的两个随机大素数通过上述的512位随机数获得,其生成的过程为:首先将最高位置为1以保证素数要求的位数,最低位置为1确保它是奇数,然后测试它能否被小于等于4001的素数整除,最后用10个小素致对这个素数用Miller_Rabin法进行测试,如果通过测试则认为概效为素数,实际上这个数为素数的概率为99.9999%,否则将这个数减2重复上述方法继续进行测试。

二、3DES_RSA加密算法数字签名的实现

1、大数的处理方法

目前大多数的编译器只支持到64位的整数运算,因此在进行运算中的正数都必须小于64位,因此需专用方法来处理大数.最简单的方法是采用数组,但1024位的大数用十进制表示也需要300多位,效率很低,如用二进制表示则效率更低。

比较有效的方法是采用n进制的数组,对32位机而言n为铲是比较合适的选择。这样对于各种运算最多只需要进行32次循环。在数字签名实现方案中采用了0×100000000进制的方法。

幂模运算是RSA加密算法的核心,模乘运算A*B%N的运算过程中,如直接进行计算则会产生1024位中间结果,需动态分配内存,否则会造成效组空间增加1倍,而动态分配内存会造成大敛存储的不连续性,为避免以上两个问题,可采用图2所示的计算方法:

3DES_RSA加密算法数字签名的实现

2、对文档的数字签名

信息发送者对Word、Excel、txt等文档进行数字签名的过程主要包括:读取明文的信息摘要、对信息摘要进行数字签名、在原文中附加签名内容。

信息接受者在获得文档后对经过数字签名的文档进行认证。确认文档为原始文档。如果文档被篡改则不能通过认证。

读取明文的信息摘要通过SHA_1(哈希-1)加密算法计算散列值的方法。对于不同的文档读取明文信息的方法略有不同,对于txt文档,读取方式相对比较简单,可以采用直接读取文档字符,然后采用SHA_1加密算法即可解决。但对于Office相关的文档相对比较复杂,Office办公软件是基于com接口的,其中相关文档的格式并未公布,故无法直接获得其相关内容,我们采用在读取Office文件时直接读取相关字节码,然后对字节码进行数字签名,再采用写文件的方式将字节码转换成Office相关文件,认证过程以同样的方法实现。

3、3DES_RSA加密算法数字签名的实现

数字签名方案的实现流程图如图3所示:

3DES_RSA加密算法数字签名的实现

3DES_RSA加密算法数字签名方案在VC6.0环境中实现,采用面向对象的程序设计方法,分别构造了CBiglnt类和CRSA类,其中CBiglnt类主要完成对大数的各种运算。CRSA类主要完成索性测试、密钥生
成等,主要类均以文件形式处理,以提高软件的复用性。该过程使用3DES- RSA混合加密算法,并实现了可视化对文件的数字签名。

小知识之SHA 1

SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。然而人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-384 和 SHA-512 (这些有时候也被称做 SHA-2)。