Как стать автором
Обновить

Аппаратный ключ шифрования за 3$ — возможно ли это?

Время на прочтение10 мин
Количество просмотров68K
Всего голосов 151: ↑151 и ↓0+151
Комментарии151

Комментарии 151

Полез заказывать себе еще пару программаторов к уже имеющимся (жалко эти на эксперименты).

Не обязательно программатор. Оно отлично прошивается в blue pill.
(конечно, неудобно, что её надо к компьютеру подключать шнурком, а не напрямую. Но "на пощупать" хватит!)

клевая статья, автор молодец! Надо будет попробовать
Спасибо. Спасибо. Спасибо.
А то уже думал что-то подобное на AVR-ке городить.
«Теперь поговорим немного о том, что будет еслы Вы потеряете этот ключ» всегда интересовало — а что делать владельцу в этом случае?
приватные ключи были «внутре» и не покидали устройства. бекапа в теории нет. делать-то что?

как вообще в таких устройствах решается проблема потери своих ключей после утраты устройства?

в голову приходит — дополнительный аппаратный копирователь — устройство с 2 USB портами (otg) и клавой для ввода пинкода. втыкаются 2 брелка, вводится пин код, брелок отдаёт все ключи, копирователь их засылает во второй брелок. второй брелок — в сейф.

кмк — безопасно, копирователь не имеет выхода в интернет, можно подобрать MCU с минимальными RAM/Flash — что бы он не был и в теории способен сохранить лишнего.
Прям в статье есть импорт ключей. Никто не мешает генерить ключи на доверенной машине и там же их копировать на резервный носитель с шифрованной ФС.
и там же их копировать на резервный носитель с шифрованной ФС

или сконвертировать в QR-код и распечатать

Или держать отдельную холодную машину именно для этой задачи, благо, в 2020 году это не очень затратно (малина + две флэшки, или старый неттоп в примерно аналогичной конфигурации)
… если Вы потеряете этот ключ… — а что делать владельцу в этом случае?

В случае банк-клиентов: идете в банк, заново доказываете что вы это вы — и генерируется совершенно новый ключ.
В нашем случае — стреляетесь.
PS. ну да, как в анекдоте про Чапаева — "проклятый склероз, так же и расстрелять могут".
Неизвлекаемый ключ.

как вообще в таких устройствах решается проблема потери своих ключей после утраты устройства?

По уму — тем, что устройств (и ключей) — несколько. При утере одного достается запасное и дальше пользуемся им. Одновременно перегенерируя и заменяя утраченный ключ.

т.е. вы имеете в виду несколько равноправных сертификатов на нескольких токенах?

Плюс-минус оговорки под конкретный случай — да.

Дубликат ключа пишется на компакт диск. Компакт диск запечатывается в пластиковый конверт (как у курьеров), на конверте ставится печать и подпись. Все закапывается под заветным дубом. Ну, или кладется в сейф. В случае утраты девайса, компакт диск откапывается или достается из сейфа и шьется в новый давайс (или просто все тайнаы расшифровываются по старинке). Пластиковый конверт позволяет убедиться, что враги не украли ключ теменной ночью.
В тяжких случаях ключ на диске шифруется двумя другими ключами, которые закапываются под двумя разными дубами или кладутся в два разных сейфа. А компакт тогда можно смело копировать и хранить где угодно — восстановить исходный ключ можно только получив два других ключа, что требует участия нескольких человек.
К сожалению, качество современных компакт дисков желает оставлять лучшего. Большинство дисков, записанных мною в период 2000-2005 неработоспособно. И ведь специально подороже брал… и разных вендоров… И хранил вроде нормально.
Кстати да — старые диски плохо читаются, а всего-то прошло несколько лет.
Не помню где читал, но срок жизни CD измеряется годами. Что-то поменьше 20 лет. Дальше +- качество производителя.

Ну, вы же писали на золотые вербатимы? А нужно было на них. Диски же тоже нужно специальные подбирать. А если важная информация, то просто специальные использовать.

Не знаю что за золотые вебратимы. Обычные диски я брал, и вебратимы в том числе. А инфа — так, личный фотоархив, ничего сверхсуперважного.
Из максимально совместимого с существующими приводами, но при этом (сравнительно) долговечного — есть M-Disc и те же «золотые вербатимы». Вот тут были тесты с искусственным состариванием. Реальным прорывом был Syylex GlassMasterDisc, но, насколько я знаю, в серийное производство они так и не попали, да и сайт уже мёртв.
Диски у меня тоже крякнулись. А вот самые первые фотки с SD карты 128Мб от фотика, с 2004 года, вполне себе живы. Специально не трогаю ничего, интересно сколько лет ещё это будет храниться. Может и меня переживёт.

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

