您好, 访客   登录/注册

浅谈HTTPS的工作原理

来源:用户上传      作者:

  在互联网中,上网经常用HTTPS协议的网站。
  下面讨论一下HTTPS的工作方式
  信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够避免信息窃取,而消息摘要算法能够避免信息篡改。
  目前常用的加密算法主要分成三类:
  · 对称加密算法
  · 非对称加密算法
  · 消息摘要算法
  一、对称加密
  基本概念
  · 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
  · 速度快,对称性加密通常在消息发送方需要加密大量数据时使用
  · 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密
  · 密钥是控制加密及解密过程的指令
  · 算法是一组规则,规定如何进行加密和解密
  在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
  常用算法:
  在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。
  不同算法的实现机制不同,可参考对应算法的详细资料。
  优缺点:
  · 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
  · 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。
  · 其次如果一方的秘钥被泄露,那么加密信息也就不安全了。
  · 另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
  二、非对称加密
  基本概念
  · 对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
  · 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密
  · 如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
  · 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
  加密解密过程:
  1、乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。
  2、得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。
  3、乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
  在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。
  同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
  常用算法:
  · 在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
  三、消息摘要算法可以验证信息是否被篡改。
  在数据发送前,首先使用消息摘要算法生成该数据的签名,然后签名和数据一同发送给接收者。接收者收到数据后,对收到的数据采用消息摘要算法获得签名,最后比较签名是否一致,以此来判断数据在传输过程中是否发生修改。
  HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的。
  客户端发起HTTPS请求
  ,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。
  服务端的配置
  采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。
  传送证书
  这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
  客户端解析证书
  这部分工作是有客戶端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。
  传送加密信息
  这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
  服务段解密信息
  服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
  传输加密后的信息
  这部分信息是服务段用私钥加密后的信息,可以在客户端被还原
  客户端解密信息
  非对称加密算法的性能是非常低的,原因在于寻找大素数、大数计算、数据分割需要耗费很多的CPU周期,所以一般的HTTPS连接只在第一次握手时使用非对称加密,通过握手交换对称加密密钥,在之后的通信走对称加密。
转载注明来源:https://www.xzbu.com/1/view-14821826.htm