Lauren与密码学6,非对称密码系统

Haorui: 对称密码系统我们己经使用了至少4000年,但是在有些应用场景下就显得力不从心。首先是密钥个数问题,比如一个1000人的公司,每个员工之间都要进行加密通信。得需要多少密码?

Lauren:  相当于每个人要1000个密码,也就是1000乘以1000,要100万个密码。

Haorui:  正确答案应该是大约50万个,也很多了。而且在通信双方之间,必须事先通过安全信道传输密码才能通信。也就是说,消息与密钥必须通过两个信道发送。否则攻击者就有可能窃听到密钥,并解密密文。见图6.1



Lauren: 是的。另外,我觉得密钥必须在通信双方间共享,万一密钥泄密。双方都有嫌疑,无法确定责任人。

Haorui: 所以有人就提出了一个Idea,应该将加密密钥与解密密钥分开。也就是加解密的时候用不同的密钥。这就是今天要讲的非对称密码

非对称密码系统有两个密钥,我们称之为密钥对,一个称之为公钥(图2.1就是我生成的一个RSA算法的公钥),一个称之为私钥。公钥可以被公开的,私钥是绝对保密的,只有接收者拥有。发送者用公钥加密,接收者用私钥解密。见下图6.2.


Haorui: 再看看它的通信流程,见图6.3


首先,在通信之前,Bob将自己的公钥发给Alice。Alice用Bob的公钥对消息进行加密并发送给Bob,Bob用自己的私钥进行解密。因为只有Bob一个人有私钥,所以其它人是无法知道Alice给Bob消息的内容。

Lauren:  但是Bob的公钥在Internet上传输,万一被窃听了怎么办?

Haorui: 没有关系,公钥是可以被公开的。即便窃听者知道Bob的公钥,他还是没有办法知道Alice发给Bob的消息内容。我们再看看非对称密钥系统是否解决了上面说的密钥个数问题。

Lauren:  可以解决了,只需要1000个非对称密钥对就可以了。每个人都共享自己的公钥给其它人,则其它人就可以给自己发消息了。那么这个从技术上是怎么实现的,非对称加密算法长啥样?

Haorui: 非对称加密算法比较复杂,这里给个RSA算法的公式。稍为有一个感觉。具体的算法内容可以参照具体的标准,很多书上都有讲。见图6.4


公式中E和N一起组成公钥,D与N组成私钥。有一点要注意的是,因为其算法的复杂性,所以导致其加解密速度相对于对称密码算法而言要慢很多。所有在实际应用中,两者加密算法都有使用。

Lauren:  的确有点复杂。

Haorui: 没关系,这都是70年代产生的技术。实际使用过程中只需直接使用就好。不需要了解太多的技术细节。再仔细看看图6.3,看看这个技术有啥缺陷没?

Lauren:  Bob的公钥是通过不安全的信道传给Alice的。是不是会生产什么问题呢?

Haorui: 是的,这里面有个大问题。称之为中间人攻击。如果攻击者截获了Bob的公钥,并替换成自己的公钥,发给Alice。Alice误以为是Bob的公钥,用攻击者的公钥加密的信息,攻击者都可以解密。

Lauren:  有办法解决这个问题吗?

Haorui: 当然,需要用到电子证书来解决这个问题。这个后续再讲。

常用的非对称密码有RSA、DSA、ECC(Elliptic Curves Cryptography, 椭圆曲线密码编码学) 、ECDSA (ECC与DSA的结合) 、ElGamal方式、Rabin方式等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值