cryptography - 我可以在 AES-GCM 中发送未加密的随机数吗?

标签 cryptography aes-gcm python-cryptography

我正在一次简单的聊天中实现 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 对应该只出现一次。如果随机数重复,这可能会导致

  1. 像所有流密码一样,由于拖拉,保密性会失败。
  2. Even a single AES-GCM nonce reuse can be catastrophic.

随机数可以随机生成,但是,基于计数器/LFSR 的解决方案更好,更好的解决方案是 combination .

  • 如果您发送加密的nonce,您希望如何解密该消息。必须以未加密的方式发送。

关于cryptography - 我可以在 AES-GCM 中发送未加密的随机数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693398/

相关文章:

python 加密 : DES CTR decryption

node.js - 使用 NodeJS(带有 Typescript)流和 aes-gcm 算法时出现不支持的状态或无法验证数据错误

python - 使用 python 解密 Amazon SP API 报告文档。 AES、CBC、base64

sql-server - EKM 是否与 CNG key 存储提供商合作?

python - 如何根据字符串列表创建解密字典以按字符串加密

java - 伽罗瓦/计数器模式 (GCM/NoPadding) 未使用

python - 在 python 加密库中,serialization.BestAvailableEncryption(b'mypassword') 使用哪种加密算法?

python - Crypto++ 和 Python 之间的 Diffie-Hellman key 交换

cryptography - 我需要一个加密安全的随机数吗?

ruby - Go 加密不同于使用相同 key 和 iv 的 Ruby 加密