首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AEAD中的关联数据是什么?

AEAD中的关联数据是什么?
EN

Cryptography用户
提问于 2020-09-20 16:02:53
回答 1查看 1.7K关注 0票数 6

我正试着弄清楚什么才是真正的爱。我是应用程序开发人员,不是加密者。我在网上搜索了一段时间,看了一堆Youtube视频,翻阅了几本书“严肃密码学”和“理解密码学”,但发现这些解释过于简洁。我的目标是在使用密码库时了解文档,它们提到了AEAD和AES各种模式的优缺点。下面是我对AEAD的一些问题。

  • AEAD解决的一个示例问题/场景是什么?(希望了解问题,而不是解决方案)
  • 这个问题是如何解决的?(不是算法细节,而是更高层次的大图)
  • 关联数据的典型示例是什么?
  • 如果没有使用AEAD,攻击者能做什么?(很多在线参考都提到了填充甲骨文攻击,我试着理解了攻击,但似乎需要深入了解AES的工作原理)
  • 作为一名开发人员,我是否应该总是在每件事上都使用AEAD?
  • 开发人员在应用AEAD时,典型的错误是什么?
  • AEAD是否只用于分组密码,而不需要流密码?
  • 当使用公钥密码(如RSA )时,需要使用AEAD吗?
EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-09-20 16:39:48

首先,让我们看看AAD是什么;它是一个必须在加密和解密时都显示的字符串;如果解密器显示了错误的字符串,则解密失败。

为什么这个有用?因为AAD可以理解为“加密上下文”。我们通常使用相同的密钥来加密多条消息。AAD防止的是攻击者获取一个有效的密文,并用它替换另一个密文(用相同的密钥加密);如果解密者对两个不同的上下文使用不同的AADs,则解密将失败(攻击被挫败;如果攻击者只希望解密失败,他就可以用随机的胡言乱语替换密文)。

另一种方法是每次只使用一个单独的键;但是,AAD通常以较低的复杂度解决问题。

所以,要回答你的问题:

AEAD解决的一个示例问题/场景是什么?

你要一个,我给你两个:

  • 以TLS为例,其中各个记录都使用相同的密钥加密。TLS使用包含记录序列号的AAD (记录序列号与每个记录一起递增);这防止攻击者重播先前发送的记录。
  • 以数据库加密为例,我们在数据库中对单个字段进行加密,例如,提供员工名称1和薪资(加密)的数据库。如果攻击者能(比方说)拿走爱丽丝的薪水,把它写进鲍勃的行里,那就太糟了。通过使用雇员名作为AAD,攻击者不能在未被检测到的情况下执行此操作。

这个问题是如何解决的?(不是算法细节,而是更高层次的大图)

GCM所做的是将AAD搅拌到标记中;如果AAD不正确,则标记不会验证(在这种情况下,您应该拒绝解密)。

如果没有使用AEAD,攻击者能做什么?

将一个密文替换为另一个密文

作为一名开发人员,我是否应该总是在每件事上都使用AEAD?

好吧,如果您使用相同的密钥用于多种用途,您可能应该对每种加密使用不同的AAD。另一方面,如果您只使用密钥加密一条消息(例如,作为IES中的对称部分),则不需要

AEAD是否只用于分组密码,而不需要流密码?当使用公钥密码(如RSA )时,需要使用AEAD吗?

通常,需要解决重放问题,但是流密码器和公钥方法通常使用不同的方法。

使用流密码器,我们通常生成一个长字符串,并使用不同的部分对单个消息进行加密--这可以防止重放攻击。其他情况下(当我们需要对消息进行无序解密时),我们会将一个nonce作为流密码的输入,并且有一个更高级别的协议来确保not不被重用。

使用公钥加密,它通常在更高的级别上处理,可能使用的是现在.

1:真正的数据库更有可能有一些序列号,而不是名称;对于这个例子,我将忽略它。

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

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

复制
相关文章

相似问题

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