Spisu treści:

Generator Arduino TOTP: 3 kroki
Generator Arduino TOTP: 3 kroki

Wideo: Generator Arduino TOTP: 3 kroki

Wideo: Generator Arduino TOTP: 3 kroki
Wideo: The HARDEST part about programming 🤦‍♂️ #code #programming #technology #tech #software #developer 2024, Listopad
Anonim
Generator Arduino TOTP
Generator Arduino TOTP
Generator Arduino TOTP
Generator Arduino TOTP
Generator Arduino TOTP
Generator Arduino TOTP

Inspiracja

Mając przyjaciela, który interesuje się kryptografią i bezpieczeństwem, chciałem stworzyć idealny prezent urodzinowy.

*To jest projekt, który wykonałem jako prezent urodzinowy i został stworzony w ograniczonym czasie (wybacz niechlujne wykonanie)

UWAGA: Generacja TOTP, która jest używana w tym projekcie, generuje i wykorzystuje 6-cyfrowe kody, ale ze względu na mój obecny sprzęt, zdecydowałem się wyciąć końcowe 2 cyfry i wyświetlić i wykorzystać 4, prawdopodobnie (ale nie znacznie) zmniejszając bezpieczeństwo.

Informacje ogólne

Ten projekt generuje nowy kod co 30 sekund za pomocą klucza wstępnego i aktualnego czasu (który jest śledzony przy użyciu modułu zegara czasu rzeczywistego) i wyświetla go na wyświetlaczu po naciśnięciu przycisku. Najczęstszym przypadkiem użycia byłaby weryfikacja dwuskładnikowa oparta na jednorazowym haśle czasowym (TOTP) i jednorazowym haśle opartym na HMAC (HOTP) do uwierzytelniania.

TOTP to algorytm, który oblicza jednorazowe hasło na podstawie wspólnego tajnego klucza i bieżącego czasu. HTOP to algorytm wykorzystujący algorytm HMAC do generowania hasła jednorazowego.

Firmy takie jak Google, Microsoft i Steam już używają technologii TOTP do uwierzytelniania dwuskładnikowego

Ciekawe linki

Artykuł wyjaśniający, w jaki sposób Google używa tej technologii do uwierzytelniania użytkowników -

Implementacja JavaScript HOTP i TOTP, którą można wykorzystać podczas tworzenia oprogramowania z wykorzystaniem tego projektu -

Biblioteka kryptograficzna dla Arduino wykorzystana w tym projekcie -

TOTP Paper -

Poziom wiedzy

Ten Instructable jest przeznaczony dla entuzjastów, którzy są zainteresowani bezpieczeństwem i mogą chcieć zaimplementować fajny komponent sprzętowy do generowania swojego TOTP. Ta instrukcja jest napisana dla odbiorców, którzy już rozumieją podstawy interpretacji schematów elektronicznych i podstawowego programowania, ale jeśli planujesz po prostu dokładnie postępować zgodnie z tą instrukcją, nie martw się, jeśli nie masz doświadczenia, i możesz zadawać pytania w uwagi! Co więcej, projekt może być interesujący również dla bardziej doświadczonych twórców, ponieważ produkt końcowy jest nie tylko fajnym elementem (moim zdaniem), ale ma tak duży potencjał do rozbudowy i nowych funkcji bez większych problemów.

Kieszonkowe dzieci

Materiały:

  1. 1x Arduino Nano (Amazonka)
  2. 1x DS3231 AT24C32 Moduł zegara czasu rzeczywistego (RTC) (Amazon)
  3. 1x SH5461AS Wspólna katoda 4-cyfrowa 7-segmentowa (Amazonka)
  4. 1x Przycisk (Amazonka)
  5. 1x Rezystor 10k (Amazonka)
  6. OPCJONALNIE 1x 5x7cm PCB (Amazon)
  7. OPCJONALNIE Drut do lutowania do PCB
  8. OPCJONALNIE 1x Deska do krojenia chleba do testowania (Amazon)

Krok 1: Montaż i testowanie

Montaż i testowanie
Montaż i testowanie
Montaż i testowanie
Montaż i testowanie
Montaż i testowanie
Montaż i testowanie

Zmontuj wszystkie elementy na płytce stykowej i podłącz je zgodnie z załączonym schematem połączeń (plik Fritzing znajduje się tutaj).

Upewnij się, że masz zainstalowane Arduino IDE (można je znaleźć w Internecie, jeśli nie) i zainstaluj następujące biblioteki:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Pobierz załączony szkic (dostępny również tutaj: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) i otwórz go za pomocą Arduino IDE. Otwórz ten link (https://www.lucadentella.it/OTP/) i wprowadź dowolną nazwę w polu nazwy konta oraz niestandardowy tajny klucz (10 znaków) w następnym polu, pamiętając o zapisaniu obu tych wartości w bezpiecznym miejscu do tworzenia kopii zapasowych. Skopiuj zawartość pola „Arduino HEX array:” i przełącz się z powrotem do edytora Arduino, zastępując tablicę w wierszu 25 (hmacKey) tą skopiowaną ze strony.

Po dwukrotnym sprawdzeniu każdego połączenia przewodowego, upewnij się, że moduł RTC ma w sobie baterię monetową i podłącz Arduino do laptopa za pomocą minikabla USB i prześlij załączony szkic.

Po wgraniu, po naciśnięciu przycisku, na ekranie powinna pojawić się liczba. Jeśli pobierzesz aplikację Google Authenticator na smartfona i wrócisz do strony, na której wygenerowano tablicę HEX, skanując kod QR lub wpisując do aplikacji „kod Google Authenticator”, powinieneś zobaczyć numer widoczny w aplikacji. Jeśli wszystko działa poprawnie, po naciśnięciu przycisku wyświetlane 4 cyfry powinny pasować do pierwszych 4 bieżącego kodu wyświetlanego w aplikacji na smartfona. Jeśli tak nie jest, upewnij się, że komputer używany do przesyłania kodu Arduino jest ustawiony na czas UTC i spróbuj ponownie.

Krok 2: Przenoszenie na PCB

Przenoszenie na PCB
Przenoszenie na PCB
Przenoszenie na PCB
Przenoszenie na PCB

Po upewnieniu się, że wszystko jest w porządku, możesz przenieść komponenty na płytkę PCB i zlutować wszystko razem, jak Ci się wydaje. Do pliku Fritzing dołączyłem schemat PCB (dostępny tutaj). Zwróć uwagę, że dla estetyki umieściłem wszystkie elementy na górze płyty, ale można je również zamontować pod spodem, a następnie zamknąć w jakiejś obudowie, aby była czystsza. Wyciąłem i przykleiłem na gorąco patyczki do lodów pomalowanych Sharpie po bokach płytki drukowanej, aby stworzyć prowizoryczne pudełko na urządzenie. Kolejnym opcjonalnym krokiem jest podłączenie zacisku baterii 9 V do pinów VIN i GND Arduino, dzięki czemu jest on zasilany bateryjnie.

Krok 3: Zakończony

Skończone!
Skończone!
Skończone!
Skończone!
Skończone!
Skończone!

Tak wyglądał mój ukończony generator, jeśli śledziłeś go i sam go stworzyłeś, podziel się nim poniżej!

Jeśli uznasz to za stosowne, zagłosuj na mój Instructable w konkursie STEM i zostaw komentarz/wszelkie pytania, które możesz mieć poniżej!

Zalecana: