什么是HTTPS协议?
HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版本。
需要使用证书,默认端口443
对称加密算法:使用相同的密钥进行加密和解密
非对称加密算法:使用不相同的密钥进行加密和解密
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解
密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送
给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
数字签名:就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
哈希:
Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映
射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到
某一固定长度的消息摘要的函数。
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完
整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
正常的互联网来说,私钥都是在服务器端
自己对非对称加密过程的总结:
1)A生成了一对密钥S(S1和S2),现在要把一个密钥S1作为公钥传送给B。
2)为了防止公钥被其他人收到,只给B收到。 在发送公钥前,先对公钥(S1)通过哈希函数算出信息摘要。 然后将公钥(S1)+生成的信息摘要通过CA加密算法进行加密后生成密
文L,CA加密时使用的是CA私钥
3)A将密文L发送出去给B
4)B受到密文L后,先用CA公钥对密文L进行解密。解密后得到信息摘要+公钥(S1)。然后通过哈希函数对公钥(S1)计算,如果得到的信息摘要与收到的信息摘要一致,则说明公
钥(S1)是正确的。(备注:B中有的CA公钥只能对特定的CA私钥才能解密)
更详细可以参考:https://blog.csdn.net/u014465934/article/details/81370111
非对称加密算法+数字签名实现过程
总结:
本机:
1 访问百度首页
2 百度收到了请求,返回了一个证书+百度的首页网页内容
+服务器证书私钥加密后的网页信息摘要。发给我的客户端浏览器
3 我的客户端浏览器看到了证书,获得这个证书颁发的认证机构
4 去操作系统内置在浏览器根证书区域的所有认证证书机构列表
中去寻找,有没有这个机构。
如果有,就进行解密摘要,与传送网页算出来的摘要进行比对。
如果一致,就没问题了,不一致,就说明数据不安全。
5 如果在在浏览器根证书区域没有找到这个认证机构
浏览器提示用户,此证书不安全,没有经过认证。
可能1:提示不安全,问用户是否还访问?
可能2:提示不安全,直接禁止用户访问。
https协议:
6 客户端和服务器端第一次连接的时候使用的是非对称加密。
服务器的私有密钥加密信息给客户端。
7 客户端完成认证之后,说明证书可信,内容可信。回复一个
对称加密的密钥,(通过证书公钥加密的密钥)给服务器端
8 服务器端收到了这个通过证书公钥加密的密钥,用私钥进行解密
也就是说服务器端拿到了对称加密的密钥,然后两方开始全部使用
对称加密的方式进行所有数据的传输。