Рейтинг:13

Что не так с шифрованием XOR с безопасным PRNG?

флаг in

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

Не мог бы я просто XOR байтов с байтами из криптографически безопасного генератора псевдослучайных чисел (CSPRNG), где seed является паролем или его хэшем? Я не вижу в этом ничего плохого.

Или CSPRNG настолько медленный, что необходимы более сложные схемы шифрования?

флаг us
Аналогичный вопрос здесь: https://crypto.stackexchange.com/questions/35809/whats-wrong-with-xor-encryption-with-hash-and-an-iterated-salt?rq=1
fraxinus avatar
флаг sa
Вы чуть не изобрели режим работы шифра CTR (Counter)
Рейтинг:22
флаг in

Тогда любой набор $К-1$секретные значения равномерно случайны и не зависят от

$у$

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

, если вы хотите, чтобы схема напоминала ваше первоначальное предложение, вы можете выбрать случайный ненулевой $x_i'$, и установите

$a_i = x_i'^{-1}x_i$

. На самом деле каждый игрок может сделать это сам, так что это не повлияет на безопасность. Но я не вижу, какую функциональность он вам дает. насколько опасно проверять метку не за постоянное время?Насколько я могу судить, не так много, пока метка является общедоступной, и эта проверка выполняется и не обусловлена ​​проверкой 0x00 байта слева от результата RSA-расшифровки.

флаг in
Я бы считал PRNG детерминированным по определению. т.е. «CSPRNG вашей системы» на самом деле вовсе не CSPRNG, а скорее случайный источник, дополненный CSPRNG.
Maarten Bodewes avatar
флаг in
Или CSPRNG, дополненный случайным источником, да. Чаще всего вы получаете их в комплекте — и это нормально, если вы просто используете их для получения случайных (измененных) чисел из ограниченного источника энтропии.
Рейтинг:16
флаг in

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

$у$

  • . Но если все игроки решат сотрудничать, им не нужны секретные доли, так как игрок $я$имеет секретное значение. Вместо использования схемы обмена секретами игрок
  • $я$может сначала ничего не отправлять, а потом когда все согласятся восстановить секретное значение 1$у$ , затем игрок$я$ 1можно просто отправить всем значение 9$у$ Обмен секретами Шамира может дать вам$t$
флаг za
допустим, злоумышленник знает, что последняя часть вашего зашифрованного файла cookie — это `is_admin=0` :-)
Joshua avatar
флаг cn
@hanshenrik: Забавный факт. У меня есть файл cookie, который действует так. Но если вы измените is_admin на 1, вы только обманете javascript. Сервер не обманут.
Рейтинг:6
флаг kr

В дополнение к ответам "Мартен Бодевес" и "dan04":

Ваша схема не обеспечивает никакой защиты честность. Если вы используете один и тот же пароль для разных сообщений, то 1-й байт будет идентичен во всех сгенерированных ключах, 2-й байт снова будет идентичен во всех сгенерированных ключах и т. д. Это означает, что злоумышленник может заменить любой байт в зашифрованном сообщении на байт с тем же номером из другого сообщения, и вы не сможете определить, было ли изменено ваше зашифрованное сообщение. Для этого атакуемому даже не нужно знать пароль. Таким образом, злоумышленник может изменить зашифрованное сообщение с «Перевести 1000 долларов США» на «Перевести 5000 долларов США», и никто не сможет обнаружить, что зашифрованное сообщение было изменено.

ilkkachu avatar
флаг ws
использование одного и того же пароля / ключа для нескольких сообщений также может привести к атакам дешифрования.
флаг kr
@ilkkachu: Конечно. "dan04" упомянул об этом. Не вижу смысла повторять.
флаг kr
Обратите внимание, что второй пункт в ответе dan04 также касается целостности. Разница между этим и тем довольно тонкая: тот кажется более общим (поскольку он не зависит от наличия нескольких сообщений), но, возможно, есть какая-то ситуация, когда эта атака возможна, а та нет?
R.. GitHub STOP HELPING ICE avatar
флаг cn
Невозможность повторного использования одного и того же ключевого потока — это совсем другая проблема. Даже без этого злоумышленники могут изменить сообщение. Они не могут заменить другое известное сообщение, но могут поменять местами определенные биты и т. д. Чтобы избежать этого, вам необходимо аутентифицированное шифрование.
Joshua avatar
флаг cn
И вы предполагаете, что у него нет капельницы, почему? (IV будет загружаться при заполнении CSPRNG).
флаг kr
@Джошуа: Хороший вопрос. Я проглядел «CS» и считал его обычным PRNG.Если это действительно CS, то даже при установке того же seed (пароля), 1) сгенерированная последовательность на другом компьютере будет другой и, таким образом, будет невозможно расшифровать исходное сообщение; 2) даже на одном компьютере после инициализации CSPRNG для расшифровки сгенерированная последовательность может быть разной (например, так работает CR PRNG в Java, Class SecureRandom). Таким образом, может быть невозможно расшифровать ранее зашифрованное сообщение. Таким образом, схема в ОП еще хуже.
Рейтинг:1
флаг us

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

Рейтинг:0
флаг ss

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

  1. Словарные атаки. Вы можете сгенерировать хэши для всех сидов для общих паролей. Или скачать его.
  2. Атаки с известным открытым текстом. Поскольку ваше семя фиксировано, случайный поток фиксирован. Если вы знаете открытый текст одного сообщения, теперь вы можете декодировать все остальные сообщения до той же длины. В зависимости от информации, которую вы отправляете, может быть доступно гораздо больше открытого текста, чем вы думаете (например, файлы имеют определенные маркировки, поскольку язык сообщений может быть более предсказуемым, чем вы думаете).

Трюк XOR только запутывает, а не распространяет, и открыт для статистических атак. Даже одноразовые блокноты с XOR лишь частично уязвимы. Например. для очень длинных сообщений статистически XOR также оставляет 1/256 вашего сообщения незашифрованным, потому что XOR с 0 ничего не делает, а 1/256 инвертируется, потому что XOR с 0xff такое же, как NOT. Опять же - в зависимости от информации, которую вы отправляете, совпадение 1/256 может быть достаточно для злоумышленника (например, если злоумышленник хочет знать, предоставили ли вы общий доступ к определенному файлу, контекст которого им известен).

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

флаг cn
Я думаю, вы ошибаетесь с используемым ключом. Вопрос не касается, если используется статический ключ или какой-либо обмен ключами. Конечно, любая случайность в процессе шифрования должна быть каким-то образом отправлена ​​​​получателю (отправка IV, процесс обмена ключами и т. д.). И случайность для ключей должна быть сгенерирована каким-то безопасным процессом, если это возможно.
флаг cn
А вот насчет вашего второго абзаца это просто неправда. XOR с 0 ничего не делает, но в этом и смысл. Злоумышленник не знает, является ли эта позиция ключа XOR с 0 или 1 (смотря на отдельные биты). Если ключ действительно случайный, однородный и никогда не повторяется, злоумышленник не может знать, какие биты сообщения перевернуты или не изменены.Именно по этой причине статистические атаки не работают для OTP.

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

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