Na filmach tak elegancko to wygląda, wchodzi człowiek ubrany w skórę, podłącza kilka kabelków do klawiatury i drzwi otwarte. Samo złamanie kodu w teorii nie jest specjalnie trudne. Więc może jest część prawdy w szybkim otwieraniu drzwi?
Klawiatura przeglądana sprzętowo to raczej przeżytek, ale można fajnie pokazać pewne rzeczy. Liczniki cyfrowe (tu: mod4) pracują wpisując wszystkie możliwe kombinacje na wejścia adresowe komutatorów (Demultiplekser, Multiplekser), przeglądających kolejne przyciski (przecięcia wyjść/wejść). Przyciski na przecięciu wyjść demultipleksera i wejść multipleksera wduszone zwierają je ze sobą, multiplekser ustawia na wyjściu poziom niski, do rejestru wpisywana jest wartość liczników. W sporym skrócie. W każdym razie potencjalny ninja mógłby zrobić trick polegający na podpięciu się pod wejścia multipleksera, i po kolei zwierać je do masy (dla każdej kombinacji liczników). Dosyć proste zadanie.
A jak z czasem? Weźmy sobie standardowe komutatory scalone z rodziny 74xx. Na chybił trafił wybrałem sobie: demultiplekser 74LS139, czas propagacji mniej-więcej 22 ns. Multiplekser: 74LS153, czas propagacji ok. 24 ns. Układ ma do przejrzenia 16 stanów klawiatury, co oznacza że jedna litera/cyfra będzie szukana przez ok. 24 ns * 16 = 384 ns. Zakładając hasło czteroznakowe, liczba haseł do sprawdzenia wynosi 4⁴ = 256. Całkowity czas sprawdzenia wszystkich kombinacji więc wynosi 384 ns * 256 = 98 304 ns = 98 us (98 * 10^-6, ok. 1 ms). Jest to całkiem niezły wynik. Co prawda kilka rzeczy zostało pominiętych, między innymi czas potrzebny na wpis do rejestru i czas porównania uzyskanej czterocyfrowej liczby ale będą to również wielkości rzędu milisekund. Ninja osiągnął swój cel w bardzo krótkim czasie. Oczywiście pod warunkiem, że jest w stanie dobrze podpiąć kabelki, układ sprawdzający po podaniu czterech cyfr nie odczekuje kilku sekund etc etc.
I tu nadchodzi chory pomysł, żeby zamiast bawić się w podłączanie kabelków zrobić to mechanicznie. Określona liczba “wypustek” umieszczonych na płytce, wyklikująca wszystkie możliwe kombinacje n-cyfrowe. Wypustki ruchome, dające się dopasować do klawiatury. Załóżmy sobie czas reakcji “wypustki” na poziomie 0.1 s (pi razy drzwi). Czas na poziomie układu elektronicznego staje się pomijalny, więc: 256 * 0.1 s = 25.6 s. Pół minuty pozwala na bruteforce klawiatury o szesnastu znakach. Wygląda, że jest to możliwe, panie Bond. Mechaniczny łamacz haseł może zasili kiedyś moją kolekcję dziwnych rzeczy których nigdy nie wykorzystam. Jak mi się zachce go skonstruować.
(Jest to gościnny post kolegi Widmo.)