面试问题浓缩总结 面试问题浓缩总结
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • 操作系统

  • 计算机网络

    • 体系结构
    • 硬件层
    • 网络层(IP,ICMP,ARP)
    • 运输层(TCP,UDP)
    • 应用层(HTTP,SMTP)
    • 高频面试题总结
    • 安全相关
      • TLS是啥
        • TLS 1.3的特性
      • 常见的加密算法
        • 对称加密算法
        • 非对称加密算法
        • 摘要、hash算法
        • 混合加密是啥
  • 软件工程

  • 基础学科
  • 计算机网络
小游
2021-03-31

安全相关

# TLS是啥

SSL/TLS协议其实就是一个安全通信的协议,https采用的就是这个协议来实现安全传输,这个地方主要会问你https的工作原理

# TLS 1.3的特性

# 最大化兼容性

由于 1.1、1.2 等协议已经出现了很多年,很多应用软件、中间代理(官方称为“MiddleBox”)只认老的记录协议格式,更新改造很困难,甚至是不可行(设备僵化)。一旦变更了记录头字段里的版本号,也就是由 0x303(TLS1.2)改为 0x304(TLS1.3)的话,大量的代理服务器、网关都无法正确处理,最终导致 TLS 握手失败

为了保证这些被广泛部署的“老设备”能够继续使用,避免新协议带来的“冲击”,TLS1.3 不得不做出妥协,保持现有的记录格式不变,通过“伪装”来实现兼容,使得 TLS1.3 看上去“像是”TLS1.2。

那么,该怎么区分 1.2 和 1.3 呢?

这要用到一个新的扩展协议(Extension Protocol),它有点“补充条款”的意思,通过在记录末尾添加一系列的“扩展字段”来增加新的功能,老版本的 TLS 不认识它可以直接忽略,这就实现了“后向兼容”。

在记录头的 Version 字段被兼容性“固定”的情况下,只要是 TLS1.3 协议,握手的“Hello”消息后面就必须有“supported_versions”扩展,它标记了 TLS 的版本号,使用它就能区分新旧协议。

# 强化安全

TLS1.2 在十来年的应用中获得了许多宝贵的经验,陆续发现了很多的漏洞和加密算法的弱点,所以 TLS1.3 就在协议里修补了这些不安全因素。

比如:

  • 伪随机数函数由 PRF 升级为 HKDF(HMAC-based Extract-and-Expand Key Derivation Function);
  • 明确禁止在记录协议里使用压缩;
  • 废除了 RC4、DES 对称加密算法;
  • 废除了 ECB、CBC 等传统分组模式;
  • 废除了 MD5、SHA1、SHA-224 摘要算法;
  • 废除了 RSA、DH 密钥交换算法和许多命名曲线。

经过这一番“减肥瘦身”之后,TLS1.3 里只保留了 AES、ChaCha20 对称加密算法,分组模式只能用 AEAD 的 GCM、CCM 和 Poly1305,摘要算法只能用 SHA256、SHA384,密钥交换算法只有 ECDHE 和 DHE,椭圆曲线也被“砍”到只剩 P-256 和 x25519 等 5 种。

减肥可以让人变得更轻巧灵活,TLS 也是这样。

算法精简后带来了一个意料之中的好处:原来众多的算法、参数组合导致密码套件非常复杂,难以选择,而现在的 TLS1.3 里只有 5 个套件,无论是客户端还是服务器都不会再犯“选择困难症”了。

# 性能提升

HTTPS 建立连接时除了要做 TCP 握手,还要做 TLS 握手,可能导致几十毫秒甚至上百毫秒的延迟,在移动网络中延迟还会更严重。

现在因为密码套件大幅度简化,也就没有必要再像以前那样走复杂的协商流程了。TLS1.3 压缩了以前的“Hello”协商过程,删除了“Key Exchange”消息,效率提高了一倍。

HTTPS之TLS1.3特性解析(四) (juejin.cn) (opens new window)

# 常见的加密算法

# 对称加密算法

DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES

# 非对称加密算法

RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

# 摘要、hash算法

MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

# 混合加密是啥

常见的混合加密算法主要是指RSA加解密算法和DES加解密算法这两种加解密算法。随着计算机系统能力的不断发展,因为两种算法各有各优点以及缺点,单独的使用DES或RSA加密可能没有办法满足实际需求,所以就采用了RSA和DES加密方法相结合的方式来实现数据的加密。

比如我们常见的https就采用了混合加密的方式

混合加密实现方式

1、信息(明文)采用DES密钥加密。

2、使用RSA加密前面的DES密钥信息。

最终将混合信息进行传递。

而接收方接收到信息后:

1、用RSA解密DES密钥信息。

2、再用RSA解密获取到的密钥信息解密密文信息。

编辑 (opens new window)
上次更新: 2021/04/12, 10:04:14
高频面试题总结
面试问题

← 高频面试题总结 面试问题→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式