一、互联网存在的安全问题:
1、传输内容被偷窥,可使用加密数据解决数据的机密性问题;
2、传输内容被篡改,可使用单向加密解决数据的一致性问题;
3、传输方身份无法得到验证,可使用数字证书解决身份验证问题;
二、加密和解密
|—————|
明文 ——-> | 转换规则 | ——-> 密文 (加密)
|—————|
|—————|
密文 ——-> | 转换规则 | ——-> 明文 (解密)
|—————|
一般来说通讯安全是通过密钥而不是通过转换规则来保证。
三、大话加密发展史
第一回合A和B直接使用明文通信
|—————|
A ——> | AABBCC | ——> B
|—————|
点评:仅能在可信的网络环境下使用,否则信息容易泄露
改进:可使用加密算法保证数据的机密性
对称加密
1、特点:
a、加密密钥和解密密钥相同
b、需要为每个通信对端保存一个单独的密钥
2、常用的对称加密算法:
DES(支持56bits密钥长度)、3DES(三重DES加密)、AES(支持128bits密钥长度)
-------------------------------------------------------------------------------------------------------------------------------
第二回合A在通信之前把加密密钥传给B,之后双方使用密文进行通信
|—————|
A ——> | XXXXXX | ——> B
|—————|
点评:在一定程度上提高了通信的安全性,但是密钥的传输还是明文,容易被第三方截获
改进:可使用DH算法实现密钥的交换
DH交换算法
1、迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。
它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
2、交换过程简述:
A发送两个公开数g,p,M给B ####根据g,p,M很难推导出a####
B求出N再发送给A,双方得到相同的值K,即协商的共享密钥
A B
|——————| g,p,M |——————|
| a,g,p | ————————> | b |
| M = g^a%p| N | N = g^b%p |
| K = N^a%p | <———————— | K = M^b%p |
|——————| |——————|
(g^a%p)^b%p = g^ab%p = (g^b%p)^a%p
此处涉及的知识还有IKE(Internel Key Exchange)。
-------------------------------------------------------------------------------------------------------------------------------
第三回合A和B先使用DH协商对称加密密钥,然后使用该密钥加密通信内容
|—————|
A ——> | XXXXXX | ——> B
|—————|
点评:虽然通信过程无法被第三方偷窥,但是还是通信的内容未遭到第三方的破坏
改进:使用单向加密算法保证通讯数据的完整性
单向加密
1、特征:
输入相同输出必然相同;
雪崩效应:输入的一点点变化会导致结果很大的不同;
定长输出:输出的长度是固定的;
不可逆:无法从输出结果推倒出输入内容;
2、常用的单向加密算法:
MD4、MD5(128bits输出长度)、SHA1(160bits输出长度)、CRC32校验算法
-------------------------------------------------------------------------------------------------------------------------------
第四回合A先对通信内容进行一个单向加密,并把结果追加在原数据尾部,最后对整个数据加密
|—————| ——|
A ——> | XXXXXX | XX | ——> B
|—————| ——|
B收到数据之后先解密,然后对数据进行单向加密,把加密结果与数据尾部的加密结果对比,如果相同说明传输内容没有被破坏,否则丢弃该消息。
点评:此方法可以检测出传输的消息的完整性,但却无法验证发送方就是A
改进:使用非对称加密算法验证发送方身份
非对称加密
1、特征:
有公钥和私钥两种密钥,且公钥可以从私钥中导出;
有效的简化了密钥管理,通信方只需要保存一份私钥和公钥即可;
主要用途是进行数字签名;
2、使用方式:
使用私钥加密公钥解密,由于私钥一般由所有者保存,所以可以用于身份验证
使用公钥加密私钥解密,但由于比较耗时所以一般不使用此方式加密数据
3、常用的加密算法:
RSA,可用于加密和签名
DSA,只能用于签名
-------------------------------------------------------------------------------------------------------------------------------
第五回合A首先向B发送自己的公钥,然后使用自己的私钥对通信内容进行加密
|—————| ——|
A ——> | XXXXXX | XX | ——-> B
|—————| ——|
同样地,B收到A发来的消息,先用A的公钥解密,解密成功说明消息的确是A发来的消息
然后用单向加密算法检验消息的完整性;
点评:1、使用非对称加密算法进行数据加密效率低下;
2、如果此时有C向B发送公钥并声称自己是A,B并不能识别出发送方是否为真正的A
改进:1、仅使用非对称加密算法加密对称密钥,一旦对称密钥传输到对方后就使用对称加密
2、使用PKI体系来验证发送方的身份
PKI(Public Key Infrastructure)
1、工作原理:
PKI/CA 的工作原理就是通过发放和维护数字证书来建立一套信任网络,在同一信任网络中的用户通过申请到的数字证书来完成身份认证和安全处理。
2、CA(Certificate Authority,认证中心)
RootCA,信任关系链的根,信任该CA就要信任该CA认证的所有子CA和其子CA签发的证书
一个认证中心是以它为信任源,由她维护一定范围的信任体系,在该信任体系中的所有用户、服务器,都被发放一张数字证书来证明其身份已经被鉴定过,并为其发放一张数字证书,每次在进行交易的时候,通过互相检查对方的数字证书即可判别是否是本信任域中的可信体
3、RA (Registration Authority)注册机构
注册中心负责审核证书申请者的真实身份,在审核通过后,负责将用户信息通过网络上传到认证中心,由认证中心负责最后的制证处理。证书的吊销、更新也需要由注册机构来提交给认证中心做处理。总的来说,认证中心是面向各注册中心的,而注册中心是面向最终用户的,注册机构是用户与认证中心的中间渠道。
4、数字证书:
a、数字证书就像日常生活中的身份证、驾驶证,在您需要表明身份的时候,必须出示证件来明确身份;
b、数字证书内容:x509标准证书
—————————————————————————————————————-
|#公钥及其有效期限#。证书该如何被使用。证书的合法拥有者。证书颁发机构信息。|
| —————————————————————————————————————
| *****************CA私钥加密的特征码*********************** |
|—————————————————————————————————————
#########CA使用自己的私钥对该内容进行加密,说明CA认可该证书里的数据###########
-------------------------------------------------------------------------------------------------------------------------------
第六回合
在PKI体系下,所有的通信端都应该信任RootCA,并持有RootCA的自签名证书ca.crt。
1、A向CA注册了自己的证书,在与B通信之前先把证书发送给B
|—————|
A ——> | A.CRT | ——-> B
|—————|
B收到该证书之后,使用CA的公钥(ca.crt中含有)对该证书验证,看是否是RootCA信任的。如果是的话就说明证书中包含的公钥是真正的A的。
2、A向B发送对称密钥,并使用自己的私钥加密
|—————|
A ——> | ShareKey | ——-> B
|—————|
3、A和B之间使用对称加密算法对通信内容加密
|—————| ——|
A ——> | XXXXXX | XX | ——-> B
|—————| ——|
点评:完美解决了上述的所有问题,这基本就是现代互联网数据通信的模型了;)
未完待续,coming soon…