Рейтинг:3

Предоставляет ли AEAD какие-либо преимущества по сравнению с необработанным шифром в этом параметре?

флаг cn

Я работаю над хранилищем криптографических данных, где необходимо идентифицировать большие двоичные объекты и ссылаться на них с помощью хэша зашифрованных данных. Подумайте о дереве Меркла с зашифрованными узлами. В таких условиях, когда хэш уже устанавливает подлинность (при условии, что сама хеш-функция не нарушена), есть ли смысл использовать AEAD, а не просто использовать шифр напрямую?

Я считаю, что это отличается от классической темы «зашифровать, а затем MAC», потому что в большом двоичном объекте не хранится хэш или MAC для его аутентификации. Скорее, хэш — это внешняя ссылка из другого места, которая уже аутентифицирована (не подлежит предупреждению злоумышленником).

Еще одна деталь, которую я изначально опустил, думая, что она не имеет значения, но задним числом кажется, что она проясняет проблему: нет предварительно общего симметричного ключа; ключ, который можно использовать в необработанном шифре или AEAD, является ключом, полученным из эфемерного секрета и открытого ключа принимающей стороны через ECDH. Таким образом, любой злоумышленник, знающий открытый ключ, может создать большой двоичный объект с действительным тегом AEAD, используя свой собственный эфемерный секрет. Однако если предположить, что хэш-функция не нарушена, такой большой двоичный объект не будет хеширован до значения, ожидаемого принимающей стороной, и, следовательно, никогда не будет использоваться.

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

Если уже есть средства для аутентификации открытого текста, то действительно можно пропустить аутентификацию открытого текста или зашифрованного текста другими средствами.

Есть, конечно, некоторые уловки.

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

Кроме того, реализация не должна предоставлять никакой информации о процессе расшифровки. Если это так, то реализация может подвергнуться атакам по сторонним каналам. Хуже, если, например. Используется CBC, затем применяются оракулы заполнения. Поэтому имеет смысл использовать AES-CTR или потоковый шифр, такой как ChaCha20.

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

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


Обратите внимание, что обработка IV не указана в протоколе, который вы описываете. Нет необходимости быть частью хэша, если он защищает открытый текст, а не зашифрованный текст. Однако следует убедиться, что он уникален для каждого сообщения, зашифрованного одним и тем же ключом (а если вы используете режим CBC, непредсказуем).

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

Maarten Bodewes avatar
флаг in
Есть ли лучший термин для «атак с угадыванием открытого текста» или «атак с угадыванием сообщений»?
R.. GitHub STOP HELPING ICE avatar
флаг cn
На самом деле это зашифрованный текст (включая nonce и эфемерную общедоступность), который уже аутентифицирован, поскольку данные адресуются с помощью хэша зашифрованного текста. Из-за этого нет информации для угадывания открытого текста. IV обрабатываются правильно (не используются повторно).
R.. GitHub STOP HELPING ICE avatar
флаг cn
Если вам интересно узнать больше о системе, о которой идет речь, она теперь общедоступна: https://github.com/richfelker/bakelite.
Maarten Bodewes avatar
флаг in
Очень интересно! Было бы неплохо, если бы вы могли написать для него более формальную модель данных. В настоящее время это просто текстовое описание и код. Кроме того, поскольку надежность программы резервного копирования является главной проблемой, я ожидаю, что некоторый код будет выполнять функциональное тестирование используемых подпрограмм. Если дизайн известен, другие люди могут помочь вам с такими вещами. Белая книга могла бы творить чудеса, помогая людям принять это.
Рейтинг:-1
флаг si

Хэш устанавливает целостность, а не подлинность. Тег AEAD или MAC зашифрованного текста устанавливает как целостность, так и подлинность.

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

Если хэш представляет собой открытый текст, вы получаете те же недостатки, что и в схемах «MAC-затем-шифрование», когда вы нарушаете принцип криптографической гибели.

R.. GitHub STOP HELPING ICE avatar
флаг cn
Я думаю, вы неправильно прочитали вопрос. Хэш известен и ему доверяют вне диапазона, поэтому злоумышленник, вычисляющий новый хэш, бесполезен. Они не создадут большой двоичный объект, соответствующий ожидаемому хэшу, если только хеш-функция не будет нарушена.
SAI Peregrinus avatar
флаг si
Проблема в этом доверии. Хэш зашифрованного текста вне диапазона может обеспечить аутентификацию, если внешний канал обеспечивает аутентификацию (MAC или подписывает хэш), но без этого внешний канал не так безопасен, как простой внутриполосный MAC-адрес. зашифрованный текст или тег AEAD.
R.. GitHub STOP HELPING ICE avatar
флаг cn
Канал OOB является фундаментальным для настройки, о которой я спрашиваю; хэш - это *идентификация* данных, на которые ссылаются. (Подумайте аналогично тому, как хэши являются идентификаторами в git или файловой системе на основе хэшей.) В этом параметре я спрашиваю, какую защиту может предоставить AEAD.
Manish Adhikari avatar
флаг us
Это может быть безопасно, если ваш внеполосный канал заслуживает доверия, но я всегда использую AEAD, несмотря ни на что.
R.. GitHub STOP HELPING ICE avatar
флаг cn
Я думаю, вы все еще упускаете суть. Если пользователю данных был предоставлен неправильный хэш, это уже критическая брешь, потому что будут доступны неправильные данные. Например, они могут загрузить `$malware_sample`, а не `$trusted_script`.В данном контексте понятие подлинности кажется бессмысленным без подлинности ссылки.
R.. GitHub STOP HELPING ICE avatar
флаг cn
Более того - я исключил это из вопроса, потому что думал, что это не имеет значения, но, возможно, мне не следовало - симметричный ключ, с помощью которого зашифрованы большие двоичные объекты, не является предварительным общим ключом, а является выходом шифрования с открытым ключом. Таким образом, любой, кто знает открытый ключ, может создать большой двоичный объект с допустимым тегом AEAD, но это бесполезно, поскольку полученный хэш не будет соответствовать ничему, что ищет процесс, потребляющий большой двоичный объект.
SAI Peregrinus avatar
флаг si
Хэш не говорит, кто его создал. Если доверенный канал обеспечивает подлинность (только сторона, прошедшая проверку подлинности, может отправлять сообщения по каналу, и ни один злоумышленник не может изменять сообщения), то хэш также обеспечивает подлинность. Если что-то из этого не соответствует действительности, то хэша недостаточно, и вам нужен тег MAC или AEAD. AEAD также часто намного быстрее, чем хеширование зашифрованного текста, поскольку вам обычно нужно обрабатывать данные только один раз, а не дважды.
R.. GitHub STOP HELPING ICE avatar
флаг cn
@SAIPeregrinus: вопрос не в «хэше или AEAD». Хэш принципиально необходим (конструкция типа дерева Меркла), и вопрос заключался только в том, добавляет ли AEAD какую-либо ценность. Но я думаю, стало ясно, что это не так.

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

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