Рейтинг:1

Можно ли частично расшифровать зашифрованный текст aes-gcm?

флаг za

Допустим, я шифрую большой файл с помощью aes-gcm и загружаю его куда-нибудь. Могу ли я тогда загрузить только первые несколько блоков (а также IV и тег) и расшифровать их?

Если нет, есть ли другое аутентифицированное шифрование, позволяющее это сделать?

kelalaka avatar
флаг in
Вы можете расшифровать, но без контроля тегов! Вы хотите пропустить контроль тегов? Какая в этом необходимость? возможно, как этот; [Как безопасно зашифровать/расшифровать данные с максимальным размером блока?](https://crypto.stackexchange.com/q/86080/18298)?
savx2 avatar
флаг za
Я хотел бы сохранить гарантию целостности, если это возможно.Я знаю, что это возможно, скажем, с AES-CTR, но я бы предпочел аутентифицированное шифрование.
kelalaka avatar
флаг in
Никогда не используйте открытый текст перед элементом управления тегом!
savx2 avatar
флаг za
поэтому я предполагаю, что ответ заключается в том, что это невозможно, если вы не разбиваете файл на части и не шифруете каждую часть отдельно?
kelalaka avatar
флаг in
Да, причина аутентификации состоит в том, чтобы убедиться, что открытый текст не изменен и не является аутентичным. Конечно, GCM аутентифицируется по зашифрованному тексту, поэтому мы можем проверить его еще до расшифровки.
Рейтинг:1
флаг in

Да, вы можете частично расшифровать один AES-GCM.AES-GCM использует шифрование в режиме счетчика, и вы можете расшифровать режим счетчика с любого конкретного удаленного сайта, предполагая, что вы знаете одноразовый номер и метод для вычисления значений счетчика. Здесь это реализация Java, которая использует шифрование GCM и расшифровывает зашифрованный текст без проверки тега и здесь — это способ запустить шифрование в режиме CTR с любого смещения — оставшаяся хитрость состоит в том, чтобы объединить их.

Однако для сохранения подлинности вам все равно придется передавать все данные через конструкцию GMAC. Поскольку большинство реализаций будут выполнять проход GMAC и расшифровку одновременно, вам может потребоваться использовать отдельную реализацию режима GMAC и счетчика. Для Java, если я правильно помню, GCM реализован с использованием относительно простых для разделения примитивов в облегченном API Bouncy Castle (указанном классами в org.bouncycastle дерево пакетов).

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

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

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