Se hai un HSM allora il pepe dovrebbe essere in quell'HSM, perché questo è il punto di avere un HSM .
Altrimenti, il pepe è un tasto che dovrebbe essere gestito come tale. Avere una chiave implica la gestione delle chiavi; non dovrebbe (e, davvero, non deve) essere codificato nella sorgente. Il codice sorgente viene copiato in più punti: macchina dello sviluppatore, sistemi di controllo delle versioni, molti backup ... La chiave è in realtà una proprietà del server istanza (server o insieme di server che utilizzano lo stesso set di utenti registrati) mentre la sorgente è, concettualmente, condivisa tra molte istanze del server.
Su Windows, DPAPI è ciò che renderà i revisori più felici, sebbene si possa dire che la protezione extra offerta da DPAPI non è, in effetti, così grande. Se si riavvia il server, viene avviato automaticamente; questo significa che indipendentemente da dove si metta il pepe, la conservazione a freddo del server (contenuto del disco rigido) è sufficiente per recuperare il peperone. Il pepe è destinato a resistere agli accessi di lettura parziali da parte degli autori di attacchi (motivo per cui non li si inserisce nel database), ma se l'utente malintenzionato può leggere il registro, ha molto controllo sul macchina e probabilmente non sarà molto ostacolata anche da DPAPI. Se si utilizza il registro, regolare i diritti di accesso su quella chiave specifica in modo che solo gli utenti pertinenti possano leggerlo (in genere, l'account utente con cui viene eseguito il server).
L'utilizzo di un file comporta il rischio di accesso in lettura tramite uno script PHP mal sviluppato che finisce per scaricare il contenuto dei nomi dei file scelti dagli hacker.
Su Linux non c'è registro né DPAPI, quindi usa un file di configurazione. Si potrebbe fare un caso di esecuzione dell'elaborazione del pepe in un processo distinto a cui si accede tramite un meccanismo di comunicazione tra processi (ad esempio, socket a livello Unix) ed eseguire il codice effettivo del server in un chroot .
In tutti i casi, l'utilizzo di un peperoncino ha i suoi costi: hai una chiave da gestire, cioè generare in modo sicuro e tenere al sicuro. Se perdi quella chiave, perdi la possibilità di verificare le password degli utenti, il che può essere molto sconveniente. In questo senso, il pepe è più critico della chiave privata del server per il suo certificato SSL.