Абстрактно, мы можем думать о системе шифрования следующим образом:
-------------------
plaintext ---> | algorithm & key | ---> ciphertext
-------------------
Система должна гарантировать следующее:
расшифровка ( шифрование (открытый текст, алгоритм, ключ), алгоритм, ключ) = открытый текст
Прежде всего, я хотел бы спросить
если кто-то из вас знает о шифровании
алгоритм, который использует ключ для шифрования
данные, но нет ключа для расшифровки
данные.
Да, в такой системе ключ избыточен; вся «секретность» заключается в алгоритме.
Мой последний вопрос
скажем, у вас есть доступ к равнине
текстовые данные, прежде чем они будут зашифрованы,
ключ, используемый для шифрования простого текста
данные, и в результате зашифрованы
данные, выяснить, какие
алгоритм, используемый для шифрования данных
возможно?
На практике у вас, вероятно, будет небольшое количество алгоритмов, поэтому возможен простой перебор. Однако может существовать более одного алгоритма, который соответствует данной информации. Рассмотрим следующий пример:
Мы определяем следующие операции шифрования и дешифрования, где открытый текст, зашифрованный текст, алгоритм и ключ являются действительными числами (предположим, что алгоритм ненулевой):
шифрование (открытый текст, алгоритм, ключ) = алгоритм x (открытый текст + ключ) = зашифрованный текст
дешифрование (зашифрованный текст, алгоритм, ключ) = зашифрованный текст / алгоритм - ключ = открытый текст
Теперь предположим, что открытый текст + ключ = 0. У нас есть шифрованный текст = 0 для любого выбора алгоритма. Следовательно, мы не можем вывести используемый алгоритм.