Сам так думал ещё пару месяцев назад.
А недавно вот апгрейдил домашнюю машинку и решил «да подумаешь — 10 баксов» и взял в неё современный DVD-привод.
И вы знаете — перебрал все до единого диски, что были у меня в наличии — прочитались ВСЕ. Диски все эти годы хранились в двух мягких книжках для дисков.
До этого несколько лет назад пробовал перечитать их при помощи вдвое более дорогой компактной USB-читалки — практически ничего не читалось, так что попробуйте купить привод.
Тонкие приводы склонны насасывать пыль, можно просто попробовать продуть линзовый блок.
Старые диски он прямо с первого дня читать отказался. Недавно пробовал им хоть что-то прочитать — не читает вообще ничего, диск раскручивает и всё.
Всё это время лежал на полке, успел прочитать им 3 DVD-диска за всё время.
Попробую продуть, спасибо за совет.

Лучше гравировать на платиновой пластине.
Компактный диск сдохнет очень быстро.

Тогда уж на искусственном сапфире.

Лучше гравировать на платиновой пластине.
А вдруг наводнение, землетрясение, извержение вулкана? Так что надо еще для сохранности отправлять в космос. Погодите…
Не так давно вычитал три десятка дисков, записанных 15 лет назад. Хранились просто на даче в закрытом ящике стола. Без ошибок прочитались все, кроме одного (вероятно, изначально информация записалась со сбоем).

Ключ не настолько длинный, чтобы целый компакт диск тратить.
Так что:
1) Делим ключ на кусочки ну хотя бы по Шамиру. Соответствующая программа в любом дистрибутиве есть.
2) Кусочки печатаем на лазерном принтере, закатываем в ламинат, упаковываем в конверт и т.д. и т.п.
3) Все это закапывается под несколькими дубами, прячется на чердаках и в пещерах (не забываем убедиться, что нет слежки)


(1) Позволяет восстановить ключ, даже если некоторые кусочки утрачены. И позволит не раскрыть ключ, если только пара кусочков найдена
(2) Бумага и сажа тонера, в общем, неплохо храняться.
(3) А это уже просто для паранойи и прочей таинственности.

Диски есть хорошие для архивного хранения и стоят копейку. Чем вы вообще диск замените, если нужна гарантия, что оно должно почитаться? Ничего иного человечество не придумало. Только специальные ленты магнитные, но цена и требуют специальных условий хранения. Конверт и ламинат это оверкил не автоматизировано. А диск достал и работай.
Бумага, кстати, ввода не хранится Сырость, тараканы, просто время. Тонер может обсыпаться, если бумага начнет разлагаться.

Перфокарты надёжнее простой бумаги. А можно металлическую пластину перфорировать, например золотуюили платиновую :)

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

Ключи — он даже не мегабайты. Его можно просто хоть в бетоне отлить в виде букв метрового размера. Прочитается просто глазами.

Магнитооптика. Стримеры.

Хоркруксы, которые мы заслужили.

Печатать что? Текст?
Нынче, пожалуй, лучше что-нибудь машинночитаемое. qr-код, например.

И так и так. И qr-кодом, и просто hex записью шрифтом побольше и в ASCII-armored формате.

Разделяемый секрет Шамира же. 6 ключей, например. Для восстановления исходного достаточно исходных трех.
На сайте yubico:
“The most secure plan is for each user to have two YubiKeys”
Коротко:«Используйте бэкап»

www.yubico.com/blog/backup-recovery-plan
Мне тоже сразу пришла в голову такая мысль. Развернулся на стуле, коленкой «свернул» ключ. Всё, приехали.

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

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

как вообще в таких устройствах решается проблема потери своих ключей после утраты устройства?

Можно иметь несколько устройств с одним identity и для каждого иметь бумажный бекап под деревом.
Спасибо! Крайне интересно!!!

