Проверка подлинности и подпись с открытым / закрытым ключом
Я работаю над решением единого входа, чтобы моя компания могла интегрироваться с другими поставщиками.
Пока я занимаюсь исследованиями, меня постоянно смущает одна вещь.
Насколько я понимаю, открытый / закрытый ключ заключается в том, что данные всегда шифруются с помощью открытого ключа поставщика, и они дешифруют с помощью своего закрытого ключа. Все идет нормально.
Однако для проверки того, что сообщение действительно исходит от меня, я вычислю хеш сообщения и зашифрую его с помощью своего закрытого ключа (этот процесс также называется подписанием). Чтобы убедиться, что сообщение исходит от меня, поставщик использует мой открытый ключ для расшифровки хэша и сравнения его с незашифрованным хэшем. Если они совпадают, продавец может быть уверен, что это от меня.
Так почему же мой личный ключ используется для шифрования сообщения... и как открытый ключ может расшифровать сообщение? Я думал, что асимметричные ключи не позволяют этого! т.е. открытый ключ всегда шифрует, а закрытый ключ всегда расшифровывает. Любые объяснения будут с благодарностью..!
2 ответа
Разница между симметричным и асимметричным шифрованием заключается только в наличии закрытых и открытых ключей.
Тем не менее, в общих алгоритмах вы можете использовать закрытый ключ для шифрования сообщений, которые могут быть расшифрованы с помощью открытого ключа, а также вы можете расшифровать сообщения, которые зашифрованы с помощью открытого ключа. Так что это возможно в обоих направлениях.
Шифрование и подпись - две разные системы. В некотором смысле, они работают в противоположных направлениях.
С помощью шифрования с открытым ключом любой может зашифровать данные с помощью открытого ключа. Только владелец закрытого ключа может расшифровать зашифрованные сообщения для восстановления данных.
С помощью подписей только владелец личного ключа может подписывать сообщения. Любой может использовать открытый ключ для проверки подписи сообщения.
Насколько я понимаю, открытый / закрытый ключ заключается в том, что данные всегда шифруются с помощью открытого ключа поставщика, и они дешифруют с помощью своего закрытого ключа.
Правильно. Но он охватывает только шифрование с открытым ключом, а не другие виды использования криптографии с открытым ключом, такие как подписи.
Однако для проверки того, что сообщение действительно исходит от меня, я вычислю хеш сообщения и зашифрую его с помощью своего закрытого ключа (этот процесс также называется подписанием).
На самом деле, этот процесс должен быть известен только как подписание. Называть его "шифрованием с помощью моего закрытого ключа" очень обманчиво: это не совсем так. Существует один популярный тип ключей (RSA), который можно использовать как для подписи, так и для шифрования, но даже с RSA механизмы подписи и дешифрования различны.
Чтобы убедиться, что сообщение исходит от меня, поставщик использует мой открытый ключ для расшифровки хэша и сравнения его с незашифрованным хэшем. Если они совпадают, продавец может быть уверен, что это от меня.
Это не совсем правильно. Многие алгоритмы подписи не являются детерминированными. Проверка подписи выполняется не путем обращения к процессу подписи, а с помощью немного отличающихся вычислений, включающих подпись, сообщение и ключ.
Так почему мой личный ключ используется для шифрования сообщения... и как открытый ключ может расшифровать сообщение? Я думал, что асимметричные ключи не позволяют этого! т.е. открытый ключ всегда шифрует, а закрытый ключ всегда расшифровывает. Любые объяснения будут с благодарностью..!
Закрытый ключ используется для подписи сообщения, а не для его шифрования. Открытый ключ используется для проверки подписанного сообщения, а не для его расшифровки.
Я нашел эту ссылку очень полезной: http://www.nusphere.com/products/library/ssl.htm
HTH Охад
РЕДАКТИРОВАТЬ
через 2,5 года я вижу, что ссылка не работает. Так что это тоже хорошо.
И в случае, если через 2,5 года он снова будет сломан, вот краткое изложение:
Открытый ключ - это то, что предполагает его название - Открытый. Он доступен для всех через общедоступный репозиторий или каталог. С другой стороны, закрытый ключ должен оставаться конфиденциальным для соответствующего владельца.
Поскольку пара ключей математически связана, все, что зашифровано с помощью открытого ключа, может быть дешифровано только соответствующим закрытым ключом и наоборот.
Таким образом, криптография с открытым ключом может обеспечить конфиденциальность. Однако другим важным аспектом криптографии с открытым ключом является его способность создавать цифровую подпись.