24 | 固若金汤的根本(上):对称加密与非对称加密
对称加密
对称加密速度快,但无法解决秘钥传递问题,目前常见的有AES256,CHACHA20。
注:和一般意义上认知的密码不同,TLS中的“密钥”就是一长串的数字,不包括字符。
对称分组加密模式
因为AES只能对固定长度的数据加密,因此需要配合分组算法,常用的分组模式有ECB,CBC,CCM,GCM。
非对称加密
RSA 秘钥交换+加密解密
DH 秘钥交换
ECDHE 椭圆曲线密码交换
ECDSA 数字签名
常用曲线:P-256[别名:prime256v1:secp256r1],x25519
非对称加密没有密码交换问题,但加密效率很低,主要原因是算法复杂,算法基础基于数学难题,如大素数,椭圆曲线,效率比对称加密算法低几百倍。
混合加密
所以通常的做法是,用非对称加密传递对称秘钥,即会话秘钥,用对称加密做数据加密。
公钥的来源:
不同秘钥交换方式,公钥来源不同
ECDHE,是在每次握手协商的时候都会生成一个临时的公私钥对,交换完会话秘钥后就“扔掉”,不再使用,以实现“前向安全”。
如果是RSA算法,那么公钥是固定的,公钥是服务器的证书里给的,被破解的风险比较大。
课后作业:
加密算法中“密钥”的名字很形象,你能试着用现实中的锁和钥匙来比喻一下吗?
秘钥相当于现实中的钥匙,掌握了钥匙就可以打开锁,计算机里就可以加解密数据。
在混合加密中用到了公钥加密,因为只能由私钥解密。那么反过来,私钥加密后任何人都可以用公钥解密,这有什么用呢?
这种应用叫数字签名,即证明消息是私钥所有者发布的,对应安全要素中的不可抵赖。