Рейтинг:1

Выбирают ли люди вручную каждое целое число, используемое в криптохеш-функции, или они генерируются компьютером?

флаг tn

Например, это:

введите описание изображения здесь

Все эти числа, как 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8... каким-то образом выбраны вручную, или они просто выбраны из шляпы (например, вы пишете скрипт «дайте мне 64 случайных целых числа от 0 до 15», а затем используете то, что он выводит), или что-то еще? Каков метод выбора такого количества чисел?

kelalaka avatar
флаг in
[Почему «ничего не припрятанное в рукаве» имеет низкую энтропию?] (https://crypto.stackexchange.com/q/16364/18298)
kelalaka avatar
флаг in
Поскольку вас интересуют IV хэш-функций, я бы дал вам больше 1) [Происхождение начального хеш-значения SHA-224?] (https://crypto.stackexchange.com/q/42373/18298) 2) [Почему используются ли эти конкретные значения для инициализации хеш-буфера в SHA-512?](https://crypto.stackexchange.com/q/5338/18298) [Почему SHA2-224 использует разные IV, чем SHA2-256?](https ://crypto.stackexchange.com/q/83306/18298) 3) [Откуда берутся константы для SHA-1/2/3?](https://crypto.stackexchange.com/q/71314/18298 ) 4) [Зачем инициализировать SHA1 с определенным буфером?] (https://crypto.stackexchange.com/q/10829/18298)
Рейтинг:3
флаг ng

Обычно нет. В криптографии появление «случайных» последовательностей чисел, как правило, весьма подозрительно — что, если есть определенные «слабые» варианты чисел, которые делают всю конструкцию небезопасной? Откуда вы знаете, что дизайнер не воспользовался своей свободой выбора этих чисел для встраивания бэкдора? Обратите внимание, что это делает случаются, известные примеры:

Обратите внимание, что существуют определенные «произвольные константы», которые кажутся менее подозрительными — обычно выбираются цифры $\пи$, или что-то в этом роде (скажем, цифры $\sqrt{2}$ или же $\sqrt{3}$). Их часто называют ничего в моем рукаве, и может использоваться, когда разработчику просто нужны некоторые произвольные числа, которые удовлетворяют некоторым минимальным ограничениям, которым должно удовлетворять «большинство» чисел.

Во всяком случае, возвращаясь к RIPEMD. Первоначально он был указан в статье 1995 года «Примитивы целостности для безопасных информационных систем». (Я нашел эту информацию через эта ссылка). В частности, спецификация содержится в этот документ. Обращаю ваше внимание на 75 страницу документа (на 7 странице pdf).

Четыре константы, используемые в этих операциях, выбраны не случайно; Они являются целой частью $2^{30}\sqrt{2}, 2^{30}\sqrt{3}, 2^{30}\sqrt[3]{2}, 2^{30}\sqrt[3]{3}$ соответственно. Однако особых причин для такого выбора нет.

Это объясняет константы в добавлены константы часть файла, на который вы ссылаетесь --- они ничего не значат для меня в рукаве. К сожалению, конкретная таблица, о которой вы спрашиваете, не имеет удовлетворительного объяснения. Авторы заявляют, что воспроизводят модификацию функции сжатия MD4 (в том числе и отмеченную вами таблицу), а просто констатируют, что включают в себя модификации Б. ден Бура, которые они цитируют как Личные сообщения (поэтому их конкретная причина модификации неизвестна).

К сожалению, другой материал о шифре также не является информативным. Рассмотреть возможность эта атака на хеше. Авторы упоминают (и это очевидно), что индексы «выбор слова сообщения» должны быть именно перестановкой (об этом упоминалось и в исходной спецификации), но это неясно. Почему были выбраны именно эти перестановки.

Последнее, о чем я упомяну, это то, что иногда вы оказываетесь в ситуации, когда существует множество возможных вариантов выбора некоторых из них. структурированный объекта (как перестановка, так что вы не можете надеяться, что цифры $\пи$ будет достаточно), и вам нужно выбрать один. Одна стратегия, которую вы можете использовать (вместо того, чтобы вытаскивать ее из воздуха):

  1. попробуйте «ранжировать» структурированные объекты по какому-нибудь показателю эффективности, а затем
  2. выбрать «первый» (в некотором естественном порядке) из «наиболее эффективных» объектов.

Это расплывчато, поэтому конкретный пример может быть полезен. Дизайн AES требует арифметических действий. $\mathsf{GF}(2^8)$. Любой неприводимый многочлен степени 8 над $\mathbb{F}_2$ определяет «другую» (но все взаимно изоморфную) копию $\mathsf{GF}(2^8)$. Учитывая, что это так, какой полином выбрать при разработке AES?

Разработчики AES обосновывают этот выбор (и другие, которые могут показаться вам интересными) в раздел 7 их предложения.

Полином $м(х)$ ... для умножения в $\mathsf{GF}(2^8)$ является первым из списка неприводимых многочленов степени 8, приведенного в [LiNi86, с. 378].

Таким образом, они апеллируют к некоторому порядку авторов, отличных от них. Я также видел (и думал, что у меня был, в частности, для AES) выбор:

  1. собрать все неприводимые многочлены
  2. отсортировать их по весу Хэмминга (показатель эффективности)
  3. из тех, которые имеют минимальный вес Хэмминга, выбираем лексикографически первый.

Конечно, это, к сожалению, бесполезно для вашей конкретной таблицы.

Lance avatar
флаг tn
Очень интересный материал, большое спасибо! Итак, в конце концов, как обстоит дело с перечисленными мной числами, как они (потенциально) были выбраны? Никогда не сталкивался с фразой "ничего в рукаве", это имеет смысл!
Mark avatar
флаг ng
Это несколько раздражает для ваших конкретных чисел — я не могу отследить источник того, как они были сгенерированы. RIPEMD — это модификация MD4, указанная [здесь] (https://datatracker.ietf.org/doc/html/rfc1320). Соответствующие числа для MD4 отличаются и имеют некоторый внутренний шаблон, который имеет больше смысла. Авторы RIPEMD заявляют, что меняют эти цифры, но ссылаются только на личное общение (от 1992 г.) с Б. ден Буром. К сожалению, эти личные сообщения, вероятно, содержат ответ на ваш вопрос, но маловероятно, что они будут опубликованы.
Mark avatar
флаг ng
Единственным небольшим утешением, которое у меня есть, является то, что опубликованная атака на RIPEMD, которую я рассматривал, полностью игнорировала (несколько произвольную) структуру ваших чисел, поэтому вполне вероятно, что они вообще не оказывают существенного влияния на безопасность, и они были изменены в целях повышения эффективности на некоторая платформа (авторы RIPEMD тратят пару абзацев, упоминая, что для этой цели они переключаются между представлениями с прямым и обратным порядком байтов). Однако это всего лишь предположение, и без обращения к Б. ден Боеру (или авторам RIPEMD) может быть трудно получить лучший ответ.
poncho avatar
флаг my
Кузнечик: Насколько я понимаю, хотя sbox своеобразен и не соответствует первоначальным заявлениям о случайности, до сих пор нет (публично) известного бэкдора на его основе...
Mark avatar
флаг ng
@poncho да, но у него есть *очень специфический* [инвариант, который он поддерживает] (https://eprint.iacr.org/2019/092.pdf). Возможно, у меня паникерское прочтение этого, но я не вижу причин, не связанных с бэкдором, для этого.
Mark avatar
флаг ng
хотя кажется, что я мысленно сгруппировал проблемы со Стрибогом и Кузнечиком как похожие, но, пересматривая эту статью, кажется, что Стрибог может использовать нечетные S-блоки немного более тревожным образом.

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

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