Подскажите, плиз, а сколько вообще ключей можно хранить на устройстве? Из текста я так понял что несколько, но сколько именно?
Спасибо, очень интересно! А не подскажете, где почитать про хранение на таком устройстве многочисленных паролей от интернет-ресурсов?
НЛО прилетело и опубликовало эту надпись здесь
Шикарно! Благодарю! Пошел заказывать…
А под Windows есть?
В него бы еще конечно зацепить к примеру ридер для SD карты, чтобы дополнительно ПО таскать на нем. В этом случае было оптимально таскать такое для подключения в не доверенных местах. Но подозреваю ПО для работы с ним только в том же linux можно поставить и по умолчанию его не будет в том числе и в windows.
НЛО прилетело и опубликовало эту надпись здесь
эм. Вот у меня комп с виндой я хочу по ssh попасть на хост при помощи ключа записанного на такой токен. Ваши действия?

Прописать в конфиге gnupg (в винде — gpg4win), чтобы он начал прикидываться демоном ключей для putty, и, собственно, использовать putty.


Я так на github коммиты пушу, правда без хардварного токена :3

пойдет
Спаять в один корпус это чудо, usb-хаб и флешку — отличная штука получится. Или — весь нужный софт — на флешке, или — флешка-прикрытие.
Вы опасаетесь уязвимостей в ОС и кейлогеров, но всецело доверяете чипу STM32?

Кроме того, если на компе находится кейлогер, он залогирует открытый текст ещё до того, как текст пойдёт на шифрование в аппаратный ключ.
Контроллер не подключен к интернету. Даже если в нем закладка есть — кто будет ее эксплуатировать, и как?
Утеряли токен, поменяли ключи. Это конечно не отрицает возможность хакнули пока меня не было, но все же. Плюс как всегда помним что стоимость защитных мер не должна превышать стоимость защищаемой информации :))
В STM32F103 микроконтроллере, который обычно используется в программаторе, есть только встроенный UART бутлоадер, но не DFU.
Ну им и прошить как вариант, нужен будет только USB-UART TTL, из ардуины сделать например.
Нужно подтянуть пин boot0 к VCC и boo1 к GND, а для этого нужно отпаять ножку микроконтроллера или перерезать дорожку. А потом все вернуть обратно. Не факт, что так будет проще.
Я проделывал это на одном дисплее с тачскрином для расберри. Контроллер тачскрина был сделан на STM32 и выяснилось что китайская прошивка контроллера кое-как работает с rasbian, но с Win10 IoT она не совместима (не посылает тапы как тапы, а шлет как касания).
Благо один чел выложил исходники прошивки которую переписал, соотвественно надо было ее залить. А поскольку ST-Link у меня на руках не было, а прошить надо было «еще вчера» — пришлось поднимать boot ноги у контроллера и цепляться через UART.
Вариант конечно слегка экстремальный, но в сложных условиях имеет право на жизнь :)
Меня смущает, что в китайских ст-линках такое стоит, при этом оно успешно обновляет себе прошивку по USB.
Сдается мне там просто продуманная STM прошивка, например сначала льется в память (или неиспользуемую часть флеша), а потом из памяти все льется во флеш силами самого контроллера.
Скорей всего там кастомный USB-бутлоадер, который находиться в начале flash-памяти, и занимает несколько килобайт. Теоретически, можно найти или отреверсить протокол обновление прошивки st-link и модифицировать исходники Gnuk для совместимости с этим бутлоадером. Но это тянет на отдельную статью, а может быть — и не на одну. И бутлоадер занимает драгоценную flash-память, которая сейчас используеться и для сохранения ключей.
Аппаратный ключ шифрования за 3$ — возможно ли это?

Хочу больше статей с подобными заголовками и ответом "нет" :)

Единственно — аппаратно поддерживается генерация RSA ключей до 2048 бит. Если нужно 4096 — ключ прийдется генерировать на компьютере

насколько я понял, Gnuk поддерживает и ECC. В ECC точно не должно быть проблем с генерацией, и криптостойкость на уровне RSA-3072 (для 256-битных ключей).

Разумеется, за 3$ нельзя достичь секьюрности уровня ключей за 200+ долларов. Однако, собранный девайс можно рассматривать как ключ начального уровня. <..> В любом случае, использование такого устройства поднимет безопасность как минимум на уровень выше. Так что это отличный способ начать использовать аппаратные ключи.

С этим не спорю.


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

А вот это, к сожалению, не верно; конкретно для этого чипа обойти защиту довольно легко: https://medium.com/@LargeCardinal/how-to-bypass-debug-disabling-and-crp-on-stm32f103-7116e7abb546

