公钥密码又称为非对称密码,拥有公钥密码的用户分别拥有加***和解***。通过加***不能得到解***。并且加***是公开的。
什么是**配送问题
在现实世界中使用对称密码时,我们一定会遇到**配送问题( key distribution problem)。
假如 A 给 B 写了一封情书,并使用对称加密,如果不讲加***发送给B,B是无法查看情书的,如果将**和情书一起发送给B,就容易被攻击者截获。
**必须要发送,但又不能发送,这就是对称密码的**配送问题。
解决**配送问题的方法:
- 通过事先共享**来解决
- 通过**分配中心来解决
- 通过Diffie-Hellman**交换来解决
- 通过公钥密码来解决
通过事先共享**来解决
**配送问题最简单的一种解决方法,就是事先用安全的方式将**交给对方,这称为**的事先共享。 事先共享的局限性:
- 需要一种安全的方式将**交给对方。
- 即便能够实现事先共享**,但在人数很多的情况下,通信所需要的**数量也会增大。
通过**分配中心来解决
如果所有参与加密通信的人都需要事先共享**,则**的数量会变得巨大,这样额情况下就可以使用**分配中心(Key Distribution Center,KDC)来解决**配送问题。当需要进行加密通信时,**分配中心会生成一个通信**,每个人只要和**分配中心事先共享**就可以了。有多少个人进行通信分配中心就保存了多少**。
局限性:
随着通信人数的增加,**分配中心的负荷也会随之增加。如果**分配中心计算机发生故障,所有的加密通信就会瘫痪。
如果主动攻击者入侵了**分配中心计算机,并盗取了**数据库,所有人的加密通信都会被破译。
通过Diffie-Hellman**交换来解决
在Diffie-Hellman**交换中,进行加密通信的双方需要交换一些信息,而这些信息即便被窃听者听到也没有关系。
根据所交换的信息,双方可以各自生成相同的**,而窃听者却无法生成相同的**。窃听者虽然能够窃听到双方交换的信息但却无法根据这些信息生成和双方相同的**。
通过公钥密码来解决
什么是公钥密码
公钥密码( public-key cryptography),又称为非对称密码,**分为加***和解***两种。发送者用加***对消息进行加密,接收者用解***对密文进行解密。
加***和解***的区别:
- 发送者只需要加***
- 接收者只需要解***
- 解***不可以被窃听者获取
- 加***被窃听者获取也没问题
解***从一开始就是由接收者自己保管的,因此只要将加***发给发送者就可以解决**配送问题了,而根本不需要配送解***。
公钥通信的流程
我们还是假设Alice要给Bob发送一条消息,Alice是发送者,Bob 是接收者,而这次窃听者Eve依然能够窃听到他们之间
的通信内容。
在公钥密码通信中,通信过程是由接收者Bob来启动的。
Bob生成一个包含公钥和私钥的**对。私钥由Bob自行妥善保管。
-
Bob 将自己的公钥发送给Alice。
Bob的公钥被窃听者Eve截获也没关系。
将公钥发送给Alice,表示Bob请Alice用这个公钥对消息进行加密并发送给他。 -
Alice用Bob的公钥对消息进行加密。
加密后的消息只有用Bob的私钥才能够解密。虽然Alice拥有Bob 的公钥,但用Bob的公钥是无法对密文进行解密的。
-
Alice将密文发送给Bob。
密文被窃听者Eve截获也没关系。Eve可能拥有Bob的公钥,但是用Bob的公钥是无法进行解密的。
Bob用自己的私钥对密文进行解密
公钥通信的流程图: