浅谈HTTP安全
一:HTTPS
1.1 什么是网络安全
当我们使用浏览器向服务器发送请求的时候,我们当然不希望我们发送的报文被截获,如果我们的身份或者密码被别有用心之人获取并冒充我们向银行发送请求,可能会造成财产的损失。通常认为,安全通信应该具有以下四个特征:
1.机密性(confidentiality):仅有发送方和接收方能够理解传输报文的内容,可采用加密手段实现。
2.完整性(integrity):通信的内容在传输过程中没有被篡改,可采用接口签名实现。
3.端点鉴别(end-point authentication):发送方和接收方都能够证实通信过程中所涉及的另一方,证明"你真的是你",可采用数字签名实现。
4.不可否认(undeniable):不能否认已经发生过的行为,保证通信事务的真实性。
只有同时具备了机密性、完整性、端点鉴别、不可否认这四个特性,通信过程才能算得上真正的安全。
1.2 什么是HTTPS
1.HTTPS是一个协议,协议名为https,默认端口号为443。
2.HTTPS是在HTTP的基础上实现了网络安全通信应该具备的四个特性。
3.HTTPS表示的是HTTP over SSL/TLS,将HTTP下层的TCP/IP协议换成了SSL/TLS协议。
4.HTTPS在语法和语义上跟HTTP完全一样。
1.3 HTTPS的作用
HTTPS能够鉴别危险的网站,尽最大可能的保证了你上网安全,防御黑客对信息的窃听、篡改或者钓鱼、伪造。
二:SSL/TLS
2.1 SSL
SSL(Secure Socket Layer)安全套接层,位于OSI模型的第五层(会话层),由网景公司于1994年发明,SSL有两个版本V2和V3,V1因为有严重的缺陷从未公开过,SSL的版本3由互联网工程组 IETF 把它改名为 TLS(Transport Layer Security)传输层安全,正式标准化。
2.2 TLS
目前使用最广泛的是TLS1.2,TLS由记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合了对称加密、非对称加密、身份认证等密码学技术。
2.3 OpenSSL
OpenSSL是一个著名的开源密码学程序库和工具包,几乎支持所有公开的加密算法和协议,已经成为事实的标准,许多应用软件都会使用它作为底层库来实现TLS功能,包含常用的Web服务器Apache、Nginx等。
三:简单密码学
机密性实现
实现机密性的最好方法就是"加密",把消息用某种方式转换成谁也看不懂得乱码。
密码套件
浏览器和服务器使用TLS建立连接时需要选择一组恰当的加密算法来实现安全通信,这些算法的组合被称为密码套件,转换前的信息称为明文
概念
加密是将消息用某种输出方式转换为谁也看不懂得乱码,只有掌握特殊钥匙的人才能转换成原始文本。这个钥匙称为密钥,转换前的信息称为明文,转换后的乱码称为密文,使用密钥还原明文的过程称为解密,加密解密的操作过程称为加密算法。
3.1 对称加密和非对称加密
对称加密
指的是加密和解密使用的是同一把密钥,是对称的。
非对称加密
非对称加密具有两个不同的密钥,一个称为"公钥",一个称为"私钥",公钥对任何人都是公开的,私钥是严格保密的。公钥加密后只能由私钥进行解密,私钥加密后也只能由公钥解密。网站秘密保管私钥,在网上任意发布公钥,即式黑客得到了公钥也因为没有私钥而无法破解密文。
混合加密
基于非对称算法解决密钥交换问题,再使用随机数产生的对称算法使用"会话密钥",再用公钥加密,即解决了对称加密的密钥交换委托,也解决了非对称加密的性能问题,完美实现了机密性。
3.2 数字签名和证书
完整性的实现
完整性的实现手段主要是摘要算法,也就是散列函数、哈希函数。类似于一种特殊的压缩算法,可以将任意长度的数据压缩成固定长度、而且独一无二的摘要字符串,MD5就是一种摘要算法。
摘要算法
摘要算法保证了数字摘要和原文是完全等价的,只要在原文后附上它的摘要,就能够保证数据的完整性。摘要算法不具有机密性,所以真正的完整性必须建立在机密性之上。
数字签名
使用私钥加上摘要算法,实现数字签名。
数字证书
CA(证书认证机构)对公钥认证的格式,不仅仅把公钥绑定在持有者身份上,还包含序列号、用途、颁发者、有效时间等等,把这些打成一个包再签名,完整地证明公钥关联的各种信息,形成数字证书。
四:SSL1.2连接过程
4.1 TLS协议组成
TLS包含了几个子协议,可以理解为它由几个不同职责的模块组成,例如记录协议、警报协议、握手协议、变更密码规范协议等。
记录协议:规定TLS收发数据的基本单位。
警报协议:向对方发出警报信息。
握手协议:浏览器服务器在握手过程中交换证书和密钥参数。
变更密码规范协议:通知对方后续的数据都将使用加密保护。
连接过程:首先HTTPS协议会先与服务器执行TCP握手,然后再执行TLS握手,才能建立安全连接。
4.2 TLS1.3的特性
1.最大化兼容
使用新的扩展协议,通过在记录末尾添加一系列扩展字段来增加新的功能
2.强化安全
TLS1.3只保留了AES、ChaCha20对称加密算法,摘要算法只剩下了SHA256、SHA384
3.提示性能
HTTPS建立连接时不仅要TCP握手,还要TLS握手,效率很低。使用扩展在TCP连接后立即就建立安全连接发送加密信息。

浙公网安备 33010602011771号