Naming Things with Hashes
tools.ietf.org
tools.ietf.org
About 10 years ago, Oren Tirosh published "mnemonicode", which was a selection of 1600 words which were optimized to be (i) internationally recognizable, and (ii) have distinctive pronunciation that would survive a low-quality phone medium and/or a non-native speaker.
I can only find a copy in the wayback machine now:
http://web.archive.org/web/20051109230247/http://www.tothink...
http://web.archive.org/web/20051109233255/http://www.tothink...
But if we're adding a way to "name things", I think over-the-phone naming should also be considered.
For example, Crockford's is different from both of the variants defined in IETF RFC 4648 (http://tools.ietf.org/html/rfc4648#section-6). For comparison, the digits sets for 0-31 are:
RFC4648-b32: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
RFC4648-b32he: 0123456789ABCDEFGHIJKLMNOPQRSTUV
Crockford-b32: 0123456789ABCDEFGHJKMNPQRSTVWXYZ
There are even others. Each had locally-reasonable reasons for their variation at the time.I used the 1st row approach, in the SHA1 identifiers at Bitzi and in the original 'magnet:' proposal, because it had also been documented in an earlier IETF RFC for other purposes, and is perhaps best for anyplace where human sight-reading/handwriting could confuse certain digits. But the 2nd-row variant is easiest for encoding/decoding, and the 2nd/3rd row variants have some sorting benefits (the encoded versions sort in the same order as the raw binary versions).
This would still be a valid URI without the unnecessary characters and without the confusion:
ni:sha-256;UyaQV-Ev4rdLoHyJJWCi11OHfrYv9E1aGQAlMO2X_-Q
See: https://www.ietf.org/rfc/rfc2396.txtAlso: "nih" sounds like a pun :-)
ni://example.com/sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk
( https://tools.ietf.org/html/draft-farrell-decade-ni-10#secti... )
It's an outstanding talk, I've watched it 3 times now since I found it [0] on HN a few months ago. VJ is a visionary and a gentleman.
The FISS09 workshop presentation [1] is about 3 hours, well worth it for a deeper dive. His tour of the history of how packet switching emerged in a telephony circuit dominated industry is a fascinating case study on introducing fundamental change to a legacy incumbent system, as well as the early history of data networking.
0. http://news.ycombinator.com/item?id=3847968 1. https://www.ccnx.org/wiki/CCNx/CCNxPresentations
https://en.wikipedia.org/wiki/Universally_unique_identifier https://tools.ietf.org/html/rfc4122
ie. Given a UUID, and a service endpoint which returns some data for a given UUID, the client has no way of ensuring that the data returned from the service is in fact what they asked for. A similar service operating on hash values would have the property that clients can run the same hash algorithm locally to ensure that the server isn't lying to them.
https://en.wikipedia.org/wiki/Universally_unique_identifier#...
That said, the difference with this new proposal appear to include at least the following:
1) Support for untruncated hashes
2) More secure hash algorithms
3) Extensibility to new hash algorithms
4) URI compatibility
The reason I like UUID better is (once you pick a version) it's simple. It already looks pretty readable and it's a well known widely-used standard. It would have been nice if the authors of this RFC had just expanded on UUID. People are also way too URI-obsessed; when are you going to pass this hashed URI to an application? IMHO an object reference should be just that and not involve application interfaces.
In terms of the hashing algorithms, (IIRC) unless you're using HMAC you're opening yourself to an (eventual) brute force and key reuse issue, or at the very least the potential for an implementer to ignore the need for a random salt and get either easy collisions or predictable table insertion. I would feel pretty nervous if the hashing algorithm was my SPF.
If you name is a hash, and really needs to be a hash, that should be evident, not squeezed into the bitfields of a 'UUID'.
Avoid things like "Dearest Receiver, please view the transfer and customs documents at scam.ly/DEADBEEF to assist in transferring 3 gold bars from my late cousin's vault."