几种通信加密的方法(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年提出了一种算法实现。

 

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

 

 

 

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

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值