【问题标题】:reuse authentication keypair for encrypt and decrypt of data重用认证密钥对加密和解密数据
【发布时间】:2023-11-08 11:27:01
【问题描述】:

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

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

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

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

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

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

谢谢

【问题讨论】:

    标签: openssl kerberos openssh pci-dss


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      希望这会有所帮助。

      【讨论】: