Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Хранилище паролей в USB-концентраторе

    Хранилище паролей в USB-концентраторе




    Представленная в этой статье работа мастера-самодельщика с ником Ahmed_Ragab,является хранилищем паролей. Устройство работает на базе платы Arduino Nano, которая спрятана в USB-концентраторе. USB-концентратор не вызывает подозрений и используется ежедневно на рабочем столе.

    Так же в устройство будет добавлен герконовый переключатель для включения Arduino. Для его активации нужен магнит и это дополнительный этап функции безопасности.

    Пароли хранятся в памяти (EEPROM) Arduino, поэтому внешнее запоминающее устройство не требуется. Пароли зашифрованы, поэтому, если даже кому-то удалось извлечь эти данные из EEPROM Arduino, никто, кроме пользователя, не сможет расшифровать их.
    Доступ к этому хранилищу паролей можно получить с помощью программы последовательного терминала или последовательного монитора Arduino IDE. Можно даже получить доступ к нему с помощью мобильного телефона.

    Пользователь может добавить / удалить / изменить 10 паролей, используя этот интерфейс последовательного терминала.

    Инструменты и материалы:
    -Arduino Nano (без штыревых контактов);
    -Геркон;
    -USB-концентратор (желательно с переключателями Вкл / Выкл);
    -Термоусадочная трубка;
    -Паяльник;
    -Припой;
    -Клеевой пистолет;
    -Провода;
    -Нож;
    -Отвертка;



    Шаг первый: код
    На этом шаге загружается необходимая библиотека, компилируется и загружается код.
    Чтобы загрузить код, необходимо убедиться, что память Arduino Nano EEPROM полностью очищена (все байты 0xFF).
    Память можно очистить, загрузив код ниже

    Чтобы просто прочитать содержимое EEPROM без его очистки, нужно прокомментировать строку номер 26 (//EEPROM.write(j, 0xFF);)
    Если нужно прочитать содержимое EEPROM в формате ASCII вместо шестнадцатеричного формата, меняем строку 25 на ( sprintf(EEPROM_DATA, "%c ",EEPROM.read(j)); //display the actual read data ).

    После загрузки основного скетча Arduino обязательно нужно изменить код:
    1 - массив key [] в строке 25 на пользовательский 16-байтовый ключ. Этот ключ используется для шифрования и дешифрования данных пользовательского пароля.
    2 - массив devicePassword [] в строке 26 на пользовательский пароль. Этот пароль используется для открытия хранилища паролей и начала его использования через последовательный терминал.
    Основной код можно скачать ниже.
    USB_Hub_Password_Vault.ino

    Для работы устройства необходима библиотека AESLib.
    Библиотека AESLib от DavyLandman очень удобна и проста в использовании для шифрования текста пароля в другой зашифрованный формат.
    После загрузки файлов нужно распаковать их в ту же папку, которая содержит файл «USB_Hub_Password_Vault.ino».
    После изменения ключа шифрования, пароля устройства и объединения всех файлов в одной папке нужно скомпилировать скетч и загрузить его на свой Arduino.

    Шаг второй: сборка устройства
    После выбора модели USB-концентратора определяем, на каком USB-разъеме будет "висеть" Ардуино. В данном случае это второй порт. После вскрытия корпуса нужно разместить внутри плату Ардуино и проверить, как помещается плата в корпусе.






    У данного хаба каждый порт подсвечивается светодиодом. Можно его оставить, но мастер его удаляет и понятно, что порт не рабочий.

    Дорожки D + и D-, соединяющие интегральную схему концентратора USB и порт USB, необходимо разорвать.
    К этим разорванным дорожкам, со стороны USB-порта, нужно припаять провода.


    Хранилище паролей в USB-концентраторе

    Дальше нужно отпаять разъем USB Mini от платы Arduino Nano. Лучше всего эту операцию проводить с помощью термофен.
    Припаиваем заземляющий провод к контакту Arduino GND и припаиваем его второй конец к любой точке заземления на USB-концентраторе. Припаиваем провода USB-порта к контактным площадкам USB на плате Arduino.
    Изолируем плату Arduino Nano с помощью изоленты (кроме 5В).




    Изолируем выводы герконового переключателя (при сгибании его контактов нужно быть осторожным, стекло переключателя может легко разбиться).
    Подключаем один контакт геркона к 5В Ардуино, второй, к 5В USB-порта.


    Полностью изолируем Arduino Nano, с помощью изоленты.
    Проверяем, все ли помещается в корпус USB-концентратора. Если все подходит, собираем корпус.





    Схема подключения прилагается.
    MW7211 USB2.0_FS_HUB_Controller_datasheet_Rev1.2.pdf

    Шаг третий: как использовать хранилище
    Подключаем USB-концентратор к компьютеру. Включаем выбранный переключатель порта USB. Магнитом включаем герконовый переключатель.
    Теперь Arduino должен включиться.
    Открываем Arduino IDE и выбираем com-порт Arduino, затем открываем последовательный монитор.
    Когда откроется монитор последовательного порта, выбираем скорость передачи 115200 бод и выбираем опцию Newline рядом с ним.
    Хранилище паролей готово.

    Инструкции для телефона Android:
    Телефон должен поддерживать соединение USB OTG. Загружаем приложение последовательного USB-терминала (мастер использует USB Serial Console ).
    Подключаем USB-концентратор к телефону. После включения Arduino с помощью геркона и магнита новый com-порт должен быть распознан телефоном, и телефон запросит подтверждение сопряжения. Подтверждаем подключение.
    Дальше кликаем значок шестеренки в правом верхнем углу -> Соединение -> В меню выбираем вариант кода перевода строки.
    Возвращаемся к последовательному монитору, и теперь все готово для использования хранилища на смартфоне.

    Инструкция по использованию хранилища паролей:
    Arduino не будет реагировать на ввод, если не введен правильный пароль устройства. При введении правильного пароля на мониторе отразится "Correct Password".
    Далее можно
    -ввести L, чтобы вывести список сохраненных имен паролей.
    -ввести D, чтобы удалить пароль (устройство попросит пользователя ввести имя пароля).
    -ввести C, чтобы изменить пароль (устройство попросит ввести имя пароля и новый пароль).
    -ввести A, чтобы добавить новый пароль (устройство попросит ввести имя пароля (макс. 19 символов), данные для входа в систему / имя пользователя (макс. 29 символов) и новый пароль (макс. 49 символов))
    -ввести R, чтобы запросить данные пароля (устройство попросит ввести имя пароля).
    -ввести M, чтобы вернуться в главное меню.
    -ввести F чтобы вернуться на страницу запроса пароля устройства и закрыть устройство.
    -любой другой нераспознанный символ заблокирует устройство и попросит снова ввести пароль устройства.




    Шаг четвертый: программное обеспечение
    Этот шаг просто добавляет некоторую дополнительную информацию, для понимания и редактирования кода.
    1. ATmgea328P, используемый в Arduino Nano, имеет 1024 байта памяти EEPROM. Мастер решил разделить эти 1024 байта на 10 секций, каждая из которых хранит данные одного пароля.
    2 - Данные пароля разделены на 5 разделов:
    a - (20 байт) для пароля сайта или заголовка (не более 19 символов) (пример: Facebook.com)
    b - (30 байтов) для пароля или имени пользователя (не более 29 символов) (пример: LOGINMAIL@yahoo.com)
    c - (50 байт) для фактического пароля (не более 49 символов) (пример: 123456789 @ AAbb)
    d - (1 байт) для байта состояния пароля
    e - (9 байт) оставлено пустым для обновлений функций
    3. - Когда пароли сохраняются в EEPROM, они не сохраняются как есть. Это сделано для того, что бы при несанкционированном доступе к хранилищу нельзя было извлечь из него пароли.

    Пароли зашифрованы с использованием алгоритма шифрования AES128.
    4 - Для шифрования AES128 требуется уникальный ключ для шифрования и дешифрования входных данных, этот ключ представляет собой 16 байт, который изменялся на предыдущих шагах.
    5 - Данные сохраняются в EEPROM после шифрования и дешифруются, когда пользователь запрашивает их.
    6 - Код использует (символ 0x00) для определения конца сохраненных строковых данных в EEPROM и из него.
    7 - , потому что Код использует символ ('\ n') для определения конца строки ввода пользователя, поэтому не забудьте установить опцию Newline в последовательном мониторе.
    8 - Основной скетч Arduino хорошо прокомментирован, чтобы его было легче понять и изменить.
    Все готово, теперь можно быть уверенным в надежном сохранении паролей.

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Подборки: Геркон USB

    Домашняя гидропоника под управлением Ардуино

    Передатчик RC с использованием радиомодуля NRF24L01 и Arduino

    0
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

    Добавить комментарий

    6 комментариев
    Eig

    Открываем Arduino IDE и выбираем com-порт Arduino, затем открываем последовательный монитор.
    Когда откроется монитор последовательного порта, выбираем скорость передачи 115200 бод и выбираем опцию Newline рядом с ним.


    На мой взгляд это нерационально. Хранилище паролей нужно делать на ATmega32u4 (Arduino pro micro). Они используются в качестве USB-клавиатур. При нажатии на клавишу физической клавиатуры компьютера будет происходить захват нажатия клавиатуры (capture keyboard press). Клавиша будет определяться Arduino, а соответствующий этой клавише пароль будет забираться из памяти Arduino и подставляться непосредственно в место, где в данный момент находится курсор.

    Идеальное решение – Pro Micro USB. Ее можно спрятать в корпус флэшки.

    Korolev
    Иван_Похмельев,
    На бумажке надёжнее. Естественно, надо писать не тупо напрямую, а в зашифрованном виде.

    Один мой товарищ, коллега по работе, записывал в тетрадочку. Ребёнку понадобилась тетрадка, а тут только одна страничка "испорчена"! Ну и все "кошельки", включия и с биткоинами, пропали.  yes 

    Иван_Похмельев

    Криптостойкость - это чудесно. Вот только где гарантия, что в программе нет бэкдора? Или откажет генератор в самый неподходящий момент.

    На бумажке надёжнее. Естественно, надо писать не тупо напрямую, а в зашифрованном виде.

    Korolev
    pogranec,
    А зачем таскать? Насколько я понимаю, это версия не мобильная, а стационарная

    Сегодня мы выходим в инет не только с единственного стационарного ПК!  smile 

    А так, кто мешает записать те же пароли на бумажку?

    А нафига тогда создавалась эта хрень? Тем более, что существует множество софтовых генераторов криптостойких паролей. причём в мобильных версиях, для флешек. Простота подключения, генерации (до 20 символов, включая арабские, китайские, математические и пр.), сохранения, систематизации и управления.  scratch 

    pogranec Автор
    Цитата: Korolev

    Подключаем USB-концентратор к компьютеру

    Я правильно понимаю, что я должен везде и всюду таскать эту хрень всегда с собой, и не дай Бог её забыть, сломать, потерять?  scratch 


    А зачем таскать? Насколько я понимаю, это версия не мобильная, а стационарная. А так, кто мешает записать те же пароли на бумажку?

    Korolev

    Подключаем USB-концентратор к компьютеру

    Я правильно понимаю, что я должен везде и всюду таскать эту хрень всегда с собой, и не дай Бог её забыть, сломать, потерять?  scratch 

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии