Re: System unique identifier.....

tytso@mit.edu
Mon, 21 Jun 1999 14:08:44 -0400


Date: Sun, 20 Jun 1999 22:13:02 +0100 (BST)
From: Alan Cox <alan@lxorguk.ukuu.org.uk>

There is a standard for it (which btw I think you will find Solaris
uses) its called UUID and you can find an RFC on it. Note btw that
standard UUID's have some interesting security issues if anonymity is
designed. In the normal case the out of the book algorithm is great

Check out the internet-draft (I-D):

draft-leach-uuids-guids-01.txt

... which can be found for example at ftp://ftp.ietf.org/internet-drafts/
There is a solution to the privacy/anonymity problem in this draft.

Paul Leach was the person that came up with the UUID format that many
(if not most) systems uses these days. The UUID concept first popped up
in Apollo Domain OS (where Paul first worked), and then at OSF's DCE
(where Paul was a senior architect) and then at Microsoft's product (and
guess where Paul works today :-).

The UUID concept as a whole is a good one. The reason for the privacy
problem was that way back when, many people didn't have a lot of faith
that systems would have high quality random number generators (think
random() and shudder), so that's why the original UUID format specified
the use of the ethernet MAC address plus the current time using 100ns
granularity as a way of guaranteeing universal uniqueness in the the
128-bit UUID.

Unfortunately, this caused Microsoft huge privacy/anonymity headache
because how they used it. I don't think this was deliberate, by the
way. The MS engineers probably just looked at the API interface, saw
that the UUID generator gave them what they needed (a universally unique
ID), and didn't stop to think about the implications of how the
underlying implementations was giving them the functionality they were
looking for....

Anyway, the latest internet-draft documenting UUID's fixes this problem
by providing a new version of UUID (yes, the UUID has a version field)
which uses a 122 complete random bits to form the UUID, and this takes
care of the anonymity problem.

There is a general purpose UUID library for use in e2fsprogs; if you
want to use this library in other programs (the GNOME folks have
indicated such an interest to me, for example), make sure you grab the
following pre-1.15 snapshot:

http://web.mit.edu/tytso/www/linux/dist/e2fsprogs-1.15-WIP.tar.gz

The UUID library in 1.15-WIP supports the new completely-random UUID
format. It also changes the return value of the uuid_compare() function
to be the same as the sample implementation in the
draft-leach-uuids-guids-01.txt I-D. The latter change risks some
confusion on the parts of folks using the UUID library, but as far as I
know very no one is using the UUID library out of the e2fsprogs
distribution, and making this change avoids future confusion on the
parts who may have coded to the reference implementation in the
I-D, as well as making the return value use the same
convention as strcmp() and memcmp().

- Ted

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/