首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略AEAD-SIV加密的标记。

忽略AEAD-SIV加密的标记。
EN

Cryptography用户
提问于 2021-03-04 13:06:06
回答 1查看 144关注 0票数 1

我正在处理包含识别属性的个人数据,比如玩家ID,我需要为分析目的准备数据,因此我需要事先伪造匿名数据。但是,数据应该以确定的方式进行伪匿名,以便始终对同一玩家ID具有相同的假名。

在搜索不同的源时,我最终使用了encryption方法模式实现了https://pycryptodome.readthedocs.io/en/latest/src/cipher/modern.html?highlight=siv#siv-mode,其中我指定了一个固定的nonce。

根据定义,AEAD为每条明文消息创建一个密文和一个标签,除提供标签外,没有人可以解密密文。因此,在我这一边,因为我不需要解密加密后的密文,我只是存储密文,并完全忽略标签的创建。

因此,我的问题是:

如果我们不存储标签,它会降低加密的安全性吗?

2-此外,在某些情况下,我指定一个固定的填充,以便没有不同长度的密文。此过程是否影响加密的安全性?

AEAD仍然被认为是确定性加密的标准吗?(我读过关于available SIV的文章,但似乎还没有任何可用的实现)。

提前感谢

EN

回答 1

Cryptography用户

发布于 2021-03-05 12:26:18

简短的回答: AEAD是完全不适合这项工作的工具。你需要一个MAC或者一个散列。

以下是密码学的两个重要事实:

  • 细节很重要。你不能只采取一个好的,安全的结构,修改它,并期待它保持安全。
  • 密码学不仅限于加密。

因为我不需要加密后解密密文

如果你不解密,你为什么要加密?加密的全部要点是,如果你有密钥,它可以被解密。

如果要将私有标识符转换为假名标识符,则基本工具是散列函数。(更准确地说,是加密哈希函数:哈希函数也在密码学之外使用。在加密上下文中,“散列”是指加密上下文。)哈希函数具有给定y= H(x)的属性,而不是x本身,恢复x的唯一方法是猜测它。在您的情况下,这可能还不够好,因为任何人都可以得到玩家in的列表,或者猜测它们,并计算它们的散列数。

你可以把一个秘密钥匙扔进混合物里。对于MAC函数M和秘密密钥k,如果y= M(k,x),而不是x或k,则不可能找到x(甚至无法确定是否存在有效的x)。此外,给定x和y而不是k,仍然不可能确定(甚至是很好地猜测)y是否对应于这个x。因此,您可以使用带有秘密密钥的MAC,并且只有拥有秘密密钥的人才能在任一方向将玩家in与假名in相关联。

给定密钥k和假名ID y,至少可以猜测x并验证M(k,x) = y。如果不能通过猜测计算出x,则仍然可以利用k和y的知识得到候选x。这取决于MAC的性质。一种流行的MAC函数类HMAC具有这样的属性:即使使用密钥,也不可能通过猜测找到x,类似于散列函数的属性。(出于同样的根本原因: HMAC利用哈希函数构建MAC函数。)不管您是否关心这个属性,HMAC都是MAC的好选择。

鉴于您的问题陈述,我认为HMAC符合您的要求。然而,我不确定您的技术要求是否符合您对隐私的期望。我建议你咨询一位隐私问题专家。

根据定义,AEAD创建一个密匙和一个标记。

不一定。通常,AEAD加密创建密文和解密将这个密文作为输入,加上密钥、当前数据和附加数据,并返回明文或解密失败报告。对于包括SIV在内的许多AEAD机制来说,确实可以将密文分解成一个标签,这是确定密文是否真实所必需的,而如果密文是真实的,则不带标签的密文就足以恢复明文。但这种分解并不是AEAD的内在要求,也不是一种有效的功能处理方法。

除了提供标签外,没有人可以解密密文。

这是错误的(对于有独特标记的AEAD模式,包括SIV和大多数其他模式)。没有标记,仍然有可能解密密文,因为找到原始明文是可能的。只是无法确定纯文本是否真实。

如果我们不存储标签,它会降低加密的安全性吗?

不是这样的。如果您不存储部分密文,它可能会降低身份验证的安全性(您失去了部分验证数据是否真实的能力),但不能保证加密的安全性(删除某些信息不会降低数据的机密性)。

但是,不验证标记会降低加密的安全性-参见下一段。

此外,在某些情况下,我指定一个固定的填充,以便没有不同长度的密文。此过程是否影响加密的安全性?

也许:填充可以允许填充甲骨文攻击。填充甲骨文攻击的要点是攻击者编造一些假密文,并要求你解密它们。您解密,并验证填充。如果响应揭示了填充的有效性,那么攻击者就可以解密任意的密文,或者只解密某种格式的密文。如果有某种方式将部分明文表示为填充,则会发生这种情况,这通常是因为填充的重点是位于一些明文如果更长的位置。细节取决于填充和加密的性质。

由于攻击者无法合成有效的密文,所以无法填充甲骨文攻击。(而且,大多数常见的AEAD模式都没有填充--但即使有,身份验证也会保护它们。)当然,这也适用于像这样使用的AEAD。如果你采取了一个建筑和扔出一些部分,所有的赌注都取消了。

AEAD仍然被认为是确定性加密的标准吗?

是的,如果您需要确定性认证加密,那么SIV将是一个不错的选择。

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

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

复制
相关文章

相似问题

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