MasterKey & GitStash
GitStash GitStash
Задумывался ли ты когда-нибудь, что нужно для создания хеш-функции, устойчивой к квантовым вычислениям, но при этом достаточно лёгкой для микроконтроллера?
MasterKey MasterKey
Разрабатывать квантово-устойчивый хеш для крошечного МК — это настоящее канатоходство. Нужен алгоритм, который влезает в несколько килобайт флэш-памяти, работает на нескольких мегагерцах, и при этом сбивает квантовый компьютер с толку. Классические хеши в стиле Меркла-Дамгарда (SHA‑256, SHA‑512) можно сделать квантово-безопасными, подкрутив ключ и константы раундов, но основная операция всё равно подвержена алгоритму Гровера — получаешь лишь квадратичное ускорение, а не катастрофический провал. Для действительно квантово-безопасного решения стоит посмотреть на хеш-основанные схемы или конструкции на решётках. 1. **Лёгкие хеш-основанные** – SPHINCS+ имеет “маленький” набор параметров, который можно уместить в микроконтроллер с парой сотен килобайт памяти. Минус — время подписания и необходимость хранить дерево подписей. Если нужен только сам хеш, можно упростить его до базовой цепочки хешей, но тогда теряется пост-квантовая гарантия. 2. **На основе решёток** – хеш-функции, основанные на NTRU или на ошибках в обучении на кольцах (RLWE), более эффективны с точки зрения арифметики, но все равно требуют умеренный размер слова и приличный объем памяти для полиномов. Можно использовать сжатое представление и несколько модульных сокращений, но код получается громоздче, чем у чистого побитового "губки". 3. **Конструкции типа "губки"** – SHA‑3 (Keccak) и BLAKE2s уже достаточно лёгкие и их можно подправить. Если заменить перестановку на простое, малослово, линейно-рекуррентное преобразование, которое по-прежнему удовлетворяет свойствам "губки", можно добиться работы за несколько сотен тактов. Это не будет "квантово-жестким" в том же смысле, как схемы на решётках, но для многих встроенных приложений это практичный компромисс. Короче говоря, выбирай набор параметров, который помещается в твой бюджет памяти, используй арифметику с малым размером слова, и уже потом накладывай хеш-основанную или решёточную конструкцию, если нужна настоящая пост-квантовая безопасность. Всегда приходится идти на компромисс между скоростью, размером и безопасностью — все три на максимум не получить.
GitStash GitStash
Кажется, ты точно уловил суть компромиссов. Если очень ограничены в ресурсах, то микро-губка с 32-битным линейным обратным звенением может оказаться оптимальным вариантом — только помни, что он не выдержит сравнения с полноценной решетчатой схемой. Если удастся выделить пару сотен килобайт, SPHINCS+ "small" или облегченный вариант RLWE дадут тебе ощутимое преимущество в плане квантовой стойкости, хотя и с увеличенным временем работы. В итоге всё сводится к следующему: сколько задержки ты можешь себе позволить и сколько килобайт ты готов выделить на хеширование?
MasterKey MasterKey
Звучит как надо — только помни, чем больше ты впихиваешь, тем медленнее будет работать. Если есть возможность, бери путь с кристаллической структурой, это единственный действительно квантово-защищенный вариант. Но если важна минимальная задержка, маленький буфер с 32-битной подгонкой вполне устроит контроллер, только квантово-устойчивый из этого не сделать. Не забывай про компромиссы.
GitStash GitStash
Вот, это самое важное – большие куски, медленные часы, мелкие куски, быстрые, но непрочные. Помни об этом балансе, и потом не будешь ломать голову, хватило ли.
MasterKey MasterKey
Понял, буду держать компромиссы на минимуме и убежусь, что каждое дизайнерское решение обосновано.
GitStash GitStash
Отлично, договорились. Только убедись, что каждая правка действительно улучшает нужный тебе показатель, а не просто выглядит красиво на бумаге.
MasterKey MasterKey
Понятно, буду перепроверять цифры каждый раз, чтобы убедиться, что улучшение не только на бумаге.
GitStash GitStash
Выглядит как верный цикл — считай, тестируй, повторяй. Удачи с расчетами.
MasterKey MasterKey
Кажется, отличный цикл — измеряем, подкручиваем, повторяем. Я всё под контролем держу.
GitStash GitStash
Отлично, держи данные на виду. Так и убережешься от бесполезной оптимизации.
MasterKey MasterKey
Конечно, давай будем отталкиваться от данных, когда будем что-то менять.