2010-12-14 65 views
2

En utilisant les fonctions PHP openssl_pkey_new et openssl_pkey_export pour générer une clé RSA, comment assurer la plus stricte protection par mot de passe? par exemple.Comment puis-je spécifier la force de chiffrement de mot de passe dans openssl_pkey_new?

$conf = array (
    'digest_alg'  => 'sha256', 
    'private_key_type' => OPENSSL_KEYTYPE_RSA, 
    'private_key_bits' => 2048, 
    'encrypt_key'  => true, 
); 
$keypair = openssl_pkey_new($conf); 
openssl_pkey_export($keypair, $keyout, 'foopass', $conf); 

utilisant OpenSSL à partir de la ligne de commande, je peux spécifier TripleDES comme ceci:

openssl genrsa -des3 -passout pass:foopass 2048 
+0

La sécurité de cryptage est fortement liée à ce que vous faites avec. Les détails sont requis. – Incognito

+0

Je stocke mes clés privées dans une base de données et je veux m'assurer que la protection par mot de passe est suffisamment forte pour que la base de données soit inutile si elle est volée. – Tim

Répondre

3

Pour autant que je sache, en spécifiant le encrypt_key comme true dans $configargs (comme vous l'avez fait dans votre exemple de code) crypte déjà en utilisant Triple DES. Si vous vérifiez la sortie de $keyout, vous verrez:

-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,6FDE8DC937CC1C27 

Cela est vrai si vous utilisez un sha1, md5, sha256 ou tout autre digests. En d'autres termes, 'encrypt_key' => true fait exactement la même chose que openssl genrsa -des3.

+0

génial. Merci!! – Tim