конкретно для этого чипа обойти защиту довольно легко

Это несколько не так. На медиуме расписано, как легко и просто обойти защиту "отключить пины SWD", но при включенном RDP загрузчик не работает (точнее, не работают никакие способы чтения flash). Кажется, возможна атака, описанная Обермаером (ссылка в медиуме), но у неё есть куча допущений (описаны в работе этого самого Обермаера).
Также, вероятно, работает атака с глитчем питания (вот эта).


Но говорить, что всё так легко и просто, я бы не стал...

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

Гхм… Там написан вариант, когда прошивку писал и зазищал криворукий ардуинщик, который даже не удосужился заглянуть в соответствующий раздел мануала процессора. Тогда есть даже еще более простой способ через манипуляцию с сигналом сброса и правильной настройкой программатора. Если защита прошивкой настроек, то включить ее нельзя вообще никак. Причем, можно даже загрузчик разрешать, но прошивка останется защищенной. Через манипуляции с питанием, можно попытаться смотри сделать, но только если неправильно детектор питания в софте наполнен. Что тоже признак криворукости. Если же выставить биты защиты по максимуму, то не ломается никак. Даже через манипуляции питанием.
Соответственно, если хочется безопасности, то нужно неделя и ручками после прошивки выставить максимальный уровень защиты. Больше такой процессор не перешлёшь, но и ваши никак и никогда до секретов не доберутся. При стоимости платы в 100 рублей, это не проблема.

Ну, "совсем" никак — это все-таки слишком сильно. Имхо если есть физический доступ к устройству, то взлом возможен — вопрос только в цене и количестве усилий.
В конце концов, можно кислотой стравливать чип слой за слоем. Но можно и тротила в корпус насовать. Но можно корпус вскрывать в жидком азоте. Но можно… ну вы поняли, это бесконечная битва :)


Через манипуляции с питанием, можно попытаться смотри сделать, но только если неправильно детектор питания в софте наполнен

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

Правильно. Поэтому установка максимального уровня защиты аппаратными битами, правильная настройка детектора питания и контроль стабильности кварцевого генератора и PLL. Неправильная прошивка ломается. Правильная — нет. И посмотрю я, как вы его заставите неправильный код выполнять. Т.е. теоретически возможно, но вероятность такая, что можно сразу начинать перебором ключ подбирать. Или тогда уже радиоактивным излучением точечно облучать в попытках снять биты защиты, как серьезные конторы в таких случаях делают. Но там и от этого в топологии защита есть. Глитчинг уже 50 лет известен и используется от разведок до промышленного шпионажа. И давно все приличные контроллеры имеют меры защиты от него. Тем более, что тут нам нужно не один из тысячи контроллеров с одинаковыми прошивками взломать, каждый из которых проводному реагирует на глитчинг, а один конкретный.
Ну, и если мы про секурность говорим, то минимальное шифрование ключей тем же уникальным номером контроллера тоже рушит всю идею. Ну, прочитал ты ключ, а как номер контроллера узнаешь, чтобы понять, что прочитано?
Но этот загрузчик отключается аппаратными битами защиты. Дальше можно играть со сбросом и питанием в попытках стартануть отключенный загрузчик. Но фокус в том, что другие биты защиты, как я помню, запрещают загрузчику читать и писать флэш. Так что нужно не просто ждать, когда звёзды станут так, что загрузчик стартанёт, нужно ещё чтобы он получил доступ к флэшу. Проще в лотерею играть или просто мпытаться ключ угадать.
Пока я не понимаю, как при правильной прошивке можно с какой либо повторяемостью обойти защиту. Делать стенд и год ждать, пока повезёт? Ну, как вариант. Но если ключи настолько важны, что их год ломать будут, то наверное, нужно использовать девайсы не за три, а за четыре доллара. Аналогично, если владелец такого важного ключа не сподобился при его утере сменить ключ, то, наверное, ему этот ключ не нужен.
Проблема именно этого решения в дешевизне железа. Есть немало МК которые слить от не просто до невозможно (в разумных пределах)
Спасибо для статью! Заказал пару таких программаторов, как приедут — попробую собрать такой девайс. Это будет интересный эксперимент и хороший опыт.
ВНИМАНИЕ! Это очень важный этап, который не позволит человеку, который украл ваш ключ, вытащить из него секретную информацию.

