https的原理与实现

我们接触到的大多都是HTTP协议,协议没有进行加密。

然后就有SSL协议,用于对HTTP协议传输进行数据加密,然后就有了HTTPS

HTTPS:

  • 数据完整性:要进行完整性校验,可以用摘要算法来防止数据传输中被篡改
  • 数据隐私性:对内容进行对称加密(速度更快,消耗资源小)给每个连接生成一个唯一的sessionID
  • 身份认证:第三方无法伪造身份,用非对称加密算法(需要CA)

工作原理

  1. 客户端发起HTTPS请求,SSL连接由客户端启动,用户输入一个网址,然后连接到server的443端口
    1. 客户端发送内容:
      1. 列出客户端支持的加密方式列表,SSL的版本,客户端支持的加密算法和数据压缩算法(HASH算法)
      2. 包含28字节的随机数:client_random
  2. 服务端的配置
    1. 采用HTTPS协议的服务器要有一套数字证书,这套证书其实就是一对公钥和私钥
    2. 把公钥放在信任的组织那里,发数据时,用自己的私钥加密再用对方放在组织的公钥加密,对方取数据时用自己的私钥解密再用对方放在组织的公钥解密
  3. 传送证书
    1. 服务器选出一套加密算法和数据压缩算法
    2. 服务器生成随机数:server_random
    3. SSL数字证书,包含网站地址,公钥,证书的颁发机构,证书过期时间
  4. 客户端解析证书
    1. 由客户端的TLS来完成
    2. 验证证书的有效性,这是对服务器的一种认证,证书有问题弹出警告
    3. 如果证书没有问题,用公钥进行加密随机值
    4. Hash握手信息
  5. 传送加密信息
    1. 客户端发送公钥加密后的premaster secret(私钥),目的就是让服务端得到这个随机值,以后服务端和客户端通信就可以用这个随机值进行加密解密了
  6. 服务端解密信息
    1. 服务端用private key解密,得到了客户端传过来的随机值premaster secret(私钥)。步骤1中收到client_random,根据相同的生成算法,在相同输入参数的情况下,得到相同master_secret,然后把内容通过该值进行对称加密。
    2. 对称加密就是,将信息和私钥通过某种算法混合在一起,,除非知道私钥,就无法获取内容。
  7. 传输加密后的信息
    1. 服务器返回:将被premaster key对称加密的信息返回客户端,客户端可还原
  8. 客户端解密信息
    1. 客户端用之前生成的私钥解密服务器传过来的信息,就获取了解密后的内容,整个过程非法第三方监听到了数据也没有办法

加密方式

一般分为对称加密和非对称加密

对称加密

client和server使用相同的密钥对消息进行加密

优点:

  • 加密强度高,很难被破解
  • 计算量小,仅为非对称加密计算量的0.1%,可以用于生成会话ID

缺点:

  • 无法安全的生成和管理密钥
  • 服务器管理大量客户端密钥复杂

非对称加密

非对称就是加密与解密的密钥是两种密钥,服务器提供公钥,客户端通过公钥对消息进行加密,并由服务器的私钥对密文进行解密

优点:安全,在理论的时间里无法破解

缺点

  • 性能太低,计算资源消耗巨大,一次完全的TLS握手,密钥交换时的非对称加密解密占用了整个握手过程的90%以上,而对称加密的计算量只相当于非对称加密的0.1%,因此如果对应用层使用非对称加密,开销过大
  • 非对称加密对加密内容长度有限制,不能超过公钥的长度。比如现在常用的公钥长度时2048,所以加密消息内容不能超过256byte

证书

需要数字证书认证机构CA进行颁发的,证书是对服务器端的一种认证。颁发的证书同时会产生一个私钥和公钥,私钥服务器自己保存,公钥则附带在证书的信息中,可以公开。证书本身也附带一个证书的电子签名,用来验证证书的完整性和真实性。证书有有效期

证书的内容:

  • 使用者的公钥值
  • 使用者的标识信息
  • 有效期
  • 颁发者的标识信息
  • 颁发者的数字签名

非对称加密算法:RSA,DSA/DSS

对称加密算法:AES,RC4,3DES

HASH算法:MD5,SHA1,SHA256

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值