Я работаю с Asymmetric Cryptography (RSA & ECC)
.У меня есть очень фундаментальный вопрос, когда дело доходит до обмена открытыми ключами или, по крайней мере, моего понимания механизма.
Соображения
- клиент с именем C1
- сервер с именем S1
- алгоритм: RSA (асимметричный)
- угроза: человек посередине
- цель: передача конфиденциальной информации по сети (могут быть данные или симметричные ключи для гибридной записи)
Что я имеючитать дальше
- C1 создает пару ключей RSA и отправляет вызов API в открытом ключе на S1.
- При получении запроса с открытым ключом клиентасервер (S1) генерирует пару ключей RSA и отправляет ее обратно клиенту (C1).
- Теперь, когда ключи уже переданы, C1 шифрует данные (зашифрованный текст) с помощью открытого ключа сервера,sign это зашифрованный текст с закрытым ключом клиента и делает вызов API.
- Сервер получает запрос, содержащий зашифрованный текст, использует открытый ключ клиента для проверки подписи, использует закрытый ключ сервера для дешифрования данных, выполняет некоторые операции, генерирует ответ, шифрует ответ, используя клиентоткрытый ключ, подписывает зашифрованный текст ответа секретным ключом сервера и возвращает ответ.
Как это возможно, если человек в середине атаки?
- в первом вызове, скажем, хакер перехватывает первый вызов, который делает клиент (C1), генерирует пару ключей RSA и вместо этого отправляет серверу открытый ключ хакера.
- Сервер возвращает открытый ключ сервера, и хакер перехватывает ответ сервера и сохраняет открытый ключ сервера, а затем возвращает открытый ключ хакера клиенту.
- Клиент предполагает, что открытый ключ хакера на самом деле является открытым ключом сервера, шифрует данные, подписывает их и отправляет обратно.
- Хакер также перехватывает этот вызов и расшифровывает данные., изменяет его и шифрует его с помощью открытого ключа сервера, подписывает его закрытым ключом Хакера и отправляет его на сервер.
- Сервер проверяет текст шифра и пытается расшифровать его, и все работает, так как сервер имеетоткрытый хакер зарегистрирован как открытый ключ клиента.
Теперь, чтобы это было очень легко взломать, хакер (Человек посередине) может читать конфиденциальную информацию, а также может изменять запрос, который может привести к вредоносным операциям на сервере приложений..
Я уверен, что мне чего-то не хватает в этом потоке, так как RSA и такое взаимодействие так широко используется.Может кто-нибудь указать, что я пропустил, и если я ничего не пропустил, как я могу защитить систему от таких атак