Следующая новость
Предыдущая новость

Творческая Iskra. Делаем аппаратный менеджер паролей своими руками

24.05.2018 13:57
Творческая Iskra. Делаем аппаратный менеджер паролей своими руками

Содержание статьи

  • Нет дыма без огня, или немного предыстории
  • Время пришло
  • Подготовка
  • Сборка прототипа и подключение
  • Как это должно работать?
  • Принцип работы
  • Пароли
  • Добавление новых аккаунтов
  • Программирование
  • А как же создать ключ?
  • Упаковка

Где хранить свои суперсекьюрные и регулярно обновляемые пароли от многочисленных интернет-ресурсов? В голове? Скорее всего, не поместятся. На бумажке? Не по-хакерски. Доверять облачному сервису, который спалит пароли если не сегодня, то завтра обязательно? Понадеяться на опенсорсный менеджер паролей? Вяло, товарищи! Скучно! Сегодня мы рассмотрим настоящий тру-хакерский, тру-гиковский, удобный и безопасный способ хранить пароли, создав свой аппаратный менеджер паролей! Он будет хранить в себе данные разных аккаунтов, логины и зашифрованные пароли, ключ от которых должен держаться отдельно и вводиться непосредственно перед использованием, и при этом устройство будет эмулировать USB-клавиатуру для вывода логина и пароля.

Нет дыма без огня, или немного предыстории

Идея родилась не на пустом месте. Незадолго до ее появления я решил заняться программированием микроконтроллеров. Но так как свободного времени, чтобы серьезно и глубоко посвятить себя этому, было недостаточно для полноценного освоения ни железного С++, ни железобетонного ассемблера, то, чуть не споткнувшись о продолжающую набирать популярность вселенную Arduino, я прямиком угодил в объятия загадочного мира «JavaScript для микроконтроллеров». «Теперь гаджеты программируют на JavaScript» — этот броский заголовок поймал меня на крючок! Разглядывая на сайте «Амперки» изображения красивой отладочной платы, похожей на Arduino Leonardo, но белой и именуемой Iskra JS (не путать с Iskra Neo, которая тоже Iskra, тоже белая, но по сути улучшенная Leonardo), я попал под гипноз описания ее возможностей (и, если что, нахожусь под ним до сих пор).

Отладочная плата Iskra JS

Сердце платы Iskra JS — прекрасный дуэт микроконтроллера серии STM32F4 и прячущейся в его недрах могучей open source прошивки Espruino, выполняющей функцию интерпретатора языка JavaScript с торчащей наружу консолью а-ля REPL. Те, кто знаком с Node.js, почувствуют ярко выраженное дежавю и смогут вести себя более уверенно в диалоге с Espruino. При всем при этом для Iskra JS подходит весь спектр аксессуаров от Arduino UNO R3. Да и дополнительные библиотеки, представляющие собой JS-модули, имелись в достаточном количестве как от создателей проекта Espruino, так и от разработчиков Iskra JS.

## «Зачем все это», или не купить ли нам коммерческий токен  Можно посмотреть и в сторону коммерческих токенов. Но тут скрывается пласт нюансов с дополнительным ПО и универсальностью. Да и за действительно интересные устройства придется выложить немаленькую сумму.  

Итак, недолго раздумывая и сразу обзаведясь целым набором «Йодо», где, помимо платы Iskra JS и буклета, были шилды, модули с сенсорами и прочими кнопочками, а также детали необычного конструктора для макетирования корпусов, именуемого структором, я всецело погряз в творчестве. ???? И вот тогда, наткнувшись в буклете на один из проектов с примером использования эмуляции клавиатуры, я и загорелся идеей сделать «ленивку», набирающую за меня пароли.

Идея зрела долго, ее каждый раз подрезали всякие умные роботы и дома, GSM-сигнализации и прочие радости творчества. Ведь программирование для Iskra JS приносило массу удовольствия, так как не было обременено посредническими процессами — ни предварительным компилированием, ни обязательной прошивкой платы.

Творческая Iskra. Делаем аппаратный менеджер паролей своими руками

INFO

Процесс прошивки в Espruino-based платах требует некоторых разъяснений. Прошивка в микроконтроллере одна — и это Espruino. Она прошивается единожды и занимает часть флеш-памяти микроконтроллера. В дальнейшем для сохранения вашего JavaScript-кода используется оставшееся место во флеш-памяти. И вот очистку части флеш-памяти от старого кода и запись нового нередко также называют прошивкой, хотя правильнее все же называть это сохранением кода.

Время пришло

