Puncte:1

Decriptați cheia RSA parțială criptată AES-128-CBC

drapel cn

Mi se dă o cheie RSA privată, care antet indică faptul că este criptată AES-128-CBC. Rețineți că ultimele zece rânduri ale cheii lipsesc. (Acesta face parte dintr-o sarcină educațională.)

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4, CRIPTAT
DEK-Info: AES-128-CBC,8B7CE35DB731727CEABA217FAE404DB8

... 37 de rânduri și jumătate cu 64 de caractere fiecare

Sarcina este de a afla expresia de acces a cheii (se știe că este un număr de patru cifre). Am realizat deja mecanismul general de cracare folosind John The Ripper și am adăugat cel obligatoriu -----END RSA PRIVATE KEY----- până la sfârșitul cheii parțiale, dar până acum, cheia nu a putut fi decriptată, ceea ce ar putea fi legat de faptul că ultimele rânduri ale cheii lipsesc (deoarece CBC implică toate blocurile unui fișier). Am încercat deja să reduc lungimea conținutului cheii la un multiplu de 128 de biți și să o decriptez, dar asta nu a schimbat nimic. Pentru a găsi o modalitate adecvată de a putea încă decripta cheia, trebuie să înțeleg în detaliu procesul de decriptare.

Cum funcționează procesul de decriptare și cum este implicată fraza de acces a cheii? Am căutat deja câteva pagini web care conțin wikipedia despre criptarea CBC în general, dar nu am reușit să înțeleg cum are loc procesul real de decriptare care implică fraza de acces a cheii.

Vă mulțumim anticipat pentru toate explicațiile sau sugestiile despre cum să abordați această sarcină.

Maarten Bodewes avatar
drapel in
Ar trebui să căutați modul real în care fișierul este criptat (de exemplu, în ceea ce privește modul în care este derivată cheia și cum este utilizat IV-ul). Apoi ar trebui să *decodați pe baza 64 liniile* care vi se dau și să încercați să le decriptați folosind AES-CBC direct (folosind „fără umplutură”, deoarece dezpășirea va eșua). Rețineți că antetul DER al unei chei private este ușor de distins de textul randomizat.
Maarten Bodewes avatar
drapel in
Interesant, nu pot găsi KDF folosit pentru a obține cheia. Este probabil cea specifică OpenSSL „EVP_BytesToKey”, dar voi fi periculos dacă voi găsi metoda precisă necesară pentru a trece de la PIN la cheie. Aveți mai multe informații despre PIN/cheie?
BenjyTec avatar
drapel cn
@MaartenBodewes Vă mulțumim pentru ajutor. Nu, din păcate, nu există informații suplimentare despre codul PIN sau cheia dat. Singurul lucru suplimentar este un fișier criptat care urmează să fie decriptat de cheia restaurată mai târziu, dar cred că acest lucru nu ajută în acest moment.
Puncte:4
drapel cn

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.

dave_thompson_085 avatar
drapel cn
Rețineți că ultimele 3 componente (neopționale sau pre-2.1) din RSAPrivateKey a lui PKCS1 pot fi recreate trivial, iar p,q poate fi, de asemenea, recreat destul de ușor, astfel încât OP-urile (revendicate) aproximativ 1800 din 2280 de octeți sunt mai mult decât suficiente, deși instrumentele standard nu va funcționa și trebuie modificat sau înlocuit.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.