- PVSM.RU - https://www.pvsm.ru -
Немало заметок и обсуждений посвящены непростому вопросу безопасного хранения паролей, тема интересная и, похоже, актуальной будет ещё долго. Существуют различные программные решения для хранения паролей, о них довольно часто пишут на Хабре (например тут [2] и вот тут [3]), однако многим из них, как нам кажется, в той или иной степени свойственны следующие недостатки:
Мы пришли к выводу, что наиболее удобным решением будет простой и недорогой девайс, позволяющий аппаратно хранить и вводить логины/пароли на любые устройства, без установки какого-либо ПО.
Для начала мы, конечно же, прочитали весь интернет, чтобы понять, кому еще приходила в голову идея хранить и вводить пароли аппаратно, и как она была реализована. Найденные варианты [5] можно условно разделить на следующие категории:
Ни одно из найденных устройств в полной мере не соответствовало нашей задумке. Мы обрадовались — и давай думать дальше.
Не так давно для корпоративных задач хранения паролей вместо бумажек, браузеров и биологической памяти мы стали использовать KeePass [11]. Вполне довольные удобством и универсальностью этого продукта, мы решили приспособить его для задач аппаратного хранения паролей, портировав на микроконтроллер.
Однако, осталось огромное количество вопросов. Каким образом выбирать нужную запись в базе на устройстве? Как показать пользователю, какая запись выбрана? Стоит ли размещать на корпусе устройства кнопки? Экран? Как вообще оно должно подключаться к компьютеру? К планшету? К телефону?
От экрана отказались сразу. Если уж у пользователя возникла необходимость вводить пароль — скорее всего, экран у него уже есть. Что касается способов подключения, то мы решили не рассматривать беспроводные интерфейсы, ввиду потенциальной их уязвимости для перехвата.
Для управления мы будем использовать стандартную клавиатуру, а для непосредственного ввода сохраненных паролей в формы — эмулировать клавиатурные команды. “Перехват” управления будет происходить при вводе специальной комбинации клавиш. По умолчанию мы выбрали сочетание Ctrl + Shift + ~, потому что оно удобно для нажатия и практически нигде не используется. Проект получил название “Pastilda” (от password, tilda), у нас оно ассоциируется с чем-то вкусным и сладким, а также помогает не забыть главное сочетание клавиш для работы с устройством.
Находясь в пассивном режиме Пастильда транслирует все сообщения от клавиатуры к ПК без изменений, ожидая нажатия специальной комбинации. После ввода комбинации устройство входит в активный режим. Если в этот момент курсор находится в поле для ввода текста — это может быть поле “Логин”, или любое другое текстовое поле — в нем появляется одно-строчное текстовое меню.
Для работы с базой KeePass, хранящейся в памяти Пастильды, пользователь вводит мастер-пароль, а затем при помощи навигационных клавиш выбирает название интересующего его аккаунта и нажимает ввод. Пастильда вводит нужные логин и пароль в соответствующие поля. При этом расшифровка базы происходит на устройстве, и целевая система не получает доступа к мастер-паролю и ко всей базе. Выход из активного режима происходит либо автоматически, после ввода пароля, либо после повторного нажатия комбинации “Shift + Ctrl + ~”. Да, кстати, комбинации можно придумать свои.
Как всегда много чего хочется реализовать, а начать решили с малого. Ревизия 0.1 предназначена для проверки идей, удобства использования и всяческого баловства. В текущей версии запланирован следующий минимум функций:
Тут всё просто — контроллер Stm32f405, два разъема и флешка на SPI. Так же немного защиты, разъем SWD и, конечно же, RGB светодиод. Выбор компонентов не вызвал затруднений — STM, похоже, единственный, кто реализовал два аппаратных USB в микроконтроллере, а память взяли какая была.
Все компоненты в обычных корпусах, чтобы плата была дешевая и быстрая в производстве. Размер 40х17 мм, 4 слоя. Текущая версия платы выглядит вот так:
На данный момент реализовано:
Ждет своей участи:
О своих суровых буднях программисты напишут в отдельных статьях.
Дальше — больше. Хочется реализовать работу с любыми устройствами, понимающими внешнюю клавиатуру. Мы уже протестировали работу нашего прототипа с Android-смартфоном через USB OTG, всё работает прекрасно. Для удобства навигации по меню при использовании Пастильды с мобильными устройствами сделаем отдельный USB-модуль с колесом-кнопкой.
Ещё одна идея — маленькая гибко-жесткая печатная плата, которая заправляется прямо в разъем USB, оказываясь между контактами host и device. Жесткий кусочек платы с компонентами наклеивается на корпус штекера device. Таким образом устройство будет довольно сложно обнаружить. Впрочем, зачем бы нам это? Просто идея.
Встроенную память Пастильды можно использовать для хранения данных (если скорость не особо важна), и тут возможны варианты: просто USB накопитель, который виден всегда, когда устройство подключено, либо шифрованный накопитель. Базы KeePass, файлы ключей и т.п. предполагается хранить на этом пространстве.
Код выложен на github [19], вместе с железом. Лицензия GNU GPL. Естественно, можно пилить что-то свое на основе этого проекта, нам в голову пришли такие идеи:
Главная цель этой статьи — услышать ваше мнение, не стесняйтесь в комментариях!
Автор: Третий пин
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/156266
Ссылки в тексте:
[1] Image: https://habrahabr.ru/post/305594/
[2] тут: https://habrahabr.ru/post/225053/
[3] вот тут: https://habrahabr.ru/post/125248/
[4] Image: https://habrastorage.org/files/db2/7d4/d55/db27d4d558ed4af786106bbd57421cf7.png
[5] Найденные варианты: https://docs.google.com/spreadsheets/d/1q-vCx8QxtwEWVKSXha0V2XxxN7ILDdTP-DDhrjcpeiQ/edit?usp=sharing
[6] такая: http://www.byte-on.ru/catalog/Istorage-DatAshur/fleshka_istorage_datashur_pro_16gb/
[7] пример: https://www.kickstarter.com/projects/myidkey/myidkey-passwords-at-the-tip-of-your-finger/description
[8] например: https://www.kickstarter.com/projects/199263837/logmeonce-your-password-manager-secure-usb-and-pho/description
[9] пример: https://www.kickstarter.com/projects/1048259057/openkey-the-two-factor-authentication-and-password/description
[10] пример: https://hackaday.io/project/8342-memtype-open-source-password-keeper
[11] KeePass: http://keepass.info
[12] Image: https://habrastorage.org/files/b68/33b/c29/b6833bc295db4c38b599f1b33630509e.jpg
[13] Image: https://habrastorage.org/files/88b/c42/401/88bc42401a754b5da64a8efe5230d2b2.jpg
[14] Image: https://habrastorage.org/files/4d4/570/b2b/4d4570b2b173447a9adac2af703ed8fa.png
[15] Image: https://habrastorage.org/files/868/04e/232/86804e232bc645e0972aeaf4bf008a9c.png
[16] решила проблему с usb_msc libopencm3.: https://habrahabr.ru/post/304924/
[17] Image: https://habrastorage.org/files/63d/0d8/b92/63d0d8b92df041a6ac1f64d727f9712e.jpg
[18] Image: https://habrastorage.org/files/ff8/0ba/c77/ff80bac77cb84534b02c8a67032c347e.png
[19] github: https://github.com/thirdpin/pastilda
[20] Источник: https://habrahabr.ru/post/305594/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.