Mark S. Miller wrote:
On Wed, Jul 31, 2013 at 8:35 AM, Brendan Eich <bren...@mozilla.com <mailto:bren...@mozilla.com>> wrote:

    Mark S. Miller wrote:

        Don't ever use MAC addresses, dates, times, positions, etc, as
        sources of uniqueness.


    uuidgen implementations have used MAC addresses in the past, which
    I believe led to a public collision.


        What a collision resistant string? Use 128 bits of entropy.
        You'll get an accidental collision of these with the same
        rarity as you will for two unique symbols because of an
        undetected memory error.


    Wait, what? An "undetected memory error" meaning a GC bug where a
    symbol is freed before it is dead and reincarnated as another
    symbol? That is rare enough that I don't believe you (or anyone)
    can say colliisions are as rare. We are arguing
    quality-of-implementation here.


I'm not talking about the probability of a software bug. We all write perfect software so the probability of such bugs is zero -- I agree.

Heh. My point was the probability of each bad thing (memory safety bug, uuid collision) is probably higher than we think but I have no data.

No, I'm talking about the probability of an undetected hardware failure, such as one caused by cosmic rays or other physical causes. All digital hardware rests on analog hardware which rests on quantum mechanical hardware. There ain't nothing else. Our digital hardware is all built to keep the error rate below some threshold considered acceptable. For any hardware we can afford, that error rate threshold is also not violated by accidental collisions between randomly chosen 128 bit keys. (Unless we're worried about birthday effect collisions, as perhaps we should be, in which case we should go to 256 bits of entropy.)

A crypto-grade RBG should be enough, I agree.

    Gathering entropy enough to make a UUID is work. A crypto module's
    RBG should be up to it. Browsers have those, but we haven't yet
    required any such thing in ECMA-262, and I expect some
    implementations will be crypto-module-free and cheese out on the
    quality (where they wouldn't ship unpatched memory safety bugs!).
    This is worth a discussion: do we require an RBG with the right
    quality in normative words in ES6?


A good point. We should indeed discuss the costs of adding this requirement.

Ok. I think it's going to be a problem for "tiny" embeddings of ECMA-262 implementations (Japanese smart TVs? Maybe these are "legacy", the "compact profile", even). We need to cast a wide net.

/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to