重用认证密钥对加密和解密数据

Posted

技术标签:

【中文标题】重用认证密钥对加密和解密数据【英文标题】:reuse authentication keypair for encrypt and decrypt of data 【发布时间】:2011-05-22 19:15:34 【问题描述】:

我们有一个 openssl/kerberos/openssh 用户身份验证,它需要一个私钥和公钥对。

我需要登录并从数据库中获取一些数据。但是我不允许以纯格式将数据存储在数据库中。 用于解密的私钥需要存储在异地。

我们不想像 oracle、db2、mysql 等那样使用透明数据加密,而是创建我们自己的。

我可以重新使用已有的密钥对,而不是添加另一个加密层。

这是为了符合存储敏感数据的 PCIDSS 要求。 https://www.pcisecuritystandards.org/security_standards/index.php

非常感谢一些最佳实践建议。

谢谢

【问题讨论】:

【参考方案1】:

通常不鼓励使用相同的密钥对进行身份验证和加密。这就是为什么一个 GnuPG 密钥实际上包含两个私钥的原因。从密码学家的角度来看,您需要存储另一个密钥对进行加密或使用对称密钥进行数据加密。

您是否始终使用同一个客户端读取和写入数据库内容?如果是这样,您可以使用对称加密并将密钥存储在客户端上。

【讨论】:

【参考方案2】:

PCI 规模庞大,如果出错可能会毁掉一家企业,因此最好找一位专家。

也就是说,我的想法是:如果只需要对所有数据进行加密,以便只有场外方可以打开它,请使用良好的公钥密码系统来保存数据。 (阅读足够的文档以确保库使用会话密钥加密数据,并使用远程方的公钥加密会话密钥。您永远不想加密 data一个公钥,只有 会话密钥。)

如果所有数据都需要使用每个用户的密钥存储,您也可以这样做,但 Kerberos 是专门为避免使用公钥密码系统而设计的——他们付出了巨大的努力来构建几乎类似的东西,只使用对称密码。聪明,但这可能意味着您甚至不能使用您希望使用的密钥(如果确实要求只有异地存储的密钥可以解密存储的密文)。

希望这会有所帮助。

【讨论】:

以上是关于重用认证密钥对加密和解密数据的主要内容,如果未能解决你的问题,请参考以下文章

加密和验签:保密性完整性和身份认证

CA认证简述与邮件服务器加密

ssh服务

https单向认证和双向认证

Xshell密钥认证

putty密钥认证