http是80端口,https增加了443端口
https使用了混合加密(既有对称加密,也有非对称加密)
ssl连接建立过程
- client向server发送请求https://baidu.com,然后连接到server的443端口,发送的信息主要是
随机值1
和客户端支持的加密算法
- server接收到信息之后给予client响应握手信息,包括
随机值2
和匹配好的协商加密算法
,这个加密算法一定是client发送给server加密算法的子集。 随即server给client发送第二个响应报文是
数字证书
。这个证书其实就是公钥P
,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。
客户端解析证书,这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(预主秘钥)。
- 客户端认证证书通过之后,接下来是通过随机值1、随机值2和预主秘钥组装
会话秘钥A
。然后通过证书的公钥
加密会话秘钥
。 - 传送加密信息,这部分传送的是用证书加密后的
会话秘钥
,目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。 - 服务端解密得到随机值1、随机值2和预主秘钥,然后组装
会话秘钥A
,跟客户端会话秘钥
相同。 - 客户端通过
会话秘钥
加密一条消息发送给服务端,主要验证服务端是否正常接受客户端加密的消息。 - 同样服务端也会通过
会话秘钥
加密一条消息回传给客户端,如果客户端能够正常接受的话表明SSL层连接建立完成了。
会话密钥
:对称加密- 证书包含私钥和公钥,公钥会提供给客户端,供其加密
会话密钥
,私钥用于服务端解密。 - ssl连接建立后,cs端交互用的应该都是
会话密钥
- HTTP与HTTPS的区别
- https://blog.csdn.net/xiaoming100001/article/details/81109617
- https://www.runoob.com/w3cnote/http-vs-https.html
对称性加密和非对称性加密
- 对称加密: 加密和解密的秘钥使用的是同一个.
- 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
对称加密算法:
密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高.
优点:
算法公开、计算量小、加密速度快、加密效率高
缺点:
在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES
非对称加密算法:
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
优点:
安全
缺点:
速度较慢
常见的非对称加密算法有: RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
Hash算法(摘要算法)
Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
常见的摘要算法有: MD2、MD4、MD5、HAVAL、SHA