IETF-SSH archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Publickey subsystem draft posted



Joseph Galbraith  <galb-list%vandyke.com@localhost> wrote:
> The generalized message format is:
> 
> UINT32 length
> string type
> ... request specific data follows

Does the length include the 4 bytes of the length field itself? (I
don't care, but don't forget to state it either way :-)

> What if the "add" command were changed as follows?
> 
> 	string "add"
> 	string public-key algorithm
> 	string public-key blob
> 	uint32 attribute-count
> 		string attrib-name
> 		string attrib-value
> 		bool   mandatory
> 	repeated attribute-count times

Works for me. If anyone needs an attrib-value which is more complex
than a simple string, there's nothing to stop them treating the
string as a blob, and formatting the data inside the blob using
another layer of SSH data types, or indeed any other format they
feel like.

Is it worth defining what should happen if a user attempts to add a
key which is already present, but with different attributes? Should
the add operation fail, or succeed and alter the key setup?

>    If the server does not implement a mandatory attribute, it MUST fail
>    the add.  For the purposes of a mandatory attribute, storage of the
>    attribute is not sufficient, but requires that the server understand
>    and implement the intent of the attribute.

I particularly like that. It reminds me of the bits in PNG that
define what an editing program should do to chunk types it doesn't
recognise. Simple and effective.

> 	The comment field is useful so the user can identify the
> 	key without resorting to comparing it's fingerprint.

(As a vague aside: has anyone done a detailed study of what attacks
might be possible by people - malicious clients, servers, agents,
people, software, sysadmins or anyone else - substituting the
comment for one valid key on another? PuTTY's custom-designed SSH2
key format contains a passphrase-keyed MAC designed to make the
comment field tamper-evident, largely because I couldn't work out
whether there was a possibility of an attack or not, and could see
no reason not to be ultra-cautious. Anyone else had any thoughts on
the subject?)

>    "restrict"
[...]
> 	Currently defined restrictions are:
> 		"x11"
> 		"shell"
> 		"exec"
> 		"port-forward"
> 		"reverse-forward"

What about "subsystem"? Is that worth putting in as a separate one?
Or even "subsystem:foo", for any value of foo?

Actually, the latter might get messy, since subsystem names are
permitted to contain commas by my understanding. And in practice,
anyone restricting a key would be more likely to want to forbid _all
but_ specific subsystems rather than restricting particular ones.

Cheers,
Simon
-- 
Simon Tatham         "infinite loop _see_ loop, infinite"
<anakin%pobox.com@localhost>     - Index, Borland Pascal Language Guide



Home | Main Index | Thread Index | Old Index