我正在一次简单的聊天中实现 AES-GCM。由于nonce公开没有问题,并且我需要在每条消息中更改它,所以我可以使用消息本身发送未加密的消息nonce吗?
一个例子:
有一个这样的函数:
AESGCM(nonce, key, data_to_encrypt, unencrypted_data)
我使用这种方式:
message = AESGCM(nonce, key, data, nonce)
然后,加密的消息将如下所示:
unencrypted_nonce | encrypted_data | authentication_tag
最佳答案
AES-GCM 文档提到随机数 3 次;
A value that is used only once within a specified context.
The IV is essentially a nonce
AESGCM(nonce, key, data, unencrypted_data)
AES-GCM 在 CTR 操作模式下内部使用 AES,CTR 模式将分组密码转换为流密码。对于 AES-GCM 安全性和 CTR 模式,每个 key 只能使用一次随机数(使用一次的数字)。随机数- key 对应该只出现一次。如果随机数重复,这可能会导致
- 像所有流密码一样,由于拖拉,保密性会失败。
- Even a single AES-GCM nonce reuse can be catastrophic.
随机数可以随机生成,但是,基于计数器/LFSR 的解决方案更好,更好的解决方案是 combination .
- 如果您发送加密的
nonce
,您希望如何解密该消息。必须以未加密的方式发送。
关于cryptography - 我可以在 AES-GCM 中发送未加密的随机数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693398/