Недавно была статья про то как легко сливается флешка с F1* мк :)
Можно глянуть на solokeys, там stm L4
видимо, ответом на это должно быть залитие микросхемы злючей эпоксидкой с толчёным стеклом, чтобы извлечь её из алюминиевого корпуса, не разрушив попутно флешку, не было возможности.
Можно насчет эпоксидки поподробнее? Чем именно можно было бы залить?

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

Точки для сведения выбираются рентген-контролем или шлифовкой края в поисках углов платы и дальше от этих точек отмеряется

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

Проще поставить контроллер 2xx, где защита на порядок серьезнее за те же деньги. Но неуклонно быть уверенным, что прошивка написана правильно.
Можно немного подробнее про 2xx?
В серияз STM32F2 и F3 есть замены для 32F1. Во многих случая даже даже прошивка работает. Там гораздо совершеннее механизмы защиты. Но всё равно прошивка должна быть правильно написана.
я бы всё-таки в эпоксидку мешал только диэлектрик (поэтому и подумал про стекло). Ещё с песком можно смешать. Сильно повышает вероятность, что попытка выдрать плату закончится необратимым повреждением флэша, и делает сверление крайне геморройным.
поэтому нужно не сверлить, а фрезеровать
Мне приходилось разбирать приборы, залитые эпоксидкой.
Обычным феном с паяльной станции эпоксидка нагревается до 120-150 градусов, при этом она размягчается и легко послойно сковыривается отверткой. При нагреве по констистенции становится как очень густое желе, не надо ничего сверлить в ней.

Значит нужно добавить в смолу что-нибудь химически-активное, чтобы при нагреве до 120-150 градусов смола возгорелась, или, например, едкий дым начала выделять.

Это уже было, и пайка припоем, который на этих температурах становится жидким, и в крупных приборах были встроенные ножи, которые при неправильном разборе корпуса слетали с фиксаторов и срезали с плат все компоненты. Говорят, что ещё были ампулы с кислотами, чтобы убить при разборке определённые чипы.
пайка припоем, который на этих температурах становится жидким

Надо чтобы ещё со смолой в химическую реакцию вступал. Иначе он останется на своём месте и при остывании припаяется обратно.

Так детали со смолой и снимут, когда очищать будут.

Да, мысль хорошая. Тогда надо, чтобы смола хорошо приставала к деталям. И детали делать на ножках, чтобы смола могла затечь под них.
Но чип нужно как-то уничтожить, даже если он отпаяется. Лучше перегрева — трудно что-то придумать, значит нужно что-то что возгорится.

Лучше тогда аккумулятор поставить и сжечь импульсом, но вообще вы изобретаете велосипед :)
Это все было еще в 80х годах прошлого века.
Сейчас самая модная тема — сделать сетку из проводников вокруг устройства, физическая конфигурация которой является уникальным кодом (набор значений емкостей и индуктивностей), с помощью которого симметрично кодируется-декодируется информация на чипе внутри сетки. И получается что при нарушении конфигурации или целостности сетки меняется этот код и информация становится невосстановимой.
Это что-то из разряда кодовых замков из 80х, где в ключе находилась вторая половина колебательного контура?
Только контуров много и они все запаяны внутри корпуса чипа. Ну и их взаимное влияние тоже учитывается. Малейшее изменение характеристик или смещение одного контура относительно другого и код, собранный из показаний АЦП контуров, меняется.
Вангую, что на этот клубок из контуров будет влиять что угодно, от поднесенной руки (или металла) до температуры окружающего воздуха. Это учтено?
Внешний экран, соединённый с корпусом, наверняка от такого защитит.
Положив внутрь другой катушки можно относительно легко снять характеристику
Методы защиты разные бывают, особо ушлые ребята высверливают пины SWD из чипов или сжигают волосок идущий от кристалла к пину (это в зависимости от конструкции контроллера конечно)
Но против шлифования кристалла это конечно не поможет.
С другой стороны те люди, за данными которых так охотятся что готовы потратить десятки тысяч долларов на такой хак — вряд ли будут хранить ключи на STM32 за 3 доллара
Память самого устройства защищена от чтения, так что считать записанные в него ключи напрямую не получится.

STM32F1 взломан: blog.zapb.de/stm32f1-announcement
Пока ещё не понятно, что это. Кто-то зарезервировал код под себя. Отключайте jtag/swd битами защиты, дублируйте отключение в коде и правольно настраивайте контроль питания. Тогда полный взлом невозможен. Что-то где-то на каких-то экземплярах при каких-то условиях…
Посмотрим, когда опубликуют.
Если сильно страшно — не используйте сотую, используйте двухсотую.

Можно доработать прошивку, скрестить ежа с ужом (добавить код для чтения бесконтактных смарт-карт типа Mifare Plus) и хранить ключи на картах :)

Mifare Plus вроде не умеет в ассиметричную криптографию

У меня есть токен от WEB приложения iBank, точно название не помню, это интернет банк юр. лица. Подскажите его можно как то использовать, записывать свои ключи? Хочу по экспериментировать

Я правильно понял что если Вы потеряете этот ключ это конец всему?
Почему же сразу «конец»? Это начало новых приключений!
PS: нужен backup…
Так же, как если удалить ssh ключ на диске (например, сдох диск).
То есть, если нет резервной копии или других вариантов, то это «конец всему».

А после такой манипуляции можно будет перезаписать флеш (обновить прошивку), пусть даже ценой потери ключей?

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

Интересно, а если шифровать ключи в памяти STM32 используя пин и достаточно длинную случайную соль — это сильно поможет от препарирования? По идее должно. Другое дело — как защитить саму соль...

Зачем? В белом смысле STM с установленноц защитой не ломается никак. А если вам настолько заинтересуется ЦРУ, что будет готово шлифовать чип и читать прошивку электронным микроскопом, то этот ключ будет наименьшей из ваших проблем. Но и тогда есть недорогие чипы с некоторой защитой от такого метода взлома.

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

Да, это я быстро и неподумавши написал.


На самом деле я думал про что-то вроде PBKDF2 с большим количеством итераций, но это для слабого процессора так себе идея. Да и при только цифровом пароле особого смысла это не имеет — отбрутфорсить все равно просто.

Ещё есть некий вопрос вы качестве генерируемых на самом устройстве ключей. Процессор очень слабенький, памяти мало, что там за генератор и проверка на качество генерируемых ключей не понятно. Я бы сказал, авто лучше генерировать на компьютере.

Спасибо за статью, идея очень интересная в плане недорогого перевода всех на аппаратные ключи, а также потенциального использования для аппаратного TPM модуля в самом компе, чтобы не могли вытащить ключи софта даже при атаках. Причём всё это на основе достаточно стандартного железа и с открытым кодом. Естественный вопрос по такому железу — для генерации энтропии нужен серьезный источник аппаратного шума, как с этим у STM32? Есть подобный проект OneRNG и идеальным выглядит их объединение в одном девайcе. Вторая проблема в возможных уязвимостях, которые могут разлочить флеш, о ней уже говорили. И конечно же совсем идеальным такой девайс сделает аппаратный ввод пин кода без связи с компьютером.

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

Не знаете, есть ли документация как он организован? У OneRNG по моему шум диода + шум радиомодуля.

НЛО прилетело и опубликовало эту надпись здесь
Кажется, тут используется генератор «neug». Собрать надежный шум на микроконтроллере не очень большая проблема. Например, можно снимать значение напряжения с пина, который висит в воздухе. Полученный шум нужно будет почистить, но добиться прохождения статистических тестов думаю под силу. Единственное — большой скорости генерации случайных чисел врядли получиться добиться. Но это и не критично.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за статью, сегодня вечером попытался повторить, найдя пару китайских программаторов.
Результаты пока следующие:
  1. После нескольких (порядка 5) попыток таргет не определяется при подключении к USB, т.е. ни разу. Сначала грешил на аппаратные проблемы и кривость программатора, но нет, проблема точно не в этом, читается и пишется одно и то же.
  2. 2. Пересобрал проект заново, попытался прошить в BluePill на том же stm32f103cb, т.к. у нее тоже выведен USB. (Но здесь хоть BOOT0 переставляется джампером, а не пайкой.) Пока все также — не определяется и все тут. Думаю, что проблема именно в софте, продолжу ковырять позже.

Внимание: После каждой прошивки у таргета отваливается SWD. Т.е. она шьется только один раз. Для возвращения железки к жизни надо перекинуть BOOT0 с земли на +3V3 и стереть чип.

Я сразу шил в bluepill (программатор есть, но он единственный, его жалко :) ).


