公钥密码
什么是公钥密码
公钥密码(public-key cryptography)中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。
仔细思考一下,我们可以发下:
- 发送者只需要加密密钥
- 接收者只需要解密密钥
- 解密密钥不可以被窃听者获取
- 加密密钥被窃听者获取也没问题
也就是解密密钥从一开始就是由接收者自己保管的,因此只要将加密密钥发给发送者就可以解决密钥配送的问题了。
公钥密码汇总,加密密钥一般都是公开的。正是由于加密密钥可以任意公开,因此该密钥被称为公钥(public key) 。
相对地,解密密钥是绝对不能公开的,这个密钥只能由你自己来使用,因此称为私钥(private key)。
公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对(key pair)。公钥和私钥不能分别单独生成的。
公钥密码通信流程
我们假设Alice 要给Bob发送一条消息,而窃听者Eve依然能够窃听到他们之间的通信内容。
在公钥密码通信中,通信过程是由接收者Bob来启动的。
- Bob生成一个包含公钥和私钥的密钥对,私钥由Bob自行妥善保管。
- Bob将自己的公钥发送给Alice,Bob的公钥被窃听者Eve截获了也没关系。将公钥 发送给Alice,表示Bob请Alice用这个公钥对消息进行加密并发送给他。
- Alice用Bob的公钥对消息进行加密。加密后的消息只有用Bob的私钥才能解密。虽然Alice拥有Bob的公钥,但用Bob的公钥是无法对密文进行解密的。
- Alice将密文发送给Bob。密文被窃听者截获也没关系。Eve可能拥有Bob的公钥,但是用公钥是无法进行解密的。
-
Bob用自己的私钥对密文进行解密。
使用公钥密码,Alice向Bob发送消息.png
公钥密码无法解决的问题
公钥密码解决了配送问题,但这并不意味着它就能解决所有问题,因为我们需要判断所得到公钥是否正确合法,这个问题别称为公钥认证 问题。这个问题,我们会后续讨论
公钥密码还有一个问题是,它的处理速度只有对称密码的几百分之一。
该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原著
网友评论