откуда берутся авторизационные данные?
То, что на диаграмме обозначено как «Данные аутентификации», дополнительные аутентифицированные данные который чаще называют «связанными данными» или «дополнительными данными» и сокращенно AAD или AD. Это ввод для расчета GCM. Вы его не генерируете. GCM всегда принимает ввод AD. Он может быть пустым, ничего особенного в пустом AD ни в расчете, ни в безопасности нет.
Как создать данные аутентификации и тег в GCM?
Чтобы создать тег GCM, вы следуете спецификации GCM для его расчета.
Если я зашифрую сообщение, используя режим счетчика, будет ли безопасность слабее, чем GCM?
Если вы зашифруете сообщение в режиме счетчика, оно не будет аутентифицировано. Таким образом, безопасность полностью отличается от GCM. ГКМ это аутентифицированный шифрование: оно гарантирует как конфиденциальность, так и подлинность сообщения. Успешная расшифровка сообщения, зашифрованного с помощью CTR, ничего не значит: если сообщение было поддельным или поврежденным, вы просто получите поврежденные данные. Успешная расшифровка сообщения, защищенного с помощью GCM, гарантирует, что вы получите сообщение, созданное владельцем секретного ключа.Обратите внимание, как я написал «защищено GCM», а не просто «зашифровано GCM»; терминология вокруг AEAD иногда вводит в заблуждение. «GCM-зашифровано» правильно, но вводит в заблуждение, потому что GCM делает больше, чем просто шифрует. «Шифрование» сообщения с помощью GCM (или любого другого алгоритма AEAD) также подтверждает его подлинность, а «дешифрование» сообщения также подтверждает его подлинность. Однако глаголы «зашифровать» и «расшифровать» являются стандартной терминологией, поэтому продолжайте их использовать, но имейте в виду, что они не рассказывают всей истории.
Является ли добавленный MAC зашифрованный текст в режиме CTR слабее, чем GCM?
Если все сделано правильно, MAC, добавленный к зашифрованному тексту CTR, или шифрование CTR открытого текста плюс MAC, является допустимой конструкцией AEAD. Фактически, именно так работают многие стандартные конструкции AEAD, включая GCM. Однако есть много возможностей сделать это неправильно, например, нежелательное взаимодействие между ключом шифрования и ключом MAC (что сломало ОКБ2), неправильный выбор nonce/IV и т. д. (Другой потенциальной ошибкой может быть использование CBC вместо CTR, что открывает возможности для атак оракула заполнения.) Например, «использовать метод HMAC-SHA» — это хороший способ сгенерировать MAC, но «исключающее ИЛИ по пути» может означать множество вещей, большинство из которых небезопасно.