首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流加密填充

流加密填充
EN

Cryptography用户
提问于 2022-11-11 19:33:45
回答 1查看 164关注 0票数 1

问题示例

假设我有一个长度为50个字节的明文。我想使用流加密算法ChaCha20-Poly1305加密它。

Poly1305生成128位散列(16字节),因此加密消息的长度为50 + 16 =66.如果我给它添加nonce (12个字节),它将是78个字节。

但是..。例如,当我将1个字节添加到纯文本中时,密码文本的长度为79个字节(+1)。

我需要什么

我需要隐藏一个真正的明文长度。我听说过甲骨文填充攻击,所以如果我使用一些填充,或者创建我自己的填充方案(直到明文长度被16整除为止),这个攻击会影响我吗?

我的问题是:在经过验证的流密码中使用填充是安全的,比如ChaCha20-Poly1305?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-11-13 21:46:47

使用像Cha20-Poly1305这样的经过验证的流密码填充是否安全?

是的,假设您对填充进行身份验证,这样就不会被篡改。在加密之前应用填充解决了这个问题,是典型的方法。或者,可以使用相关数据对填充进行身份验证。

我不想让人们知道“正确”的明文长度。

有效的填充是非常困难的,因此任何简单的或自定义的方案(例如,填充到固定块大小)可能仍然会显示出大致长度,或者会产生大量开销(例如,消息长度的两倍)。

幸运的是,为此目的有两种填充方案:

  1. 帕德姆是一种以最小开销限制长度泄漏的确定性方案。它是为编码填充均匀随机气泡 (PURB)而创建的。
  2. 隐蔽方案为小消息提供了随机填充,同时确保了最小的固定填充量。它是为隐秘文件加密工具创建的,我现在在我的文件加密工具氪星中使用它。

请注意,这些只计算填充量。您需要使用类似ISO/IEC 7816-4的东西,以可逆的方式应用填充,而不需要存储数量。

此外,两者都有限制:

  • PADM创建可区分的文件大小,并未能隐藏小消息的长度以及在两个填充量之间的边框上变化的消息。例如,长为0-8字节的消息不接收填充,9个字节表示1字节的填充,依此类推。
  • 例如,当攻击者多次观察到相同的消息填充时,隐蔽的方案将无法抵御统计攻击。这也会导致更多的开销,而且还没有在像帕德姆这样的报纸上被正式化。
  • 实现是罕见的。很少有项目使用这两种方案,尽管很少有项目试图隐藏元数据,例如文件长度,这主要是由于复杂性和性能/存储成本。

Implementations

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/102711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档