利用rsa算法实现数字签名毕业论文(编辑修改稿)内容摘要:
向陷门函数 设 f是一个函数, t 是与 f有关的一个参数,对于任一给定的 x。 计算 y,使得 y=f(x)是容易的。 如果当不知道参数 t 是,计算的 f 逆函数是难解的,但但 知道参数 t 时,计算 f 的逆函数是容易的,则称 f 是一个单向陷门函数,参数称为陷门。 [5] 对称加密体制 对称加密算法,又称私钥加密算法,就是加密密钥能够从解密密钥中推出来,反过来也成立,在大多数对称算法中,加密解密密钥是相同的。 对称算法的加密和解密表示为: MCDCME kk )(,)( ( 21) 对称加密算法的典型代表有 :DES, AES, 3DES, RC2, RC4, RCS, RC6,IDEA 等。 以 DES 为代表的对称密钥加密 算法的设计原则主要基于信息论的混乱和扩散。 混乱指的是密钥和明文及密文之间的依赖关系应该尽量复杂,以破坏分组间的统计规律,通常依靠多轮迭代来实现;扩散则应使密钥和明文的每一位影响密文中尽可能多的位数,这样可以防止逐段破译,并通过 S 盒的非线性变换来实现。 实际上,所有的对称密钥加密算法都采用 Feistel网、 S 盒及多次迭代等思河北工程大学毕业设计论文 7 想。 对称加密有速度上的优点,用软件实现,对称密钥比非对称密钥快 1001000倍。 然而,如果一个消息想以密文的形式传到接收者,我们应该找到一个方法安全传输密钥。 对称加密系统用键长来衡量加密 强度, 40 比特的键长被认为比较脆弱, 128 比特比较健壮。 对称加密算法的缺点则是密钥分发困难,密钥管理难,无法实现数字签名。 对称加密算法的优点是保密强度高,加解密速度快,适合加密大量数据。 攻击 者如果对加密后的数据进行破译,唯一的办法就是对每个可能的密钥执行穷搜索。 而采用这种加密技术,即使使用最快的计算机执行这种搜索,耗费的时间也是相当的长。 如果使用较大的密钥,破译将会更加的困难。 [6] 河北工程大学毕业设计论文 8 3 数字签名的基本概念和理论 数字签名概念 数字签名是一 种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。 一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。 数字签字由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。 特别是在大型网络安全通信中的密钥分配、认证以及电子商务系统中都有重要的作用,数字签名的安全性日益受到高度重视。 数字签名是指用户用自己的私钥对原始数据的哈希摘要进行加密所得的数据。 信息接收方使用信息发送方的公钥对附在原始信息后的数字签名进行解密后获 得哈希摘要,并通过与自己用收到的原始数据产生的哈希摘要对照,便可确信原始数据信息是否被篡改。 这样就保证了消息来源的真实性和数据传输的完整性。 [7] 数字签名理论 数字签名的实现通常采用非对称密码与对称密码体系。 不同的是,非对称密码体系的加密和解密过程分别通过两个不同的密钥来实现,其中一个密钥以公开,称为公开密钥,简称公钥,另一个有用户自己秘密保管,称为保密密钥,简称私钥。 只有相应的公钥能够对用私钥加密的信息进行解密,反之亦然。 以现在的计算机运算能力,从一把密钥推算出另一把密钥是不大可能的。 所以,数字 签名具有很大的安全性,这是它的一个优点。 数字签名的基本方式主要是:信息发送方首先通过运行散列函数生成一个欲发送报文的信息摘要,然后用其私钥对这个信息摘要进行加密以形成发送方的数列签名,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。 接收方在收到信息后首先运行和发送相同的散列函数生成接收报文的信息摘要,然后再用发送方的公钥进行解密,产生原始报文的信息摘要,通过比较两个信息摘要是否相同就可以确认发送方和报文的准确性。 当然,上述过程只是对报文进行了签名,对其传送的报文本身并未保密。 为了同时实现数字签名 和秘密通信,发送者可以用接收方的公钥对发送的信息进行加密,这样,只有接收方才能通过自己的私钥对报文进行接么,其它人即使获得报文并知道发送者 的身份,由于没有河北工程大学毕业设计论文 9 接收方的密钥也无法理解报文。 数字签名过程 为了实现网络环境下的身份鉴别、数据完整性认证和抗否认的功能,数字签名应满足以下要求: ( 1)签名者发出签名的消息后,就不能再否认自己所签发的消息; ( 2) 接收者能够确认或证实签名者的签名,但不能否认; ( 3) 任何人都不能伪造签名; ( 4) 第三方可以确认收发双方之间的消息传送,但不能伪造这一过程,这样,当通信 的双方关于签名的真伪发生争执时,可由第三方来解决双方的争执。 [8] 对于一个典型的数字签名体系而言,它必须包含 2 个重要的组成部分:即签名算法 (Signature Algorithm)和验证算法 (Verification Algorithm)。 为了满足上述 4点要求,数字签名体系必须满足 2 条基本假设: ( 1)签名密钥是安全的,只有其拥有者才能使用。 ( 2)使用签名密钥是产生数字签名的唯一途径。 ( 1)为保证签名的速度, A 先将原文进行单向 HASH 运算生成定长的消息摘要 A 图 31 生产摘要 ( 2)利用自己的私钥加密消息摘要得到数字签名 A,并将数字签名附在原消息后面 图 32 加密摘要 用户 A 原文 消息摘要 单向哈希值运算 用户 A 原文 数字签名 A 用户 B 用户 A 原文 数字签名 A 用户 B 河北工程大学毕业设计论文 10 ( 3)通讯时用户 A 将自己的名文一起通过网络送给通讯对方即用户 B 图 33 发送原文和摘要 接收方 B 接收到发送方A的签名消息后,对A的签名消息进行验证的过程如下: ( 1)将消息中的原消息与数字签名分离出来 图 34 分离明文和数字签名 ( 2)使用 A 的公钥解密数字签名得到摘要 图 35 得到摘要 ( 3)利用与发送方 A 相同的散列函数重新计算原消息的摘要 图 36 接受方计算摘要 ( 4)比较解密后获得的消息摘要 A 与重新计算产生的消息摘要 B,若相等数字签名 A 消 息摘要A A 的私钥 实现签名 用户 B 分离 数字签名 A 原文 原文 数字签名A 解密 消息摘要 A 数字签名A A 的私钥 A 的摘要 用户 B 原文 消息摘要 B 单向哈希值运算 河北工程大学毕业设计论文 11 则说明消息在传输过程中没有被篡改,否则消息不可靠。 图 37 验证数字签名 数字签名过程 图 38 数字签名流程图 验证失败 验证成功 相等吗 消息摘要 B 消息摘要 A A的私钥 加密后的摘要 加密后的摘要 散列函数 消息 散列函数 摘要 加密后的摘要 消息 解密后的摘要 解密算法 摘要 加密算法 消息 A的私钥 河北工程大学毕业设计论文 12 4 数字签名常见的算法及其数字签名 数字签名的方法有很多,现在主要应用的 数字签名主要有: RSA, DSA 以及椭圆曲线数字签名。 DSA 数字签名算法 .DSA 是 SChnorr 和 ELGAmal签名算法的变种,被美 NIST 作为 DSS 是一种公开密钥算法,它不能用作加密,只能用作数字签名。 DSA 使用公开公钥,为接受者验证数据的完整性和数据发送者的身份。 它也用作于由第三方去确定签名和所签收数据的真实性。 信息交流中,接受方希望收到的信息未被篡改,还希望收到的信息确实是自己认定的发送方所发,那么接受方和发送方就可以约定,共同使用 DSA 来实现。 DSA 数字签名实现的三个步骤 ( 1)参数与密钥生成 ( 2)签名的算法 ( 3)签名的验证算法 ( 1) 系统参数 :大素数 p, q 且 q 为 p1 的因子 , 并满足 2^511p2^1024, 2^159q2^160 ,以确保在 Zp 中求解离散对数的困难性。 g ∈ Zp , 且满足 g =h ^(p1)/q mod p,其中 h 是一整数 , 1 h p1 且h^(p1)/q modp1。 p,q,g 作为系统参数 ,供所有用户使用 ,在系统内公开 。 ( 2)用户私钥 :用户选取一个私钥 x,1x q,保密 。 ( 3)用户公钥 :用户的公钥 y,y = g^x mod p,公开 。 对待签消息 m,设 0mp。签名过程如下 : ( 1)生成一随机整数 k, k ∈ Zp*。 ( 2)计算 r = (g^k mod p) mod q。 ( 3)计算 s = k^1*(h(m)+x*r) mod q。则 (r,s)为签名人对 m的签名 。 3. 验证过程 ( 1)首先检查 r 和 s 是否属于 [0,q],若不是 ,则 (r,s)不是签名。 ( 2)计算 t= s^1mod q , r’=(g^h(m) t mod q (y^r*t mod q )mod p) mod q。 ( 3)比较 r’= r 是否成立 ?若成立 ,则 (r,s) 为合法签名 ,则 (r,s) 为签名人对 m的河北工程大学毕业设计论文 13 签名 DSA 的安全性 DSA 的安全性主要依赖于整数有限域离散对数难题。 其安全性与 RSA 相比差不多, DSA 的一个重要特点是两个素数公开,这样,当使用别人的 P 和 Q 是,即使不知道私钥,你也能确认他们是否是随机产生的,还是做了手脚的。 RSA算法是做不到的。 素数 P 必须足够大,且 p1 至少包含一个大素数因子以抵抗Pohligamp。 hellman 算法的攻击。 M 一般都应采用信息 HASH 的值。 DSA 安全性主要依赖于 p 和 g,若选取不当则签名容易伪造,应保证 g 对于 p1 的大素数因子不可约。 DSA 的一个主要特点是两个素数公开,这样,当使用别人的 p 和 g,即使不知道私钥,你也能确认他们是随机产生的。 [9] 椭圆曲线代理签名体制 椭圆曲线数字签名 ECDSA 椭圆曲线签名算法 ECDSA 是基于椭圆曲线密码体制 (ECC)的数字签名算法。 DSA 是美国国家标准局制定的数字签名算法,他是建立在有限域乘法群上的。 对于有限域上的椭圆曲线密码系统, 数字签名标准建议采用椭圆曲线数字签名算法 ECDSA,下面给出该算法的过程。 假设一组椭圆曲线的参数组为 (q, FR, a, b, G, n, h)。 其中 q 是域的阶,FR 指示域中元素的表示方法, a, b 是两个系数, G 是基点, G 的阶为 n,余因子 h=E(Fq)/ n,他是一个小的素数。 1 ECDSA 密钥对生成过程 ( 1)选择一个随机数 d,d∈ (1,n1)。 ( 2)计算 Q,Q=d*G。 ( 3)那么公钥为 Q,私钥为整数 d。 2 ECDSA 签名过程 假设待签名的消息为, m; ( 1)选择一个随机数 k, k∈ (1, n1)。 ( 2)计 算 k*G=(x1,y1)。 ( 3)计算 r=x1 mod n;如果 r=O,则返回到步骤 (1)。 ( 4)计算 s=k^1(e+d*r) mod n,如果 s=O,则返回到步骤 (1)。 ( 5)对消息的签名为 (r, s),最后签名者把消息 m和签名 (r, s)发送给接收者。 河北工程大学毕业设计论文 14 3 ECDSA 密钥对验证过程 获得发送者的公钥 Q 开始验证: ( 1)检查 r, s,要求 r, s∈ (1, n1)。 ( 2)计算 e=SHA1(m)。 ( 3)计算 w=s1mod n。 ( 4)计算 u1=e*w mod n; u2=r*w mod n。 ( 5)计算 X=u1G+u2Q。 ( 6)如果 X=O,表示签名无效;否则, X=(x1, y1),计算 v=x1 mod n。 ( 7)如果 v=r,表示签名无效;否则表示签名有效。 [10] 椭圆曲线数字签名的安全性 ECDSA 在安全性方面的目标是能抵抗选择明文(密文)攻击。 而攻击 A 的攻击者的目标是在截获 A 的签名后,可以生成对任何消息的合法签名。 尽管ECDSA 的理论模型很坚固,但是人们仍研究很多措施以提高 ECDSA 的安全性。 在 ECDLP 不可。利用rsa算法实现数字签名毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。