Рейтинг:1

Безопасна ли операция XOR над строкой в ​​кодировке Base64?

флаг cz

Теоретически безопасно ли сначала кодировать строку с помощью Base64, а затем XOR со случайным ключом, или есть потенциальные уязвимости, которые можно использовать?

Очевидно, что на практике это не имеет никакого смысла, но мне было любопытно, будет ли это так же безопасно, как XOR, а затем Base64.

Рейтинг:2
флаг in

Теоретически безопасно ли сначала кодировать строку с помощью Base64, а затем XOR со случайным ключом, или есть потенциальные уязвимости, которые можно использовать?

Нет, это безопасно. Это может быть даже немного более безопасным, если кодировка удаляет некоторую информацию о размере.

Однако, исключающее ИЛИ шифрование безопасен только в том случае, если он точно соответствует одноразовому блокноту, а не многоразовому блокноту; то есть ключевой поток, который XOR'ed, теперь должен быть до тех пор, пока сообщение в кодировке base 64. В случае использования многоразового блокнота кодировка base 64, скорее всего, обеспечит более информацию об открытом тексте злоумышленнику.

Очевидно, что на практике это не имеет никакого смысла, но мне было любопытно, будет ли это так же безопасно, как XOR, а затем Base64.

Что ж, если это имеет смысл, иногда необходимо шифровать такие вещи, как строки XML и JSON, и это в основном означает шифрование встроенной кодировки base 64 (если есть).

Тем не менее, практически нет причин кодировать base 64 перед шифрованием, если у вас уже есть двоичный формат сообщения. Кроме того, вам гораздо лучше использовать хорошую схему AEAD, чем какой-либо шифр на основе XOR, даже если он напоминает одноразовый блокнот.

hhhhhhhh avatar
флаг cz
Если используется многоразовый блокнот, какие именно недостатки? т. е. почему использование одного раскрывает злоумышленнику больше информации?
Maarten Bodewes avatar
флаг in
Здесь есть много вопросов по этому поводу, но [этот от 2012 года] (https://crypto.stackexchange.com/q/2249/1172), вероятно, является лучшей отправной точкой.
Рейтинг:2
флаг cn

Если взять секретный открытый текст $P$ длины $n$ и одноразовый ключ $К$, также длины $n$, который генерируется случайным образом (в криптографическом смысле этого термина), зашифрованный текст $C = P \oplus K$ полученный путем их xoring, ничего не говорит о $P$ противнику, который не знает $К$, кроме длины $P$. Что касается противника, $P$ может быть любой из строк длины $n$.

Если вы сначала кодируете открытый текст в Base64 и используете ключ $К'$ длины $n' = \mathsf{длина}(\mathsf{Base64}(P))$, зашифрованный текст $C' = \mathsf{Base64}(P) \oplus K'$ не показывает ничего, кроме длины $\mathsf{Base64}(P)$, что находится во взаимно однозначном соответствии с длиной $P$. Таким образом, исправление кодировки Base64 так же хорошо, как и удаление исходного сообщения.

Обратите внимание, что очень важно, чтобы ключ был случайным. Если сам ключ закодирован в Base64, т.е. если вы публикуете зашифрованный текст $\mathsf{Base64}(P) \oplus \mathsf{Base64}(K)$, это приведет к утечке довольно большого количества информации о сообщении. Xoring случайного ключа работает, потому что для каждой позиции в зашифрованном тексте каждый символ возможен для открытого текста, соответствующего каждому символу для ключа. Но, например, если персонаж в $\mathsf{Base64}(P) \oplus \mathsf{Base64}(K)$ установлен бит 0x40 (при условии кодировки на основе ASCII), есть $52/64$ вероятность того, что соответствующий символ в $\mathsf{Base64}(P)$ один из 0123456789-/, потому что есть $52/64$ вероятность того, что соответствующий символ в $\mathsf{Base64}(P)$ это письмо.

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

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

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