Только сперва надо прописать, что у него на борту 128к, а не 64, как думает openocd (и потому просто не пишет).
Ну и при конфигурировании (хм… а почему автор статьи просто вообще не приводит строчку с запуском ./configure, а сразу делает make? ) можно сказать, что таргет — BLUE_PILL. Непонятно, что именно это меняет, но выглядит круто.
Назначенный --vidpid=234b:0000 после прошивки виден в списке lsusb при подключении прошитой таблетки кабелем.

Автор забыл написать про configure) Спасибо
Пин сброса попробуйте подключить к программатору. SWD для нормальной работы требует сброса.
Пока не переконфигурировал с явным указанием того, что это «Blue pill» — была точно такая же история.
После:
./configure --vidpid=234b:0000 --target=BLUE_PILL
— всё отлично.
По поводу ST-LINK, таких, как автор использовал, есть одно замечание, которое хорошо описано в easyelectronics.ru/malenkaya-xitrost.html
«Знаете какая самая частая причина выгорания этого свистка? КЗ контактов разъема на корпус. Стяните эту алюминиевую байду и увидите сами, что контакты тупо лежат на алюминии, отделясь от него тончайшим слоем анодирования. Стоит чуть пошевелить, нажать, как анодирование царапается и дальше выходит волшебный дым. А еще там ноги кварца могут торчать и коротить за это же анодирование. Решение такое же тупое как и косяк. Открыть, оторвать все выступающие части, что не оторвать обмотать изолентой и закрыть.»
Та же угроза будет и для ключа.
ну так, дополнительная механическая защита :)
Даже с доработкой, всё равно эти свистки помирают. Просто перестают определяться через некоторое время.
Практически все чипы с али — подделка, чаще всего с разными проблемами, доверять им всякие ключи — довольно глупый способ выстрелить себе в ногу…
Во-первых, помыть нужно спиртом обязательно свисток. Они говном каким-о паяны и отчаянно окисляются. Во-вторых, обмотать скотчем края, где разъёмы.
После этого будет работать вечно. У меня за пять лет из нескольких десятков, ни один не поломался.
Промывал, вставлял прокладочки из лакоткани. Всё равно сдох без всяких явных причин. Качество китайских чипов — лотерея… Так что перешёл на нормальные ст-линки из Компэла — этих несколько штук, работают.

Да там проблема не в качестве «китайских чипов», а в отвратительной схемотехнике. Нет защитных диодов на D+/D-, любой разряд статики или что-то в этом роде — и до свидания, пины. Поэтому и перестаёт определяться, кстати. В остальном МК остаётся вполне себе рабочим, только вот уже без USB. Лежат у меня два таких трупа…

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

Поддержу предыдущего оратора, есть ли аналогичная прошивка для u2f?
Yubikey стоит ~4 т.р., альтернатива за $4 была бы просто великолепна ;)

Ещё бы клавиатуру для пин-кода…
Есть проект, где на пины, которые осталить от программатора, приделывают кнопку подтверждения.
Думаю, можно попробовать за программировать какой нибудь патерн для этой кнопки.

В стиле стим-панка: rotary encoder и наклейка как циферблат от сейфа. Но пин код надо вводить на самом ключе, это факт.

Пардон, я немного обычный пользователь, и поэтому вопрос: а разве держать все скрытое на зашифрованном в VeraCrypt диске под сильным паролем нельзя? Используя к тому же двойное сокрытие, так как от применения терморектального криптоанализатора не спасет ни пароль, ни этот чудо-девайс.

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

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

Так задница всё равно целой не останется. И голова скорее всего тоже. На случай, если придут люди с паяльником — нужно готовиться играть в камикадзе.

Плата сломается, а чип — скорее всего останется целым. На ютубе можно найти много видосиков по восстановлению данных с ломаных флешек…
Нужно взять себя в руки(а когда в дверь постучали, это трудновато), и сломать от души :) На самом деле, довольно легко можно разрушить чип напрочь если просто проткнуть его ножом(выравниваем нож ровно по середине и с силой бьем по рукоятке ножа)
А ключ для veraCrypt на этом свистке.
не помню точно но нужно было атмегу8 воскресить после неудачной установки фьюзов
и по какой-то статье я перепрошивал этот стлинк без второго замкнув на плате две площадки.
или всетаки второй программатор был но не припаивался а просто друг в друга стандартным разъемомо подключались а потом замыкались контакты на плате. Давно это было уже и не вспомнить точно
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории