Эта мысль давно крутилась в голове… Поскольку основная моя деятельность связана с админством, то паролей у меня реально много. Сложные пароли не запомнить, по крайней мере, у меня точно не получается. Простые легко сбрутить. Использовать один пароль на всё — сервисы в сети ломают один за другим, попадет пароль в словарь и отломят все связанные аккаунты. Бумажки с записями теряются, да и часто трудно понять, что к чему в этих записях…

Хорошим казался keepass, но его нельзя использовать на чужих компьютерах оперативно — надо поставить программу, скачать конфиг, зайти, куда-то залогиниться, после не забыть выйти и удалить конфиг. Для использования на одной машине keepass превосходен, на нескольких — уже есть проблемы.

И тут пришла мысль: а что если сделать на stm32 hid-клавиатуру размером с флешку и затолкать пароли туда?



Идея была такова. На этом гаджете 6 кнопок, одна кнопка — режим ввода, 5 — ячейки для паролей. При первом использовании устройство генерирует внутри себя пачку паролей, сложных и длинных, и сохраняет во флеш. Дальше при нажатии кнопки устройство выдает пароль и в конце жмет Enter, в одном режиме цифро-буквенный, поскольку есть сайты, запрещающие в пароле что-то кроме [A-Za-z0-9], в другом еще и включая знаки. Для заполнения форм есть третий режим, в нем не прожимается Enter.

Для испытания был собран прототип из макетки и китайской платы. Найти готовый код для hid-клавиатуры оказалось делом непростым — на гитхабе было всего три проекта, один из которых под виндой собрать нельзя без особых шаманств. Еще два я стал ковырять, остановившись на проекте какого-то китайца. Писать самому весь код обработки usb очень не хотелось, поскольку это очень нудно, код объемный, да и stm32 я знаю крайне поверхностно.

Форкнул этот код, допилил его, запустил на своей плате… Это заработало! Попробовал гонять в разных режимах, действительно удобно.



Только вот глаз префекциониста не радовала макетная плата, и я решил сделать готовое устройство, тем более, что все запчасти для него были в закромах. Часть, конечно, явно избыточна (питание) или великовата (кварц), но коли все это валялось без дела…



Я открыл KiCad, начертил схему, попытался развести плату. И тут меня ждал первый облом — если схемы я раньше чертил, то как разводить платы в KiCad, я категорически не знал. Потыкался, посмотрел пару видеоуроков, вроде начал понимать, а потом плюнул и развел все в Sprint Layout. Сохранил, отдал китайцам на изготовление. Уже потом понял, что накосячил, забыл резисторы на usb, хорошо, что это оказалось легко исправимо. Но на будущее понял, что лучше день потерять, потом за пять минут долететь, чем разводить в Sprint Layout и делать глупые ошибки.

Платы приехали очень быстро, порядка 15 дней.



Быстро запаял одну, начал переделывать код. Да, stm32 от atmega отличается довольно сильно, но в целом все вопросы гуглятся очень хорошо. Правда из-за того, что эти МК поддерживает много сред разработки, возникают определенные трудности с кодом, во многих случаях копипаст не работает. Что, наверное, само по себе хорошо.

Устройство вышло очень удобным. Теперь не надо запоминать сложные пароли, все лежит на этой «флешке». Драйверов гаджет не требует, по крайней мере, во всех популярных ОС.

Остался вопрос с бекапом этого дела и с защитой. Ладно, потерять устройство в плане безопасности не страшно, поскольку нашедший не знает, к какому аккаунту эти пароли подходят. Но вот если его утащат со стола или из кармана специально… Думаю, стоит добавить защиту пин-кодом, набираемым с этих же кнопок. Бекап можно сделать средствами того же keepass, но вот стоит ли делать восстановление на новый носитель, я не уверен — при потере, краже или поломке пароли лучше сменить, мало ли что…

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

Исходный код можно глянуть тут.

Файлы платы пока не выкладываю, поскольку там есть ошибки.
Интересен ли такой гаджет хабражителям? Стоит ли его оформить в виде сайтика со всеми исходниками или нет?

Проголосовало 765 человек. Воздержалось 139 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Поделиться с друзьями
-->

Комментарии (116)


  1. GeMir
    06.06.2016 19:46

    Хорошим казался keepass, но его нельзя использовать на чужих компьютерах оперативно

    KeePass прекрасен всем, кроме интерфейса. Не требующая установки версия, вроде бы, тоже есть в наличии. «Конфиг»?


    1. Konachan700
      06.06.2016 19:57

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


      1. mrigi
        06.06.2016 23:48

        Но зачем вообще что-то куда-то носить и вставлять, если keepass есть на мобильных устройствах? А базу можно хранить хоть на гугл-диске, откуда мобильный keepass её умеет доставать. Не совсем понятно зачем нужно ещё одно переносное устройство.


        1. S-ed
          07.06.2016 03:48
          -1

          Тут давеча была новость про keepass неблагоприятного характера. Коротко: девелопер отказался патчить дыру в модуле обновлений т.к. это съест его ad revenue.


          1. GeMir
            12.06.2016 11:09

            11 июня вышла новая версия:

            The version information file (which the optional update check downloads to see if there exists a newer version) is now digitally signed (using RSA-4096 / SHA-512); furthermore, it is downloaded over HTTPS.


  1. may-cat
    06.06.2016 19:46

    5 паролей — это мало. Какие планы по развитию?


    1. Konachan700
      06.06.2016 19:54
      +1

      10 паролей. Два режима по пять разных.
      Планы таковы — сделать все из комплектухи нормального размера, это освободит площадь платы. На свободное место воткнуть сантиметровый oled-дисплей, а али он стоит недорого, и джойстик, кнопки же сократить до двух. Точно также будет работать автономно, но можно написать софтину для добавления\удаления\редактирования паролей.


      1. prostosergik
        06.06.2016 19:56

        Ну прям мысли читаете… А про тач-поверхность не думали? Простая делается из той же печатной платы, позволяет отслеживать движения по одной оси и клик.


        1. Konachan700
          06.06.2016 19:59

          Думал. Джойстик там позволит сделать пинкод в виде «змейки», как на смартфоне, с тачем такое на 0.61'-дисплее будет неудобно.


          1. prostosergik
            06.06.2016 20:12

            Это лишнее ИМХО.
            Тач — чтобы от механических кнопок избавиться. Управление обычное, вверх-вниз тачем, клик — открыть, двойной клик — закрыть/назад.


          1. Andy_Big
            06.06.2016 21:13
            +1

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


            1. lim
              07.06.2016 01:49

              Там не обязательна даже поддержка чипа. Емкостной сенсор реализуется даже на ардуине на обычных цифровых ножках. Из дополнительных компонентов — пара резисторов… Я делал такую штуку — чувствовало палец через 1 мм пластика.


              1. Andy_Big
                07.06.2016 02:17

                Честно говоря, не наталкивался на такие способы. Помню еще на КМОП-логике делали сенсорные выключатели, но там не емкостный принцип был, а просто наводки :) Тут так же?


                1. S-ed
                  07.06.2016 04:01

                  Вот статья — ёмкостная «клавиатура» на ATMega32.


                  1. Andy_Big
                    07.06.2016 12:04

                    Спасибо, почитаю.


          1. LineAir
            07.06.2016 11:04

            Помню времена мобильников с джойстиками. С джойстиками всегда проблемы были, но в телефоне они, естественно, использовались чаще, чем предполагается на Вашем устройстве. Реализация тач-функций на плате тоже интересная идея.


      1. may-cat
        06.06.2016 20:01
        +10

        У меня более 500 паролей и прирост по 2-5 в месяц. Обязательно нужна удобная категоризация и управление.
        Вообще идея огонь.


        1. rockin
          06.06.2016 21:08
          +1

          разовью мысль, т.к. с моими совпадает очень сильно
          5 кнопок тут достаточно, но, вопрос, для чего?
          чтобы вбивать пароль — это как… ээээ… просто
          5 кнопок нужны для навигации, даже меньше
          3 кнопки
          вверх-вниз-ввод

          и должна быть поддержка «дерева», (категоризации (С))
          «дерево» должно управлять с десктопа или даже онлайн, только это отдельная тема.

          то бишь.
          щелк-щелк «вниз», выбираем «клиенты». «ввод»
          щелк-щелк «вниз», выбираем «вася пупкин». «ввод»
          щелк-щелк «вниз», выбираем «мегасайтик». «ввод»
          «вверх» для коррекции

          и четвертая кнопка на «сброс».

          дивайс был бы шикарен


          1. Alexeyslav
            07.06.2016 11:37

            Зато это будет очень шикарная находка для шпиона/конкурента!
            Пин-код? а как его вводить? Это уже нужен форм-фактор записной книжки, 3 неверных ввода пароля на разблокировку — уничтожение всех паролей.


            1. rockin
              07.06.2016 14:14

              чего же тут шикарного, если не известно, куда и что, а сверху — пин

              пин-код можно вводить точно также, как у автосигнализации валет-кнопочкой (это в самом простом случае, когда кнопка — одна)
              а так, если кнопок 3-10 — просто пин вводится комбинацией и последовательностью нажатий этих кнопок

              да и вообще, каждый сам для себя делает выбор между удобством и параноидальностью. тут надо найти золотую середину.


              1. Alexeyslav
                07.06.2016 20:20

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


            1. Kinardus
              07.06.2016 16:38

              Сканер отпечатка как решение.


      1. zeronice
        07.06.2016 09:50

        Напрашивается идея приделать microSD. Делать софт, который правит пароли через тот же интерфейс, через который они выводятся — несекьюрная идея. А так — на доверенной машине сформировали файл с паролями, залили на носитель и вставили в железку. Для защиты SD можно использовать избыточное шифрование с ключом, зашитым в контроллер


        1. Konachan700
          07.06.2016 09:52

          Я думал об этом, но слот microSD увеличит размер девайса.


      1. IronKaktus
        07.06.2016 11:04

        Меня в свое время заинтересовал вот такой девайс — ru.aliexpress.com/af/optical-fingerprint-module.html?ltype=wholesale&d=y&origin=n&isViewCP=y&catId=0&initiative_id=SB_20160606233651&SearchText=optical+fingerprint+module. Думал подключить его к своему стационарному компу.


      1. ego3a
        07.06.2016 11:38

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


      1. Chamie
        07.06.2016 15:36

        сделать все из комплектухи нормального размера, это освободит площадь платы
        А у меня уже давно стойкое желание собрать такую (но с предзаписанными паролями) на одной ATTiny и паре резисторов.
        Примерно так
        SparkFun AVR Stick


    1. Fullmoon
      06.06.2016 20:06
      +1

      Пять паролей для жизненно важных вещей, вроде основной почты, и для менеджера паролей, менеджер — для остальных 500+ сайтов.


      1. Kalobok
        06.06.2016 20:14
        +1

        Тогда хорошо бы в этот же девайс добавить возможность использовать его и как обычную флешку — с keepass и его данными.


        1. Konachan700
          06.06.2016 20:21
          +2

          Туда можно безболезненно воткнуть 64мбит SPI-flash, она крошечная же и дешевая. Для хранения данных keepass восьми метров достаточно.


          1. Kalobok
            06.06.2016 20:23
            +1

            Можно и так. Но 5-10 паролей по кнопкам — это очень мало и не очень безопасно.


  1. prostosergik
    06.06.2016 19:48
    +4

    Ябкупил…

    Но напрашивается простейший экранчик а-ля микроамолед, коих куча в Китае, чтобы заносить можно было осмысленные названия сайтов. Тогда клавиатура может быть представлена 2-3 клавишами и всё. А еще хочется ПК утилиту для управления и бекапа в шифрованном виде БД устройства, на случай замены брелка.

    … игрался когда-то давно с подобным на Ардруине, но до полноценного устройства не довел. Удачи в начинании! Подписался, буду следить.


  1. ClearAirTurbulence
    06.06.2016 20:16

    1Password. Синхронизируется через дропбокс. Как и кипасс, кстати.
    Ставится мобильный клиент на телефон — и вуаля, никаких флешек не нужно, из минусов — только отсутствие автозаполнения, но посмотреть пасс для работы на «не своем» компе можно без проблем.

    Железное решение было бы интересно, но только в том случае, если оно интенгрировано с кипасс\1пассворд\аналогом, либо само может все то, что могут они.


    1. prostosergik
      06.06.2016 20:18
      +5

      $5USD MONTHLY
      Да ну…
      И еще вот у меня Бубунта. Что делать? И у Админов тоже не Мак часто…


      1. ClearAirTurbulence
        07.06.2016 02:16

        Какие еще $5 USD monthly?

        1password есть под мак и винду, многим будет достаточно (остальные могут работать через веб-интерфейс, который у него тоде есть). Я его брал за $40, конечно, жаба душила, но по удобству с ним ничто на тот момент сравниться не могло. Можно легально поставить на 5 ПК.

        Кипасс вообще бесплатный, и у него наверняка есть линуксовые сборки.


        1. S-ed
          07.06.2016 04:07
          +2

          Там сейчас 2 опции, $5 подписка или разовый — $64,99.


      1. asapelkin
        07.06.2016 11:02

        Я под debian и android использую бесплатный KeePassX, тоже есть синхронизация через dropbox.


    1. Wesha
      06.06.2016 21:15
      +2

      > Ставится мобильный клиент на телефон

      … и спокойно сливает все Ваши пароли в [ФСБ / АНБ / разработчику / Ваш вариант сообразно уровню Вашей паранойи ].

      Хорошая попытка, но нет.

      Хранилка паролей должна заниматься ровно одним делом: *хранить пароли*.


      1. ClearAirTurbulence
        07.06.2016 11:19

        База зашифрована. Доверять ли поставщику решения — ваш выбор. Но тогда надо автоматически отказаться от любой ОС, собранной не вами, а также от железа, собранного не вами.


      1. rfvnhy
        07.06.2016 13:58

        Ну если ставится на яву… Можно найти старенький телефон, выдрать из него радио-тракт чисто физически и поставить туда.
        Если не будет закладок в ПО типа «общего пароля», то девайс вполне нормальный…
        Вот только такое должно быть с открытым кодом, иначе доверия не будет…


  1. TargetSan
    06.06.2016 20:21
    +1

    Где-то на Хабре или Гиктаймсе пробегала идея — такой брелок, спаренный по Bluetooth со смартфоном. Пароли располовинить или использовать «подсаливание» на железке.



  1. may-cat
    06.06.2016 20:29

    Вот смущает только, вот что:
    — я не помню все домены для которых у меня пароли
    — и логины, честно говоря, тоже отличаются
    А если эту инфу писать в железку, то утеря железки становится фатальной.

    Кроме того, возникает вопрос бэкапа данных на железке и регулярной смены паролей.


    1. rockin
      06.06.2016 21:14

      синхронизация куда-то опенсорс решает все проблемы

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

      на сервачок менеджер даёт команды и управляет, железка принимает и сохраняет

      потерял железку. ОК. сменил пасс и всё.


    1. Andy_Big
      06.06.2016 21:17

      Раз в неделю отбэкапить содержимое брелка на комп. С каким-либо шифрованием. Для гарантии — на защищенный диск :)
      Смена пароля — тоже не проблема, пусть брелок и генерит при необходимости новый пароль заданного типа :)


      1. may-cat
        07.06.2016 11:29

        Утеря железки фатальна из-за того, что и логины и пароли и доменные адреса оказываются доступными злоумышленнику


        1. Andy_Big
          07.06.2016 12:12

          Если злоумышленник готов заплатить денег за считывание прошивки из залоченного контроллера и посидеть за дизассемблированием бинарника (или опять же заплатить за это), тогда да. Да и то, насколько я знаю, для STM32 100% гарантии считывания нет, а контроллер в процессе разрушается, так что если с первой попытки не удалось, то все, второй уже не будет.


  1. Indemsys
    06.06.2016 21:13

    HID можно сделать и на Bluetooth.
    Тогда отпала бы необходимость в разъеме.


    1. Andy_Big
      06.06.2016 21:19

      1. Добавляется аккумулятор и модуль блютуса, габариты и вес растут.
      2. Добавляется необходимость регулярной зарядки брелка.
      3. Далеко не везде будет блютус.


      1. Tomasina
        06.06.2016 21:45

        Если чуть пожертвовать габаритами, то пары ионисторов должно хватить.
        Воткнул на 10 сек в ближайший MicroUSB (да хоть в телефон), вытащил и работаешь пару минут.


        1. inkelyad
          07.06.2016 11:02

          Именно так. Даже пароли в железке хранить не надо. Воткнул в телефон — устройство получило заряд питания и пароль. После перетыкания жмем кнопку — и (временно) запомненный пароль отправляется по назначению.


    1. Wesha
      06.06.2016 23:31

      > HID можно сделать и на Bluetooth.

      Хорошая попытка, товарищ майор, но нет, я не хочу предоставлять Вам возможность перехватывать мои пароли, сидя в соседнем здании.


  1. akhkmed
    06.06.2016 21:24

    Спасибо за полезное устройство.

    Подскажите пожалуйста, будут ли пароли криптостойкими? Как заметил, для генерации используется rand(), но будет ли у него недетерминированная последовательность?


    1. Konachan700
      06.06.2016 21:27

      Там rand() плюс чтение счетчика таймера плюс чтение «болтающихся» ног. Думаю, этого достаточно для большинства применений.


      1. bullitufa
        08.06.2016 14:51

        У контроллеров (всех?) STM32 есть уникальный номер 96 бит. Можно его использовать как отправную точку. А на контроллерах серии L0 так еще и генератор случайных чисел есть. И USB есть.
        Вы пользовались CubeMX от STшников? Она здорово помогает и сокращает время на старт разработки прошивки. В том числе генерирует код для USB устройств.
        Вообще идея отличная!
        Если Вам нужна помощь, обращайтесь!
        Удачи!


        1. Konachan700
          08.06.2016 18:07

          CubeMX генерирует код для hid-мышки, а мне нужна была клава. Отличие в самом сложном, usb-дескрипторах. Потому пока взял готовый проект за основу, прототип должен работать и делаться быстро, вылизывать буду готовое устройство.
          RNG в 103 серии нет. UID есть. 103я серия вообще не рекомендована к применению как устаревшая, но именно это и делает ее вкусной: цена контроллера в рознице ~100 рублей. Остальные минимум в три раза дороже.


          1. Chamie
            09.06.2016 01:33

            AVR и V-USB? Ещё дешевле выйдет.


            1. Konachan700
              10.06.2016 11:13

              Да, дешевле, но V-USB съедает почти все процессорное время. Возможностей расширения функционала там будет совсем немного.


              1. exmachine
                10.06.2016 16:32

                Я реализовал чуть более продвинутое решение.
                Пробовал использовать V-USB но это тупиковый путь.

                Использовал контроллер ATxmega128A4-AU в нем есть аппаратный USB
                Для управления использовал LUFA (https://github.com/abcminiuser/lufa.git)
                Клавиатура на 10 кнопок, 2x7segment LED индикатор, хранение на MicroSD в FAT32, эмуляция MassStorageDevice для управления паролями
                свободно еще половина контроллера


          1. bullitufa
            09.06.2016 12:56

            Если вдруг Вам нужна помощь в разводке или написании программы, обращайтесь! С удовольствием помогу!


          1. bullitufa
            09.06.2016 18:07

            Вот у товарища не плохая подборка примеров!
            http://stm32f4-discovery.net/2014/09/library-34-stm32f4-usb-hid-device/


    1. Andy_Big
      06.06.2016 21:29

      Детерминированность rand() останется, но изначально инициализировать его можно каким-то случайным значением, например считанным с АЦП с открытым входом.


  1. Andy_Big
    06.06.2016 21:25
    +1

    Идея, как мне кажется, отличная. Если продумать вопросы безопасности, интерфейса и бэкапа-восстановления, то такой брелок вполне даже может стать коммерчески успешным :) Даже при opensource варианте — далеко не каждый захочет возиться с железками, многим будет проще заплатить за готовое устройство :)


  1. NickSin
    06.06.2016 21:28
    +1

    А я так вижу это:
    1. Впаять блютуз
    2. На смарте запускать приложение, которое позволяет управлять паролями на флеше. Причём вход осуществлять по паролю или отпечатку.

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


    1. Indemsys
      06.06.2016 21:32

      Не, лучше связку NFC тэгов использовать.
      На теге написано каким паролем он управляет, а дивайс уже команду от NFC преобразует в пароль.


    1. Konachan700
      06.06.2016 21:38

      Идея хорошая, но… BLE габаритен, если брать в виде модуля. Нарисовать же антенну у меня скилла явно не хватит. Да и самое главное — теряется быстрота использования, ведь надо воткнуть устройство, дождаться его нахождения смартфоном, найти пароль в приложении… Выглядит неудобно.


      1. Andy_Big
        06.06.2016 21:46

        Кстати, насчет блютуса я тоже не очень поддерживаю, но представил себе такую картину: вот у меня на работе системник стоит под столом, на столе никаких USB нет. Приходит ко мне товарищ с таким брелком и хочет с его помощью авторизоваться на каком-то сайте. Это ему нужно лезть под стол и там возиться с кнопками/джойстиками на воткнутом в системник брелке чтобы добраться до нужного пароля и выбрать его :)
        Может быть имеет смысл не USB-разъем паять на плату, а хвост USB-кабеля длиной хотя бы сантиметров 60?


        1. fuzzi
          06.06.2016 21:53

          ИМХО, конечно — но не проще товарищу, кроме брелка. носить с собой и USB-удлинитель — ведь он знает, к кому идёт :)


          1. Andy_Big
            06.06.2016 22:00

            Даже если у меня будет ноут и разъем USB прям тут, под руками, все равно мало удобства нажимать кнопки и джойстик на воткнутом в ноут брелке :) То есть удлинитель придется носить всегда, так почему его изначально не заменить на хвост? :)


            1. fuzzi
              06.06.2016 22:04

              Да, согласен — вполне логично. ;)


            1. Konachan700
              06.06.2016 22:07

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


              1. Andy_Big
                06.06.2016 22:10

                Значит Вам просто не нужно будет доставать из сумки удлинитель :) А тому большинству, которое не носит с собой удлинитель можно будет и дальше не носить его :)


                1. Konachan700
                  06.06.2016 22:14

                  Это, кстати, положу в копилку идей. Впаять 3.5 разъем наушников и вставить китайский переходник usb <-> 3.5. Кому надо, тот вставит аналогичный хвост. И разъем поворачиваться будет как угодно.


                  1. Andy_Big
                    06.06.2016 22:22

                    Вы имеете в виду — разъем 3.5 на брелке и переходник для него в порт USB? Это тем более будет неудобно. Очень тяжело производить какие-то активные действия с устройством (нажатие кнопок, наклоны джойстика), удерживая само устройство в неподвижности. Обязательно будут усилия на излом жестких разъемов и как долго разъемы проживут в таком режиме — неизвестно. Скорее всего не очень долго. А если разъема будет два, один за другим, то надежность резко падает еще сильнее.
                    Кроме того, если будет дисплей, то он часто будет оказываться вверх ногами относительно взгляда пользователя. Короткий хвост решает все эти проблемы :)


                    1. inkelyad
                      07.06.2016 23:41

                      Не надо никакого переходника 3.5<->USB. Смартфон вполне способен 'насвистеть' сколько-то там бит пароля через звуковой выход. Возможно даже получится все обсуждаемое устройство+смартфон сделать HID клавиатурой без использования ядерных модулей, как упоминается в ветке ниже


      1. Indemsys
        06.06.2016 21:47

        BLE чипы есть 3*3 мм, антена тоже чиповая не длинее 5 мм.
        Пайринг зарегистрированных BLE дивайсов к компу длиться не более 0.1 сек
        Смартфон конечно уже небольшой перебор.
        Но вот RFID или NFC метки приатаченные к тому месту где надо вводить пароль это проще и быстрее чем кнопки на дивайсе.

        Было бы желание, а скилы найдутся.


  1. fuzzi
    06.06.2016 21:33

    эээ… «аварийная кнопка/режим/код» — для ввода пароля «под принуждением»?


    1. Konachan700
      06.06.2016 21:41
      +5

      да, есть уже в текущем варианте. Нажатие двух верхних кнопок при втыкании стирает и заново генерирует все пароли.


    1. NLO
      07.06.2016 06:27

      НЛО прилетело и опубликовало эту надпись здесь


  1. MichaelBorisov
    06.06.2016 21:37

    Я уже давно думал сделать такое устройство из-за того, что нет доверия сторонним программам. При наличии интернета почти на всех компьютерах это такой соблазн — периодически сливать пароли владельцам на сервер. Писать свою программу можно, но есть проблема — клавиатурные шпионы и всевозможная «телеметрия». От них не защищает, кстати, и HID-клавиатура. Пока не вижу нормального решения с вводом паролей на чужих компьютерах. Стараюсь просто этого не делать.

    Вот бы эту проблему как-нибудь побороть. Но для этого нужен прямой канал связи между устройством и сайтом, где требуется ввести пароль. Защитить канал устройство уж само как-нибудь смогло бы.


    1. Andy_Big
      06.06.2016 21:42

      Устройство открыло SSL-соединение с сайтом, отправило форму авторизации, сайт авторизовал. А дальше что? :)


      1. MichaelBorisov
        08.06.2016 00:35

        Я не знаю, возможно ли реализовать в рамках существующих протоколов такую авторизацию, чтобы долговременные ключи (или пароль) хранились бы на устройстве, а компьютеру для собственно действий на веб-страничке передавался только сеансовый ключ, действительный для одного сеанса связи. Если это возможно — то так и надо делать.


    1. Chamie
      07.06.2016 15:43

      Это вам двухфакторная аутентификация нужна — чтобы вам на устройство одноразовый пароль приходил.


  1. fuzzi
    06.06.2016 21:48

    а на телефонах/планшетах, через ОТГ — будет работать?


    1. Konachan700
      06.06.2016 21:54

      Да, у меня работает на зенфоне.


  1. LevOrdabesov
    06.06.2016 23:10

    Интересная и простая реализация.
    Тоже хотели делать подобное, только со сканером отпечатка пальца в качестве подтверждения (мастер-пароля) и плагином к браузерам.
    Но современные компактные сканеры отпечатка довольно печальные, глючные.


  1. darkdaskin
    06.06.2016 23:30

    Ещё идея — можно реализовать TOTP по типу Google Authenticator. Только придётся ещё и RTC с батарейкой прикручивать (или есть способ вытянуть время с хоста через USB?).


    1. Fullmoon
      07.06.2016 00:16

      Я тоже хотел предложить. Потом сообразил.
      Присутствие пароля и TOTP на одном устройстве напрочь рушит весь смысл двухфакторной аутентификации.

      …надо будет на выходных всё-таки попробовать придумать TOTP-брелок.


      1. mmMike
        07.06.2016 09:21

        При цене OTP брелка в 250 рублей (экран + кнопка генерации) для мелкой партии, делать свой вариант… ну только из любви к процессу. Не думаю, что TOTP дороже стоит (не запрашивали цену).


        Сразу скажу, где в розницу купить — не знаю. Не интересовался. Но и мелким оптом продадут (юр.лицу точно) кому угодно.


        1. Fullmoon
          07.06.2016 14:18

          Хочу программируемый на десяток паролей. Да и весь смысл в DIY же. Cейчас я программкой на pebble пользуюсь.


          1. mmMike
            07.06.2016 14:26

            Ну если в DIY и "под себя" (10 паролей), то да.


            В принципе, ничего сложного то нет. Ни в конструкции, ни в ПО.


  1. alexpp
    07.06.2016 00:04

    Классно получилось! Аккуратно!
    А не подскажете, где заказывали платы, и почем вышло? Не совсем ясно из текста — в чем все таки сделали разводку платы.


    1. Konachan700
      07.06.2016 20:57

      Платы, что на фото, развел в Sprint Layout. Нормальную версию платы уже делаю в KiCad, там хоть и сложно все, но на порядки меньше шансов сделать ошибки.
      Платы вышли $16 за десяток. За контактами китайца в личку.


  1. Shpiler
    07.06.2016 00:33

    Та самая идея, которую я бы сам никогда не породил за ненадобностью (использую везде где только можно два словарных пароля и плевать хотел на любой возможный взлом), но в целом выглядит задумка отлично. Если надумаете выводить на коммерческий уровень и не хватит сил самостоятельно реализовать всё что пожелали люди выше — обращайтесь, в хорошем деле с удовольствием посооучаствую.


  1. braindamagedman
    07.06.2016 02:48
    +1

    Советую присмотреться к pwdhash.com Для каждого сайта генерится уникальный пароль на основе мастер-пароля и доменного имени. Есть удобные дополнения для Chrome и Firefox. С чужого компьютера всегда можно воспользоваться online-версией.
    Решает проблему запоминания паролей для всех 100500 не очень важных аккаунтов. Остальные 5 паролей можно запомнить.


  1. chemtech
    07.06.2016 07:10

    Konachan700 Может записать видео демонстрирующее работу устройства?


  1. mmMike
    07.06.2016 09:16

    Спасибо за статью. Для сисадминов с большим количеством паролей наверное это будет весьма интересно.
    Хотя, если бы мне такое понадобилось (c большим количеством паролей), то сделал бы bluetooth, а пароли бы хранил в приложение на телефоне. Все же на "брелке" сложно управлять большим количеством паролей и с аутентификацией не слишком развернешься.


    А для обычного пользователя с < 10 паролями, можно попробовать что ни будь типа этого (один из многих проектов):
    http://codeandlife.com/2012/03/03/diy-usb-password-generator/#more-305
    http://www.ebay.com/itm/for-attiny85-m-development-board-digispark-kickstarter-micro-general-usb-diy-s0-/111972965329?hash=item1a121bdbd1:g:KYsAAOSwubRXFOpu
    По цене меньше обеда в столовой.


    Сразу скажу, что не пробовал. Ибо, на мой взгляд, без механизма аутентификации владельца, это как на стикере записывать пароль (по уровню безопасности).


    развел все в Sprint Layout. Сохранил, отдал китайцам на изготовление. Уже потом понял, что накосячил, забыл резисторы на usb, хорошо, что это оказалось легко исправимо. Но на будущее понял, что лучше день потерять, потом за пять минут долететь, чем разводить в Sprint Layout и делать глупые ошибки.
    Платы приехали очень быстро, порядка 15 дней.

    А можете чуть по подробнее рассказать? Сколько обошлось, в каком формате принимают, ссылки на…
    Заранее спасибо.
    Иногда так и хочется разово заказать плату в единичных экземплярах, но лень и неопределенность в сроках останавливает.


  1. Cobolorum
    07.06.2016 09:30
    -4

    Автор будь осторожен! Твое хобби подает под
    1 НК об административных правонарушениях в ст. 14.1
    2 УК РФ ст. 171«Незаконное предпринимательство» за осуществление предпринимательской деятельности без лицензии
    3 Деятельность по разработке, производству, распространению шифровальных (криптографических) средств, информационных систем и телекоммуникационных систем, защищенных с использованием шифровальных (криптографических) средств, выполнению работ, оказанию услуг в области шифрования информации, техническому обслуживанию шифровальных (криптографических) средств, информационных систем и телекоммуникационных систем, защищенных с использованием шифровальных (криптографических) средств (за исключением случая, если техническое обслуживание шифровальных (криптографических) средств, информационных систем и телекоммуникационных систем, защищенных с использованием шифровальных (криптографических) средств, осуществляется для обеспечения собственных нужд юридического лица или индивидуального предпринимателя). Лицензирование осуществляется в соответствии с Федеральным законом от 4 мая 2011 г. № 99-ФЗ «О лицензировании отдельных видов деятельности».


    1. ksenobayt
      07.06.2016 09:39

      Вы ещё мне предложите быть осторожнее — я так вообще время от времени в libtoxcore и qtox патчи докидываю по мелочи.


    1. Konachan700
      07.06.2016 10:01
      +1

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


  1. DimkaI
    07.06.2016 10:01

    Восстанавливать на другой носитель всё-же должна быть возможность. Особенно, когда паролей на 5-10, а более 100. Всем известно, что флешки порой выходят из строя. И, тогда никак не ввести старый пароль для смены на новый.


  1. xxvy
    07.06.2016 10:02

    Итак. В комментариях пожелали:
    — Хранить кучу паролей
    — Удобный интерфейс выбора
    — Защиту мастер-паролем (если вдруг девайс потеряется)
    — Наличие хвоста USB

    В итоге получается девайс — «Клавиатура админа»
    Админ ходит со своей клавиатурой и подключает её к компам пользователей.
    Помимо функций клавиатуры, путём нажатия спецклавиши и ввода мастер-пароля, устройство переключается в режим хранения/воспроизведения паролей, которых в устройстве может быть записано несколько.
    Выбор нужного пароля осуществляется либо нажатием сочетаний клавиш, либо вводом кодового слова — например слово БАНК+F12 генерирует пароль от сайта банка, а последовательность ivanov@mail.ru+F12 — пароль от соответствующего ящика.


  1. umarsohod
    07.06.2016 10:02
    +1

    В качестве идеи для развития.
    Можно сделать переходник для клавиатуры, с одной стороны Usb-мама, с другой — папа, Без кнопок и индикации.
    Вставляешь последовательно со штатной клавиатурой, и в твоем распоряжении 101 клавиша для реализации интерфейса.
    В качестве обратной связи, можно, например, мигать клавиатурными светодиодами.
    Ну, и, конечно, нужна сервисная программка для аминистрирования/бэкапа паролей.


  1. dimsoft
    07.06.2016 10:03

    Для Keepass2Android есть плугин — K2A USB Keyboard смартфон прикидывается HID устройством и без драйверов вводит пароли


    1. Konachan700
      07.06.2016 10:06

      Нужен рут и модуль ядра. Плюс нахождение данных на смартфоне делает их угон простым делом — безопасность того же андроида или яблока под большим сомнением, а при сотне-другой приложений и вовсе стремится к нулю.


      1. aspid-d
        07.06.2016 12:40

        keepass2 же, пусть хоть заугоняются, без мастер пароля ловить там нечего.


  1. aspid-d
    07.06.2016 11:04

    update: реализация HID + hc-06 + приложение на мобилу. и вот вам безграничное количество паролей и удобный интерфейс


  1. Loki3000
    07.06.2016 11:13

    Немного не понял из статьи как поменять скомпрометированный пароль?


  1. eldarmusin
    07.06.2016 11:59

    В техническом плане это круто. Но нагорожено. Может просто придумать хороший алгоритм для паролей? Вот пример:


    1. Генерим общую фразу "Шла Саша по шоссе и сосала сушку" > ШСпшисс
    2. Вставляем спецсимволы "\n" и "&" на своё усмотрение > ШПп\nши&сс
    3. Добавляем префикс места (Нагатинская) и суффикс машины (Nr: 10205) / сервиса (Mail) > Н-яШПп\nши&сс10205M

    Конечно префиксы, суффиксы можно менять местами, ограничивать их 1им символом (второй буквой), спецсимволы можно опускать в случае недопустимости, номер машины и сервиса так же ограничивать.


    1. Konachan700
      07.06.2016 12:51

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


    1. mmMike
      07.06.2016 14:33

      Так и тянет привести цитату из "Похождения бравого солдата Швейка во время мировой войны"


      "На шестнадцатом пути стоит паровоз номер четыре тысячи двести шестьдесят восемь. Я знаю, у вас плохая память на цифры, а если вам записать номер на бумаге, то вы бумагу эту также потеряете. Если у вас такая плохая память на цифры, послушайте меня повнимательней. Я вам докажу, что очень легко запомнить какой угодно номер....."


      Когда мне предлагают подобные алгоритмы, то сразу это и вспоминается.


      Увы. После 2..3-х недельного отпуска где ни будь в Азии, лично я, даже не могу вспомнить какую из фраз использовал для пароля. Редки удается в отведенное количество попыток уложиться.


      1. eldarmusin
        07.06.2016 14:50

        Однако для каждого пароля не стоит создавать новую фразу, а использовать одну как шаблон которые дополняется данными по сервису.
        И кстати раз Вы запомнили "Похождения бравого солдата Швейка во время мировой войны" то считайте что уже пол дела сделано: "PbsSvvmv"


  1. eldarmusin
    07.06.2016 12:10

    И достаточно запомнить алгоритм и свою пасс фразу.
    Переведя этот пасс в латиницу, 4 сервиса оценили его прочность:


    1. howsecureismypassword.net: взлом обычным компом 4 квадрилиона лет
    2. passwordmeter.com: 153/200 баллов, малюсы пришли от цифр подряд, схожих букв подряд, букв в одинаковом регистре
    3. http://password-checker.online-domain-tools.com: взлом ботнетом за 13 триллионов лет, компом за 3 квантиллиона лет
    4. password.kaspersky.com: взлом макбук про за более 10000 веков, ботнетом за 9 а Тьянхе-2 за 5 лет взломает.


  1. madf
    07.06.2016 18:53

    Голосовал «да».
    Давно размышлял над подобной идеей и даже сделал один прототип на основе «Digispark Tiny» (которая включается прямо в USB), но реализация так дальше не пошла, т.к. есть одна проблема — это не безопасно (если забудешь это устройство и кто-то тупо считает в блокнот все пароли). Нужен какой-то механизм, позволяющий идентифицировать хозяина (в моём варианте «флешка паролей» должна быть всегда подключена к компьютеру, но пользоваться ей может только хозяин).
    В итоге продумывал и пробовал разные варианты: NFC, BLE (по расстоянию) или тупо ПО на телефоне с одним паролем для разрешения использования флешки…
    И главное, технически всё должно быть просто и дешево.)
    Пока так всё и повисло, т.к. на все эксперименты не хватает времени.


  1. dhtml
    07.06.2016 21:54

    Пора на кикстартер идти и деньюжки собирать! Миллиона полтора дадут за такое


  1. elfuegobiz
    08.06.2016 16:35

    YubiKey + KeePass