открытый ключ для шифрования; закрытый ключ для дешифрования? - PullRequest
3 голосов
/ 29 марта 2011

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

Ответы [ 4 ]

9 голосов
/ 29 марта 2011

Шифрование означает сохранение конфиденциальности некоторых данных;данные преобразуются в непрозрачный большой двоичный объект, и обратная операция требует чего-то, что злоумышленник не знает, то есть «секретной» или «частной» информации.Весь смысл шифрования состоит в том, что расшифровка не может быть сделана только с публичной информацией;следовательно, для расшифровки используется закрытый ключ.Тем не менее, нет никаких проблем, позволяющих кому-либо шифровать данные, поэтому шифрование может использовать открытый ключ.

Существуют некоторые алгоритмы (на практике только один: RSA), которые, на первый взгляд, выглядят так: "обратимый »: вы можете подумать об использовании закрытого ключа для шифрования и открытого ключа для расшифровки.Как объяснено выше, наступает конфиденциальность (если ключ дешифрования является открытым, то любой может расшифровать, следовательно, зашифрованные данные больше не могут считаться конфиденциальными).Такое «обратное шифрование» может использоваться в качестве основы для алгоритма цифровой подписи , в котором отсутствует понятие конфиденциальности, а вместо этого имеется проверяемое доказательство действия владельца ключа.

Однако - это нечто большее, чем модульное возведение в степень.Шифрование RSA сначала преобразует входное сообщение в большое целое число с помощью операции, называемой «заполнение».Генерация подписи RSA сначала преобразует входное сообщение в большое целое число с помощью другой операции, которая также называется «заполнением»; но это совсем не тот же отступ.Заполнение имеет важное значение для безопасности, и необходимые характеристики совершенно различны между шифрованием и подписью.Например, заполнение шифрования требует высокого уровня дополнительной случайности, тогда как заполнение подписи требует большой избыточности (и хэш-функции для размещения длинных входных сообщений).

Говоря о сигнатурах как "шифрование"с закрытым ключом »- так исторически описывается стандартом RSA (отсюда и названия, такие как« md5WithRSAEncryption »), но он неточен (отступы являются и должны быть разными) и чрезмерно специфичен (он применяется только к RSA, а не к ElГамаль, DSA, Диффи-Хеллман, NTRU ...).Это просто распространенная путаница.

1 голос
/ 29 марта 2011

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

1 голос
/ 29 марта 2011

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

Во многих системах с открытым ключом подпись математически аналогична противоположному случаю - «шифрование с помощью закрытого ключа» - но обратите внимание, что операция подписания принципиально отличается от операции шифрования. Например, в RSA для подписи необходимо использовать инвариантный, проверяемый метод заполнения, тогда как для шифрования следует использовать случайное заполнение.

0 голосов
/ 29 марта 2011

Это взаимозаменяемо.

Цифровая подпись -> личный ключ шифрует, открытый ключ расшифровывает, чтобы проверить отправителя.

Отправляет сообщение -> Открытый ключ шифрует, частный дешифрует, и владелец читает сообщение.

РЕДАКТИРОВАТЬ: Люди, кажется, не согласны с определением «взаимозаменяемость».Мне нужно уточнить, что я говорю о математической перспективе операции, а не о том, что лучше с точки зрения безопасности.Конечно, вы должны использовать ключи для их предполагаемой операции.

Однако ответ Хенрика Хеллстрема в SO-потоке объясняет, почему они взаимозаменяемы математически: Являются ли взаимозаменяемыми открытый ключ и закрытый ключ?

...