Я работаю над решением для единого входа, чтобы моя компания могла интегрироваться с другими поставщиками.аутентификация и подписи с открытым/закрытым ключом
Поскольку я занимаюсь своими исследованиями, меня постоянно сбивает с толку.
Мое понимание ключа Public/Private заключается в том, что данные всегда зашифровываются открытым ключом поставщика и дешифруются с использованием их закрытого ключа. Все идет нормально.
Однако, чтобы подтвердить, что сообщение действительно исходит от меня, я буду вычислять хэш сообщения и шифровать хеш с помощью своего личного ключа (этот процесс также известен как подписание). Чтобы проверить, что сообщение приходит от меня, поставщик будет использовать мой открытый ключ, чтобы расшифровать хэш и сравнить его с незашифрованным хэшем. Если они совпадают, продавец может быть уверен, что он пришел от меня.
Так как же мой закрытый ключ используется для шифрования сообщения ... и как открытый ключ может расшифровать сообщение? Я думал, что асимметричные клавиши этого не позволяют ... i.e Открытый ключ всегда шифрует, а закрытый ключ всегда расшифровывается. Любые объяснения будут очень благодарны ..!
Да, так работают и сертификаты Root. Браузер проверяет сертификат, предоставленный сервером, на корневой сертификат, установленный в браузере. Открытый ключ Root CA используется для дешифрования «зашифрованного» открытого ключа в сертификате. Но правильно ли говорить, что шифрование секретного ключа должно использоваться только для подписания и т. Д., А фактические бизнес-данные всегда должны быть зашифрованы с использованием открытого ключа поставщика. –
Ну, корневые сертификаты основаны на концепции RSA-криптографии (http: //en.wikipedia.org/wiki/RSA_ (алгоритм)), о котором я упоминал в своем ответе. Но вы также можете использовать бизнес-данные для шифрования с помощью своего личного ключа. Обычно это так, как вы описали. Но вы теоретически можете дешифровать и шифровать все с помощью клавиш. – blacklwhite