Что, если кто-то совершает человека в середине атаки
MITM может заменить подпись и открытый ключ
Как этого избежать?
В основном используют SSL / TLS и / или ...
Насколько я исследовал, я должен убедиться, что отправленный открытый ключ исходит от соответствующего клиента иэто делается через CA (центр сертификации)
Если вы используете центр сертификации, каждый сертификат подписывается с помощью закрытого ключа сертификата корневого CA (или subCA), поэтому MITM не может создатьдействительный сертификат, потому что он не владеет корневым закрытым ключом.
На стороне сервера вы можете проверить, что подпись выполнена с помощью закрытого ключа, который соответствует сертификату, выданному ЦС.Обратите внимание, что в этом случае вы работаете с сертификатами, а не только с открытыми ключами (сертификат охватывает открытый ключ).
Я делаю это в качестве окончательного проекта в университете, и я не уверен, какчтобы подойти к этой проблеме.
Вы объяснили свое решение, но не фон.Я имею в виду, почему вы решили, что вам нужна цифровая подпись?без этой информации я не могу вам посоветовать.
Должен ли я сгенерировать сертификат открытого ключа на стороне клиента и отправить его вместе с открытым ключом?
Читать мои предыдущиекомментарий
Можно ли сгенерировать самозаверяющие сертификаты на стороне клиента, а затем проверить их на серверной части?
Да, конечно.Вы можете сгенерировать пару ключей на стороне клиента и связать открытый ключ с учетной записью пользователя во время процесса регистрации (с использованием безопасного канала)
Таким образом, вам даже не нужен пароль.Цифровая подпись с закрытым ключом является подтверждением подлинности.Использование CA необязательно.CA может выдать сертификат, содержащий открытый ключ, но для этого сценария не требуется