https 原理
https 原理
一、https 通信原理
http://www.cnblogs.com/zery/p/5164795.html
HTTPS 验证原理-
客户端发起一个https的请求,把自身支持的一系列Cipher Suite(密钥算法套件,简称Cipher)发送给服务端
-
服务端,接收到客户端所有的Cipher后与自身支持的对比,如果不支持则连接断开,反之则会从中选出一种加密算法和HASH算法以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址 失效日期等等。
-
客户端收到服务端响应后会做以下几件事
-
验证证书的合法性: 颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等。
-
生成随机密码: 如果证书验证通过,此时浏览器会生成一串随机数,然后用证书中的公钥加密。
-
HASH握手信息:用最开始约定好的HASH方式,把握手消息取HASH值,然后用 随机数加密 “握手消息+握手消息HASH值(签名)” 并一起发送给服务端。在这里之所以要取握手消息的HASH值,主要是把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。
-
-
服务端拿到客户端传来的密文,用自己的私钥来解密握手消息取出随机数密码,再用随机数密码 解密 握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值 )给客户端。
-
客户端用随机数解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密.因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全。
二、QA
- 为什么要先交换非对称密钥中的公钥,再生成对称密钥?
- 对称密钥的缺点是传输密钥的时候被第三方截获,就可以解密以后传输的所有信息,优点是加密解密快。非对称密钥的优点是加密和解密所用的密钥不一样,缺点是加密解密慢。用公钥对对称密钥加密,这是将两者的优点结合起来的解决方案。
- 如何认证证书的有效性
- 证书是否过期。
- 证书是否被吊销。第三方机构定期发布被吊销证书的 CRL。
- 如何获取第三方机构的公钥
- 浏览器和操作系统都会维护一个权威的第三方机构列表(包括它们的公钥)。
- 疑惑:为什么要先进行哈希再进行对称加密(握手信息 + HASH 值)?对称加密后已经保证第三方无法进行篡改,如果进行了篡改,则此消息会解密出乱码。另外对完整性验证的疑惑:第三方修改消息的同时也可以修改HASH值,如何保证原始HASH值不被修改。
三、数字证书
SSL劫持攻击:SSL劫持也就是SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,需要先将自己接入到浏览器与目标网站之间(中间人),在传输数据的过程中,替换目标网站发给浏览器的证书,之后解密传输中的数据,简单的图示如下:
http://www.cnblogs.com/zhangshitong/p/6478721.html
其他攻击手段:SSLStrip攻击也需要将攻击者设置为中间人,之后将HTTPS访问替换为HTTP返回给浏览器,由于HTTP协议传输的数据是未加密的,从而截获用户访问的数据。
公钥掉包数字证书的颁发和验证过程:利用了数字签名的原理
数字证书 三方机构 数字证书 客户端常用算法
- 非对称加密算法:RSA, DSA/DSS
- 对称加密算法: AES, 3DES
- HASH算法:MD5, SHA1, SHA256