То, о чем вы говорите, известно в литературе как частично известная атака открытым текстом (частичная KPA).
Информация зашифрована с использованием php-метода openssl_encrypt () и шифра 'aes-128-gcm'.
AES-GCM объединяет AES-CTR с GHASH (полиномиальный MAC над GF (2 ^ 128)).
Чтобы ответить на ваш вопрос, требуется углубиться в криптографические сорняки, но обычно:
- AES считается защищенным блочным шифром.
- Режим CTR превращает блочный шифр в потоковый шифр.
- Шифрование потокового шифра концептуально эквивалентно одноразовым контактным площадкам, за исключением того, что поток ключей генерируется из ключа и одноразового номера, и, таким образом, может иметь только конечный (в данном случае 128-битный) уровень безопасности.
Один из столбцов таблицы в базе данных моего API - это зашифрованный текст, состоящий из двух частей информации, соединенных с заданным разделителем, скажем, двоеточием. Вторая часть информации всегда имеет длину, скажем, 12 символов.
Единственное, что вы можете сделать вывод из зашифрованного текста AES-GCM, это длина открытого текста.
Чтобы иметь возможность вывести остаток ключевого потока из одного байта зашифрованного текста (и соответствующего известного открытого текста для этого байта), AES должен быть очень небезопасным блочным шифром. Поскольку мы знаем (благодаря 21-летнему опыту криптоанализа), что AES является безопасным блочным шифром, а AES-GCM - режим защищенного шифрования с аутентификацией, частичные KPA не имеют значения для этой конструкции.