SSL及其加密过程
SSL及其加密过程
⽂章⽬录
⼀、什么是SSL
SSL其实就是Secure Scoket Layer安全套接层,提供了⼀种为⽹络通信提供安全以及数据完整性的安全协议,再传输层对⽹络进⾏加密。
SSL记录协议: 为⾼层协议提供安全封装,压缩,加密等基本功能
SSL握⼿协议:⽤与再数据传输开始前进⾏通信双⽅的⾝份验证、加密算法协商、交换秘钥
⼆、HTTP和HTTPS
HTTP(Hyper TEXT Transfer Protocol 超⽂本传输协议): 明⽂,不进⾏加密容易泄露
HTTPS(Hyper TEXT Transfer Protocol over Secure Socket Layer ) : HTTPS是在HTTP的基础上加⼊SSL协议。传输以密⽂传输,保证数据传输的安全以及确认⽹站的真实性(数字证书)。
三、SSL加密⽅式
3.1 对称加密与⾮对称加密
在开始之前⾸先得对理解对称加密与⾮对称加密这两种加密⽅式。其中加密过程是
信息+密钥+算法=密⽂
3.1.1对称加密
对称加密实质加密和解密都使⽤同⼀个密钥,对称加密只有⼀个密钥,作为私钥。这就好⽐现实⽣活中的钥匙和锁,我将想要传达的信息通过对称加密算法⽤私钥进⾏加密,形成密⽂,然后将这密⽂传送给同样拥有这把锁的“钥匙”的⼈,对⽅就⽤同样的算法和私钥将密⽂解密出来。
常⽤的对称加密算法有DES和AES等
但是在现实中,这种传输⽅式并不是特别⽅便,密钥怎么给对⽅是⼀个很关键的问题,⽽且密钥交给了其他⼈⾃⼰也不是很放⼼。于是⾮对称加密出现
3.1.2⾮对称加密
⾮对称加密是指加密和解密⽤的是不同密钥,并且是成对存在的。⼀把称为公钥,能够放⼼的交给别⼈,⼀把是私钥,只能⾃⼰保存。其中⽤公钥加密的信息只能⽤私钥解密,⽤私钥加密的信息只能⽤公钥解密。
3.2 具体的加密过程
我通过⼀段具体的通信过程来模拟这⼀加密过程。假设主⼈公是客户端A和服务端B
A:B,你好,我想向你发⼀段消息,请你把你的公钥给我
B:好的,我的公钥是:xxxxxxx。
A:好的,我收到了你的公钥,我给你发送的消息经过你的公钥加密后是:yyyyyyy。
B:收到,我现在⽤我的密钥来解密看看。
这就是⾮对称加密的具体过程,这种⽅式看上去很安全,但是仔细想想信息真的可靠吗?
想⼀想客户端A的公钥是假的怎么办?如果有⼀个⿊客C也给客户端A发送了⼀个⾃⼰的公钥,⽽客户端A不知道公钥的正确性,⽤了C的公钥加密发送,这样⼀来,信息被C截取的化,信息不就泄露了吗,因为都要需要向服务器端申请公钥。
所以我们得想个办法证明我⽤的公钥确实是服务端B的公钥。
于是数字证书出现!
我先抛⼀段官⽅的数字证书的概念
数字证书就是互联⽹通讯中标志通讯各⽅⾝份信息的⼀串数字,提供了⼀种在Internet上验证通信实体⾝份的⽅式,数字证书不是数字⾝份证,⽽是⾝份认证机构盖在数字⾝份证上的⼀个章或印(或者说加在数字⾝份证上的⼀个签名)。
简单来说数字证书就是⼀段信息,他内部的信息包括:
签发证书的机构
加密算法
Hash算法
公钥
证书到期时间等
贴⼀段实际的数字证书
我通过查看CSDN的数字证书来帮助理解这⼀概念,chrome的⽹页栏⼀般有“安全”的字样,说明该⽹站的有数字证书的,数据传输的安全性是可以保证的。
数字证书是由权威机构----CA机构发⾏,绝对相信
为了防⽌证书颁发的过程中被⼈修改,⼜出现了⼀个数字签名的概念,所谓数字签名就是把证书内容做了⼀个hash操作⽣成固定长度的数据发送给服务端B,服务端就能通过⾃⼰hash⼀遍对⽐发过来的hash来判断内容是否被修改。然⽽这还是可能被⼈截取修改内容重新⽣成hash再发给服务端B,这怎么办呢?出于这个考虑,CA机构在颁发时⼜会⽤⼀个私钥将这个hash加密,这样就防⽌了证书被修改了。
我将该过程图⽰
证传输的信息是否被更改,注意的是这个私钥是CA官⽅私钥。
正⽂+数字签名+数字证书
我们梳理⼀下
第⼀步 :客户端A开启⼀个新的浏览器访问客户端时,会先让A安装⼀个数字证书,这个证书主要包含的是CA机构的公钥。
第⼆步:服务端B发来CA机构给⾃⼰的证书,通过CA公钥解密被CA私钥加密的hash1,然后再⽤B的证书⾥⾯的hash算法将信息⽣成⼀个hash2,通过⽐较两个hash,若相等,确认这个数字证书是服务端B的。
==由于⾮对称加密算法复杂度和计算量⼤,对称加密效率⾼,SSL就将这两种加密算法混合着⽤,这样安全和效率就都能保证了。==其中具体的过程如下:
第⼀步 客户端A给出 ⽀持的SSL版本+⼀个随机数+⾃⼰⽀持的加密⽅式
ssl协议未开启的危害第⼆步 服务端B接收到这些信息后确认加密⽅式+⾃⼰的安全证书+⼀个随机数发给A
第三步 客户端A确认数字证书有效性(验证⽅法上⾯已经说明),然后⽣成⼀个随机数,并将这个随机数⽤B的数字证书公钥加密后发送给A。
第四步 服务端B使⽤⾃⼰的私钥解密这个随机数
第五步 A和B通过第⼆步确定的加密⽅法将前三个随机数⽣成⼀个对话密钥 ⽤来接下来的通信(个⼈感觉不需要三个随机数,只⽤最后⼀个就够了,这样做可能是为了更安全)
于是A和B就能那个⽤对称加密的⽅式快速有效安全的通信了。
这就是SSL协议的握⼿过程,图⽰如下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。