在CBC,GCM,CCM,Chacha-Poly之间使用什么AES密码?

问题描述 投票:0回答:1

我被要求为我们的应用程序配置TLS。我们有HTTPS Web服务器(nginx,haproxy)和内部应用程序(python / java)。在自动SSL安全扫描中,有些显示为橙色或红色。

密码太多。它们之间有什么区别?

security ssl openssl cryptography
1个回答
0
投票

TL; DR如果您只有5秒的时间只选择一个,请使用AES-GCM。大多数系统/库都可以即用即用地接受AES-GCM和ChaCha20-Poly1305。

AES-GCM(Galois计数器模式)

ChaCha20-Poly1305

  • 一种单独的密码算法。与AES无关。
  • 设计为快速,使用了可以在CPU上高效执行的操作和常规构造。
  • 广泛使用和广泛采用。
  • [特别是被CloudFlare迅速并迅速采用并采纳到improve mobile performance
  • 在没有专用AES指令的处理器(ARM /移动设备)上,其速度可以比AES-GCM快3-5倍(请参阅性能部分)。>>
  • RFC 7905年2016 https://tools.ietf.org/html/rfc7905
  • AES-CCM(带有CBC-MAC的计数器)

  • 替代GCM模式。
  • [从TLS 1.3(2018)开始在OpenSSL中可用,但默认情况下处于禁用状态。
  • 每个块两次AES计算,因此预期会比AES-GCM慢一些。
  • RFC 6655年2012 https://tools.ietf.org/html/rfc6655
  • 采用率低得多,可能是因为它是在GCM之后实施的,并且没有明显的收益。
  • AES-CBC

  • AES的第一个历史分组密码。
  • CBC模式不安全,不能使用。它已逐渐被弃用,并已从SSL库中删除。
  • 在2002年TLS 1.0中引入。在2008年TLS 1.2中由GCM取代。在2018年TLS 1.3中删除。
  • 独立运行,重复模式。例如,“ ABCAAAXYA” =>“ EDKEEEHPE”,请注意重复。
  • Wikipedia page很好地说明了这个问题。 Plain imageimage with CBC。不像人们期望的那样机密。
  • RFC 3268年2002 https://tools.ietf.org/html/rfc3268
  • 性能注意事项(粗略数字)

  • 流密码通常可以以100 Mbps到1000 Mbps的数据加密,将内核固定在100%的使用率。
  • 随CPU速度,实现,AES128与AES256的不同而不同。请记住,除了加密之外,应用程序还具有要运行的应用程序代码。
  • 服务器通常在多个内核(线程/进程池)上并行处理多个连接,因此最大容量是上述数量的倍数。
  • TLS性能对于任何执行1 Gbps及更高速率的系统都是现实问题。
  • 最近的x64 CPU(来自Intel核心4xxx [*] / AMD Bulldozer)具有专用的硬件指令(AES-NI),计算AES-GCM的速度快了2-10倍。
  • ChaCha20-Poly1305在没有AES硬件的系统(任何移动或ARM的系统上,比AES快得多。
  • [*]英特尔根据市场范围(i7高端,i3低端,M笔记本电脑等)大量细分了功能(AES-NI),因此请查看数据表以获取对旧CPU的支持。 https://ark.intel.com/content/www/us/en/ark.html

© www.soinside.com 2019 - 2024. All rights reserved.