On Wed, Dec 17, 2008 at 08:56:02AM +0100, Peter Rosin wrote:
> Hi!
> 
> Den 2008-12-14 17:53 skrev Daniel P. Berrange:
> > I have defined a mapping of the SASL authentication scheme into the RFB
> > authentication protocol. Please could you allocate an official security
> > type code for use with this auth scheme, under the name "SASL".
> 
> *snip*
> 
> I looked a bit at this and spotted a few typos, see diff in
> attachment (I replaced 100 with 20 before making the diff, I figured
> those changes were not very interesting).
> 
> I also have a couple of questions:
> 
> 1. Is there any compelling reason to *not* sasl_encode/sasl_decode
> the 6.1.3 SecurityResult message when there is a SSF layer? I think
> using sasl_encode/sasl_decode on that message as well would simplify
> implementations, as the need to hook in after the SecurityResult
> disappears. It would be enough to make the needed stream modification
> while still running in "sasl territory".

One of the possible reasons for sending back a 'failed' SecurityResult
is if the server determines that the negotiated SASL SSF layer is not
suitably strong for its needs, or if the authenticated username was
not allowed by the ACL. In such a scenario, the server may not wish
to go to the bother of using sasl_encode on the securityresult when
it knows it is sending back a reject/failure message & dropping the
connection. I've got proof of concept implementations of this spec for
QEMU and VINO (based of libvncserver) and its not caused any serious
complications in the code so far. 

NB, there are only two common SASL mechanisms which provide SSF layers,
GSSAPI (Kerberos) and DIGEST-MD5. DIGEST-MD5 is deprecated as it is 
considered to be an insufficiently secure negiation. The other SASL
mechanisms all rely on the underlying connection to provide encryption.
As such, with exception of people using Kerberos, for SASL to be secure
you'd want to have the VeNCrypt security type active with one of its
x590 based modes, or tunnelling over SSH, or another TLS like protocol
extension (VINO has one - Security type 18, TLS - but as currently
implemented it is not sufficiently strong because it uses anonymous 
diffie-hellman credentials instead of x590 certs - this is to be fixed).

> 2. Not knowing much about SASL, I'm curious to know if this security
> type is useful on reversed connections? Are there any implications
> to consider?

By reversed connections I assume you mean the scenario where the
client does the socket listen(), and the server does the connect().
Since the RFB protocol negotiation still proceeds in the same direction
regardless of who initiaited the connection, I see no reason why it 
shouldn't be applicable.

SASL at the end of the day though is just a generic specification for
security mechanisms. The actual security characteristics of the apps
using SASL depends entirely on what mechanism(s) is(are) configured. 
Some mechanisms support mutual auth (ie the client verifies the
identity of the server, as well as the server verifying the client).
This chart gives a high level summary:

http://that1site.gotdns.com/docs/cyrus-sasl-2.1.19/mechanisms.html

Though the RFC's are a good to reason for comphrensive analysis of
the security characteristics & limitations of each mechanism.

> 3. And finally, does this security type spec have a home somewhere on
> the Internet?

It will do in the near future. I'll likely host it on the GTK-VNC 
project website once I've finalized the spec. I'll post a message
here when I have a URL for it....

Thanks for the corrections/typos spotted in the spec

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
_______________________________________________
VNC-List mailing list
VNC-List@realvnc.com
To remove yourself from the list visit:
http://www.realvnc.com/mailman/listinfo/vnc-list

Reply via email to