首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AESGcm中使用附加数据或关联数据是什么?加密和解密时如何使用

在AESGcm中使用附加数据或关联数据是什么?加密和解密时如何使用
EN

Cryptography用户
提问于 2022-09-29 16:39:51
回答 1查看 258关注 0票数 0

我试图理解AESGcm加密和解密,在加密和解密方法中有一个相关的数据。

https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.aesgcm.decrypt?view=net-7.0#system-security-cryptography-aesgcm-decrypt(system-byte()-system-byte()-system-byte()-system-byte()-system-byte())

我想了解这些字段在加密和解密过程中的用途。它似乎不在AESCng库中。此外,它甚至不生成在AESGcm中生成的身份验证标记。有人能在算法和它们的使用中解释这些不同的领域吗?

https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.aescng?view=net-7.0

EN

回答 1

Cryptography用户

发布于 2022-09-29 17:08:20

有人能在算法和它们的使用中解释这些不同的领域吗?

这两个字段的设计都是为了检测是否有人试图使用加密的数据玩游戏。也就是说,如果接收方解密数据,GCM试图确保他收到的数据正是发送方发送的数据。

身份验证标记是最容易理解的;它是密文的一个复杂函数;如果攻击者生成自己的密文(或修改发送的密文),我们可以证明攻击者发送的标记是接收方计算的标记;如果标记不匹配,则消息被拒绝。

附加身份验证数据(AAD)的存在是为了解决一个更微妙的问题;如果攻击者获取一个在一个上下文中发送的消息并将其重新发送到另一个上下文中,该怎么办。例如,我们可以有:

代码语言:javascript
复制
Alice: Encrypt("Do you like ice cream") -> Bob
Alice:                 <- Encrypt("Yes") : Bob
Alice: Encrypt("Will you marry me" ) ->    Bob

如果一个恶作剧者把鲍勃的第一个“是”(对一个无伤大雅的问题)重复给爱丽丝听,那么爱丽丝可能会认为鲍勃刚刚接受了她的婚姻求婚。

AAD是为了挫败这样的恶作剧者;对于每一个GCM加密,AAD都可以用来表示加密发送的上下文。在加密过程中,Alice使用与她所指的上下文相对应的AAD加密;Bob用对应于他所指上下文的AAD解密。如果Bob在错误的上下文中接收到消息(例如,错误问题的答案),则标记将不匹配,该消息将被拒绝。

AAD可以是标识加密的任何字符串;它可能只是一个序列号(例如,"1“表示第一条消息,"2”表示第二条消息);在我的异想天开的例子中,答案的AAD可能只是答案的问题。

而且,如果您使用GCM时只使用密钥加密单个消息(例如,IES的对称部分),则可以省略它(因为您不需要它提供的安全服务)。

:任何这样的可证明声明都会假设:这里的假设是:( a)攻击者不知道AES密钥,b) AES没有被破坏,c)攻击者没有看到两条不同的有效密文消息。

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

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

复制
相关文章

相似问题

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