Lettura Ingegneria della sicurezza di Ross Anderson, chapter 2.4.7.1 Password Manglers ha un'idea che alla fine sembra risolvere il problema che ho con l'esistente "Ho bisogno per ricordare una password * strong per troppe soluzioni di sistema.
* ) le mie password sono generate casualmente, con una dimensione che dipende dal livello di importanza del servizio utilizzato, con 8 caratteri minimi e un massimo tipico di circa 16 caratteri.
Una rapida ripartizione di ciò che non mi piace delle soluzioni esistenti:
- annotali: non sicuro, elenco non sempre accessibile;
- memorizzarli in un file crittografato: non sempre accessibile;
- utilizza un software dedicato: non sempre accessibile.
Quindi, in breve, stavo cercando una soluzione che fosse:
- sempre disponibile quando connesso a Internet;
- sicuro (nessuno può rubare o elaborare le mie password).
Quindi, la mia domanda è:
È sicuro utilizzare PBKDF2 per generare password, in base alla mia password principale (12 caratteri ascii stampabili generati casualmente) e utilizzare il nome di dominio del sito Web (stackexchange.com) come un "sale"?
<?php
$password = $_POST['password'];
$salt = $_POST['publicIdentifier'];
function passKey($password, $salt) {
$iterationCount = pow(2, 18); // 262.144 iterations
$outputLength = 20; // because this should be 'secure enough'?
// Step 1: get the derived key
$generated = hash_pbkdf2('sha256', $password, $salt, $iterationCount, $outputLength, true); // returns binary output
// Step 2: encode as Base91
$generated = base91_encode($generated); // because we want 'special characters' in our password string (websites often require this)
// Step 3: return the password, sliced down to required length
return substr($generated, 0, $outputLength);
}
echo 'generated password: '.passKey($password, $salt);
Dato che la soluzione sarebbe ospitata sul mio server web affidabile e accessibile solo tramite SSL / TLS?
Se l'utente malintenzionato ha accesso al codice utilizzato (pubblicato sopra), al "publicIdentifier" e probabilmente a un elenco di password generate, lo schema sopra indicato proteggerà l'autore dell'attacco in modo da capire la password principale?
Sono preoccupato che l'uso di una stringa breve , non generata a caso come un salino possa compromettere la forza di PBKDF2?