`
jubincn
  • 浏览: 242330 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

几种通信加密的方法(Key Agreement Protocol, Digital Signatures, RSA from Blown to Bits)

 
阅读更多

这几天在读《Blown to Bits》中有关加密的章节,在这里做些小结。《Blown to Bits》一本有关计算科学的科普书,这本书是以Creative Commons协议发布的,可以从http://www.bitsbook.com/免费下载。

Key Agreement Protocol

通过场景介绍基本原理是比较通俗易懂的方式,这里首先布置一个场景:

主人公:小白,小黑,小花

背景:小白想和小黑通过公网通信,小花想

人物介绍:

小白:拥有一个数字私匙a

小黑:拥有一个数字私匙b

非人物介绍:

公共公匙:g,任何人都可以获得

双方开始通话:

小白:利用公共公匙g和自己的私匙a生成自己的公匙A

小黑:利用公共公匙g和自己的私匙b生成自己的公匙B

小白:获取小黑的公匙B,并利用自己的私匙a与B进行运算C = a * B = a * b* g

小黑:获取小白的公匙A,并利用自己的私匙b与A进行运算C = b * A = b * a* g

小花:获取了公匙g, A, B,但无法获得C

这样,双方就可以利用C进行加密、解密操作从而进行安全通信了。

我的迷惑:知道了g和A,难道不能计算出a = A/g吗?不太明白这个数学上的原理,书里也没细讲,欢迎热心人留言讲解一下:)

Public Keys for Private Messages

主人公:小白,小黑们,小花

背景:小白想让小黑们给他发送加密的信息,小花想获取这些信息

人物介绍:

小白:拥有一个数字私匙a,一个公匙A = a * g

小黑:拥有一个数字私匙b,一个公匙B = b * g

非人物介绍:

公共公匙:g,任何人都可以获得

小黑们开始向小白发送消息:

小黑:接受小白的公匙A,利用自己的私匙b和小白的公匙A对数据进行加密C = A * b,然后将加密数据和公匙B发送给小白

小白:接受小黑们的加密信息信息和公匙B,利用C = a * B解密信息

小花:获取了A,B,g,但无法解密数据

这种方式的核心仍是Key Agreement Protocol的原理,与Key Agreement Protocol的不同之处是小黑往往每次都换私匙b,因为不涉及到交互,因此保密性更强。

Digital Signature

数字签名的一个主要作用是验证发行人,例如验证声明为小白发布的信息的确是小白所发布,而不是其他人的冒名顶替。

主人公:小白,小黑,小花

背景:小白发布了一个信息,加入自己的签名,小花想伪造小白的签名,从而发布虚假信息

人物介绍:

小白:拥有一个公匙-私匙对

小白开始发布信息:

小白:在自己发布的信息中提取一个digest,然后使用私匙对这个digest进行加密

小黑:使用小白的公匙对小白的digest进行解密,然后与小白所发布的信息进行对照,如果一致,则可以确定这个信息的确是小白所发

小灰:无法获得小白的私匙a,因此对digest进行加密

公匙-私匙对(key-pair)的主要实现算法就是RSA算法

RSA

RSA算法思想的提出是在Diffie和Hellman于1976年发表的论文中提出的,然后Ron Rivest, Adi Shamir和Len Adleman在1977年提出了一种算法实现。

其核心思想:使用私匙加密的数据只有用公匙才能解密,使用公匙加密的数据只有使用私匙才能解密

这种方法的数学原理我还不清楚,希望热心人帮忙补充:)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics