keyboard-interactive
Markus Friedl
markus at openbsd.org
Thu Jan 10 19:48:57 EST 2002
On Thu, Jan 10, 2002 at 12:10:26AM -0800, Frank Cusack wrote:
> But KEXINIT (or any other non-auth message) /need not/ be handled
> "synchronously".
as i understand the transport draft, the KEXINIT
is handled by a lower layer, and if the client
send a KEXINIT message after the USERAUTH_REQUEST message,
then the lower layer must finish the key exchange
before continuing with the user authentication.
> Well, at best it's not clear that it /must be/ handled
> synchronously. Before I get to that, let me start with a problem in
> draft-ietf-secsh-userauth-13.txt, sec 2.1. As someone else mentioned,
> it says
>
> An authentication request MAY result in a further exchange of
> messages. All such messages depend on the authentication method
> used, and the client MAY at any time continue with a new
> SSH_MSG_USERAUTH_REQUEST message, in which case the server MUST
> abandon the previous authentication attempt and continue with the new
> one.
>
> However, this conflicts with the text of sec 2.2, which says
>
> The client MAY send several authentication requests without waiting
> for responses from previous requests. The server MUST acknowledge
> any failed requests with a SSH_MSG_USERAUTH_FAILURE message.
> However, SSH_MSG_USERAUTH_SUCCESS MUST be sent only once, and once
> SSH_MSG_USERAUTH_SUCCESS has been sent, any further authentication
> requests received after that SHOULD be silently ignored.
>
> The conflict is that the server must acknowledge failed requests.
> Sec 2.1 says the server must ABANDON previous authentications if it
> receives another request. So we're off to a bad start.
>
> Sec. 2.2 goes on,
>
> Any non-authentication messages sent by the client after the request
> that resulted in SSH_MSG_USERAUTH_SUCCESS being sent MUST be passed
> to the service being run on top of this protocol.
i don't think this includes KEXINIT, because it's a lower layer.
> IMvHO, I would say the best course of action is to make no changes in
> the current implementation (other than perhaps handling an abortive (new)
> auth request), and instead spend energy getting the draft corrected/clarified.
yes, the only thing that needs to be handled is:
(1) C->S: USERAUTH_REQUEST(kbdint)
(2) S->C: INFO_REQUEST
(3) C->S: USERAUTH_REQUEST(pubkey)
(4) S->C: USERAUTH_SUCCESS/FAILURE
the draft reads:
> The server MUST acknowledge
> any failed requests with a SSH_MSG_USERAUTH_FAILURE message.
I guess this does _not_ mean that after message (3) the
server has to send a USERAUTH_FAILURE for message (1),
since this message has been handled by (2).
However, on receiving (3) the state associated with "kbdint"
must be abandonned.
> Again, I'd do nothing until the draft is clarified. Especially given the
> expectation that current clients don't/won't actually show this behaviour.
-m
More information about the openssh-unix-dev
mailing list