网络安全技术汇总.ppt

  1. 1、本文档共339页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.2 数字签名技术原理 .精品课件. * 一、消息摘要 1、含义:是通过对不同长度的输入信息进行散列函数运算,产生固定长度的输出,这样的输出信息称为原信息的“消息摘要”。 散列函数具有以下属性: (1)能够应用到大小不一的数据上 (2)对任何输入报文数据生成固定长度的输出 .精品课件. * 一、消息摘要 (3)对任意给定的原信息,散列函数的计算相对简单 (4)对任意给定的消息摘要,要发现满足散列函数运算得到该结果的原文在计算上是不可行的。 (5)两原信息的散列运算后结果是不可能一致的。 2、常用算法: (1)MD5:每次处理512位的数据块,生成128位的消息摘要 (2)SHA:每次处理512位的数据块,生成160位的消息摘要 .精品课件. * 二、数字签名原理 1、发送方签名过程 将原文进行哈希运算生成定长的消息摘要—利用私钥加密信息摘要得到数字签名—将原文和数字签名一起发送给接收方 2、接收方验证过程 将消息中的原文和数字签名分离—使用公钥解密数字签名得到摘要—使用相同的哈希函数计算原文的信息摘要—比较解密后获得的摘要和重新计算生成的摘要是否相等。 .精品课件. * 三、数字签名算法 1、DSA签名算法 一)代码: p:一个素模数,其值满足: 2^(L-1) p 2^L,其中L是64的倍数,且满足 512 ≤ L ≤ 1024 。 q:(p-1) 的素因子,其值满足 2^159 q 2^160 。 g:g = powm(h, (p-1)/q, p) 。h为满足1 h p - 1 的任意整数,从而有 powm(h, (p-1)/q, p) 1 。 x:私钥。 x为一个随机或伪随机生成的整数,其值满足 0 x q 。 y:公钥。 y = powm(g, x, p) 。 .精品课件. * 三、数字签名算法 注: 1、整数 p, q, g 可以公开,也可仅由一组特定用户共享。 2、私钥 x 和 公钥 y 称为一个密钥对 (x,y) , 私钥只能由签名者本人独自持有,公钥则可以公开发布。密钥对可以在一段时间内持续使用。 3、符号约定: powm(x,y,z)表示 (x^y) mod z, 即 (x的y次方) 模 z 。mod为求模运算符; ^ 为幂运算符; 下文的*为乘法运算符。 .精品课件. * 三、数字签名算法 二)、签名产生过程如下: 代码: 1、产生一个随机数k,其值满足0 k q 。 2、计算 r := powm(g, k, p) mod q ,其值满足 r 0 。 3、计算 s := ( k^(-1) ( SHA(M) + x*r) ) mod q ,其值满足 s 0 。 .精品课件. * 注: 1、k^(-1) 表示整数k关于某个模数的逆元,并非指 k 的倒数。k在每次签名时都要重新生成。逆元:满足 (a*b) mod m =1 的a和b互为关于模数 m 的逆元,表示为 a=b^(-1) 或 b=a^(-1) , 如 (2*5) mod 3 = 1 , 则 2 和 5 互为 模数3 的逆元。 2、SHA(M ):M的Hash值,M为待签署的明文或明文的Hash值。SHA是Oneway-Hash函数,DSS中选用SHA1( FIPS180: Secure Hash Algorithm ),此时SHA(M) 为160bits长的数字串(16进制),可以参与数学计算(事实上SHA1函数生成的是字符串,因此必须把它转化为数字串)。 3、最终的签名就是整数对( r , s ), 它们和 M 一起发送到验证方。 4、尽管 r 和 s 为 0 的概率相当小,但只要有任何一个为0, 必须重新生成 k ,并重新计算 r 和 s 。 .精品课件. * 三、数字签名算法 三)、验证签名过程 用 ( r, s, M ) 来表示验证方通过某种途径获得的签名结果,之所以这样表示是因为你不能保证你这个签名结果一定是发送方生成的真签名,相反有可能被人窜改过,甚至掉了包。为了描述简便,下面仍用 (r ,s ,M) 代替 (r, s, M) 。 为了验证( r, s, M )的签名是否确由发送方所签,验证方需要有 (g, p, q, y) ,验证过程如下: 代码: 1、计算 w := s^(-1) mod q 2、计算 u1 := ( SHA( M ) * w ) mod q 3、计算 u2 := ( r * w ) mod q 4、计算 v := (( (g^u1) * (y^u2) ) mod p ) mod q =( (g^u1 mod p)*(y^u2 mod p) mod p ) mod q =( powm(g, u1, p) * powm(y, u2, p) mod p ) mod q 5、若 v

您可能关注的文档

文档评论(0)

liuxiaoyu98 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档