2

我在一个简单的聊天中实现 AES-GCM。由于 nonce 公开没有问题,并且我需要在每条消息中更改它,我可以发送未加密的消息 nonce 与消息本身吗?

一个例子:

有一个这样的功能:

AESGCM(nonce, key, data_to_encrypt, unencrypted_data)

我用这种方式:

message = AESGCM(nonce, key, data, nonce)

然后,加密的消息将如下所示:

unencrypted_nonce | encrypted_data | authentication_tag
4

1 回答 1

2

AES-GCM 文档提到 nonce 3 次;

在指定上下文中仅使用一次的值。

IV本质上是一个随机数

AESGCM(nonce, key, data, unencrypted_data)

AES-GCM 在 CTR 操作模式下内部使用 AES,CTR 模式将块密码转换为流密码。对于 AES-GCM 安全性和 CTR 模式,每个密钥只能使用一次随机数(使用一次的数字)。一个 nonce-key 对应该只出现一次。如果随机数重复,这可能会导致

  1. 由于像所有流密码一样拖着婴儿床,机密性失败。
  2. 即使是单个 AES-GCM 随机数重用也可能是灾难性的。

nonce 可以随机生成,但是,基于 counter/LFSR 的解决方案更好,更好的解决方案是组合

  • 如果您发送nonce加密的消息,您希望如何解密消息。它必须以未加密的方式发送。
于 2018-10-09T07:27:40.190 回答