Съдържание:

Arduino TOTP генератор: 3 стъпки
Arduino TOTP генератор: 3 стъпки

Видео: Arduino TOTP генератор: 3 стъпки

Видео: Arduino TOTP генератор: 3 стъпки
Видео: TOTP Arduino authenticator with USB keyboard emulation 2024, Ноември
Anonim
Arduino TOTP генератор
Arduino TOTP генератор
Arduino TOTP генератор
Arduino TOTP генератор
Arduino TOTP генератор
Arduino TOTP генератор

Вдъхновение

Имайки приятел с интерес към криптографията и сигурността, исках да създам перфектния подарък за рождения ден.

*Това е проект, който направих като подарък за рожден ден и е създаден в кратки срокове (извинете за разхвърляната изработка)

ЗАБЕЛЕЖКА: Поколението TOTP, което се използва в този проект, генерира и използва 6-цифрени кодове, но поради сегашния ми наличен хардуер, избрах да отрежа последните 2 цифри и да покажа и използвам 4, вероятно (но не значително), намалявайки сигурност.

Главна информация

Този проект генерира нов код на всеки 30 секунди с помощта на предварително споделен ключ и текущото време (което се следи за използване на модула за часовник в реално време) и го показва на дисплея при натискане на бутона. Най-често срещаният случай на използване би бил двуфакторна проверка, базирана на еднократна парола за време (TOTP) и еднократна парола, базирана на HMAC (HOTP) за удостоверяване.

TOTP е алгоритъм, който изчислява еднократна парола от споделен секретен ключ и текущото време. HTOP е алгоритъм, който използва алгоритъма HMAC за генериране на еднократна парола.

Компании като Google, Microsoft и Steam вече използват технологията TOTP за тяхното двуфакторно удостоверяване

Интересни връзки

Статия, обясняваща как Google използва тази технология за удостоверяване на потребителите-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript внедряване на HOTP и TOTP, които могат да се използват при създаване на софтуер, използващ този проект -

Криптографска библиотека за Arduino, използвана в този проект -

TOTP Paper -

Ниво на експертиза

Тази инструкция е за ентусиасти, които се интересуват от сигурността и може да искат да внедрят хубав хардуерен компонент за генерирането на техния TOTP. Тази инструкция е написана за аудитория, която вече разбира основите на тълкуването на електронни диаграми и елементарното програмиране, но ако планирате просто да следвате точно тази инструкция, не се притеснявайте, ако нямате опит, и не се колебайте да задавате въпроси долу в коментари! Освен това, проектът може да бъде интересен и за по -опитни производители, тъй като крайният продукт не само е хубаво парче, което трябва да има наоколо (според мен), но има толкова голям потенциал за разширяване и нови функции без много проблеми.

Консумативи

Материали:

  1. 1x Arduino Nano (Amazon)
  2. 1x модул DS3231 AT24C32 Часовник в реално време (RTC) (Amazon)
  3. 1x SH5461AS Общ катод 4-цифрен 7-сегмент (Amazon)
  4. 1x бутон (Amazon)
  5. 1x 10k резистор (Amazon)
  6. ОПЦИЯ 1x 5x7cm PCB (Amazon)
  7. ОПЦИЯ Тел за запояване към печатни платки
  8. ОПЦИЯ 1x План за тестване (Amazon)

Стъпка 1: Монтаж и тестване

Сглобяване и тестване
Сглобяване и тестване
Сглобяване и тестване
Сглобяване и тестване
Сглобяване и тестване
Сглобяване и тестване

Сглобете всички компоненти на макета и ги свържете съгласно приложената схема на свързване (файлът Fritzing е тук).

Уверете се, че имате инсталирана Arduino IDE (може да бъде намерена онлайн, ако не го направите) и инсталирайте следните библиотеки:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Изтеглете приложената скица (можете да намерите и тук: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) и я отворете с помощта на Arduino IDE. Отворете тази връзка (https://www.lucadentella.it/OTP/) и въведете всяко име в полето за име на акаунт и персонализиран секретен ключ (дълъг 10 знака) в следното поле, като се уверите, че сте запазили и двете стойности на сигурно място за архивиране. Копирайте съдържанието на полето „Arduino HEX array:“и преминете обратно към редактора на Arduino, като замените масива на ред 25 (hmacKey) с този, който сте копирали от сайта.

След като проверите двойно всяка кабелна връзка, уверете се, че RTC модулът има монета в нея и свържете Arduino към вашия лаптоп с помощта на USB мини кабел и качете приложената скица.

След качване, когато бутонът е натиснат, на екрана трябва да се покаже номер. Ако изтеглите приложението Google Authenticator на смартфон и се върнете към сайта, използван за генериране на HEX масива, сканиране на QR кода или въвеждане на „Google Authenticator code“в приложението, трябва да видите номер, показан в приложението. Ако всичко работи правилно, когато натиснете бутона, 4 -те показани цифри трябва да съвпадат с първите 4 от текущия код, показан в приложението за смартфон. Ако това не е така, уверете се, че компютърът, който се използва за качване на кода на Arduino, е настроен на UTC време и опитайте отново.

Стъпка 2: Прехвърляне към печатни платки

Прехвърляне на печатни платки
Прехвърляне на печатни платки
Прехвърляне на печатни платки
Прехвърляне на печатни платки

След като се уверите, че всичко е в работно състояние, можете да прехвърлите компонентите на печатната платка и да запоите всичко заедно, както изглеждате подходящи. В допълнение към файла Fritzing (приложен тук) съм приложил диаграма на печатна платка. Обърнете внимание, че поставих всички компоненти в горната част на дъската за естетика, но също така могат да бъдат монтирани отдолу и след това затворени в някакъв вид корпус, за да стане по -чист. Нарязах и горещо залепени пръчици от плодове, оцветени с Sharpie отстрани на печатната платка, за да създам импровизирана кутия за устройството. Друга незадължителна стъпка е да прикрепите 9-волтова скоба за батерията към VIN и GND щифтовете на Arduino, което я прави батерийна.

Стъпка 3: Готово

Готово!
Готово!
Готово!
Готово!
Готово!
Готово!

Ето как се получи моят завършен генератор, ако сте го последвали и сами сте го направили, споделете го по -долу!

Не забравяйте да гласувате с инструкциите ми за конкурса STEM, ако сметнете за добре, и оставете коментар/всички въпроси, които може да имате по -долу!

Препоръчано: