О цифровых подписях. Они действительно в безопасности?
Давайте предположим, что я хочу отправить вам зашифрованное и подписанное сообщение, чтобы продемонстрировать подлинность и целостность, а также естественную безопасность шифрования с асимметричным ключом. Процедура, если я не ошибаюсь, следующая:
- Я создаю сообщение, которое хочу отправить вам.
- Я генерирую хэш-версию этого сообщения (дайджест).
- Я шифрую дайджест своим личным ключом.
- Я отправляю вам составленное сообщение, состоящее из сообщения, зашифрованного дайджеста и моего открытого ключа, безопасным способом (например, снова зашифровывая весь пакет с помощью вашего открытого ключа).
- Вы получаете и расшифровываете пакет с помощью своего закрытого ключа, а также расшифровывает дайджест с помощью прилагаемого открытого ключа. Если расшифровка заканчивается успешно, вы гарантируете мою подлинность, потому что я единственный человек, который может иметь этот закрытый ключ.
- Вы снова генерируете хеш-версию прикрепленного сообщения, чтобы проверить целостность, потому что, если дайджесты согласны, значит, сообщение не было повреждено в пути.
Но в таком случае, если вы расшифруете сообщение с помощью моего открытого ключа, вы можете расшифровать сообщение, и, о получении моего личного ключа, не станет ли это проще сейчас?
Причина шифрования сообщения с помощью вашего открытого ключа заключается в том, что у сниффера нет другого "фактора" (хорошо, я знаю, что открытый ключ - это комбинация двух огромных простых чисел и третьего простого числа, а также частного ключ - это ключ, основанный на модульной арифметике, основанный на этих трех простых числах, но для простоты давайте назовем их "двумя факторами".
Но если оба эти фактора "сходятся" и никакого риска нет вообще, что может послужить причиной сохранения секретного ключа в секрете?
2 ответа
Вы были на правильном пути, пока "и, очевидно, не получите мой закрытый ключ".
Есть много математики, которая касается того, как работают ключи.
Принцип работы открытых / закрытых пар ключей заключается в том, что с открытым ключом можно проверить, был ли использован соответствующий закрытый ключ, даже не зная, что такое закрытый ключ. Имея открытый ключ, нет простого способа выяснить личный ключ.
Подпись доказывает, что кто-то, кто знал весь закрытый ключ, подписал файл. Открытый ключ используется только для проверки правильности подписи и того, что сообщение не было изменено или заменено. Их можно использовать и наоборот - используя открытый ключ для шифрования сообщения, расшифровать и прочитать его может только тот, кто знает закрытый ключ.
Вся система открытых / закрытых ключей настроена так, чтобы было проще общаться без существующего безопасного канала. Вы можете опубликовать открытый ключ повсеместно для всех, кто захочет, без ущерба для закрытого ключа.
Когда вы шифруете простой текст с помощью закрытого ключа, вы можете расшифровать зашифрованный текст с помощью открытого ключа. Только один человек должен иметь закрытый ключ. Весь мир имеет доступ к открытому ключу.
Когда у вас есть зашифрованный текст, открытый с помощью открытого ключа, вы получаете только простой текст - закрытый ключ остается закрытым, поскольку вы его не получили.