首页 > 解决方案 > 为什么 Google Cloud KMS 会为相同的输入文本生成不同的加密密文?

问题描述

我正在尝试使用 Google Cloud Key Management Service (KMS) python API 加密机密和敏感数据。我注意到在加密后的每次迭代中,相同的输入文本的相同密钥会生成不同的加密密文。我的意思是,对于相同的输入文本,我得到不同的加密密文。

我的问题是,

  1. 为什么加密的密文被改变了?如何为相同的输入获得相同的加密密文/值?
  2. 如何控制加密密文的长度?

这是我使用的python代码

from google.cloud import kms
client = kms.KeyManagementServiceClient()
name = 'projects/sandbox/locations/global/keyRings/encryptdecrypt-keyring/cryptoKeys/encryptdecrypt-key_v01/cryptoKeyVersions/1' #CryptoKey info 
plaintext = b'hello123' # The data to encrypt

enc1=client.encrypt(request={'name': name, 'plaintext': plaintext})

参考:

标签: pythonencryptiongoogle-cloud-platformgoogle-cloud-kms

解决方案


是的,系统在加密相同的输入时会生成不同的密文。这是大多数加密系统的重要安全控制;它可以防止攻击者让您对特定消息 M 进行加密,以便他们可以确定他们手头的密文 C 是否也是同一消息 M 的加密副本。

有些系统提供一致的加密输出;该属性称为确定性加密。但是,我建议在选择机制之前咨询密码学专家;这些工具很棘手。

我们不承诺加密密文的确切长度;如果您需要它是可预测的,我想更多地了解我们为什么以及如何提供帮助。

感谢您使用 GCP 和 Cloud KMS!


推荐阅读