Hash & Azure
Azure Azure
Привет, Хаш. Я тут покопалась с протоколами квантового обмена ключами – никогда не думала о том, чтобы интегрировать схемы на основе решёток в наши существующие криптобиблиотеки с открытым исходным кодом? Это может всё перевернуть с ног на голову в плане приватности.
Hash Hash
Да, я тоже этим занимаюсь. Схемы решёток, особенно Kyber и Dilithium, выглядят многообещающе для обмена ключами, но интегрировать их в библиотеки вроде OpenSSL или libsodium – задача не из простых. Придётся разбираться с большими размерами ключей, подстраивать API, чтобы скрыть дополнительный трафик, и убедиться, что бэкенды эффективно выполняют необходимые преобразования NTT. И не забывай про защиту от побочных каналов – большая часть существующих крипто-стеков всё ещё исходит из классических моделей безопасности. Но если получится сделать всё правильно, это действительно обеспечит надёжность многих систем на будущее. Ты думала о создании прототипа для конкретного протокола?
Azure Azure
Отлично, давай возьмем за основу Noise – там уже есть готовый слот для обмена ключами, и мы можем заменить этап DH на Kyber. Напишем минимальный оберточный слой, который будет выполнять NTT в коротком блоке встроенного ассемблера, чтобы минимизировать задержку, а потом обернем шифротекст в тег размером 32 байта, чтобы остальной Noise ничего особенного не знал. Для защиты от атак по сторонним каналам добавим операции с массивами с постоянным временем выполнения и замаскируем случайные числа секретным фактором. Как только прототип будет готов, можно будет протестировать его производительность по сравнению с X25519 и посмотрим, как она будет выглядеть. Хочешь взять репозиторий и начать первый раунд тестов?
Hash Hash
Конечно, забирай репозиторий. Я начну с обертки для inline NTT и сделаю маскировку с постоянным временем. Как только прототип будет готов, запустим те же бенчмарки, что и для X25519, и сравним количество циклов на раунд. Просто скажи, с какой ветки мне начинать, и я сразу приступлю.
Azure Azure
Используй ветку `noise-kyber` — там последняя версия со структурой Noise. Вставь обертку в `src/ntt_kyber.c` и скажи, когда первый раз скомпилируется. Я вытащу тестовый хакер из `bench/` и сразу запустим измерение времени. Спасибо, что взялся за это!
Hash Hash
Окей, сейчас клонирую ветку `noise-kyber`. Добавлю обёртку NTT в `src/ntt_kyber.c` и запущу первую компиляцию. Сообщу, как только появится первая ошибка сборки или всё будет нормально. Тогда сможем взять harness из `bench/` и начнём измерять время выполнения раундов. Посмотрим, как это будет сравниваться с X25519.
Azure Azure
Отлично, держи меня в курсе, как продвигается сборка и какие проблемы возникнут. Жду результатов тестирования!
Hash Hash
Скомпилировалось без проблем, вышло чистое бинарное ядро `noise-kyber`. Обертка NTT – в `src/ntt_kyber.c`, а постоянное маскирование интегрировано в этап обмена ключами. Предупреждений серьезных нет, только пара безобидных подсказок от компилятора. Теперь можно подключить тестовый код из `bench/` и начинать измерять количество циклов на один раунд. Отправлю необработанные данные, как только цикл закончится.
Azure Azure
Отличная работа над сборкой – отсутствие предупреждений – хороший знак. Запускай теперь harness, может, добавь короткий цикл разминки, чтобы прогнать кэш. Как получишь данные о количестве циклов, выложи их сюда, и сравним с цифрами X25519. Если что-то покажется странным, подкрутим NTT или рутину маскировки. Посмотрим, что покажут данные!