数据传输过程中的四个问题
-
窃听(加密)
-
假冒(消息认证码,数字签名)
-
篡改(消息认证码,数字签名)
-
事后否认(数字签名)
但是因为数字签名无法确认公开密钥的制作者,要想解决这个问题,可以使用数字证书技术
加密的基础知识
哈希函数
哈希函数可以把给定的数据转换成固定长度的无规律数值。转换后的无规律数字可以作为 数据摘要
,应用于各种各样的场景。
哈希函数的特征
-
输出的
hash
值数据长度不变。 -
如果输入的数据相同,那么输出的
hash
值也必定相同 -
如果输入的数据相似,哪怕它们有一比特的差别,他们输出的
hash
值也会有很大的差异。输入相似的数据并不会导致输出的hash值也相似。 -
即使输入的两个数据完全不同,输出的
hash
值也有可能是相同的。虽然这种情况下的概率比较低。这种情况叫做hash
冲突 -
不可能从
hash
值反向推算出本来的数据。
比较有代表性的算法是 md5
、sha-1
、sha-2
。
能够为网络提供通信安全的 SSL
协议也应用了混合加密方法。SSL是 Secure Sockets Layer
安全套接字的简写。后来该协议经过版本升级以后,现在正式被命名为TLS
,但是 SSL
这个名字已经在人们心中根深蒂固,因此该协议也常被称为是 SSL
协议。
消息认证码 (防止密文被篡改)
-
客户端先生成一个密钥,然后通过安全的方式传送给服务器。
-
客户端使用密文和密钥生成一个
hash
值,那么这个hash
值就是消息认证码
。 -
客户端将密文和消息验证码一起发送给服务器端。
-
服务器端同样使用
密钥
和密文
来生成消息认证码
然后看这个消息认证码和客服端发过来的是否一样。
数字签名
数字签名不仅可以实现消息认证码的功能,还能防止事后否认的问题。因为数字签名只有发信人才能生成。
在非对称加密的过程中,任何人都可以使用公钥对数据进行加密,但是只有持有私钥的人才能进行解密。然后数字签名却恰恰相反。