笔记:网络加密

2017-05-21  本文已影响31人  一剑书生
加密算法

分为两类:

数字签名(Digital Signature)与摘要(digest)
数字证书(Digital Certificate)

简单举例:以用户上网通过浏览器访问安全网站为例:

  1. 浏览器使用网站的公钥加密数据后发给网站,传输途中数据如果被第三方监听窃取了也没关系(第三方没有网站的私钥解密不了)
  2. 网站接收到数据,使用其私钥解密,就可以得到用户的明文数据;
  3. 网站加密数据返回给用户

几个问题:

  1. 浏览器怎么获取公钥呢?
  1. 为什么用数字证书?
    为了确保浏览器收到的网站公钥不是第三方伪造或篡改了,浏览器会内置大多数权威可靠的CA根证书(含有CA的公钥!),当接收到网站的数字证书,会校验证书:

    • 证书颁发的机构是否伪造的,浏览器不认识不信任,则列为危险证书;
    • 根据证书的机构名称找到了内置CA证书中的公钥,对证书的数字签名(由CA机构用CA私钥加密了的)解密,解密失败则列为危险证书;
    • 解密成功的话,得到了证书的摘要 A;此时还要根据证书中标明的 hash 算法重新计算得到证书的摘要 B,两者比较,不相同的话,说明证书内容被篡改了,公钥可能被修改了;
  2. 网站怎么加密数据返回给用户?

    • 方案一:用网站的私钥加密返回,浏览器再用网站公钥解密得到明文;但是在数据传输过程中第三方获取了该加密数据的话,也可以用网站的公钥解密出来,所以这方案不靠谱。
    • 实际方案:使用对称密钥,网站和浏览器都用相同的密钥加解密数据;问题是网站和浏览器得先协商出一个对称密钥,保证对称密钥不被第三方知道窃取;另外使用对称密钥的原因出自于性能,使用对称加密速度更快,
  3. 对称密钥的生成?(使用RSA算法为例)

image.png
学习来源
上一篇下一篇

猜你喜欢

热点阅读