Если у меня есть и закодированное сообщение, и его оригинал, можно ли вывести закрытый ключ?
5 ответов
Так как это не было упомянуто: это известно как атака с открытым текстом и будет очень плохой уязвимостью для шифра. Фактически, в криптографии с открытым ключом эта атака эквивалентна атаке с использованием открытого текста, поскольку любой может зашифровать любое сообщение!
Там есть на самом деле были некоторые известные / выбраны-открытым текстом атаки на RSA (шифр с открытым ключом чаще всего используется PGP для шифрования с симметричным ключом), но они обычно включают атаки побочного канала против плохих реализаций, или требуется безумное количество шифротекстов, или работают только против определенных, редких ключей.
Тем не менее, в целом, ответ на ваш вопрос "нет" - это то, что делает шифр безопасным.
Нет, это точка асимметричных ключей (открытый и закрытый), так как вы можете легко закодировать сообщение с открытым ключом (вот для чего оно), у вас есть дешифрованное и зашифрованное сообщение. Но расшифровка зашифрованного сообщения возможна только с помощью закрытого ключа. Закрытый ключ не может быть восстановлен.
Нет, это было бы очень плохо. В шифровании PGP используется последовательная комбинация хеширования, сжатия данных, криптографии с симметричным ключом и, наконец, криптографии с открытым ключом. Хеширование использует односторонние функции. Односторонняя функция - это функция, которую легко вычислить, но трудно перевернуть. Криптография с открытым ключом использует асимметричные алгоритмы.
Алгоритмы, используемые для криптографии с открытым ключом, основаны на математических отношениях (наиболее заметными из которых являются задачи целочисленной факторизации и дискретного логарифма), которые, по-видимому, не имеют эффективного решения. Хотя предполагаемому получателю в вычислительном отношении легко сгенерировать открытый и закрытый ключи, расшифровать сообщение с помощью закрытого ключа и легко отправителю зашифровать сообщение с помощью открытого ключа, это чрезвычайно трудно (или фактически невозможно) для Кто угодно может получить личный ключ, основываясь только на его знании открытого ключа.
Просто иметь оригинальное сообщение недостаточно, чтобы вывести закрытый ключ.
Есть два ответа на это.
Это теоретически возможно? Да. Вы можете сгенерировать поддельный ключ, попробовать шифрование, посмотреть, соответствует ли он. Если нет, попробуйте другой поддельный ключ, зашифруйте, посмотрите, совпадает ли вывод. Это обычно называют атакой грубой силы
На практике это не может быть сделано. Чтобы попробовать это, требуется ненулевое количество времени и вычислительной мощности. Для шифрования PGP обычно используется ключ приличного размера, может быть 512, 1024, 2048 или даже больше битов. Пространство клавиш (количество клавиш, которое вы можете иметь) настолько велико, что вам понадобится целая вечность, чтобы найти эту комбинацию.
Я предполагаю, что вы спрашивали, могли ли бы вы сделать это, а не теорию. И поэтому ответ - нет. Миру не хватает вычислительной мощности для этого. Если вы спросите на security.stackexchange.com, кто-то, кто лучше знаком с алгоритмами и математикой, скажет, сколько времени это займет (возможно, пока солнце не метастазирует и не закипает нашу планету). Мой короткий ответ "не в вашей жизни"
Маловероятно, что это может помочь, но не должно слишком далеко завести Форма безопасности, вероятно, является лучшим местом для этого, но:
У вас должно быть несколько шагов к шифрованию, как минимум, даже приличный должен иметь начальное число, хеш и соль.
Например, у вас может быть желание сделать все пароли длиной 64 бита, а затем запустить их через хеш. Если бы это был только хеш, то было бы очень легко взломать.
Это очень простая версия ... но это не так просто.