1995·crypto
Modern

SSH public-key

Клиент подписывает challenge приватным ключом, сервер проверяет открытым.

Плюсы
  • +Без передачи секрета
  • +Стандарт для серверного доступа
Минусы
  • Управление ключами на устройствах
SSH publickey auth
ClientsshdSSH_MSG_USERAUTH_REQUEST publickey, key_alg, pubkeypubkey ∈ ~/.ssh/authorized_keys?SSH_MSG_USERAUTH_PK_OKrandom session bytes (challenge)sign(session_id ‖ user ‖ pubkey) priv keyUSERAUTH_REQUEST + signatureverify with pubkeyUSERAUTH_SUCCESS
  1. 1.Client sshdSSH_MSG_USERAUTH_REQUEST publickey, key_alg, pubkey
  2. 2.sshd sshdpubkey ∈ ~/.ssh/authorized_keys?
  3. 3.sshd ClientSSH_MSG_USERAUTH_PK_OK
  4. 4.sshd Clientrandom session bytes (challenge)
  5. 5.Client Clientsign(session_id ‖ user ‖ pubkey) priv key
  6. 6.Client sshdUSERAUTH_REQUEST + signature
  7. 7.sshd sshdverify with pubkey
  8. 8.sshd ClientUSERAUTH_SUCCESS
SSH public-key challenge

Сервер шлёт случайный challenge → клиент подписывает приватным ключом → сервер проверяет open key.

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDemoKeyDemoKeyDemoKeyDemoKey alice@laptop
Network · DevTools
Запусти демо — сюда упадут все запросы.
Выбери запрос слева, чтобы посмотреть детали.