Пароль установки Jasypt StandardPBEStringEncryptor в файле конфигурации Spring bean - PullRequest
3 голосов
/ 22 июля 2010

При использовании Jasypt's StandardPBEStringEncryptor мы должны явно установить пароль в файле конфигурации Spring Bean.Это нормально и безопасно иметь пароль в файле конфигурации бина?Будет ли проблема в PCI Compliance для хранения пароля шифратора?

Ответы [ 3 ]

1 голос
/ 26 июля 2010

не будет соответствовать PCI.Ключи шифрования данных не могут храниться в виде открытого текста.Особый пункт 3.5.2:

Изучите файлы конфигурации системы, чтобы убедиться, что ключи хранятся в зашифрованном формате и ключи шифрования хранятся отдельно от ключей шифрования данных.

Возможно, у вас также есть другие проблемы в области управления ключами, например, 3.6.6 (Разделение знаний и двойной контроль ключей)

Убедитесь, что процедуры управления ключамиреализован так, чтобы требовать раздельного знания и двойного управления ключами (например, для восстановления всего ключа требуется два или три человека, каждый из которых знает только свою часть ключа).

КлючУправление является наиболее сложной частью соответствия PCI.Возможно, вы захотите использовать стороннюю (уже совместимую с PCI) для управления данными вашей карты.Если вы работаете самостоятельно, я бы посоветовал вам воспользоваться помощью QSA (PCI Qualified Security Assesor) при первой же возможности оценить безопасность, которую вы планируете внедрить.в конечном итоге вам нужно будет убедить QSA, чтобы выполнить ваши требования PCI, и они будут более чем рады дать вам совет.

0 голосов
/ 17 июля 2018

У меня есть идея

Вы можете зашифровать все ваши простые пароли с помощью keyPair 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;
    }

когда вы возвращаете пару ключей, вы можете использовать ее для шифрования вашего пароля.) .getEncoded ()

goodluck

0 голосов
/ 22 июля 2010

Вам нужно где-то хранить симметричный ключ. Файл конфигурации - это хорошее место, пока никто не имеет к нему доступа.

...