Tęczowe tablice, kwantowa kryptografia i inne modne hasła
Jakieś dwa tygodnie temu modnym tematem były tzw. tęczowe tablice (lista par hash -> string, który daje taki hash w skrócie). Natrafiłem na artykuł w dwuch gazetach. Opisze ten, w którym łączyli to z kwantową kryptografią (chyba to była Polityka, ale głowy nie dam).
Autor roztaczał wizję, że wszystkie hasła da się teraz w sposób prosty i łatwy złamać. Problemy są 2:
- Trzeba mieć dostęp do pliku haseł. Jeśli się go nie ma to cóż - jest to atak brute force. Zmodyfikowany, ale jednak (zakładając domyślne ustawienie bodajże SELinux zajmie to maksymalnie ponad 2000 lat (po każdym haśle 5s przerwa, po 3 nieudanych 30s dla 32 bit. md5). Zapewne byłoby to dużo mniejsze, ale nadal ma się czas zaparzyć kawę :)
- Cała metoda jest dobra, tylko co jeśli dodamy jakis jawny parametr? Choćby nazwę użytkownika(chociaż nie - dla root'a mogło by się to skończyć tragicznie), czy coś w tym rodzaju? Załóżmy - hasło brzmi 'tajnehaslo' -> sha1 1279d9a15a8662725e768df6f73b2e0afb977727. W drugim przypadku mamy 'uzytkownik$tajnehaslo' do zaszyfrowania -> sha1 5bbb78a87303475f2edd86035d861cb48885edbb. Teraz tablica ma trudniejsze zadanie - musi znaleźć coś odpowiadające kodowi 5bbb78a87303475f2edd86035d861cb48885edbb zaczynające się od 'uzytkownik$'. W rezultacie musimy stworzyć osobną tablice :). Ze względu na rozmiary tablic i czas ich generowania wystarczy dodać np. 64 bitową lidzbę na początku.
Z tego co wiem (artykuł z drugiej gazety) ten drugi system jest stosowany... w GNU/Linux (a znając życie co najmniej w OpenBSD :), a zapewne we wszystkich *BSD ).
Jako rozwiązanie tego problemu proponowana jest... kryptografia kwantowa. Nie znam budowy dysków komputerów kwantowych. 'Na zdrowy rozum' dane muszą być przechowywane w sposób tradycyjny tzn. nie zaszyfrowane kwantowo(z tego co doczytałem kryptografia kwantowa sprawdza się przy przesyłaniu danych). Przy takim szyfrowaniu część danych musi być zachowana do ponownego przesłania (w końcu nie wszystkie bity docierają). Jeśli możemy zachować dane (koniecznie niezaszyfrowane, albo z kluczem) to nie są one zaszyfrowane na tym komputerze, ergo kryptografia kwantowa to kryptografia niskiego poziomu (przesyłania danych).
Nie neguje sensowności kryptografii kwantowej, ale jest ona, ze swojej natury, peer-to-peer tzn. żeby przesłać coś muszę mieć możliwość bezpośredniego (więc bez pośredników - stanów nie da się 'skopiować' idealnie, na tym polega sens całej tej zabawy) przesłania qbitu (tutaj mogę mylić nazwy). Oznacza to, że dla masowego użytku jest to nie osiągalne (każdy musiałby mieć połączenie z każdym :) ).
Proszę o wskazanie błędów w tym rozumowaniu. Nie znalazłem ich, ale mogę się gdzieś mylić.