Идентификация алгоритма шифрования - PullRequest
2 голосов
/ 31 декабря 2008

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

Мой последний вопрос: скажем, у вас есть доступ к простым текстовым данным до того, как они будут зашифрованы, ключ, используемый для шифрования простых текстовых данных, и полученные зашифрованные данные позволят выяснить, какой алгоритм, используемый для шифрования данных, будет осуществим.

Ответы [ 5 ]

8 голосов
/ 31 декабря 2008

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

Нет. Существуют алгоритмы, которые используют другой ключ для расшифровки, чем для шифрования, но метод без ключа будет полагаться на секретность алгоритма, который обычно считается плохой идеей.

Мой последний вопрос, скажем, у вас есть доступ к простым текстовым данным перед он зашифрован, ключ используется для шифровать текстовые данные, а в результате зашифрованные данные, будет выяснить, какой алгоритм раньше зашифровать данные можно?

Скорее всего, да, особенно учитывая ключ. Хороший криптоалгоритм основан на секретности ключа и только на ключе. См. принцип Керкгофа .

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

редактировать: согласно комментариям, вы можете подумать о цифровой подписи (которая требует секрета только на стороне отправителя), алгоритме хеширования (который не требует ключ, но не шифрование), или подтверждение с нулевым знанием (которое может подтвердить знание секрета, не раскрывая его).

5 голосов
/ 01 января 2009

Абстрактно, мы можем думать о системе шифрования следующим образом:

               -------------------
plaintext ---> | algorithm & key | ---> ciphertext
               -------------------

Система должна гарантировать следующее:

расшифровка ( шифрование (открытый текст, алгоритм, ключ), алгоритм, ключ) = открытый текст

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

Да, в такой системе ключ избыточен; вся «секретность» заключается в алгоритме.

Мой последний вопрос скажем, у вас есть доступ к равнине текстовые данные, прежде чем они будут зашифрованы, ключ, используемый для шифрования простого текста данные, и в результате зашифрованы данные, выяснить, какие алгоритм, используемый для шифрования данных возможно?

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

Мы определяем следующие операции шифрования и дешифрования, где открытый текст, зашифрованный текст, алгоритм и ключ являются действительными числами (предположим, что алгоритм ненулевой):

шифрование (открытый текст, алгоритм, ключ) = алгоритм x (открытый текст + ключ) = зашифрованный текст

дешифрование (зашифрованный текст, алгоритм, ключ) = зашифрованный текст / алгоритм - ключ = открытый текст

Теперь предположим, что открытый текст + ключ = 0. У нас есть шифрованный текст = 0 для любого выбора алгоритма. Следовательно, мы не можем вывести используемый алгоритм.

1 голос
/ 27 января 2011

Лучшее, что вы могли бы сделать без известного ключа в декодере, это добавить немного неясности. Например, если первый шаг алгоритма декодирования состоит в удалении всего, кроме каждого десятого символа, то ваш кодированный ключ может использоваться для заполнения случайного мусора для девяти из каждых десяти символов. Таким образом, с разными ключами вы можете получить разные закодированные результаты, которые будут декодированы в одно и то же сообщение, без ключа, необходимого для декодера.

Однако это не добавляет реальной безопасности и не следует полагаться исключительно на защиту важных данных. Я просто думаю о случае, когда это можно было бы сделать, да, я полагаю, что могло бы - если бы вы просто пытались доказать свою точку зрения или добавить еще один уровень безопасности.

1 голос
/ 31 декабря 2008

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

К чему ты клонишь? Создать пару функций, которая соответствует букве спецификации, тривиально, но, не зная цели, сложно дать более полезный ответ.

скажем, у вас есть доступ к простым текстовым данным до их шифрования, ключ, используемый для шифрования простых текстовых данных, и к полученным зашифрованным данным, выяснит, какой алгоритм, используемый для шифрования данных, осуществим?

Если алгоритм хорош, результат будет неотличим от случайного шума, поэтому аналитического решения для этого нет. На практике существует только очень много надежных алгоритмов. Попытка каждого из них по очереди была бы быстрой, но усложнялась бы тем фактом, что реализация обладает некоторой свободой в отношении таких вещей, как порядок байтов (little-endian vs big-endian), вывод ключа (если вместо этого была парольная фраза) фактического самого криптографического ключа), режимы шифрования и заполнение.

Как указывает Франкодвайер, эта ситуация не является частью обычных моделей угроз. Это сработало бы в вашу пользу, так как повышает вероятность того, что алгоритм хорошо известен.

0 голосов
/ 31 декабря 2008

Я не верю, что существует такой алгоритм, который использовал бы ключ для шифрования, но не для расшифровки. (Глупые ответы, такие как 26 символов Цезарь в стороне ...)

На ваш второй вопрос, да; это просто зависит от того, сколько времени вы готовы потратить на это. В теоретической криптографии предполагается, что алгоритм всегда можно определить. Будь то из-за кражи алгоритма или физического компьютера, или, как в вашем случае, с парой простого текста и зашифрованного текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...