freebsd-dev/crypto/openssh/PROTOCOL.agent
Ed Maste 38a52bd3b5 ssh: update to OpenSSH 9.1p1
Release notes are available at https://www.openssh.com/txt/release-9.1

9.1 contains fixes for three minor memory safety problems; these have
lready been merged to the copy of OpenSSH 9.0 that is in the FreeBSD base
system.

Some highlights copied from the release notes:

Potentially-incompatible changes
--------------------------------

 * ssh(1), sshd(8): SetEnv directives in ssh_config and sshd_config
   are now first-match-wins to match other directives. Previously
   if an environment variable was multiply specified the last set
   value would have been used. bz3438

 * ssh-keygen(8): ssh-keygen -A (generate all default host key types)
   will no longer generate DSA keys, as these are insecure and have
   not been used by default for some years.

New features
------------

 * ssh(1), sshd(8): add a RequiredRSASize directive to set a minimum
   RSA key length. Keys below this length will be ignored for user
   authentication and for host authentication in sshd(8).

 * sftp-server(8): add a "users-groups-by-id@openssh.com" extension
   request that allows the client to obtain user/group names that
   correspond to a set of uids/gids.

 * sftp(1): use "users-groups-by-id@openssh.com" sftp-server
   extension (when available) to fill in user/group names for
   directory listings.

 * sftp-server(8): support the "home-directory" extension request
   defined in draft-ietf-secsh-filexfer-extensions-00. This overlaps
   a bit with the existing "expand-path@openssh.com", but some other
   clients support it.

 * ssh-keygen(1), sshd(8): allow certificate validity intervals,
   sshsig verification times and authorized_keys expiry-time options
   to accept dates in the UTC time zone in addition to the default
   of interpreting them in the system time zone. YYYYMMDD and
   YYMMDDHHMM[SS] dates/times will be interpreted as UTC if suffixed
   with a 'Z' character.

   Also allow certificate validity intervals to be specified in raw
   seconds-since-epoch as hex value, e.g. -V 0x1234:0x4567890. This
   is intended for use by regress tests and other tools that call
   ssh-keygen as part of a CA workflow. bz3468

 * sftp(1): allow arguments to the sftp -D option, e.g. sftp -D
   "/usr/libexec/sftp-server -el debug3"

 * ssh-keygen(1): allow the existing -U (use agent) flag to work
   with "-Y sign" operations, where it will be interpreted to require
   that the private keys is hosted in an agent; bz3429

MFC after:	2 weeks
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
2022-10-19 10:27:11 -04:00

85 lines
3.0 KiB
Plaintext

The SSH agent protocol is described in
https://tools.ietf.org/html/draft-miller-ssh-agent-04
This file documents OpenSSH's extensions to the agent protocol.
1. session-bind@openssh.com extension
This extension allows a ssh client to bind an agent connection to a
particular SSH session identifier as derived from the initial key
exchange (as per RFC4253 section 7.2) and the host key used for that
exchange. This binding is verifiable at the agent by including the
initial KEX signature made by the host key.
The message format is:
byte SSH_AGENTC_EXTENSION (0x1b)
string session-bind@openssh.com
string hostkey
string session identifier
string signature
bool is_forwarding
Where 'hostkey' is the encoded server host public key, 'session
identifier' is the exchange hash derived from the initial key
exchange, 'signature' is the server's signature of the session
identifier using the private hostkey, as sent in the final
SSH2_MSG_KEXDH_REPLY/SSH2_MSG_KEXECDH_REPLY message of the initial key
exchange. 'is_forwarding' is a flag indicating whether this connection
should be bound for user authentication or forwarding.
When an agent received this message, it will verify the signature and
check the consistency of its contents, including refusing to accept
a duplicate session identifier, or any attempt to bind a connection
previously bound for authentication. It will then then record the
binding for the life of the connection for use later in testing per-key
destination constraints.
2. restrict-destination-v00@openssh.com key constraint extension
The key constraint extension supports destination- and forwarding path-
restricted keys. It may be attached as a constraint when keys or
smartcard keys are added to an agent.
byte SSH_AGENT_CONSTRAIN_EXTENSION (0xff)
string restrict-destination-v00@openssh.com
constraint[] constraints
Where a constraint consists of:
string from_username (must be empty)
string from_hostname
keyspec[] from_hostkeys
string to_username
string to_hostname
keyspec[] to_hostkeys
And a keyspec consists of:
string keyblob
bool is_ca
When receiving this message, the agent will ensure that the
'from_username' field is empty, and that 'to_hostname' and 'to_hostkeys'
have been supplied (empty 'from_hostname' and 'from_hostkeys' are valid
and signify the initial hop from the host running ssh-agent). The agent
will then record the constraint against the key.
Subsequent operations on this key including add/remove/request
identities and, in particular, signature requests will check the key
constraints against the session-bind@openssh.com bindings recorded for
the agent connection over which they were received.
3. SSH_AGENT_CONSTRAIN_MAXSIGN key constraint
This key constraint allows communication to an agent of the maximum
number of signatures that may be made with an XMSS key. The format of
the constraint is:
byte SSH_AGENT_CONSTRAIN_MAXSIGN (0x03)
uint32 max_signatures
This option is only valid for XMSS keys.
$OpenBSD: PROTOCOL.agent,v 1.18 2022/09/21 22:26:50 dtucker Exp $