Рейтинг:1

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

флаг at

Блочный шифр использует самоинверсию ($f(f(x)) = x $) операций, которые затем будут применяться к открытому тексту и, скорее всего, содержат некоторые константы, которые могут быть основаны на ключе. Для обеспечения безопасности такие операции, которые по-разному интерпретируют ввод, выравниваются друг с другом. Этот процесс повторяется несколько раз с разными ключами. В оптимальном случае случайный вход находится внутри замкнутого цикла (если блочный шифр применяется снова и снова) со случайным размером цикла (равномерным при заданном случайном ключе).

При тестировании я заметил, что это может произойти с некоторыми очень простыми операциями XOR, Bit-Rotation и сложения. (называемый АРКС)

Например: для одного раунда с вводом $м$:

$$ м = исключающее ИЛИ (м, R_i) \ m = RotateBit(m,5) \ м = м + К_я $$

$R_i, К_i$ круглые ключи для круглых $я$.

  • Само по себе XOR небезопасно, потому что эта операция выполняется только с отдельными битами, не влияя друг на друга.

  • Добавлено вращение битов, чтобы увеличить влияние одного бита на все остальные биты. Сам по себе также небезопасен, потому что он влияет только на отдельные биты каждый

  • Дополнение добавляется как 2-й вид интерпретации ввода (как число вместо битов). Здесь биты могут влиять друг на друга.

При этом я получил хорошее (но не идеальное) равномерное распределение различных длин циклов (с учетом случайного ключа и ввода).


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

Вот некоторые связанные нить для АЕС.

Но в качестве более общей метрики (для пользовательского блочного шифра) может ли безопасность измеряться влиянием изменения бита на входе на каждый бит на выходе?

В оптимальном случае каждое возможное изменение бита каждого возможного входа должно приводить к 50% различным битам на выходе (при этом каждый бит отличается на одинаковую величину).

Круглый номер можно увеличивать до тех пор, пока он не достигнет подходящего уровня безопасности.

user2357 avatar
флаг us
Насколько мне известно, чувствительность к открытому тексту является необходимым, а не достаточным условием.
kelalaka avatar
флаг in
Связанный [Есть ли блочный шифр, безопасный для n раундов, но не безопасный при увеличении количества раундов] (https://crypto.stackexchange.com/q/91929/18298)
Рейтинг:2
флаг si

Но в качестве более общей метрики (для пользовательского блочного шифра) может ли безопасность измеряться влиянием изменения бита на входе на каждый бит на выходе?

Банально нет. Если функция раунда блочного шифра линейна, то никакое количество раундов не усложнит его инвертирование.

Вы также не описали, говорите ли вы о путанице, диффузии или о том и другом.

Путаница определяет отношения между ключ и зашифрованный текст: каждый бит зашифрованного текста зависит от многих битов ключа, так что при изменении любого бита ключа изменится примерно 50% битов зашифрованного текста.

Диффузия определяет отношения между простой текст и зашифрованный текст: каждый бит в зашифрованном тексте зависит от многих битов открытого текста, так что если какой-либо бит открытого текста изменится, примерно 50% битов зашифрованного текста изменятся.

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

Кроме того, блочные шифры сами по себе в лучшем случае защищены IND-CPA (самая слабая форма безопасности), если только один блок зашифрован любым заданным ключом. Зашифрованное количество блоков означает, что любые два идентичных блока открытого текста будут иметь идентичный зашифрованный текст, что является нарушением неразличимости. Чтобы быть безопасным IND-CPA, требуется режим работы, такой как режим CTR (превращающий его в потоковый шифр) или режим CBC (цепочка блоков зашифрованного текста). Но даже это не является «безопасным», поскольку злоумышленник может изменить зашифрованный текст и заставить жертву расшифровать его, чтобы получить неверный открытый текст, поэтому для надлежащей безопасности IND-CCA3 необходим режим шифрования с проверкой подлинности. Это будет что-то вроде режима GCM, SIV, GCM-SIV или OCB. И даже это имеет некоторые оговорки, поскольку для таких режимов требуется «одноразовый номер» (число, используемое ОДИН РАЗ), которое устраняет (GCM, OCB) или снижает (GCM-SIV, SIV) безопасность при повторном использовании.

user2357 avatar
флаг us
Я думаю, что путаница связана с отношением между ключом/открытым текстом и зашифрованным текстом, который нужно покрыть, в то время как распространение связано с распространением изменений ключа/открытого текста в зашифрованном тексте, я прав?
J. Doe avatar
флаг at
Спасибо за ответ. Я еще не уверен на 100% (но достаточно, чтобы на практике это не сработало). Я сделал некоторую ошибку, чтобы точно не указать, что дано и что требуется (данно: минимум 1 нелинейный + минимум 1 другая операция, которая интерпретирует ввод по-разному, по крайней мере, столько раундов, что каждый бит открытого текста/ключа может иметь влияние в каждом бите шифра требуется: безопасность IND-CPA, достаточная для этого случая). Однако вы убедили меня, что статистику нужно делать гораздо более подробной, чем ожидалось. Например, данный бит всегда может быть равен 1, если другой бит открытого текста/ключа также равен 1.
J. Doe avatar
флаг at
Побитовая статистика не сможет это отследить.Для заданного значения бита в определенной позиции необходимо отслеживать вероятность изменения зашифрованного текста для каждого члена набора мощности всех других значений битов (кроме полного набора), что невозможно в реальном приложении. Например. вероятность изменения первого бита с 1 на 0 при условии, что 3-й и 6-й биты равны 1, а 7-й бит равен 0. Предположим, что такая статистика была выполнена и было достигнуто около 50% для каждого члена набора мощности: вы все еще видите возможность утечки информации (если да, то пример, пожалуйста)?

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

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