HTTPS

对称加密

对称密钥演算法(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密演算法。这类演算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系[1]。要求双方取得相同的密钥是对称密钥加密的主要缺点之一。

常见的对称加密算法有AES、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia。

对称加密的速度比非对称加密快很多,在很多场合都需要对称加密。

非对称加密

公开密钥密码学(英语:Public-key cryptography)也称非对称式密码学(英语:Asymmetric cryptography)是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。

基于公开密钥加密的特性,它还能提供数字签名的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。

公开密钥基础建设透过信任数字证书认证机构的根证书、及其使用公开密钥加密作数字签名核发的公开密钥认证,形成信任链架构,已在TLS实现并在万维网的HTTP以HTTPS、在电邮的SMTP以SMTPS或STARTTLS引入。

在数学上,d(c(x))=x,使用典型的爱丽丝与鲍伯假设来解释:

  1. 爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要透过不安全的互联网向鲍伯发送信息
  2. 爱丽丝撰写好原文,原文在未加密的状态下称之为明文 x
  3. 鲍伯使用密码学安全伪随机数生成器产生一对密钥,其中一个作为公钥为 c,另一个作为私钥 d
  4. 鲍伯可以用任何方法发送公钥 c 给爱丽丝,即使伊夫在中间窃听到 c 也没问题
  5. 爱丽丝用公钥 c 把明文 x 进行加密,得到密文 c(x)
  6. 爱丽丝可以用任何方法传输密文 c(x) 给鲍伯,即使伊夫在中间窃听到密文c(x) 也没问题
  7. 鲍伯收到密文,用私钥 d 对密文进行解密 d(c(x)),得到爱丽丝撰写的明文x
  8. 由于伊夫没有得到鲍伯的私钥 d,所以无法得知明文 x
  9. 如果爱丽丝丢失了她自己撰写的原文 x,在没有得到鲍伯的私钥 d 的情况下,她的处境将等同伊夫,即无法透过鲍伯的公钥 c 和密文 c(x)重新得到原文 x

HTTPS

broadcasting

  1. 客户端向服务端发送“hello”,包含自己支持的ssl/TLS的版本、以及支持的加密算法池
  2. 服务端回复选择的加密算法c,并将公钥k和数字证书ca发给客户端
  3. 客户端向证书中心请求校验证书ca,确保没有被中间人攻击,信任公钥k
  4. 使用公钥k加密:自己生成的随机对称加密数d;发给服务端;服务端使用与公钥k对应的私钥k’进行解密;得到对称加密数d
  5. 服务端使用对称加密数d,加密“Finish”报文,应答客户端;
  6. 客户端使用对称加密数d,加密“Finish”报文,应答服务端;双方完成对称加密密钥的共享;

证书ca,如何防止中间人攻击

从证书申请流程可知,攻击者可以获得的是加密后的证书和读取证书的私钥;这样攻击者无法篡改证书; 因为只要证书被篡改,就无法重新被加密(加密的密钥只被CA中心持有) broadcasting

客户端在收到证书后,解密阅读证书,查看信息与对端信息是否匹配,就可以判断对端是否是真正可信授权对象了。

参考文献

  1. 公开密钥加密
  2. 证书申请流程


blog comments powered by Disqus
—  原创作品许可 — 署名-非商业性使用-禁止演绎 3.0 未本地化版本 — CC BY-NC-ND 3.0   —