如何实现安全通信?
对称加密与机密性
加解密使用同样的秘钥
保证秘钥安全即可实现机密性
推荐算法AES,ChaCha20
按照秘钥的位数又可以再分
基本原理为xor运算
所以明文大于秘钥长度时需要分组
最新分组模式为AEAD(GCM,CCM,Poly1305)
非对称加密
加解密使用不同的秘钥
基本原理为数学难题
RSA基于整数分解
ECC基于椭圆曲线离散对数
x25519被认为是最安全、最快速的曲线
私钥
不能给别人
公钥
可以给别人
公钥加密,私钥解密
别人只能加密,也就是不能看到别人加密后发给我的内容。
可以解决“密钥交换”的问题
使用DH/ECDHE秘钥交换协议可以具备前向保密性
使用量子通信进行秘钥分发可以保证绝对安全
私钥加密,公钥解密
别人只能解密,也就是只能看,不能伪造我发出的信息。
相当于我发出的信息被我用私钥签名了,这就是数字签名
摘要算法与完整性
哈希算法
推荐SHA-2
对消息进行哈希得到消息摘要
对消息+消息摘要进行对称加密以保证完整性
PKI
申请证书
生成公私钥
发起CSR将身份信息,公钥发给登记机构
登记机构验证身份后向CA发起CSR
颁发证书
对用户身份信息使用摘要算法生成用户身份信息摘要
对用户身份信息摘要使用机构的私钥加密生成用户身份信息加密摘要
公钥数字证书=用户身份信息+用户身份信息加密摘要+用户公钥
CA将证书给登记机构,登记机构给用户
校验证书
提取证书信息
对用户身份信息使用摘要算法生成实际用户身份信息摘要
对用户身份信息摘要使用机构的公钥解密生成理论用户身份信息摘要
判断实际用户身份信息摘要与理论用户身份信息摘要是否相等