Pomyśl o losowym słowie. Teraz, pierwszym, jakie ci przyjdzie do głowy.
Jakiekolwiek by nie było, nie było losowe. To było twoje słowo: coś, co przeczytałeś w tym tygodniu, przedmiot leżący przed tobą, litera, na którą zaczyna się twoje imię. Kiedy prosisz człowieka o przypadek, dostajesz autobiografię. A autobiografię da się zgadnąć.
To jest cały problem haseł w jednym zdaniu. Nie chodzi o to, że ludzie są leniwi — chociaż są — tylko o to, że jesteśmy niezdolni do generowania losowości. Lubimy pewne litery, unikamy powtórzeń, bo „nie wyglądają losowo”, na przemian wstawiamy samogłoski i spółgłoski, nawet o tym nie wiedząc, a gdy ktoś prosi nas o liczbę, sięgamy po tę, którą mamy pod ręką: daty, wiek, cyfry coś dla nas znaczące. Atakujący nie musi wiedzieć, kim jesteś, żeby to wykorzystać. Wystarczy mu wiedzieć, że jesteś człowiekiem.
Inżynier, pięć kostek i lista
W 1995 roku Arnold G. Reinhold opublikował na swojej stronie metodę, którą nazwał Diceware. Pomysł jest tak prosty, że aż trochę irytuje konieczność jego tłumaczenia: skoro problemem jest to, że człowiek nie umie wybierać losowo, to odbierz człowiekowi wybór.
Cała procedura mieści się w trzech linijkach:
- Rzucasz pięcioma kostkami i zapisujesz wyniki po kolei. Wypada,
powiedzmy,
4-2-6-1-3. - Szukasz
42613na liście. - To jest twoje słowo. Powtarzasz dla następnego.
Lista ma 7776 pozycji i ta liczba nie jest przypadkowa: to 6⁵, wszystkie
możliwe wyniki pięciu kostek. Każda kombinacja — od 11111 do 66666 —
wskazuje na inną pozycję, żadna nie zostaje pominięta ani powtórzona.
Oryginalna lista miesza krótkie angielskie słowa z sylabami, cyframi i
pojedynczymi znakami — właśnie dlatego, że znalezienie 7776 dobrych słów jest
trudniejsze, niż się wydaje.
Ważna nie jest lista. Ważna jest kostka.
Dlaczego 12,9 bita to naprawdę 12,9 bita
Tu jest ta część, której prawie nikt nie rozumie, i jedyna, która ma znaczenie.
Entropia jednego słowa Diceware to log₂(7776) = 12,9 bita. To arytmetyka, nie bezpieczeństwo: jest 7776 wyników i każdy ma dokładnie takie samo prawdopodobieństwo.
Porównaj to z tym, co się dzieje, gdy wybierasz ty. Jeśli poproszę cię o słowo ze słownika liczącego 7776 słów, rachunek wygląda tak samo — też jest 7776 możliwości — ale taki nie jest, bo ty nie wybierasz ich z tym samym prawdopodobieństwem. Wybierzesz słowa pospolite, słowa, które lubisz, słowa, które widziałeś dzisiaj. Ten słownik ma 12,9 bita na papierze i dużo mniej w twojej głowie, a atakujący sortuje swoją listę według częstości i sprawdza najpierw to, co ludzie wybierają. Entropia to nie liczba możliwości: to liczba możliwości po odjęciu tego, co atakujący wie o twoich upodobaniach.
Kostki nie mają upodobań. Nie mają też pamięci: kostka nie wie, że w poprzednim
rzucie wypadło las, więc nie unika powtórzeń, nie szuka urozmaicenia i nie
wstydzi się, gdy wypadną dwa słowa zaczynające się tak samo. Dlatego 12,9 bita
Diceware to uczciwe 12,9 bita, a nie optymistyczna liczba z ulotki.
I dlatego rachunki wychodzą na plus. Każde słowo dokłada swoje:
- Pięć słów: około 64 bitów.
- Sześć słów: około 77 bitów.
- Siedem słów: około 90 bitów.
To czyste dodawanie, nie magiczne mnożenie, bo każdy rzut jest niezależny od pozostałych. Reinhold zaleca, by nie schodzić poniżej pięciu słów, a przy tym, co naprawdę ważne, używać sześciu lub więcej. Efekt widać w generatorze: dodanie słowa zawsze dokłada tyle samo, a to „zawsze” jest całym wynalazkiem.
Sekretem nie jest lista
Zarzut nasuwa się sam: skoro lista jest publiczna, to czy nie jest łatwiej to złamać?
Nie, i warto powiedzieć to powoli. Te 12,9 bita już zakłada, że atakujący ma listę. Zakłada też, że wie, iż używasz Diceware, że wie, ile słów ma twoja fraza, i że zna kolejność, w jakiej je wpisujesz. To wszystko jest już odjęte. Jedyne, czego nie wie, to co wypadło na twoich kostkach — i właśnie to liczysz, gdy mówisz „77 bitów”.
To odwrotność tego, co robimy z P@ssw0rd, gdzie cała nadzieja opiera się na
tym, że nikomu nie przyjdzie do głowy zamienić a na @. Przyjdzie. To jedna z
pierwszych reguł, jakie stosuje dowolne narzędzie do ataku słownikowego. Jeśli
masz pokusę, sprawdź to w narzędziu i zobacz, ile wytrzyma.
EFF i listy alternatywne
W 2016 roku Electronic Frontier Foundation opublikowała własne listy słów do fraz układanych kostkami. Lista długa zachowuje 7776 pozycji — te same pięć kostek, te same 12,9 bita — ale zmienia zawartość: precz z dziwnymi sylabami i znakami, w zamian zwykłe słowa, łatwe do wpisania i łatwe do odróżnienia od siebie. Opublikowali też listy krótkie, po 1296 słów (6⁴, cztery kostki, 10,3 bita na słowo): jedną ze słowami krótszymi i łatwiejszymi do zapamiętania, drugą pomyślaną tak, by każde słowo odróżniało się od pozostałych pierwszymi literami i dało się je autouzupełnić. W zamian każdy rzut jest wart mniej i trzeba rzucać częściej.
Elegancja tej historii polega na tym, że arytmetyka nie zmienia się od niczyjego gustu. Rządzi liczba pozycji. Możesz zrobić własną listę po kaszubsku, po śląsku albo po klingońsku: dopóki ma 7776 różnych pozycji i wybierasz kostkami, każde słowo jest warte 12,9 bita. Zmieniając listę, decydujesz wyłącznie o tym, jak przyjemny jest dla ciebie wynik, a nie o tym, jak jest bezpieczny.
Trzy sposoby, żeby to zepsuć
Diceware zawodzi na trzy sposoby i wszystkie trzy to ten sam błąd: człowiek znowu wtyka rękę.
- Rzucać ponownie, bo „to słowo mi się nie podoba”. Jeśli odrzucasz wyniki, to nie używasz już kostek: używasz własnego widzimisię, a kostka jest rekwizytem. Co wypadło, to wypadło.
- Przestawiać słowa, żeby brzmiały jak zdanie. Kolejność też jest częścią rzutu.
- „Ulepszać” frazę wykrzyknikiem na końcu i wielką literą na początku. To nic
nie dodaje wobec atakującego, który wie, że ludzie stawiają
!na końcu i wielką literę na początku. Jeśli musisz spełnić głupią politykę haseł, zrób to, ale nie wmawiaj sobie, że zyskałeś bezpieczeństwo: zyskałeś je, rzucając jeszcze raz.
I ostrzeżenie, które dawał już Reinhold: zwykłe kostki w zupełności wystarczą — kasynowe są dokładniejsze, ale nie są potrzebne — warto rzucać na gładkiej powierzchni, a wynik zapisuje się taki, jaki wypadł.
Podsumowanie
Fraza z sześciu słów wyrzuconych kostkami jest dłuższa do wpisania niż
P@ssw0rd, łatwiejsza do zapamiętania niż Tr0ub4dor&3 i o wiele rzędów
wielkości droższa do złamania niż obie. Nie dlatego, że jest bardziej wymyślna —
nie jest, to sześć zwyczajnych słów — tylko dlatego, że jest jedyną częścią
twojego hasła, o której nie zdecydowałeś ty.
Na tym polega cały dowcip Diceware: najlepsze hasło, jakie możesz mieć, to takie, w którym twoja opinia nie bierze udziału.
Źródła: Arnold G. Reinhold, „The Diceware Passphrase Home Page” i jego lista 7776 słów (1995) · Electronic Frontier Foundation, listy słów do fraz hasłowych układanych kostkami (2016) · arytmetykę można sprawdzić: 6⁵ = 7776 i log₂(7776) ≈ 12,92 bita na słowo.