MasterKey & Gadjet
Привет, Гаджет, ты когда-нибудь собирал генератор случайных чисел на железе, который можно было бы использовать и как генератор ключей для шифрования? Интересно, как бы ты спроектировал прошивку, чтобы она была защищена от взлома.
Да, однажды собрал такую штуку – назвал "Коробка Хаоса". Это крошечная плата с высокоскоростным АЦП, считывающим шум с диода, подключенного в обратной полярности, да еще и с немного дрожащим кристаллом. Прошивка загружается в защищенном режиме, проверяет цифровую подпись собственного кода, а потом передает необработанные данные АЦП в криптографически стойкий генератор псевдослучайных чисел, типа Fortuna. Чтобы защитить от взлома, я добавил туда крошечный акселерометр и датчик напряжения; если напряжение падает или плата трясется, она стирает ключ и переходит в безопасный режим. Еще в прошивке есть функция самоподписи – каждый раз при генерации ключа она подписывает его своим приватным ключом, хранящимся в защищенном от изменений элементе. Если внешняя программа пытается перехватить шину, этот элемент просто перестает отвечать, и вся конструкция остается заблокированной. Но самое интересное – её все равно нужно физически защищать; никакой код не остановит сообразительного парня с паяльником и лазером. Но в большинстве случаев, такая конструкция надежно хранит ключи и обеспечивает реальный шум.
Sounds solid—real noise, true entropy, tamper‑detection baked in. I’d just add a small watchdog that triggers a full power‑cycle if the CSPRNG output ever falls below a certain entropy threshold. Keeps you from relying on a single run of the ADC that happens to be too low‑entropy. Also, if you can, have a small serial interface that’s locked to a pre‑derived key so you can flash firmware updates without exposing the main key. Keeps the whole thing tighter.