Come dice il titolo, non riesco a trovare alcuna risorsa su quale algoritmo di crittografia venga utilizzato nei certificati * .pfx / PKCS 12 protetti da password.
Tutte le specifiche per il formato PKCS # 12 sono definite in RFC7292 .
Il breve riassunto è che un file .p12
(e presumo anche il vecchio formato PFX
di Microsoft, ma non ho mai lavorato con loro) è solo un formato contenitore che specifica la struttura di questo file, ma non dice nulla su che tipo di dati dovrebbero esserci.
Per usare una pessima analogia, la specifica per il formato .xlsx
di Microsoft Excel specifica la struttura di un file di salvataggio Excel, ma non ti dice nulla su quali dati o formule è consentito contenere; che è controllato da quale versione di Excel stai usando.
Se si aprisse un .p12
in un editor esadecimale, si scoprirà che uno dei campi nell'intestazione è AlgorithmIdentifier: _____
in cui il programma che ha creato .p12
registra A) quale algoritmo di crittografia è stato utilizzato per crittografare i dati, e B) quale algoritmo hash è stato utilizzato per trasformare la password in una chiave. Per quanto ne so, non esiste un elenco definitivo di ciò che è permesso qui; il programma che crea .p12
può utilizzare qualsiasi AlgorithmIdentifier
che desidera, compreso il crearne uno.
Ad esempio, se scrivessi software per leggere e scrivere file .p12
protetti da password, potrei impostare AlgorithmIdentifier: AES256WithPBKDF2
e andrebbe bene. Ma potrei anche impostare AlgorithmIdentifier: MikesCipherWithCatDoodles
, e fino a quando il software all'altro capo saprà cosa fare con questo, va ancora bene.
TL; DR: Il formato PKCS # 12 specifica solo la struttura del file, non elenca quali algoritmi sono legali, quindi l'algoritmo di crittografia utilizzato dipenderà dal software utilizzato per crea il file .p12
.
Se vuoi sapere quali sono gli algoritmi utilizzati per proteggere i tuoi file .p12
, consulta la documentazione sul software che stai utilizzando per leggerli / scriverli.
Se hai un file .pfx specifico che desideri controllare, puoi determinare quali metodi di crittografia sono stati usati usando openssl:
openssl pkcs12 -info -in cert.pfx -noout
Questo potrebbe darti:
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Ciò richiede che tu conosca la password del file .pfx. Se non conosci la password, puoi ancora trovare il metodo di crittografia più esterno utilizzando:
openssl pkcs12 -info -in cert.pfx -nomacver -noout -passin pass:unknown
Questo dà, per esempio:
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Questo particolare file di certificato è stato generato da openssl con parametri predefiniti e sembra che abbia:
Penso che non sia sicuro perché un utente malintenzionato può rompere la crittografia esterna con una forza bruta facile (la crittografia a 40 bit più RC2 ha diverse vulnerabilità) e quindi utilizzare la stessa password sul livello di crittografia interno. Tuttavia, questo probabilmente richiede ulteriori indagini.
Come accennato in precedenza,
the PKCS#12 format only specifies the structure of the file
Quindi può essere crittografato con uno dei seguenti algoritmi, secondo lo standard:
Tuttavia, come già detto da Mike Ounsworth, può trattarsi anche di un algoritmo personalizzato.
Leggi altre domande sui tag tls certificates pfx