使用Jasypt的标准化ringencryptor,我们必须在Spring Bean配置文件中明确设置密码。在bean配置文件中有密码是否可以和安全?将PCI合规性存储加密器密码是否存在问题?

有帮助吗?

解决方案

这个将不会是pci兼容。数据加密密钥无法以明文存储。具体点是3.5.2,即:

检查系统配置文件 验证键是否存储在 加密格式,以及 存储键加密密钥 与数据加密密钥分开。

您可能还会在关键管理区域周围有其他问题,例如3.6.6(键的分开知识和双重控制)

验证关键管理程序 实施要求拆分 钥匙的知识和双重控制 (例如,需要两三个 人们,每个人只知道自己 部分关键,重建 整个钥匙)。

重点管理是最具挑战的部分PCI合规性。您可能想考虑使用(已有PCI兼容)第三方来管理您的卡数据。如果您正在推动自己的滚动,那么我会建议您在最早的机会中提出QSA(PCI合格安全助理员)的帮助,以评估您计划的安全性。最终,您需要说服的QSA,以便通过PCI要求,并且他们将非常乐意建议。

其他提示

您需要将对称密钥存储在某处。配置文件是一个很好的地方,只要没有人可以访问它。

我有一个想法

您可以使用keyStore.jks的键盘加密所有纯密码。您知道keystore.jks有自己的密码。您可以记住密码以及程序开始时输入它在控制台上。例如,当您的程序开始时:

Console console = System.console();
        keyPair = loadKeystore(new String(console.readPassword()));


private static KeyPair loadKeystore(String pwd) {
        InputStream is = Main.class.getResourceAsStream("/keystore.jks");

        KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
        keystore.load(is, s.toCharArray());

        String alias = "youralias";

        Key key = keystore.getKey(alias, pwd.toCharArray());
        if (key instanceof PrivateKey) {
            // Get certificate of public key
            Certificate cert = keystore.getCertificate(alias);

            // Get public key
            PublicKey publicKey = cert.getPublicKey();

            // Return a key pair
            return new KeyPair(publicKey, (PrivateKey) key);
        }
        return null;
    }
.

返回键盘时,您可以使用它来加密密码。

key= loadKeystore(“yourpass”)。getPrivate()。getEncoded()

goodluck

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top