公钥与私钥的应用-非对称加密

密钥(secret key):是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。

非对称密钥是一对的密钥。假设用A,B表示。用A加密的数据,只有用B才能解密。用B加密的数据,只有使用A才能解密。
当我们获得了一对密钥,我们把B公开给外界,而自己留着A。这时公开的B称为公钥(public key),而自己留着的A成为密钥(private key)。如果我们把A公开,B私有。那么,B就称为私钥,相应的,A就称为公钥。

现在有三个人,Alice,Bob,Hacker。
Alice要给Bob发送悄悄话信件(不想让被人知道),可以使用Bob的公钥进行加密。这样,只有Bob自己才能查看信件,其他人即使获取了也没有密钥解密,无法查看具体信息。这称为公钥加密,私钥解密
Bob给Alice回信。信件写好后,Bob先用hash函数生成信件的摘要。在用自己的私钥进行加密。这个加密的摘要叫做数字签名。将数字签名附在信件上一同发给Alice。Alice收到信件后,用公钥将数字签名解密成摘要1。再用相同的hash对信件生成摘要2。将两个摘要进行对比,可以知道,这封信件在传输的过程中有没有被篡改。这称为私钥签名,公钥验证
(注意:Bob发给Alice的信件没有秘密,也无需加密。只需保证在发送的过程没有被篡改即可。数字签名就可以完成这个任务。hash函数对不同的内容会产生不同的哈希值。如果Hacker中途截到信件,要篡改它,必须得生成新的摘要并hash运算,然后再加密。这时,hacker发现没有Bob的私钥所以没办法加密,因为Alice肯定会用Bob的公钥进行解密。用其他的私钥加密,会导致Alice无法解密。这样就确保了信件没有被篡改。)
中间人攻击:Hacker把Alice电脑中Bob的公钥换成了自己的公钥。当Alice要发给Bob隐私信息的时候,把Hacker的公钥当成Bob的公钥对信息进行加密,发给Bob。Hacker在中途截取了信息,用自己的密钥解密,窃取了信息。然后再用Bob的公钥将解密的信息或者更改信息后加密,发给Bob。这样Bob便不知道发给自己的信息是被人窃取或更改过的了。
同时,当Bob发送签名信件时,Hacker依然截取,将信件篡改后,hash成摘要,用自己的密钥做成签名,发给Alice。这样,Hacker就随心所欲操控Alice和Bob的通信。
如何解决中间人攻击?
Bob找到了一个权威机构CA,CA用自己的私钥给Bob的公钥和Bob的相关信息(如名字,出生日期,网站地址等)加密,就成了数字证书。这样,每次Bob再给Alice发送信息时,就带上数字证书一起。Alice收到后,用CA的公钥解开数字证书就能获得真正的Bob的公钥了。
这时,又有了一个问题,怎么知道CA的公钥确实的CA的公钥?哈哈。。。又回到了最初的起点。

参考文献

公钥与私钥:https://zhuanlan.zhihu.com/p/31477508

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值