通信安全:哈希、加密、证书、签名、密钥协商、ECDH、TLS、DTLS
为什么数字证书里的张三的公钥一定是真的呢?因为CA是权威机构,假设全世界就一家(其实不止,但也不多),它的公钥天下尽知,就是固定的串,所以能用CA公钥解开的证书,一定是CA颁布的,因为CA用它的私钥加密产生的证书。很明显,非对称加密能用于证明我是我。 密钥交换算法 著名的DH密钥交换算法,这个算法很有意思,也很巧妙,简而言之,就是通信双方交换一点信息(不怕被偷看到),然后就在两端,分布产生出一个相同的密钥,神奇啊。 有一个很有意思的例子。 ![]() Alice和Bob要协商出一个公共的颜色,他们可以交换信息,但交换的信息,可以被偷看到,怎么办?既能协商出公共颜色,又不能让别人知道呢。 首先,他们有公共的颜色,都是1毫升黄色。 然后Alice挑选一个私密的红色,Bob选绿色,都是1毫升。只有自己知道,不会告诉别人。 然后Alice把黄色和红色混合在一起,Bob把黄色和绿色混合在一起,各为2毫升。 然后,他们把自己混合后的2毫升颜色液体,发给对方。 然后,用自己的一毫升私密颜色液体,跟从对方那里收到的2毫升液体,混合,下面就是见证奇迹的颜色的时刻,他们得到了相同的颜色,而第三方并不能通过偷看他们传递的数据知道他们最终得到的颜色(基于一个假设,图里有说明)。 密钥交换算法的原理跟这个差不多,网上有大量的资料讲述这个问题,我觉得理解了上面的例子,再看ECDH便也不难了。 众所周知http是互联网协议,但是它不够安全,所以后面有改进版的https,其实就是多了一个TLS,这个是传输层加密,本质上,就是通过handshake,协商出一个会话密钥,后面的数据传递,都用这个密钥做对称加解密。 我们经常讲安全通道,其实也就是协商出一个会话密钥,他并不神秘。胡乱放几张图片吧。 为了减少这几个RTT,又想了各种办法,然后复用连接的话,就可以做到0RTT,1RTT了。 ![]() ![]() ![]() ![]() ![]() 就说这些吧,最后抛几个名词,有兴趣自行百度学习:DTLS,HMAC,AEAD,重放攻击,放大攻击,是不是很高端?
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |