Как зашифровать HTTP-ответ с использованием RSA-шифрования - PullRequest
0 голосов
/ 03 февраля 2020

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

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

(2) Попросите клиентов предоставьте их ключ publi c и зашифруйте ответ этим ключом publi c.

Пожалуйста, предложите, какую стратегию использовать для шифрования ответа?

1 Ответ

2 голосов
/ 03 февраля 2020

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

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

  1. ключам publi c нужно доверять, и вам может потребоваться настроить полную PKI для доверия ключам;
  2. сообщения большего размера не может быть легко зашифрован с помощью RSA, поэтому вам может понадобиться гибридное шифрование (шифрование случайного ключа AES и шифрование сообщений с этим);
  3. заполнение oracle атаки вполне реальны и применимы к RSA, поэтому просто выполнять RSA довольно опасно.

Именно поэтому обычно рекомендуется полагаться только на TLS. TLS не всегда безопасен, но почти всегда более безопасен, чем самодельная схема.

...