目录
HTTP的不安全问题
HTTP基于TCP的一种应用层协议 备注:HTTP本版1.0、1.1
1. HTTP协议本身虽然没有做过任何可靠性机制,但依托于TCP提供的可靠性数据传输,HTTP协议也是可靠的。
2. 网络数据本身是明文的+网络数据传递过程中实际上是一跳一跳传递的。这意味着中间的任意结点(网络层、传输层、应用层)都可能窃听、篡改、伪造网络数据。HTTP本身没有在这个环节上做任何的解决措施,TCP也没有。HTTP协议不是一种安全协议。
根本原因是HTTP协议是不安全的。
传输安全:防窃听、防篡改、防伪造。核心就是加密(encrypt)
明文数据->密文数据
支持反向处理密文数据->明文数据
密码学
只要信息有传递,都有传输安全的需要
对称、非对称加密
对称加密的密钥不会有别名。
非对称加密的密钥成对出现,称为密钥对(key pair)
其中一个密钥是"自己"保留的,只有一份,称为私钥(private key),另一份密钥可以公开出去,称为公钥(public key)。私钥加密,公钥解密
E(p, private key)= c ——> D(c , public key)= p
意味着"我"可以通过私钥加密数据,给任何拥有公钥的人,那么这些人可以通过手中的公钥进行解密,并且看懂“我"发的内容。但公钥想拿谁都能拿到,那这种加密的意义何在?
意义在于防伪造:因为某人可以用公钥解密出消息,说明这份消息一定是被与公钥相对的私钥加密而成的,而私钥只有"我"有,则说明这份消息一定是"我"发的,不是别人发的。这个场景下,私钥发挥类似印章的制度。
公钥加密,私钥解密
E(p, public key)= c ——> D(p, private key)= p
意味着谁都可以向"我"发信息,通过公钥加密。但只有"我"有私钥,所以只有"我"能看懂信息。《密折制度》防窃听、篡改。
HTTPS保证安全性
解决方法:通过证书(Certification)来解决该问题
CA (Certification Authority))证书当局——公证处(行政权力)
由公证处给服务器颁发一个证书——运营执照(上面写明了服务器是谁、提供什么服务、公证处的签名(印章)),公钥放在证书中。
客户端收到的不仅仅是一个公钥本身,而是一套围绕公钥建立的证明体系。
HTTP协议的默认端口是80,HTTPS协议的默认端口是443
加密解密技术
消息摘要技术(Message Digital)——防止数据本身被篡改的。
广义上哈希技术的一部分:
MD3、MD5、SHA-128、SHA-256、SHA-512
安全散列算法(英语: Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。