I am sponsoring this fasttrack for Stefan Teleman of the X team. The timer is set for next Tuesday, June 23, 2009.
While the design decisions made by XDM-AUTHORIZATION-1 are clearly inappropriate today (Triple-DES encryption of an string containing a network address limited to 32 bits (i.e. IPv4 only, no v6)), this case is about interoperability with this existing, 15-year old, widely implemented standard, not designing new protocols for today. When I submitted the draft version of what became the XDMCP 1.1 standard to X.Org, it included a proposal for XDM-AUTHORIZATION-2 which would have supported IPv6 and used AES instead - the X.Org standards body decided to defer that support until someone wanted it badly enough to provide a sample implementation for evaluation. Since that did not happen during the standards review of the IPv6 changes, XDMCP 1.1 was published without it (resulting in the "curious" situation Stefan notes below) - since that still has not happened, XDM-AUTHORIZATION-1 remains in its limited state, but still utilized and interoperable with existing implementations. (The most common alternative, MIT-MAGIC-COOKIE, is a simple ascii encoding of the output of a random number generator such as /dev/urandom, so it's not like this is much worse of a method of generating a shared secret, it's just not really any better either.) -Alan Coopersmith- alan.coopersmith at sun.com Sun Microsystems, Inc. - X Window System Engineering Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: XDM-AUTHORIZATION-1 support in libXdmcp 1.2. Name of Document Author/Supplier: Author: Stefan Teleman 1.3 Date of This Document: 16 June, 2009 4. Technical Description Including XDMAUTH with X11 in Solaris Stefan Teleman <stefan.teleman at Sun.COM> 11 June 2009 1. Summary and motivation XDMCP [ The X Display Manager Control Protocol ] provides for several possible authentication mechanisms: - MIT-MAGIC-COOKIE-1 - XDM-AUTHORIZATION-1 - SUN-DES-1 - MIT-KERBEROS-5 Not all of these authentication mechanisms are available in all builds or implementations. The XDM-AUTHORIZATION-1 mechanism is similar to the MIT-MAGIC-COOKIE-1 mechanism: a key is stored in the .Xauthority file, and is shared with the X server. This key consists of two parts - a 56-bit DES encryption key and 64 bits of random data used as the authenticator. XDM-AUTHORIZATION-1 is only available if libXdmcp was compiled with, and provides run-time support for, this mechanism. Such support is discovered at software construction time [ ./configure ], by checking for the presence of one translation unit, not necessarily named Wraphelp.c. This translation unit provides implementations for two C functions with private API binding: void _XdmcpAuthSetup(auth_cblock key, auth_wrapper_schedule schedule); void _XdmcpAuthDoIt(auth_cblock input, auth_cblock output, auth_wrapper_schedule schedule, int flag); Various different implementations of the two functions mentioned above are possible. Regardless of implementation, conformance to the canonical prototypes defined for these two functions is expected and assumed. Until now, Solaris has not provided support for XDM-AUTHORIZATION-1 authentication. This Case proposes the inclusion of this XDMCP authentication mechanism with Solaris. This Case seeks Micro/Patch release binding. 2. Technical issues 2.1. Key Objects libXdmcp.so.6 This library is, and has been for some time, present in Solaris, but without the _Xdmcp* interfaces exposed by Wraphelp.o, therefore without support for XDM-AUTHORIZATION-1. 2.2. ABI and API Considerations Introducing support for XDM-AUTHORIZATION-1 does not create ABI or API incompatibilities: the two functions mentioned above are simply added to the existing libXdmcp.so.6 API. Given that libXdmcp.so.6 is written in C, and that these two new functions have private binding, there are no ABI compatibility issues; the introduction of these new functions does not require, or create, modifications to the existing libXdmcp.so.6 API. The particular details of any given implementation of the _Xdmcp* functions are irrelevant to the libXdmcp.so.6 interface consumer: the only concern is whether or not these interfaces are available. 2.3. Known limitations XDM-AUTHORIZATION-1 implements a TDES [ FIPS 46-3 ] [1] based access control mechanism [ as per description above ]. Environments with more stringent security requirements may consider cryptologically stronger ciphers more appropriate. XDM-AUTHORIZATION-1 stores secret data in the .Xauthority file [ similar to MIT-MAGIC-COOKIE-1 ]. Obtaining read access to a user's .Xauthority file is a security breach: authentication data can be read from a user's .Xauthority file and can be written to a different .Xauthority file by the xauth(1) program, thereby granting authenticated access to the Xserver. In addition, XDM-AUTHORIZATION-1 only supports TCP/IPv4 connections. Although RFE's for a TCP/IPv6 implementation have been discussed, no default implementation based on TCP/IPv6 has been provided to date. TCP/IPv6 is explicitly excluded [ by omission ] from the XDMCP Specification. Curiously enough, UDP/IPv4 and UDP/IPv6 are explicitly discussed in the same Specification. In spite of these known limitations, including XDM-AUTHORIZATION-1 is a Protocol Standard conformance requirement. A future ARC Case may discuss the introduction and design of a more flexible, secure and sophisticated implementation of the XDMCP authorization mechanism: MIT-KERBEROS-5. [2] 2.4. Documentation PostScript documentation for the XDMCP Specification and the XDM-AUTHORIZATION-1 authorization mechanism is available. [3] Documentation of the library API is not available. 3. Interfaces 3.1. Interface Stability The prototypes for the two functions mentioned above have not changed at least since X11 Release 6. This case does not propose altering the current Interface Stability Classification [ Committed ] currently in effect for libXdmcp.so.6. 3.2. Interface Dependencies and Compatibility Introducing XDM-AUTHORIZATION-1 in libXdmcp.so.6 does not create additional compile-time, or run-time, dependencies for the library. 4. References [0] http://www.x.org/ [1] http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf [2] http://web.mit.edu/Kerberos/ [3] http://www.x.org/docs/XDMCP/ 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: X Consolidation / Desktop C-Team 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open