HTTPS 是在原有HTTP 层和TCP 层之间添加的一层 TLS/SSL安全层
对HTTP 的原有数据进行加密操作
数据加密的方法
包括对称加密和非对称加密
对称加密:加密和解密都用相同的密钥,加密速度快,单是需要维护的密钥数量多,每两个对等的实体之间就要维护一对密钥,n个实体就是n*(n-1)个
非对称加密:加密和解密由一对公钥和私钥组成。用公钥加密,则只能用私钥解密,用私钥加密,则只能用公钥解密。公钥是大家都知道的,私钥是自己才知道的。通用用公钥加密,则只有拥有私钥的人才能知道数据的内容。
非对称加密速度慢,但需要维护的密钥数量少,n个实体只需要维护2n个密钥
通过使用私钥对数据加密,可以作为身份认证的数字签名
HTTPS大概过程
HTTPS,将两种方法的优点结合了起来
服务器支持HTTPS则必须有一套数字证书,所谓数字证书就是一对公钥和私钥,公钥用来加密,私钥用来解密。为了与下文区别,用公钥1,私钥1
1.客户端访问 https开头的url
2.服务端返回公钥1,客户端验证通过(如果不通过,则访问终断)。
3.客户端根据公钥1生成一个私钥2,(这个私钥2用来加密和解密请求信息,且使用对称加密的方法),使用公钥1对私钥2进行加密,回传给服务端。
4.客户端和服务端之间使用私钥2对信息进行加密后通信
补充:数字证书 可以是认证机构给的,也可以是自己创建的,不过未经过认证机构的证书在客户端接收时会弹出警告信息(身份认证)
加密和认证:加密是指通信双方为了防止敏感信息在信道上被第三方窃听而泄漏,将明文通过加密变成密文,如果第三方无法解密的话,就算他获得密文也无能为力;认证是指通信双方为了确认对方是值得信任的消息发送或接受方,而不是使用假身份的骗子,采取的确认身份的方式。只有同时进行了加密和认真才能保证通信的安全,因此在SSL通信协议中这两者都被应用。
个人制作的证书相当于只有加密,没有认证
HTTPS握手
加密算法扫盲
对称加密算法:典型的有DES、RC5、IDEA(分组加密),RC4(序列加密);
非对称加密算法:典型的算法有RSA,DSA,DH;
散列算法(摘要算法):散列变换是指把文件内容通过某种公开的算法,变成固定长度的值(散列值),这个过程可以使用密钥也可以不使用。这种散列变换是不可逆的,也就是说不能从散列值变成原文。因此,散列变换通常用于验证原文是否被篡改。典型的算法有:MD5,SHA,Base64,CRC等。
https 中,一般的:
用非对称加密进行 对称加密的密钥协商
用对称加密对保密内容进行加密
用散列算法进行身份认证(在证书和加密内容中使用)
对称加密算法
RSA:基于大素数的非对称加密算法
基本理论原理:
与rsa相关的参数字母有p,q,e,d,n,这个大家在看关文档的时候总会看到这些东东,他们是干什么的呢,都代表什么意思呢?主要由p,q,e三个东东构成,
-
p,q均为大素数。
-
e可以为任何数但e与(p-1)(q-1)一定要互素。
-
产生p,q,e后n就自然出来了,因为n=p*q,
-
另一个d是由e,p,q计算出来的,公式: d * e = 1 modulo(p - 1)*(q - 1),这个公式看起来是不是有些头疼?其实很简单就是d*e除以(p-1)*(q-1)=1
-
公钥就为n和e组成,私钥就是d了(注:e和d是可以互换的,但是只能公开一个,公开哪个,哪个就被称用作公钥)
-
加密方法:C=(p ^ e) mod n 解密方法:P=(c ^ d) mod n
基本过程:
1.客户端请求RSA加密
2.服务器将 公钥1 给客户端
(发的其实是证书:客户端用受信CA的公钥对证书进行解密,得到服务器的 公钥1,同时完成了身份认证 )
3.客户端在本地生成一个 私钥2, 并用公钥1对私钥2进行加密,发送给服务器
4.客户端和服务器开始用 私钥2对数据进行加密解密 正常交流
类DH算法 diffie—hellman
客户端和服务器 以及其他人, 都知道的一对数字 p 和 q 一个是底数,一个是模
客户端 生成一个自己才知道的a, 计算 sa=(p^a)mod q,发给服务器
服务器 生成一个自己才知道的b,计算 sb =(p^b)mod q,发给客户端
两边一起使用,重要定理 s = (sa^b)mod q =(sb ^a) mod q 的到约定好的密钥 s
数字证书
证书可以由国际上公认的证书机构颁发
客户端程序通常通过维护一个“根受信任机构列表”,当收到一个证书时,查看这个证书是否是该列表中的机构颁发的,如果是则这个证书是可信任的,否则就不信任。
证书的认证
IE浏览器在验证证书的时候主要从下面三个方面考察,只要有任何一个不满足都将给出警告
1.证书的颁发者是否在“根受信任的证书颁发机构列表”中
2.证书是否过期
3.证书的持有者是否和访问的网站一致
4.查看证书颁发者公布的“证书吊销列表”,被它的颁发者在“证书吊销列表”中列出,那么也将给出警告。
公钥密码基础
分为三类:
- 大素数分解问题类:两个大素数相乘容易,将他们的积分解很难
- 离散对数问题类、
- 椭圆曲线类。有时也把椭圆曲线类归为离散对数类。