https加密

Posted cathy_mu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https加密相关的知识,希望对你有一定的参考价值。

cookie session和token的差别 再找找
加上http://www.ruanyifeng.com/blo...
加上ssl协议生成三个随机数的部分,为什么需要三个随机数呢,增加密钥的随机性,一个伪随机不一定真的随机,但是三个伪随机就很接近随机了。
加上dh算法
加上session,session是为了免除交换密钥的这步,不是为了免于加密。窃取了session也不会破解加密信息。
session窃取 csrf 跨站请求伪造
https://cloud.tencent.com/dev...
反窃取
token

为什么要加密
http的内容是明文传输的,明文传输的数据经过中间节点时,可能被中间人窃取或篡改。即“中间人攻击”(MITM,Man-in-the-middle attack)。

如何保证信息不被中间人劫持和篡改?

通信双方可以约定一个密钥,发送方使用密钥把信息加密后传递,接收方接收到信息后,用密钥解密。

只要中间人无法得到密钥,即使截取到信息也无法得知信息的具体内容,亦无法伪造虚假信息给接收方。

这就是对称加密。
(https://sectigostore.com/blog...)

如何保证密钥只有发送方和接收方知道,中间人无法知道?

思路1:在发送方和接收方诞生的时候,已经被写入密钥。
比如某些特定的保密硬件设备。

这个思路在互联网通信中明显是不现实的,一台设备不可能在出厂时就写入所有发送者的密钥,在它出厂后,新的发送者也在源源不断的诞生。

那么只能让一方将密钥传递给另一方,并且保证在传输过程中,密钥不被中间人劫持和篡改。

问题好像回到原点。

也没完全回到原点。比起正常通信,密钥的数据量小的多。通过“使用对称加密”,这个问题的量级降低了,对成本的容忍提升了,只要不计成本的保证第三人无法得到密钥即可。

这里就可以使用到非对称加密,非对称加密使用两把密钥,用一把密钥加密的内容,只能用另一把密钥解密。

通信双方将一把公开,做公钥,一把不公开,做私钥。一方使用公钥加密密钥,另一方使用私钥解密,获得密钥。

用于解密的私钥未被公开传输过,所以不会被中间人窃取,中间人没有私钥,就无法解密并窃取对称密钥。

破解非对称加密
从中间人的角度看,虽然劫持不到私钥,破解不了对称密钥。但是他可以劫持并篡改公钥,让双方传递一个“自以为加密了的”对称密钥,实际上,用假公钥加密的对称密钥在中间人眼中形同裸奔。

代码块
JSON

甲-------公钥------->中间人-------假公钥------->乙

                                         乙(生成密钥,用假公钥对密钥加密)
                                    
                中间人<----假公钥*密钥----->乙

                中间人(用假私钥解密出密钥)
                

甲-----公钥*密钥------中间人

甲(用私钥解密出密钥)

中间人破解非对称加密的关键在于,公钥是公开的。
只要公钥是公开的,就无法避免被截取和篡改。
只要公钥被篡改,使用公钥加密的对称密钥,就相当于没加密。

如何保证公钥不被篡改呢?
好像又回到了原点。
但没有完全回到原点,因为问题从“保证中间人无法窃取、篡改密钥”降级成“窃取了公钥也没关系,无法篡改即可”。

那么如何保证中间人无法篡改公钥呢?

?为什么非对称加密成本高。

以下是废稿

于是小红改纸条上的内容,小明想和小强约定一个密钥。小明把纸条加密后再传递,小强收到加密的纸条,用同一个密钥解密才能阅读。

这样即使小红在路上看了纸条,也看不懂上面写的是什么。

以上是关于https加密的主要内容,如果未能解决你的问题,请参考以下文章

论如何设计一款端对端加密通讯软件

这两个代码片段有啥区别?

PHP代码-psysh调试代码片段工具

typescript Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming/angular-2/

typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming

typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming