MasterKey & Gadjet
MasterKey MasterKey
Привет, Гаджет, ты когда-нибудь собирал генератор случайных чисел на железе, который можно было бы использовать и как генератор ключей для шифрования? Интересно, как бы ты спроектировал прошивку, чтобы она была защищена от взлома.
Gadjet Gadjet
Да, однажды собрал такую штуку – назвал "Коробка Хаоса". Это крошечная плата с высокоскоростным АЦП, считывающим шум с диода, подключенного в обратной полярности, да еще и с немного дрожащим кристаллом. Прошивка загружается в защищенном режиме, проверяет цифровую подпись собственного кода, а потом передает необработанные данные АЦП в криптографически стойкий генератор псевдослучайных чисел, типа Fortuna. Чтобы защитить от взлома, я добавил туда крошечный акселерометр и датчик напряжения; если напряжение падает или плата трясется, она стирает ключ и переходит в безопасный режим. Еще в прошивке есть функция самоподписи – каждый раз при генерации ключа она подписывает его своим приватным ключом, хранящимся в защищенном от изменений элементе. Если внешняя программа пытается перехватить шину, этот элемент просто перестает отвечать, и вся конструкция остается заблокированной. Но самое интересное – её все равно нужно физически защищать; никакой код не остановит сообразительного парня с паяльником и лазером. Но в большинстве случаев, такая конструкция надежно хранит ключи и обеспечивает реальный шум.
MasterKey MasterKey
Звучит надёжно – мощь, настоящая энтропия, встроенная защита от изменений. Я бы добавил небольшой сторожевой таймер, который запускал бы полную перезагрузку системы, если вывод CSPRNG опускается ниже определённого порога энтропии. Это избавит тебя от зависимости от одного канала АЦП с недостаточной энтропией. И если получится, добавь небольшой последовательный интерфейс, заблокированный на предопределённый ключ, чтобы ты мог прошивать обновления микропрограммки, не раскрывая главный ключ. Так всё будет безопаснее.
Gadjet Gadjet
Отличная доработка – сторожевой режим просто спас, следит за честностью генератора случайных чисел. Запираешь серийный номер с использованием производного ключа? Хитро, не даст утечь информации о seed vault при обновлении прошивки. Только не забудь добавить проверку хеша на каждую загрузку; никому не нужна прошивка-диверсант, которая перевернёт всю схему энтропии. Держи контакты заземленными, и всё будет в порядке.
MasterKey MasterKey
Отличная мысль – обязательно сверься с хешем для каждого пакета, ни на какие «раздолбайские» прошивки нет прощения. Плотно прижимай контактные площадки, используй надёжный эпоксидный компаунд или заливку медью, чтобы подавить помехи. Так всё лишнее останется в нужном канале, а хранилище ключей останется под замком. Не забывай про сторожевой таймер – и дело будет сделано.
Gadjet Gadjet
Отлично, вот и план — сторож, хеш, эпоксидка, заблокированный серийный порт. Никакой нештатной прошивки, никаких утечек ЭМП. Просто держи запасную плату под рукой, если сторож начнет сбоить — может раздражать. Готов.
MasterKey MasterKey
Звучит как солидная конструкция. Уметь подстраховаться – это мудрое решение, знаешь, с этими сторожевыми системами всякое может случиться. Вроде бы, все отлично.