2013-05-06 4 views
0

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

Но в Подписи сказано, что оно подписывается с закрытым ключом, а затем отправляет открытый ключ (с сигнатурой и данными) в приемник для проверки.

Вопрос в том, возможно ли, что мы шифруем сообщение с помощью закрытого ключа и разрешаем пользователю расшифровывать его с помощью открытого ключа? Если да, то так же сильно, как шифрование его открытым ключом (обычным способом)?

+0

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

ответ

-3

«Мой вопрос, если это возможно, что мы зашифровать сообщение с секретным ключом и пользователем расшифровать его с помощью открытого ключа?»

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

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

+0

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

+1

@Renan, вы подписываете секретный ключ, чтобы доказать, кто вы. Вы шифруете открытый ключ другой стороны, с которой вы общаетесь. – PurpleAlien

+0

@PurpleAlien Спасибо! Я не буду распространять открытый ключ повсюду и только распространять/развертывать его с помощью приложения в файле. Приложение будет читать открытый ключ из файла, а затем использовать его для дешифрования зашифрованного файла, который был зашифрован с помощью закрытого ключа. Использование может уже содержать контент, но мы не хотим, чтобы они его модифицировали. Я знаю, что обычным способом является шифрование файла с помощью открытого ключа и дешифрование его с помощью закрытого ключа, но мы не хотим, чтобы конфиденциальность была известна всем, у кого есть доступ к распределенным/развернутым файлам. Поэтому мой второй вопрос заключается в том, что он так же силен, как и «нормальный путь». –

3

Нет «нормального» способа. И шифрование так же сильно, если вы используете открытый ключ так, как если бы вы использовали частный.

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

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

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

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

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

+5

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

+0

Я не знал об этом. Теперь я узнал что-то новое :) Спасибо. – Renan

+1

К сожалению, попытка учить, пока вы все еще учитесь, не рекомендуется, в данном случае с -1. –

3

Привилегия цифровой подписи RSA может (грубо) считаться «шифрованием с помощью закрытого ключа». Математика имеет ту же форму, что и шифрование (x = m y mod n), но вместо экспоненты используется частный экспонент, а сообщение заполняется по-разному.

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

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

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

+0

Просто, чтобы уточнить, это не так, как RSA-подпись работает на практике, потому что она уязвима для атак. Вместо этого вы сначала применяете криптографическую хэш-функцию к сообщению m, а затем применяете алгоритм RSA. – PurpleAlien

+0

@PurpleAlien Существует еще больше, чем это. Подпись RSA является * not * 'hash (m)^d mod n'. Основание возведения в степень должно быть правильно закодировано, но хеширование - всего лишь один шаг. – erickson

+0

Да, определенно - но не хотел бы, чтобы OP думал, что все, что ему нужно сделать, это зашифровать с помощью закрытого ключа для генерации подписи. Отказ от ответственности: криптограф – PurpleAlien