M
2. Симметричным паролем (знает только пользователь) шифруешь приватный ключ, публичный прикладываешь рядом
3. Полученный контейнер отправляешь на сервер
4. Сервер сохраняет контейнер в базе
5. Отправляешь клиенту контейнер когда тот попросит
6. Он, на своей стороне, расшифровывает приватный ключ симметричным паролем и подписывает все запросы.
Векторов для атаки тут два: окружение небезопасно во время генерации приватного ключа, и когда клиент расшифровал контейнер для подписи своих запросов