Autor projektu otrzymał stary sejf, którego elektronika uległa uszkodzeniu na skutek uszkodzenia baterii. Po wyczyszczeniu rozlanego elektrolitu sejf ponownie działał. Wewnątrz znajduje się przycisk do resetowania kodu PIN. Jak opisuje autor, pomysł wykonania własnego projektu powstał właśnie w trakcie testowania urządzenia. „Kiedy miałem umieścić sejf gdzieś do praktycznego użytku, zacząłem się zastanawiać, jaki byłby dobry kod PIN do użycia, taki, który będę pamiętał przez lata i który nie jest jednym z typowych kodów PIN, których używamy w domu, żeby moje dzieci nie były w stanie go rozgryźć. To sprawiło, że pomyślałem o użyciu haseł jednorazowych, bazujących na algorytmie uwierzytelniającym” pisze autor.
W poniższym artykule przyjrzymy się, w jaki sposób autorowi udało zintegrować mikrokontroler, który można oprogramować w środowisku Arduino, z elektroniką sejfu, a także algorytmowi uwierzytelniania, który używa jednorazowych haseł, generowanych na podstawie czasu systemowego.
Zasada działania
System używa standardu TOTP (Time-based One-Time Passwords), czyli haseł jednorazowych generowanych na podstawie aktualnego czasu. Jest to dosyć szeroko rozpowszechniony mechanizm generowania jednorazowych haseł, stosowany często w systemach uwierzytelniania dwuskładnikowego.
Mówiąc w dużym skrócie – jest to metoda obliczania 6-cyfrowego kodu dostępu z wcześniej określonym kluczem na podstawie bieżącej daty i godziny. Oznacza to, że tak długo, jak sejf może śledzić aktualny czas, będzie można stosować specjalną aplikację, która co 30 sekund generuje nowe hasło pozwalające na otworzenie sejfu.
Algorytm TOTP jest zgodny z otwartym standardem udokumentowanym w RFC 6238. Dane wejściowe obejmują wspólny tajny klucz i czas systemowy. Diagram na rysunku 1 pokazuje, w jaki sposób obie strony mogą osobno obliczyć hasło bez połączenia z Internetem.