全站HTTPS正在称为潮流趋势,国内实现全站https的有淘宝和百度两家
0x01:https的作用
C I A:机密性,完整性,可用性(可用性是合法用户可以访问自己有权限访问的资源)
解决的是信息传输中数据被篡改。窃取
加密:对称、非对称、单向
0x02:https工作原理
https的工作原理还是有必要研究下的(原理我也是从网上学习总结的,感谢这些前辈)
1. 客户端发起HTTPS请求
用户在浏览器里输入一个https网址,然后连接到server的443端口。
2. 服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面
web通信中的SSL加密的公钥证书(受信任的第三方证书颁发机构签名颁发)常见的如
VeriSign
Thawte
GlobalSign
Symantec
3. 传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4. 客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。
5. 传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6. 服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7. 传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原
8. 客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
大概过程如下:
握手——协商加密算法——获得公钥证书——验证公钥证书——交换会话密钥——加密信息传输
0x03:SSL的弱点
1.ssl是不同的对称、非对称、单向加密算法的组合加密实现(cipher suite)
如密钥交换、身份验证使用RAS/Diffie-Hellman,加密数据,使用AES加密,有RAS/DH完成密钥交换,摘要信息由HMAC-SHA2,组成了一个cipher suite,当然,也可以是其他组合。
2.服务器端为提供更好的兼容性,选择支持大量过时的cipher suite。
3.协商过程中强迫降级加密强度。
4.现代处理器计算能力可以在接收的时间内破解过时加密算法。
5.黑客购买云计算资源破解。
0x04:HTTPS常见攻击方式
针对其弱点,常见的https攻击方法有
降级攻击(把高安全级别的加密算法强制降成低安全级别的加密算法)
解密攻击(明文、证书伪造)
协议漏洞、实现方法的漏洞、配置不严格
0x05:HTTPS证书查看
在进行中间人攻击之前,先查看下证书,可以使用以下软件(以百度为例)
1、OpenSSL
OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
直接调用openssl库识别目标服务器支持的SSL/TLS cipher suite
openssl s_client -connect :443,
2、sslcan
SSLscan主要探测基于ssl的服务,如https。SSLscan是一款探测目标服务器所支持的SSL加密算法工具。
sslcan能自动识别ssl配置错误,过期协议,过时cipher suite和hash算法
默认会检查CRIME、heartbled漏洞,绿色表示安全、红色黄色需要引起注意
sslscan -tlsall :443
分析证书详细数据
sslscan -show-certificate --no-ciphersuites :443
3、nmap
还可以使用nmap的脚本。
nmap --script=ssl-enum-ciphers.nse
0x06、https中间人攻击
1、先生成一个证书。