День, когда лень набивать длинные пароли руками победила в первенстве приоритетов, все-таки настал. И тогда пришло время сформировать представление о том, каким я вижу свое будущее устройство, а заодно и составить список требований и деталей.

  • Для хранения логинов и паролей была выбрана карта microSD. Для работы с ней, соответственно, необходим модуль для чтения карт.
  • В роли управления решил задействовать ИК-пульт и модуль с ИК-приемником, которые достались с набором, так как кнопок пульта заведомо было достаточно для возможного будущего расширения, в то время как с размещением новых физических кнопок могли бы возникнуть проблемы, да и дистанционность имеет свои плюсы в использовании.

Далее необходимо было определиться, на чем хранить ключ AES-256 и на чем показывать меню.

  • Так как у «Амперки» не было на тот момент собственных модулей с дисплеем, целостную картинку пришлось нарушить и воспользоваться китайским модулем с OLED-дисплеем с ярким экраном диагональю 0,96 дюйма и с подключением по шине I2C (как показала практика, если собираешься управлять своим менеджером с расстояния более двух метров, то удобней все же будет использовать экран больших размеров).
  • Для хранения ключа после недолгих поисков была выбрана транспортная карта «Единый», работающая по технологии RFID и, как обнаружилось, имеющая небольшую область памяти, свободную для перезаписи. Попадаются карты «Единый» с 80 и 164 байт памяти. Хранится информация страницами по четыре байта. У тех, что со 164 байт на борту, есть 80 байт, свободных для перезаписи (с 16-й по 35-ю страницу при счете с 0). Таких израсходованных карт у меня оказалось приличное количество. Свою роль сыграло и то, что у «Амперки» была полноценная и настроенная на работу с картами «Единый» JS-библиотека для NFC/RFID-модуля на основе микросхемы NXP PN532, что дает стимул покопаться в ней глубже для более детального изучения принципов работы с RFID/NFC-метками.

Определившись со списком, можно было приступать к сборке прототипа и программированию.

Изначально за основу была взята отладочная плата Iskra JS с дополнительной платой расширения. Прототип на ней получился громоздким, чудным и по-своему симпатичным.

Творческая Iskra. Делаем аппаратный менеджер паролей своими руками
Первый прототип без корпуса
Творческая Iskra. Делаем аппаратный менеджер паролей своими руками
Первый прототип в корпусе из структора

Позже появилась мини-версия старшей платы — Iskra JS mini c STM32F411CEU6 на борту, и это позволило существенно сократить размеры устройства и сделать его мобильным.

Творческая Iskra. Делаем аппаратный менеджер паролей своими руками
Отладочная плата Iskra JS mini

Вот на ее основе мы и соберем наше устройство.

Подготовка

Для начала необходимо установить среду разработки, и если ты собираешься работать с платой из-под винды, то понадобятся драйверы. Подробно об установке среды разработки можно почитать на вики проекта Iskra JS.

Если же не пользуешься браузером Google Chrome, то можно установить нативные приложения для Windows с сайта проекта Espruino либо самостоятельно клонировать текущую версию среды разработки с GitHub и запустить ее локально с помощью фреймворка NW.js, просто скопировав все файлы среды в папку с фреймворком и запустив исполняемый файл nw.

Главное — не забудь поменять в Espruino Web IDE настройки для работы с платами и дополнительными библиотеками от «Амперки»:

  • В разделе SETTINGS → COMMUNICATIONS:

    • в поле Module URL укажи http://js.amperka.ru/modules
    • в поле Module Extensions укажи .min.js|.js
    • в поле Save on Send выбери Direct to Flash
  • В разделе SETTINGS → BOARD:

    • в поле Board JSON URL укажи http://js.amperka.ru/json

Окно среды разработки состоит из двух частей: справа — редактор кода, слева — консоль интерпретатора Espruino, доступная при соединении с отладочной платой.

Творческая Iskra. Делаем аппаратный менеджер паролей своими руками
Среда разработки Espruino Web IDE

Сборка прототипа и подключение

Подключим физически все наши модули, разместив на беспаечной макетной плате. Что она собой представляет и как с ней работать, можно почитать здесь.

Творческая Iskra. Делаем аппаратный менеджер паролей своими руками
Прототип устройства на макетной плате

Выведем питание с пина 3V3 отладочной платы Iskra JS mini на дорожку + макетной платы, а «землю» — с пина GND на .

OLED-экран с подключением по шине I2C имеет четыре контакта: GND, VDD (VCC), SCK (SCL), SDA. Подключим их к соответствующим пинам на плате:

Продолжение доступно только подписчикам

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

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 год

6890 р.

Экономия 1400 рублей!

1 месяц

720 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости