Proc-Type: 4, CRIPTAT
indică faptul că cheia este derivată din parola specificată de RFC 1421 §4.6.1.1 ff.. Pentru sensul de DEK-Info
, RFC 1423 este mai veche decât AES și nu cunosc altă referință decât codul sursă OpenSSL.
Cheia de criptare este derivată din parolă folosind PBKDF1-MD5 așa cum este specificat de PKCS#5. Sarea este a doua parte a DEK-Info
antet și numărul de iterații este 1. (Da, acesta este ridicol de slab. Folosiți doar parole cu entropie mare pentru criptarea PEM, nu parole reale memorabile!) Din nou, singura referință pe care o cunosc este codul sursă OpenSSL: pem_bytes_read_bio_flags
apeluri PEM_do_header
care cheamă EVP_BytesToKey
.
Nu există niciun mecanism încorporat pentru a verifica dacă parola este corectă la decriptare. O parolă nevalidă poate duce probabil la gunoi. Dacă transmiteți o intrare trunchiată unui instrument care așteaptă o cheie RSA validă, se va produce o eroare tot timpul. Poate fi necesar să vă scrieți propriul instrument.
Pentru a determina dacă decriptarea părții pe care o aveți este corectă, verificați dacă se potrivește cu formatul unei chei private RSA, așa cum se găsește în interiorul unui astfel de fișier PEM. Acest format este specificat în PKCS#1 §A.1.2. Dacă nu sunteți familiarizat cu ASN.1, primerul Let's Encrypt ASN.1 ar trebui să vă ajute și, desigur, ar trebui să vă uitați la câteva exemple.O cheie privată RSA începe cu 0x30 (indicatorul de secvență), apoi lungimea (de obicei 0x82 și încă doi octeți) întregului, apoi 0x02 0x01 0x00 (codificarea versiunii ca un întreg ASN.1), apoi (pentru un 2048 -bit exponent, de exemplu) 0x02 0x82 0x01 0x01 0x00 și cei 256 de octeți ai valorii exponentului, apoi 0x02 0x03 0x01 0x00 0x01 pentru exponentul public 65537 etc.