0%

https和ssh通信

https 通信

当我们谈论加密的时候,我们在谈论什么?

  1. symmetric/secret key encryption
  • 对称秘钥加密:通信的双方都使用同一个秘钥进行加解密
  • 需要用对称加密算法,如DES、AES等
  • 通信就好像互相发送密码保险箱一样,双方都有钥匙才能进行加密和解密。
  1. asymmetric/public key encryption
  • 私钥 + 公锁(钥)= 密钥对
  • 私钥加密,公锁解密(签名 signature 和 验证 verify)
  • 公锁加密,私钥解密(加密encryption 和解密 decryption)
  • 通信时, 甲发送公锁给乙,乙用甲的公锁加密数据返回给甲,甲收到后用私钥解密
  1. Trusted Third Party || Certificate Authority
  • CA,证书权威提供。即由CA提供证书
  • 为了防止中间人伪造,证书包括基本信息和公钥
  • 通信时, 甲向CA(提供个人信息和公锁)申请证书,甲发送证书给乙,乙对照证书用证书公锁加密数据返回给甲,甲收到后用私钥解密
  1. digital signature
  • 乙要确保证书是来自CA的
  • CA 将公钥和个人信息用一个Hash算法生成一个消息摘要(md5, sha256等)
  • CA 然后用它的private key sign its name, 这个消息摘要的签名和消息摘要本身合起来就叫数字证书
  • 当 乙接受到甲发过来的证书, 乙用同样的Hash算法,生成一个消息摘要
  • 此时,乙 用它拥有的CA public key 对 甲证书的签名 进行 verify验证,得到签名对应的创建的消息摘要
  • 两者对比,即可知道 证书是否被修改过
  1. Key Encapsulation Mechanism
  • 非对称加密所造成的速度慢,需要通信之前双方会先把自己的公钥都先发给对方
  • 先生成一个对称加密算法的密钥,用RSA的方式先安全的发给对方
  • 随后就不再用RSA了,只用这个对称加密的密钥来互相通信
    1
    2
    3
    4
    5
    6
    7
    -> 客户端向服务端发送请求 
    -> 服务端返回数字证书
    -> 客户端用自己的CA[内置浏览器]公钥去解密证书,如果证书有问题会提示风险
    -> 如果证书没问题客户端会生成一个对称加密的随机秘钥
    -> 然后再和刚刚解密的服务器端的公钥对数据进行加密,然后发送给服务器端
    -> 服务器端收到以后会用自己的私钥对客户端发来的对称秘钥进行解密
    -> 之后双方就拿着这个对称加密秘钥来进行正常的通信

    ssh 登录

  1. ssh 不同于 https,在于没有CA。
  2. 口令登录,公钥指纹,回答yes/no,意味着接受远程主机公钥,密码通过公钥加密,远程主机通过私钥解密。
  3. 公钥登录, 用户将自己的公钥储存在远程主机上。 登录时,远程主机向用户发送随机字符串,用户用自己私钥加密, 发送给远程服务器,远程主机用储存的公钥解密,两者一直,登录成功。