Проверка подлинности и подпись с открытым / закрытым ключом

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

Пока я занимаюсь исследованиями, меня постоянно смущает одна вещь.

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

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

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

2 ответа

Решение

Разница между симметричным и асимметричным шифрованием заключается только в наличии закрытых и открытых ключей.

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

Шифрование и подпись - две разные системы. В некотором смысле, они работают в противоположных направлениях.

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

С помощью подписей только владелец личного ключа может подписывать сообщения. Любой может использовать открытый ключ для проверки подписи сообщения.

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

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

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

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

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

Это не совсем правильно. Многие алгоритмы подписи не являются детерминированными. Проверка подписи выполняется не путем обращения к процессу подписи, а с помощью немного отличающихся вычислений, включающих подпись, сообщение и ключ.

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

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

Я нашел эту ссылку очень полезной: http://www.nusphere.com/products/library/ssl.htm

HTH Охад

РЕДАКТИРОВАТЬ

через 2,5 года я вижу, что ссылка не работает. Так что это тоже хорошо.

И в случае, если через 2,5 года он снова будет сломан, вот краткое изложение:

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

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

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

Другие вопросы по тегам