我理解GCM密码只对ESP和认证算法使用ESP加密。而AES 256 SHA256用于ESP加密,SHA256用于Auth算法。
有人能帮助澄清AES256GCM比ASE256SHA256性能更好的原因吗?
发布于 2020-07-04 08:37:15
AES256SHA256在CBC模式下使用AES进行加密。CBC模式首先使用前一个块(或IV)的密文对数据块进行加密,然后通过块密码传递该块。这意味着块的加密依赖于前一个块的密文,所以完整消息的加密必须按顺序进行。
相反,GCM使用计数器模式进行加密。它加密计数器,并使用明文对计数器进行加密。由于每个块的加密独立于其他块,所以可以并行处理多个块的加密。
GCM可以并行化,而CBC不能并行,这可能是导致您正在经历的性能差异的原因。
发布于 2020-07-04 10:45:36
一种加密操作模式有两部分:加密/解密和消息身份验证(反篡改)。必须同时使用这两种方法,因为加密是可扩展的。发送和接收的每一条消息都必须由双方完全处理。
加密/解密的可能选项:
CBC模式有一个固有的局限性,即在加密方向(解密不存在这个问题),16字节块需要一个接一个地处理,限制了并行性。当您需要并行处理许多消息/流时,您可以获得足够的并行性来满足AESNI单元,但这取决于流量模式。
另一方面,CTR模式和基于CTR的模式(如GCM和CCM)可以并行处理所有块。这意味着只要有足够长的消息,单个数据流就可以使AESNI单元饱和。768字节足够长。
AES要么是慢的,要么是不安全的,没有特殊的硬件支持。幸运的是,由于~2010年以来所有的x86芯片都有AESNI,AES在x86上速度很快。按照每秒几千兆字节(不是千兆字节)的顺序,当AES块可以并行处理时(因此CTR和CTR是基于CBC的,而不是CBC)。
ChaCha20的存在是为了在没有硬件AES的芯片上快速运行,比如手机和平板电脑。在x86上(例如,在电话连接的另一端),速度足够快,可能是1.6GB/秒。在手机和平板电脑上,大约是100 On /秒,这取决于微结构和电源/冷却预算。
停战委员会的可能选择:
HMAC比原始哈希函数要复杂一些,但是对于较长的消息,它只是比原始哈希函数慢一点。沙-256速度慢,约为400 on /秒。在处理并行流时或使用英特尔SHA扩展时,可以使用AVX,每秒最多可达几千兆字节(例如,参见这)。SHA指令是新的,并不常见。支持不好。不过,英特尔的IPSec库支持它们。
CBCMAC使用相同的AES执行单元来处理相同数量的数据,因此与仅仅加密/解密相比,它最多可以将吞吐量减半。它在内部使用CBC,因此比CTR慢。其优点是,单加速器电路可用于加密和MAC,节省了硅面积/成本,也降低了复杂性(漏洞的机会)。
GCM使用GMAC作为MAC ( CTR用于加密)。在没有CLMUL指令形式的硬件支持的情况下,GMAC速度很慢。幸运的是,2010年以来所有的x86芯片都有。
Poly1305的发明是为了在没有诸如SHA扩展或CLMUL等特殊硬件的芯片上快速使用,比如手机和平板电脑。它的速度足够快(可能是100 2GB/秒)和x86 (可能是2GB/秒)。
理论上,加密模式和MAC模式可以混合和匹配,但在实际应用中,它们仅用于少数几种组合。
现在,如何将加密部分的性能编号与MAC的性能编号结合起来?
如果它们不能重叠,则需要使用(X*Y)/(X+Y)
,其中X和Y是同一单元中两个单独部分的性能(例如MB/秒)。因此,例如,520 to /秒加密和670 to/秒MAC将导致293 to/秒的合并。
但在某些情况下,它们可能会重叠,然后你可能会得到两个中最慢的表现,而另一个是“免费”的。GCM就是这种情况,它可以以与CTR相同的速度运行,GMAC实际上是免费的。这就是为什么它很受欢迎。TLS和SSH切换到GCM (用于移动的ChaPoly )。为了简单起见,WireGuard是纯ChaPoly的.
以上都是概括性。我建议您始终在您打算使用的确切硬件上运行您自己的精确实现基准测试。消息大小起作用,并行处理多个消息流起作用和重叠加密的能力,MAC起作用。
https://security.stackexchange.com/questions/234202
复制相似问题