Cel mai bun răspuns
În câmpul criptanaliză există o diferență uriașă între „ crack „și” break „.
Spargeți o parolă în cel mai simplu sens încercând să deblocați sistemul cu toate iterațiile posibile ale acelei parole, o metodă cunoscută sub numele de cracking cu forță brută. Dacă cunoașteți regulile care guvernează crearea și utilizarea parolei, știți și în avans costul de timp / efort inerent acelui cifru. Fiecare algoritm de acolo are o speranță precunoscută în efortul de calcul necesar pentru a-l sparge.
Un algoritm, cum ar fi MD5 sau SHA-1 (exemple reale), se spune că este rupt atunci când găsiți un fel de coliziune care reduce acel univers așteptat (fiecare soluție posibilă la formula utilizată pentru a crea cheia / parola).
Pentru a simplifica, permiteți-mi să vă prezint un exemplu real de WPS (Wi-Fi Protected Setup ). WPS a fost creat pentru a facilita utilizatorilor securizarea rețelei Wi-Fi. Acesta a constat dintr-un cod PIN de opt cifre care ar fi schimbat între utilizatorul solicitant și router la apăsarea unui buton.
Creatorii sistemului știau dinainte universul așteptat: 8 numere vă oferă 100.000.000 posibile combinații (10 ^ 8). Cu toate acestea, implementarea protocolului a împărțit acest număr în 2 combinații de patru cifre care au fost validate separat.
Acest lucru a însemnat că ar trebui să încercați doar 10.000 (10 ^ 4) + 10.000 (10 ^ 4) combinații, în cel mai rău caz, pentru a sparge codul PIN. Universul tău de 100 de milioane de combinații a scăzut brusc la doar 20.000 de combinații. Algoritmul este efectiv rupt . Apoi, puteți încerca să-l spargeți – așa cum ați fi putut dacă nu ar fi rupt -, dar, deoarece este „încălcat, șansele de a avea succes sunt mult mai bune, necesitând cel mult 20.000 de încercări în loc de 100 de milioane.
Concluzia care trebuie extrasă din acest lucru:
Spargerea și crăparea sunt lucruri diferite. Un cifru rupt nu înseamnă că este nesigur, doar că este mai ușor de spart acum. În funcție de valoarea a ceea ce este protejat de acesta, a fi spart nu înseamnă moarte pentru un anumit sistem, doar înțelegerea faptului că este mai puțin sigură acum decât se aștepta inițial să fie.
RSA-2048 va fi întrerupt dacă cineva găsește o modalitate de a crea coliziuni care reduc în mod inerent numărul așteptat de combinații pentru a sparge cifrul. RSA 2048 poate fi spart așa cum este, ca orice alt cifru, prin forță brută.
Răspuns
RSA, în sine, are doar câteva atacuri asupra modulului public (care este de obicei un semiprim, sau două prime mari selectate aleatoriu s multiplicat împreună). Cel mai eficient algoritm clasic pentru rezolvarea problemei de factorizare, care permite derivarea cheii private folosind aritmetica de bază, este General Number Field Sieve (GNFS). Acest algoritm rulează în timp sub-exponențial și nu este fezabil de utilizat pe implementat corect sistemele RSA-2048 biți.
Există, de asemenea, Algoritmul lui Shor, dar care nu poate fi montat pe RSA-2048 de către un atacator tipic. Producătorii de computere cuantice rulează un oligopol, în special condus de D-Wave. Nu numai că este incredibil de scump să obțineți unul, dar necesită și echipamente specializate pentru a le rula și întreține. Nu a fost creat niciun cip cu suficientă persistență informațională și putere pentru a rupe mai mult de câțiva biți.
După cum sa menționat mai devreme, un criptosistem nu este nimic fără o implementare corectă. Majoritatea implementărilor RSA utilizează, de asemenea, un algoritm de amprentă cu cheie publică, de obicei un hash. În afară de asta, găsirea factorizării primilor este posibilă printr-o exploatare care este atât incredibil de rară, cât și neglijabilă statistic din punct de vedere al ratei de succes. După cum a subliniat Euclid , există numere prime infinite, dar nu numai există numere prime infinite, există o mulțime de ele într-un anumit spațiu de taste. Dacă două module se întâmplă să împărtășească același prim, atunci găsirea factorizării lor este ușoară. Folosind cel mai mare algoritm divizor comun , care rulează în timp liniar (poate fi rulat cu ușurință pe dispozitivul pe care îl vedeți în câteva milisecunde), factorul comun poate fi pot fi găsite, apoi împărțite din moduli pentru a produce celelalte două prime lipsă. Acest lucru duce la accesul la ambele taste. Orice implementare corectă a RSA nu ar refolosi niciodată primele pentru chei separate, selectându-le complet la întâmplare. Deoarece există mulți moduli posibili în spațiul de taste 2048 biți, care poate fi scris ca numărul de lungimi 2048 selectați 2 (sau mai mare de 2 dacă funcționează cu moduli non-standard), sunt neglijabile șansele ca două taste să împartă două prime. . Cu alte cuvinte, luarea tuturor cheilor de la un server de taste și executarea algoritmului GCD pe toate acestea este pur și simplu o pierdere de timp.