Am studiat diverse atacuri cripto, iar unul dintre atacurile pe care le-am studiat recent a fost atacul padding oracle. Acum, în cea mai mare parte îl înțeleg, dar există un aspect al atacului oracolului de umplutură despre care m-au încurcat diferiți profesori din surse diferite:
Să presupunem că am o adresă URL:
http://somesite.com/place?ciphertext=aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbccccccccccccccdddddddddddddddd
(Să presupunem că textul cifrat este în hex și că „aa” este un octet, deci în total, acest text cifrat este format din 32 de octeți aranjați în două blocuri de 16 octeți. În acest exemplu, primul bloc începe la primul „aa” și se termină cu ultimul „bb”. Totul după aceea este al doilea bloc de text cifrat.)
Acum, știu că pentru a porni atacul de padding oracle, ați adăuga un bloc de 0 ca vector de inițializare la acest text cifrat. Cu toate acestea, am primit semnale ambigue și inconsecvente cu privire la unde ar fi adăugate aceste zerouri.
De exemplu, o sursă a făcut să pară că 0-urile ar fi adăugate ca prefix la primul bloc de text cifrat, astfel încât adresa URL de mai sus va deveni:
http://somesite.com/place?ciphertext=00000000000000000000000000000000aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbccccccccccccccccdddddddddddddd
Cu toate acestea, o altă sursă a făcut să pară că zerourile ar înlocui primul bloc de text cifrat, astfel încât adresa URL ar deveni:
http://somesite.com/place?ciphertext=000000000000000000000000000000000ccccccccccccccdddddddddddddd
Cu toate acestea, o altă sursă a făcut să pară că adăugați zerourile la sfârșitul textului cifrat astfel:
http://somesite.com/place?ciphertext=aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccdddddddddddddddd00000000000000000000000000000000
Care este, sau este opțional?
De asemenea, metoda de mai sus de a încerca un atac oracol de umplutură presupune că textul cifrat este prezent într-o adresă URL, dar ce se întâmplă dacă doriți să decriptați un fișier, cum ar fi un cookie sau ceva de genul acesta? Când atacați printr-o adresă URL, puteți obține răspunsuri precum starea 200 și 500 de răspunsuri înapoi de la server. Cu toate acestea, dacă este doar un fișier de pe computer pe care încercați să îl decriptați, atunci ce ar acționa ca server? Din câte știu, dacă este doar un fișier, atunci nu există niciun server care să vă ofere răspunsuri sau erori „badPaddingException” sau ceva de genul acesta.Aceasta înseamnă, de asemenea, că nu există un server care să cunoască de fapt octeții intermediari care au fost utilizați în criptare. Cum, atunci, ați proceda la decriptarea unui fișier (spre deosebire de o adresă URL) folosind metoda de atac cu padding oracle?