Рейтинг:1

Как максимально недорого извлечь 1 байт равномерно распределенной энтропии из 32-байтовой точки EC Curve25519

флаг es

Ищу самый простой и недорогой хэш со следующими свойствами:

Вход: 32-байтовая точка EC Curve25519, содержащая примерно 125 бит неравномерно распределенной энтропии (созданная в результате обмена ECDH).

Выход: 1 байт, содержащий 8 бит энтропии, равномерно распределенной.

Paul Uszak avatar
флаг cn
XOR точки 31 раз.
knaccc avatar
флаг es
@PaulUszak Как лучше всего продемонстрировать правильность вашего метода? Есть ли документы, на которые можно сослаться? Мне нужно было бы убедить людей, которые боятся делать что-либо, кроме усечения вывода криптографически безопасного хэша до 1 байта.
knaccc avatar
флаг es
@kelalaka какой самый быстрый хеш, который укротит неравномерность, учитывая, что однобайтовый вывод означает, что мы не ограничены хэшами, обеспечивающими устойчивость к коллизиям? Я надеюсь, что это отсутствие ограничений означает, что для этого варианта использования доступны гораздо более простые и быстрые методы хеширования.
Рейтинг:2
флаг in

Обычное кодирование точек является структурированным и неоднородным, поскольку оно должно удовлетворять уравнению кривой. В Curve25519 с $x \in \mathbb Z(2^{255} - 19)\mathbb Z$ и используя уравнение кривой $х^3 + 486662 х^2 + х$ всегда является квадратом для точек. Существует общий совет использовать KDF на выходе ECDH для использования ключей AES, поскольку он может атаковать точки для связанные ключевые атаки.

Одним из решений этого требования является использование быстрого PRF, такого как ChaCha8, где ключ является ключом DHKE с нулевым IV.

функция extact_one_byte (точка P):
  
   один байт = 0  
   out512 = ChaCha8 (ключ, 00..00, x (P) || y (P))
   
   возврат 512[0:8] 
knaccc avatar
флаг es
Вы говорите, что характеристики BLAKE3 таковы, что если бы он был усечен до одного байта, этот байт не соответствовал бы требованию равномерной случайности? Пожалуйста, не могли бы вы привести свои доводы?
kelalaka avatar
флаг in
Ожидается, что результат криптографической хеш-функции будет неотличим от однородного случайного. Если только нельзя доказать обратное, все байты, все биты неразличимы. Поэтому их x-или тоже.
knaccc avatar
флаг es
Тогда зачем делать XOR, если первый байт вывода BLAKE3 уже был бы равномерно случайным?
kelalaka avatar
флаг in
Однако вам это может не понадобиться, сжатие их до одного байта не представляет опасности и почти ничего не стоит.
knaccc avatar
флаг es
Если я считаю точку EC секретом с разрядностью 125 бит и если меня беспокоит утечка информации об этом секрете, какова будет разрядность этого секрета после публикации 1-байтового хэша? И если ответ заключается в том, что после публикации 1-байтового хэша я должен ожидать, что он будет 125-8=117 бит, то какое значение имеет использование криптографически безопасного хэша вместо более простой контрольной суммы? Я думаю, что это причина, по которой @PaulUszak сказал просто XOR байтов точки EC, а не хэш вообще
kelalaka avatar
флаг in
Этот метод случайным образом группирует точки в 256 сегментов. Да, это дает злоумышленнику 8-битные знания о точках. Контрольная сумма может дать простое отношение к точке, которое можно использовать, или связать с уравнением кривой, которое я не могу увидеть или доказать. Я бы остановился на хешировании.
kelalaka avatar
флаг in
Кроме того, равномерность рандома должна быть доказана для контрольной суммы, это сложная часть.
knaccc avatar
флаг es
Спасибо, я оставлю вопрос открытым на несколько дней и приму ваш ответ, если кто-то не предложит что-то менее ресурсоемкое.
kelalaka avatar
флаг in
@knaccc, что насчет использования chacha8 с извлеченным ключом DHKE и нулевым IV? Это будет очень быстро. Где вы хотите это использовать?
knaccc avatar
флаг es
В настоящее время Monero обсуждает, как реализовать то, что называется «тег просмотра»: https://github.com/monero-project/monero/pull/8061 Затем выяснилось, что важно, чтобы хэш двух разных вхождений один и тот же секрет ecdh с разными конкатенированными целыми числами должен быть несвязываемым при проверке хэшей каждого из них, чтобы исключить возможность полного пропуска хэша. Спасибо за совет по чача8. Мы протестировали Blake3, и это выглядит многообещающе, если у разработчиков появится желание ввести новый тип хеширования (в дополнение к keccak, который мы сейчас используем повсеместно).
kelalaka avatar
флаг in
@knaccc наш [стервятник] (https://chat.stackexchange.com/transcript/message/60312478#60312478) предупредил меня об этом. Вы знаете, в большинстве случаев я ссылался на их ответы на ваши вопросы.
knaccc avatar
флаг es
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/133712/discussion-between-knaccc-and-kelalaka).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.