我需要知道发送到 Google CloudKMS 的plaintext
/ciphertext
以及用于身份验证的公钥/私钥在传输过程中是安全的,但我不知道如何证明这一点。
根据KMS 文档,我创建了一个服务帐户,下载了 JSON 密钥文件,并通过环境变量将其连接起来GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
。
我正在使用google-api-client gem(在0.10.3
13 个月前发布的版本,因为我mime-types >= 3.0
在使用 padrino-mailer 时无法安装:请参阅此提交),已经测试了这些Google::Apis::CloudkmsV1::CloudKMSService
方法encrypt_crypto_key
,decrypt_crypto_key
并且它们运行良好。
我尝试通读google-api-client、googleauth和signet gems 的源代码。我唯一确定的是:
- JSON密钥文件被加载,
private_key
值用于OpenSSL::PKey::RSA.new
这里 Signet::OAuth2::Client
给出了signing_key
这个文件中的 RSA 密钥
如果 JSON 密钥文件用于加密通过encrypt_crypto_key
调用服务器发送的字符串,同样用于解密由 接收的字符串decrypt_crypto_key
,并且另一端的 CloudKMS 服务器的行为类似,我会考虑已证明的安全性。这就是我假设图书馆所做的——端到端加密——但我必须看到它才能相信它。我试图查看 Wireshark 中的流量,但无法理解(也许事实证明了这一点?我不知道)
谁能帮我证明或反驳这种调用 CloudKMS 来加密/解密用户数据的方法——使用google-api-client gem和根据文档下载的 JSON 密钥文件——是否安全?
相关:对于那些感兴趣的人,CloudKMS API 已在路线图中包含在较新的 google-cloud gem中。