我一直在研究密码模式,并遇到了一种名为交错CBC (工行)的模糊模式。我找不到很多关于这件事的事,我想知道是否有人知道更多的事情。
它基本上是CBC,但是不是链接最后一个块,而是链接n个m_th块,其中_m是一些常量。这允许一定数量的并行化。例如,如果m是8,你可以一次做8个块。对于消息不可分辨性,您还需要一个与分组密码次数m一样宽的IV,这很可能是从较短的IV扩展而来。
有人知道这是什么吗?我想它会被认为是过时的,但在某些应用程序中,它可能有一些可取的特性。
编辑:据我所知,这与将消息拆分为m小消息并使用CBC加密每条消息在安全性上是相同的。信息是通过“条状”而不是分割成块来分割的,这一事实似乎无关紧要。这基本上只是减少到CBC (假设IV是唯一的每条条)?
当然,为了防止填充甲骨文攻击,必须对此进行身份验证。
发布于 2020-02-12 15:57:09
虽然它确实提供了一些并行处理,但我必须说,它如何处理它还存在一些问题。通常,如果您要执行多线程处理,您将使用分而治之的方法,该方法只需将明文分割成块并让其他处理器处理它。此方法需要具有特定大小的块流--块大小。更糟糕的是,当把这些东西放在一起的时候,也需要同样的程序。
如果您使用s流,并且有执行加密服务的x处理器( x \not= s ),那么在服务之间划分流就比较棘手了。通常,devs尝试给块密码实现提供相对较多的块,以避免延迟问题。如果您这样做,那么您将不得不将这些块连接在一起,然后再将它们分开。如果其中一个流慢下来,那么您可能不得不缓冲许多小块。
我并不是说这类问题无法解决,但开发人员确实需要大量的工作才能有效地处理所有问题。
现在把这个和CTR比较一下。您为处理器提供了一个很好的明文块,并为该块提供了nonce &计数器,并将其留给加密服务来尽快返回。密文可以用计数器值发回,您只需将其放入线程安全的prio映射中,直到需要为止(当然,也可以用完缓冲区空间)。您可以根据需要将这些块分割成任意大小的块,并将过程拆分到任意多个服务上。灵活的每一步,只有有限的分裂/级联必要。
只有一个小的现在是必要的,而不是一个庞大的IV (虽然有技巧围绕后者)。
基本上,只要您能够避免当前重复的问题,在并行处理(以及大多数其他属性,例如更好地跳过大型密文的属性)方面,CTR将大大优于此方案。
发布于 2020-02-12 09:14:59
在实际使用中,我从未见过交错CBC,但我可以想象它是用于VPN之类的。是的,它已经过时了,因为它不提供经过身份验证的加密,并且在大多数方面都不如CTR (特别是,CTR很容易并行化,不需要填充)。
是的,如果所有条纹的静脉输液都是独立的,请注意安全问题。数据保密性的目标是CBC的目标,但没有密钥更新的加密数据量的限制适用于所有合并的条带;对于概率\epsilon=1/2^s ( b-bit块在密文中发生两次),我们应该在2^{(b-s+1)/2}\,b位之前更改密钥。
因为CBC不能提供良好的安全性。以数据完整性为目标,不值得讨论这些属性是如何转换的。
https://crypto.stackexchange.com/questions/77560
复制相似问题