
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04



Вдохновение
Имея друга, интересующегося криптографией и безопасностью, я хотел сделать идеальный подарок на день рождения.
* Это проект, который я сделал в качестве подарка на день рождения и был создан в сжатые сроки (простите за грязную работу)
ПРИМЕЧАНИЕ: Генерация TOTP, которая используется в этом проекте, генерирует и использует 6-значные коды, но из-за моего текущего оборудования я решил сократить последние 2 цифры и отобразить и использовать 4, возможно (но не сильно) уменьшив безопасность.
Общая информация
Этот проект генерирует новый код каждые 30 секунд с использованием предварительно предоставленного ключа и текущего времени (которое отслеживается с помощью модуля часов реального времени) и отображает его на дисплее при нажатии кнопки. Наиболее распространенным вариантом использования будет двухфакторная проверка на основе одноразового пароля на основе времени (TOTP) и одноразового пароля на основе HMAC (HOTP) для аутентификации.
TOTP - это алгоритм, который вычисляет одноразовый пароль из общего секретного ключа и текущего времени. HTOP - это алгоритм, который использует алгоритм HMAC для генерации одноразового пароля.
Такие компании, как Google, Microsoft и Steam, уже используют технологию TOTP для своей двухфакторной аутентификации.
Интересные ссылки
Статья, объясняющая, как Google использует эту технологию для аутентификации пользователей -
Реализация HOTP и TOTP на JavaScript, которая может использоваться при создании программного обеспечения с использованием этого проекта -
Криптографическая библиотека для Arduino, используемая в этом проекте -
Документ TOTP -
Уровень экспертизы
Эта инструкция предназначена для энтузиастов, которые заинтересованы в безопасности и могут захотеть реализовать хороший аппаратный компонент для поколения своих TOTP. Это руководство написано для аудитории, которая уже понимает основы интерпретации электронных схем и элементарного программирования, но если вы планируете просто точно следовать этому руководству, не волнуйтесь, если у вас нет опыта, и не стесняйтесь задавать вопросы в Комментарии! Кроме того, проект может быть интересен и более опытным разработчикам, поскольку конечный продукт - это не только приятный предмет (на мой взгляд), но и большой потенциал для расширения и добавления новых функций без особых хлопот.
Запасы
Материалы:
- 1x Arduino Nano (Amazon)
- 1x модуль часов реального времени (RTC) DS3231 AT24C32 (Amazon)
- 1x SH5461AS с общим катодом, 4 цифры, 7 сегментов (Amazon)
- 1x кнопка (Amazon)
- 1x резистор 10 кОм (Amazon)
- ДОПОЛНИТЕЛЬНО 1x 5x7 см PCB (Amazon)
- ДОПОЛНИТЕЛЬНО Провод для пайки на печатную плату
- ДОПОЛНИТЕЛЬНО 1x макет для тестирования (Amazon)
Шаг 1. Сборка и тестирование



Соберите все компоненты на макетной плате и подключите их согласно прилагаемой электрической схеме (файл Fritzing находится здесь).
Убедитесь, что у вас установлена IDE Arduino (если ее нет, ее можно найти в Интернете), и установите следующие библиотеки:
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» в приложение, вы должны увидеть номер, указанный в приложении. Если все работает правильно, при нажатии кнопки отображаемые 4 цифры должны соответствовать первым 4 из текущего кода, отображаемого в приложении для смартфона. Если это не так, убедитесь, что на компьютере, который используется для загрузки кода Arduino, установлено время UTC, и повторите попытку.
Шаг 2: переход на печатную плату


Убедившись, что все в рабочем состоянии, вы можете перенести компоненты на печатную плату и спаять все вместе, как вам кажется. Я приложил схему печатной платы в дополнение к файлу Fritzing (доступному здесь). Обратите внимание, что я разместил все компоненты наверху платы для эстетики, но их также можно установить под ней, а затем заключить в какой-то корпус, чтобы сделать его более чистым. Я вырезал и приклеил горячим клеем палочки для мороженого, окрашенные Sharpie, по бокам печатной платы, чтобы создать импровизированную коробку для устройства. Еще один необязательный шаг - прикрепить 9-вольтовый зажим аккумулятора к контактам VIN и GND Arduino, чтобы он работал от батареи.
Шаг 3: Готово



Вот как получился мой законченный генератор, если вы последовали его примеру и сделали его самостоятельно, поделитесь им ниже!
Не забудьте проголосовать за мою Инструкцию для конкурса STEM, если считаете нужным, и оставьте комментарий / любые вопросы, которые могут у вас возникнуть ниже!
Рекомендуемые:
Esp8266 тактовый генератор и генератор импульсов: 3 шага

Генератор тактовых импульсов и импульсов Esp8266: Это руководство предназначено для простого тестового оборудования; тактовый генератор и генератор импульсов. Он использует аппаратный интерфейс i2S на esp8266 для генерации тестовых тактовых импульсов или последовательности импульсов. Это упрощает сборку, так как не требуется специального оборудования
Генератор паразитов: 4 шага

Пульсатор от паразитов: импульсный прибор часто используется в альтернативной медицине. Его основная цель - укрепить иммунную систему пользователей. Он убивает вероятные бактерии, вирусы, грибки, токсины и т. Д., Подавая через тело очень небольшие токи с определенным импульсом и частотой
Генератор сигналов AD9833: 3 шага

Генератор сигналов AD9833: Генератор сигналов - очень полезная часть испытательного оборудования. Здесь используется модуль AD9833 и Arduino Nano - это все, даже не печатная плата. При желании вы можете добавить OLED-дисплей. AD9833 может генерировать синусоидальные, треугольные и прямоугольные волны от 0,1 Гц до 1
Генератор музыки на основе погоды (генератор MIDI на основе ESP8266): 4 шага (с изображениями)

Музыкальный генератор на основе погоды (Midi-генератор на основе ESP8266): Привет, сегодня я объясню, как сделать свой собственный небольшой музыкальный генератор на основе погоды. Он основан на ESP8266, который похож на Arduino, и он реагирует на температуру, дождь. и яркость света. Не ожидайте, что он сделает целые песни или аккордовые программы
Генератор - генератор постоянного тока с использованием геркона: 3 шага

Генератор - генератор постоянного тока, использующий геркон: простой генератор постоянного тока Генератор постоянного тока (DC) - это электрическая машина, которая преобразует механическую энергию в электричество постоянного тока. Важно: генератор постоянного тока (DC) может использоваться в качестве двигателя постоянного тока без какой-либо конструкции. изменения