Comments 151
А то уже думал что-то подобное на AVR-ке городить.
приватные ключи были «внутре» и не покидали устройства. бекапа в теории нет. делать-то что?
как вообще в таких устройствах решается проблема потери своих ключей после утраты устройства?
в голову приходит — дополнительный аппаратный копирователь — устройство с 2 USB портами (otg) и клавой для ввода пинкода. втыкаются 2 брелка, вводится пин код, брелок отдаёт все ключи, копирователь их засылает во второй брелок. второй брелок — в сейф.
кмк — безопасно, копирователь не имеет выхода в интернет, можно подобрать MCU с минимальными RAM/Flash — что бы он не был и в теории способен сохранить лишнего.
… если Вы потеряете этот ключ… — а что делать владельцу в этом случае?
В случае банк-клиентов: идете в банк, заново доказываете что вы это вы — и генерируется совершенно новый ключ.
В нашем случае — стреляетесь.
PS. ну да, как в анекдоте про Чапаева — "проклятый склероз, так же и расстрелять могут".
Неизвлекаемый ключ.
как вообще в таких устройствах решается проблема потери своих ключей после утраты устройства?
По уму — тем, что устройств (и ключей) — несколько. При утере одного достается запасное и дальше пользуемся им. Одновременно перегенерируя и заменяя утраченный ключ.
В тяжких случаях ключ на диске шифруется двумя другими ключами, которые закапываются под двумя разными дубами или кладутся в два разных сейфа. А компакт тогда можно смело копировать и хранить где угодно — восстановить исходный ключ можно только получив два других ключа, что требует участия нескольких человек.
Ну, вы же писали на золотые вербатимы? А нужно было на них. Диски же тоже нужно специальные подбирать. А если важная информация, то просто специальные использовать.
А недавно вот апгрейдил домашнюю машинку и решил «да подумаешь — 10 баксов» и взял в неё современный DVD-привод.
И вы знаете — перебрал все до единого диски, что были у меня в наличии — прочитались ВСЕ. Диски все эти годы хранились в двух мягких книжках для дисков.
До этого несколько лет назад пробовал перечитать их при помощи вдвое более дорогой компактной USB-читалки — практически ничего не читалось, так что попробуйте купить привод.
Лучше гравировать на платиновой пластине.
Компактный диск сдохнет очень быстро.
Тогда уж на искусственном сапфире.
Лучше гравировать на платиновой пластине.А вдруг наводнение, землетрясение, извержение вулкана? Так что надо еще для сохранности отправлять в космос. Погодите…
Ключ не настолько длинный, чтобы целый компакт диск тратить.
Так что:
1) Делим ключ на кусочки ну хотя бы по Шамиру. Соответствующая программа в любом дистрибутиве есть.
2) Кусочки печатаем на лазерном принтере, закатываем в ламинат, упаковываем в конверт и т.д. и т.п.
3) Все это закапывается под несколькими дубами, прячется на чердаках и в пещерах (не забываем убедиться, что нет слежки)
(1) Позволяет восстановить ключ, даже если некоторые кусочки утрачены. И позволит не раскрыть ключ, если только пара кусочков найдена
(2) Бумага и сажа тонера, в общем, неплохо храняться.
(3) А это уже просто для паранойи и прочей таинственности.
Бумага, кстати, ввода не хранится Сырость, тараканы, просто время. Тонер может обсыпаться, если бумага начнет разлагаться.
Перфокарты надёжнее простой бумаги. А можно металлическую пластину перфорировать, например золотуюили платиновую :)
Чем вы вообще диск замените, если нужна гарантия, что оно должно почитаться?
Ключи — он даже не мегабайты. Его можно просто хоть в бетоне отлить в виде букв метрового размера. Прочитается просто глазами.
Хоркруксы, которые мы заслужили.
Печатать что? Текст?
Нынче, пожалуй, лучше что-нибудь машинночитаемое. qr-код, например.
“The most secure plan is for each user to have two YubiKeys”
Коротко:«Используйте бэкап»
www.yubico.com/blog/backup-recovery-plan
А два разных ключа нельзя иметь? Когда один теряется, его отзываешь, пользуешься вторым и делаешь третий.
Подскажите, плиз, а сколько вообще ключей можно хранить на устройстве? Из текста я так понял что несколько, но сколько именно?
Кроме того, если на компе находится кейлогер, он залогирует открытый текст ещё до того, как текст пойдёт на шифрование в аппаратный ключ.
www.st.com/en/development-tools/stsw-stm32080.html
Благо один чел выложил исходники прошивки которую переписал, соотвественно надо было ее залить. А поскольку ST-Link у меня на руках не было, а прошить надо было «еще вчера» — пришлось поднимать boot ноги у контроллера и цепляться через UART.
Вариант конечно слегка экстремальный, но в сложных условиях имеет право на жизнь :)
Аппаратный ключ шифрования за 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 рублей, это не проблема.
Ну, "совсем" никак — это все-таки слишком сильно. Имхо если есть физический доступ к устройству, то взлом возможен — вопрос только в цене и количестве усилий.
В конце концов, можно кислотой стравливать чип слой за слоем. Но можно и тротила в корпус насовать. Но можно корпус вскрывать в жидком азоте. Но можно… ну вы поняли, это бесконечная битва :)
Через манипуляции с питанием, можно попытаться смотри сделать, но только если неправильно детектор питания в софте наполнен
По-моему глитчингом можно добиться неверного выполнения команд процессором, так что софтом тут не прикроешься.
Ну, и если мы про секурность говорим, то минимальное шифрование ключей тем же уникальным номером контроллера тоже рушит всю идею. Ну, прочитал ты ключ, а как номер контроллера узнаешь, чтобы понять, что прочитано?
Пока я не понимаю, как при правильной прошивке можно с какой либо повторяемостью обойти защиту. Делать стенд и год ждать, пока повезёт? Ну, как вариант. Но если ключи настолько важны, что их год ломать будут, то наверное, нужно использовать девайсы не за три, а за четыре доллара. Аналогично, если владелец такого важного ключа не сподобился при его утере сменить ключ, то, наверное, ему этот ключ не нужен.
ВНИМАНИЕ! Это очень важный этап, который не позволит человеку, который украл ваш ключ, вытащить из него секретную информацию.
Недавно была статья про то как легко сливается флешка с F1* мк :)
Можно глянуть на solokeys, там stm L4
Всю плату. Положить в коробку и залить. Эпоксидкой с присадками стекла и аллюминиевого порошка. Только это не поможет на самом деле, т.к не нужно извлекать плату — сверлятся дырки тонкими сверлами к пинам jtag, которые на плате выведены. Точки для сведения выбираются рентген-контролем или шлифовкой края в поисках углов платы и дальше от этих точек отмеряется.
Точки для сведения выбираются рентген-контролем или шлифовкой края в поисках углов платы и дальше от этих точек отмеряется
Таким образом, цена вскрытия возрастает в разы. В случае, если им защищены данные простого юзера, вскрытие вообще может оказаться нерентабельным.
Обычным феном с паяльной станции эпоксидка нагревается до 120-150 градусов, при этом она размягчается и легко послойно сковыривается отверткой. При нагреве по констистенции становится как очень густое желе, не надо ничего сверлить в ней.
Значит нужно добавить в смолу что-нибудь химически-активное, чтобы при нагреве до 120-150 градусов смола возгорелась, или, например, едкий дым начала выделять.
пайка припоем, который на этих температурах становится жидким
Надо чтобы ещё со смолой в химическую реакцию вступал. Иначе он останется на своём месте и при остывании припаяется обратно.
Да, мысль хорошая. Тогда надо, чтобы смола хорошо приставала к деталям. И детали делать на ножках, чтобы смола могла затечь под них.
Но чип нужно как-то уничтожить, даже если он отпаяется. Лучше перегрева — трудно что-то придумать, значит нужно что-то что возгорится.
Это все было еще в 80х годах прошлого века.
Сейчас самая модная тема — сделать сетку из проводников вокруг устройства, физическая конфигурация которой является уникальным кодом (набор значений емкостей и индуктивностей), с помощью которого симметрично кодируется-декодируется информация на чипе внутри сетки. И получается что при нарушении конфигурации или целостности сетки меняется этот код и информация становится невосстановимой.
Но против шлифования кристалла это конечно не поможет.
С другой стороны те люди, за данными которых так охотятся что готовы потратить десятки тысяч долларов на такой хак — вряд ли будут хранить ключи на STM32 за 3 доллара
Память самого устройства защищена от чтения, так что считать записанные в него ключи напрямую не получится.
STM32F1 взломан: blog.zapb.de/stm32f1-announcement
Посмотрим, когда опубликуют.
Если сильно страшно — не используйте сотую, используйте двухсотую.
Можно доработать прошивку, скрестить ежа с ужом (добавить код для чтения бесконтактных смарт-карт типа Mifare Plus) и хранить ключи на картах :)
У меня есть токен от WEB приложения iBank, точно название не помню, это интернет банк юр. лица. Подскажите его можно как то использовать, записывать свои ключи? Хочу по экспериментировать
А после такой манипуляции можно будет перезаписать флеш (обновить прошивку), пусть даже ценой потери ключей?
Зависит он настроек защиты, которые упоминался отдельно программатором. При максимальных уже никогда ничего не перешьёшь. Есть сочетание при котором чип можно только целиком стереть, но теоретически оно чуть менее надёжное (хотя сколько-либо повторяемых случаем взлома никогда представлено не было — редко на некоторых экземплярах с огромными проблемами что-то может быть.
Интересно, а если шифровать ключи в памяти STM32 используя пин и достаточно длинную случайную соль — это сильно поможет от препарирования? По идее должно. Другое дело — как защитить саму соль...
Зачем? В белом смысле STM с установленноц защитой не ломается никак. А если вам настолько заинтересуется ЦРУ, что будет готово шлифовать чип и читать прошивку электронным микроскопом, то этот ключ будет наименьшей из ваших проблем. Но и тогда есть недорогие чипы с некоторой защитой от такого метода взлома.
Ещё есть некий вопрос вы качестве генерируемых на самом устройстве ключей. Процессор очень слабенький, памяти мало, что там за генератор и проверка на качество генерируемых ключей не понятно. Я бы сказал, авто лучше генерировать на компьютере.
Спасибо за статью, идея очень интересная в плане недорогого перевода всех на аппаратные ключи, а также потенциального использования для аппаратного TPM модуля в самом компе, чтобы не могли вытащить ключи софта даже при атаках. Причём всё это на основе достаточно стандартного железа и с открытым кодом. Естественный вопрос по такому железу — для генерации энтропии нужен серьезный источник аппаратного шума, как с этим у STM32? Есть подобный проект OneRNG и идеальным выглядит их объединение в одном девайcе. Вторая проблема в возможных уязвимостях, которые могут разлочить флеш, о ней уже говорили. И конечно же совсем идеальным такой девайс сделает аппаратный ввод пин кода без связи с компьютером.
Результаты пока следующие:
- После нескольких (порядка 5) попыток таргет не определяется при подключении к USB, т.е. ни разу. Сначала грешил на аппаратные проблемы и кривость программатора, но нет, проблема точно не в этом, читается и пишется одно и то же.
- 2. Пересобрал проект заново, попытался прошить в BluePill на том же stm32f103cb, т.к. у нее тоже выведен USB. (Но здесь хоть BOOT0 переставляется джампером, а не пайкой.) Пока все также — не определяется и все тут. Думаю, что проблема именно в софте, продолжу ковырять позже.
Внимание: После каждой прошивки у таргета отваливается SWD. Т.е. она шьется только один раз. Для возвращения железки к жизни надо перекинуть BOOT0 с земли на +3V3 и стереть чип.
Я сразу шил в bluepill (программатор есть, но он единственный, его жалко :) ).
Только сперва надо прописать, что у него на борту 128к, а не 64, как думает openocd (и потому просто не пишет).
Ну и при конфигурировании (хм… а почему автор статьи просто вообще не приводит строчку с запуском ./configure, а сразу делает make? ) можно сказать, что таргет — BLUE_PILL. Непонятно, что именно это меняет, но выглядит круто.
Назначенный --vidpid=234b:0000 после прошивки виден в списке lsusb при подключении прошитой таблетки кабелем.
После:
./configure --vidpid=234b:0000 --target=BLUE_PILL
— всё отлично.«Знаете какая самая частая причина выгорания этого свистка? КЗ контактов разъема на корпус. Стяните эту алюминиевую байду и увидите сами, что контакты тупо лежат на алюминии, отделясь от него тончайшим слоем анодирования. Стоит чуть пошевелить, нажать, как анодирование царапается и дальше выходит волшебный дым. А еще там ноги кварца могут торчать и коротить за это же анодирование. Решение такое же тупое как и косяк. Открыть, оторвать все выступающие части, что не оторвать обмотать изолентой и закрыть.»
Та же угроза будет и для ключа.
Практически все чипы с али — подделка, чаще всего с разными проблемами, доверять им всякие ключи — довольно глупый способ выстрелить себе в ногу…
После этого будет работать вечно. У меня за пять лет из нескольких десятков, ни один не поломался.
Да там проблема не в качестве «китайских чипов», а в отвратительной схемотехнике. Нет защитных диодов на D+/D-, любой разряд статики или что-то в этом роде — и до свидания, пины. Поэтому и перестаёт определяться, кстати. В остальном МК остаётся вполне себе рабочим, только вот уже без USB. Лежат у меня два таких трупа…
да. Нужна специальная прошивка, например такая: https://github.com/gl-sergei/u2f-token
Поддержу предыдущего оратора, есть ли аналогичная прошивка для u2f?
Yubikey стоит ~4 т.р., альтернатива за $4 была бы просто великолепна ;)
Есть же разные задачи. Если вам нужно скрыть на своём компьютере домашнее порно, то, да, конечно, держите его на шифрованом диске. А если у вас набор ssh-ключей от всяческих серверов и вам необходимо периодически ходить на эти сервера с разных компьютеров, то шифрованый диск будет крайне неудобен, а такой ключик — наоборот, самое то.
Если вы сохраните ключ хоть на трижды шифрованном диске — он все равно будет доступен для чтения (системе/вирусам/хакерам) как только вы откроете этот диск.
и по какой-то статье я перепрошивал этот стлинк без второго замкнув на плате две площадки.
или всетаки второй программатор был но не припаивался а просто друг в друга стандартным разъемомо подключались а потом замыкались контакты на плате. Давно это было уже и не вспомнить точно
Аппаратный ключ шифрования за 3$ — возможно ли это?