Jasypt StandardPBEStringEncryptor устанавливает пароль в файле конфигурации Spring bean

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


person Prabhu R    schedule 22.07.2010    source источник


Ответы (3)


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

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

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

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

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

person PaulG    schedule 26.07.2010

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

person rook    schedule 22.07.2010

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

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

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

key = loadKeystore ("yourpass"). getPrivate (). getEncoded ()

удачи

person Saman Salehi    schedule 17.07.2018