Рейтинг:4

Является ли GCM с AAD нулевой длины менее безопасным?

флаг in

В предыдущем вопрос, стало ясно, что в случае GCM нет различия между «без AAD» и «AAD нулевой длины». Поскольку я заметил «AAD нулевой длины» в нескольких реализациях, мой вопрос: делает ли это такие схемы AE менее безопасными?

В различных документах, посвященных безопасности AE, я думаю, что документ Пересмотр общей композиции Нампремпре, Рогавея и Шримптона мог бы быть самым откровенным в этом отношении. Согласно их перечислению схем nAE, первой схемой, которая показывает более слабые границы безопасности, является A9, где A (т. е. AAD) исключается из вычисления тегов (см. рис. 5). Сейчас, конечно, упоминают, что это пограничный случай (переходный). Но они дают понять, что его безопасность не так надежна, как схемы A1-A8 (все они включают A в расчет тега). Я попытался просмотреть другие статьи по этой теме, но не нашел статьи, в которой бы давался аналогичный подход.

Итак, если AAD отсутствует в GCM (или если |AAD|=0), снижается ли безопасность GCM каким-либо образом или наше доказательство безопасности немного слабее? Или это не вывод, который мы должны сделать из статьи Нампремпре выше (при условии, что их результаты были приняты криптосообществом)?

kelalaka avatar
флаг in
Как [отмечено] (https://chat.stackexchange.com/transcript/message/59377989#59377989): GCM - это A5 на бумаге.
kelalaka avatar
флаг in
GCM не поддерживает noAAD.В GCM AAD с нулевой длиной преобразуется в 128 нулей. Это ясно из предыдущего ответа и документа NIST. **Всегда есть AAD! в GCM** Таким образом, получатель может отклонить любой пустой AAD как подделку. Это обеспечивает дополнительную проверку, поскольку AAD проходит проверку подлинности, но не шифруется. Если вы просите модифицировать CGM для удаления AAD, то это другая схема.
hlayhel avatar
флаг in
Я читаю предыдущий ответ по-другому. Например, он говорит: «Если AAD имеет нулевую длину, то добавляется ноль битов заполнения и не тратится время на хеширование любого AAD или заполнения AAD». Из этого я делаю вывод, что AAD с нулевой длиной преобразуется в нулевые биты нулей, а не в 128 битов нулей. Я думаю, что остальная часть его ответа проясняет ситуацию. Если |AAD|=0, то len(A)=0, v=0 и 0^v=0, "**таким образом, число добавляемых битов 0â равно 0**". Затем он заключает, что «если A пусто, то префикс Aâ¥0^v также пуст». Это означает, что все A-компоненты при создании GHASH пусты (A, 0^v, len(A)).
kelalaka avatar
флаг in
Да, верно, $A || 0^v$ пуст, однако длина закодирована в 64 бита, так что ее можно декодировать как пустой AAD. Так что, тем не менее, в GCM всегда есть AAD.
kelalaka avatar
флаг in
Даже пустой AAD дает небольшую возможность остановить удаление AAD у противника. Настолько эффективно они не являются.
hlayhel avatar
флаг in
Я понимаю. Таким образом, остается компонент [len(A)]64. Я проверил документ NIST; они определяют [x]64 как двоичное представление целого числа x (в данном случае x=0) в виде строки из 64 бит. Так что, думаю, я должен согласиться. Еще одно уточнение от автора предыдущего ответа, если вы можете, я был немного сбит с толку его первым утверждением: «AES-GCM не поддерживает «нет AAD» в отличие от «AAD нулевой длины». . Я вроде как прочитал это, поскольку в случае GCM мы не делаем различий между «без AAD» и «AAD нулевой длины». Я неправильно прочитал?
kelalaka avatar
флаг in
Никакой ADD не должен быть чем-то подобным; нет доступной информации об AAD, четной длине или одном бите. Однако в этом случае отсутствие AAD может свидетельствовать о том, что он стерт или уже не имеет AAD. Схема должна это различать. GCM просто кодирует длину и не разрешает noAAD (или, можно сказать, преобразует noADD в AAD нулевой длины).
hlayhel avatar
флаг in
Понятно. Таким образом, no-AAD здесь означает отсутствие информации об AAD, а не то, что логика AAD отбрасывается. Думаю, теперь мы полностью согласны. Спасибо за ваше время!
Рейтинг:1
флаг in

AES-GCM попадает в категорию A5 в документе. В AES-GCM не поддерживает $\texttt{без AAD}$, даже если вы не используете AAD во время шифрования, AES-GCM преобразует его как $\texttt{нулевой длины-AAD}$.

См. в НИСТ Специальная публикация 800-38d, стр. 15;

Алгоритм 4: $GCM-AE_K (IV, P, A)$
¦
4. Пусть $u = 128\cdot\lceil\operatorname{len}(C)/128\rceil - \operatorname{len}(C)$ и разреши $v = 128\cdot\lceil\operatorname{len}(A)/128\rceil - \operatorname{len}(A)$.
5. Определите блок, $S$, следующее: $$S = \operatorname{GHASH}_H(\mathbf{A \mathbin\| \mathtt 0^v} \mathbin\| C \mathbin\| \mathtt 0^u \mathbin\| \mathbf{[\operatorname{ len}(A)]_{64}} \mathbin\| [\operatorname{len}(C)]_{64}).$$ ¦
На шагах 4 и 5 к AAD и зашифрованному тексту добавляется минимальное количество …$\мат 0$биты, возможно ни один, чтобы битовая длина результирующих строк была кратна размеру блока (выделено мной).

$А$ связанные данные, $лен(А) = 0$ следовательно, $\mathtt{v} = 0$. Даже в этом случае мы имеем $[\operatorname{len}(A)]_{64}$, это 64-битное кодирование длины связанных данных, и это всегда будет указывать на существование AAD, нулевой длины или нет!.

Если злоумышленник удаляет связанные данные, чтобы они выглядели как нулевая длина, во время расшифровки необходимо остановить с несоответствием тегов (Всегда останавливать и останавливать расшифровку сразу).

Схема, поддерживающая no-AAD, не должна нести информацию об отсутствующем AAD, иначе она попадает в AAD нулевой длины.

В конце концов, у нас есть дополнительная защита от подделок с помощью AAD нулевой длины.

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

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