https://www.cnblogs.com/happystudyhuan/p/12286076.html
http的主要缺点:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
https = http + 加密 + 认证 + 完整性保护
对称密钥加密
非对称加密
公钥加密,私钥解密。
私钥加密,公钥解密。
报文完整性
- 确保报文的确来自通信的对方,而不是其他人
- 该报文在途中没有被修改
密码散列函数
- 散列函数以m为输入,并计算得到一个称为散列的固定长度的字符串H(m)。
- 因特网校验和和CRC都满足该定义。
- 找到任意两个不同的报文x和y使得H(x) = H(y),在计算上是不可能的。
报文鉴别码
前提:为了执行报文完整性,处理使用密码散列函数,Alice和Bob共享秘密s。这个共享秘密只不过是一个比特串,成为鉴别密钥(authentication key)。
- Alice生成报文 m,用 s 级联 m 已生成 m+s,并计算散列 H(m+s)(例如使用SHA-1)。H(m+s) 被称为报文鉴别码(Message Authentication Code, MAC)
- Alice则将MAC附加到报文 m 上,生成扩展报文(m, H(m+s)),并将该报文发送给Bob
- Bob接收一个扩展报文 (m, h),由于知道 s ,计算出报文鉴别码 H(m+s)。如过 H(m+s) = h, Bob的结论一切正常
数字签名
正如人手签字一样,数字签名也应当以可见别的、不可伪造的方式进行。这就是说,必须能够证明由某个人在一个文档上的签名确实是由改任签署的(该签名必须是可证实的),且只有那个人能够签署哪个问文档(该签名无法伪造)。
为了签署这个文档,Bob直接使用他的私钥K- 计算 K-(m)。
- 无论是谁签署这个报文,都必定在计算签名K-(m)过程中使用了K-这个私钥,使 K+(k-(m)) = m。
- 知道K-这个密钥的为一人只有Bob。
如果源文档m被修改过,比如改成了另一个文档m‘,则Bob对m生成的签名对m’无效,因为K+(K-(m)) 不等于 m’。一次我们看到数字签名也提供完整性,使得接收方验证该报文未被篡改,同时也验证了该报文的源。
公钥认证
数字签名的一个重要应用是公钥认证,即证实一个公钥属于某个特定的试题。
将公钥与特定实体绑定通常是由认证中心(Certification Authority, CA)完成的,CA的职责就是使识别和发现证书合法化。
CA作用:
- CA证实一个实体(一个人,一台路由等)的真实身份。
- 一旦CA验证了某个实体的身份,这个CA会生成一个其身份和实体的公钥绑定起来的证书(certificate),这个证书包含这个公钥和公钥所有者全局唯一的身份标识信息(例如,一个人的名字或一个IP地址)。由这个证书进行签名。
当客户端收到服务端的消息时,客户端使用CA的公钥来核对服务端证书的合法性并提取Bob的公钥。
重放攻击
- 重放攻击的基本原理就是把以前窃听到的数据原封不动地重新发送给接收方。
很多时候,网络上传输的数据是加密过的,此时窃听者无法得到数据的准确意义。但如果他知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到愚弄接收端的目的。例如,有的系统会将鉴别信息进行简单加密后进行传输,这时攻击者虽然无法窃听密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。
中间人攻击原理
HTTPS中间人攻击防御:
SSL会话劫持成功的必要条件:
HTTPS的作用:
- 保密:访问者的连接被加密,隐藏URL、Cookie和其他敏感元数据。
- 保证真实性:访问者是与“真实的”网站发生对话,而不是通过模仿者或者“中间人”进行对话。
- 保证可信性:访问者和网站之间发送的数据没有被篡改和修改。
为什么HTTPS仍然会不安全?
-
加密是发生再应用层和传输层之间,在传输层看到的数据是经过加密的。加密数据只有在客户端和服务端才能得到明文,客户端和服务端的通信过程是安全的。
-
而在浏览器的调试工具里可以看到请求信息,而且还是明文,是因为这里的数据是应用层的,还未经过加密。