全面了解HTTP和HTTPS( 三 )


2、1995年NetSpace发布SSL/2.0版本,很快发现有严重漏洞
3、1996年发布SSL/3.0版本,得到大规模应用
4、1999年,发布了SSL升级版TLS/1.0版本,目前应用最广泛的版本
5、2006年和2008年,发布了TLS/1.1版本和TLS/1.2版本
SSL原理及运行过程
SSL/TLS协议基本思路是采用公钥加密法(最有名的是RSA加密算法) 。大概流程是,客户端向服务器索要公钥,然后用公钥加密信息,服务器收到密文,用自己的私钥解密 。
为了防止公钥被篡改,把公钥放在数字证书中,证书可信则公钥可信 。公钥加密计算量很大,为了提高效率,服务端和客户端都生成对话秘钥,用它加密信息,而对话秘钥是对称加密,速度非常快 。而公钥用来机密对话秘钥 。
下面用一张图表示SSL加密传输过程:

全面了解HTTP和HTTPS

文章插图
 
详细介绍一下图中过程:
1、客户端给出协议版本号、一个客户端随机数A(Client random)以及客户端支持的加密方式
2、服务端确认双方使用的加密方式,并给出数字证书、一个服务器生成的随机数B(Server random)
3、客户端确认数字证书有效,生成一个新的随机数C(Pre-master-secret),使用证书中的公钥对C加密,发送给服务端
4、服务端使用自己的私钥解密出C
5、客户端和服务器根据约定的加密方法,使用三个随机数ABC,生成对话秘钥,之后的通信都用这个对话秘钥进行加密 。
SSL证书
上面提到了,Https协议中需要使用到SSL证书 。
SSL证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,需要从经销商购买 。
证书有很多类型,按认证级别分类:
  • 域名认证(DV=Domain Validation):最低级别的认证,可以确认申请人拥有这个域名
  • 公司认证(OV=Organization Validation):确认域名所有人是哪家公司,证书里面包含公司的信息
  • 扩展认证(EV=Extended Validation):最高级别认证,浏览器地址栏会显示公司名称 。
EV证书浏览器地址栏样式:
全面了解HTTP和HTTPS

文章插图
 
OV证书浏览器地址栏样式:
全面了解HTTP和HTTPS

文章插图
 
DV证书浏览器样式:
全面了解HTTP和HTTPS

文章插图
 
按覆盖范围分类:
  • 单域名证书:只能用于单域名,foo.com证书不能用不www.foo.com
  • 通配符证书:可用于某个域名及所有一级子域名,比如*.foo.com的证书可用于foo.com,也可用于www.foo.com
  • 多域名证书:可用于多个域名,比如foo.com和bar.com
认证级别越高,覆盖范围越广的证书,价格越贵 。也有免费的证书,为了推广Https,电子前哨基金会成立了Let's Encrypt提供免费证书 。
https://letsencrypt.org/
证书的经销商也很多,知名度比较高的有亚洲诚信(Trust Asia) 。
五、RSA加密和DH加密
加密算法分类
加密算法分为对称加密、非对称加密和Hash加密算法 。
  • 对称加密:甲方和乙方使用同一种加密规则对信息加解密
  • 非对称加密:乙方生成两把秘钥(公钥和私钥) 。公钥是公开的,任何人都可以获取,私钥是保密的,只存在于乙方手中 。甲方获取公钥,然后用公钥加密信息,乙方得到密文后,用私钥解密 。
  • Hash加密:Hash算法是一种单向密码体制,即只有加密过程,没有解密过程
对称加密算法加解密效率高,速度快,适合大数据量加解密 。常见的堆成加密算法有DES、AES、RC5、Blowfish、IDEA
非对称加密算法复杂,加解密速度慢,但安全性高,一般与对称加密结合使用(对称加密通信内容,非对称加密对称秘钥) 。
常见的非对称加密算法有RSA、DH、DSA、ECC
Hash算法特性是:输入值一样,经过哈希函数得到相同的散列值,但并非散列值相同则输入值也相同 。常见的Hash加密算法有MD5、SHA-1、SHA-X系列
下面着重介绍一下RSA算法和DH算法 。
RSA加密算法
Https协议就是使用RSA加密算法,可以说RSA加密算法是宇宙中最重要的加密算法 。
RSA算法用到一些数论知识,包括互质关系,欧拉函数,欧拉定理 。此处不具体介绍加密的过程,如果有兴趣,可以参照RSA算法加密过程 。
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
RSA算法的安全保障基于大数分解问题,目前破解过的最大秘钥是700+位,也就代表1024位秘钥和2048位秘钥可以认为绝对安全 。


推荐阅读