大佬教程收集整理的这篇文章主要介绍了从HTTP到HTTPS,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
窃听
伪装
篡改
http 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 http 的通信内容。
用SSL建立安全通信线路之后,就可以在这条线路上进行 http 通信了。
使用安全通信线路通信,不仅防窃听,还能防篡改。
对 http 协议传输的内容本身加密,即把 http 报文主体内容进行加密处理。为了做到有效的内容加密,前提是要求客户端和服务器同时具备加密和解密机制。
需要注意的是,这里加密的内容仍能被窃听,而且加密的内容仍可能受到中间人攻击,即传输内容有被篡改的风险
。
SSL 不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定对方的身份。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外,伪造证书从技术角度来说异常困难
。所以只要能够确认通信方(服务器或客户端)持有的证书,即可判断通信方的真实意图。
通过使用证书,以证明通信方就是预料中的服务器。这对使用者个人来讲,也减少了个人信息泄露的危险性。
可用MD5和SHA-1等散列值校验的方法以及确认文件的数字签名方法(以PGP创建的数字签名为例)来保证报文的完整性,但是当PGP和MD5本身被篡改时,报文的完整性依旧无法保证
。PGP 是用来证明创建文件的数字签名,MD5 是由单向函数生成的散列值。
仅靠http保证报文的完整性是非常困难的,需要借助组合SSL协议来实现。SSL 提供认证和加密处理及报文摘要功能,能够保障报文的完整性。
httpS == http + 加密 + 认证 + 完整性保护。
httpS的加密、认证、完整性保护都是通过SSL协议完成的。
因此,httpS就是身披SSL协议的http
。只是http的通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。
通常,http直接和TCP通信。使用SSL后,先和SSL通信,再由SSL和TCP通信。
不光是 http 协议,其他运行在应用层的 SMTP 和 Telnet 等协议均可配合 SSL 协议使用。可以说 SSL 是当今世界上应用最为广泛的网络安全技术。
加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system),所以也被叫做对称密钥加密
。
以共享密钥方式加密时必须将密钥也发给对方,而发送密钥就有被窃听的风险,如果密钥被攻击者获得,那加密也就失去了意义。如果不发送,对方就不能解密。再说,密钥若能够安全发送,那数据也应该能安全送达。
公开密钥加密使用一对非对称的密钥。一把叫做私钥(private key),另一把叫做公钥(public key)。私钥不能让其他任何人知道,而公钥则可以随意发布,是公开的,可以随意获取。
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理
,对方收到被加密的信息后,再使用自己的私有密钥进行解密
。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
想根据密文和公开密钥,恢复到信息原文是异常困难的, 因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到。
公开密钥正确性验证 —— 防公开密钥伪造
在与某服务器建立公开密钥加密通信时,无法证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。
为了验证公开密钥的正确性,可以使用数字证书认证机构CA和其相关机关颁发的公开密钥证书。
真正安全的公开密钥加密通信过程如下图所示:
使用公开密钥加密,能实现信息的安全交换,但公开密钥加密处理起来比共享密钥加密方式更为复杂,因此若在通信时使用公开密钥加密方式,效率就很低。
考虑两种加密方式各自的优势,可以采取混合加密的方式进行通信,即在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式
。
从仅使用服务器端公开密钥(服务器证书)建立httpS通信的整个过程如下图所示:
报文完整性保护
在以上流程中,应用层发送数据时会附加一种叫做 MAC(message Authentication Code)的报文摘要
。MAC 能够查知报文是否遭到篡改, 从而保护报文的完整性。
特性 | http | httpS |
---|---|---|
防窃听 | × | √(共享密钥加密) |
防伪装 | × | √(证书) |
防篡改 | × | √(MAC报文摘要) |
通信速度 | 快 | 比http慢2到100倍 |
通信成本 | 低 | 高(多为证书费用) |
以上是大佬教程为你收集整理的从HTTP到HTTPS全部内容,希望文章能够帮你解决从HTTP到HTTPS所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。