Це дуже гарне запитання. Я не вірю, що належним чином було розглянуто поспіх використовувати UUID скрізь. Я не знайшов жодного ґрунтовного дослідження.
Пропозиція: дуже уважно ступайте тут і добре знайте свою криптографію. Якщо ви використовуєте 128-розрядний UUID, "ефект від дня народження" говорить нам про те, що зіткнення вірогідне після того, як ви створили приблизно 2 ^ 64 ключі, за умови, що у вас є 128 біт ентропії в кожній клавіші .
Насправді досить складно забезпечити, що це так. Справжня випадковість може бути породжена (a) радіоактивним розпадом (b) випадковим фоновим радіо шумом, часто забрудненим, якщо ви не обережні (c) належним чином обраний електронний шум, наприклад, взято з реверсивно зміщеного стабілітрону. (Я грав з останнім, і це працює як шарм, BTW).
Я б не довіряв вимовам на кшталт "Я цього не бачив за рік використання", якщо користувач не створив щось, що наближається до клавіш 2 ^ 64 (тобто приблизно 10 ^ 19), і не перевірив їх один на одного, a нетривіальна вправа.
Проблема в цьому. Скажімо, у вас всього 100 біт ентропії, порівнюючи ваші ключі з усіма іншими ключами, які всі інші генерують у загальному просторі клавіш. Ви почнете бачити зіткнення приблизно в 2 ^ 50, тобто. приблизно 10 ^ 15 клавіш. Ваші шанси побачити зіткнення, якщо ви заселили свою базу даних лише у 1000 мільярдів ключів, все ще незначні. І якщо ви не перевірите, то пізніше ви отримаєте несподівані помилки, які прокрадаються у вашу базу даних розміром з п'яти рядками. Це могло б сильно вкусити.
Сам факт наявності декількох підходів до створення таких UUID повинен викликати миттєвий спазм занепокоєння. Коли ви усвідомлюєте, що мало хто з генераторів використовує «справді випадкові» процеси з достатньою ентропією для UUID типу 4, ви повинні надто хвилюватися, якщо ви ретельно не вивчили вміст ентропії генератора. (Більшість людей цього не зробить і навіть не знає, як це зробити; ви можете почати з набору DieHarder). НЕ плутати генерацію псевдовипадкових чисел із справжнім генерацією випадкових чисел.
Важливо, що ви усвідомлюєте, що введена вами ентропія - це ентропія, яка у вас є, і просто збурення ключа, застосовуючи криптографічну функцію, не змінює ентропію. Можливо, не очевидно, що якщо весь мій простір містить цифри 0 та 1, вміст ентропії такий самий, як у наступних двох рядків, за умови, що вони є єдиними двома варіантами: "Це дійсно дійсно складний рядок 293290729382832 * ! @@ # & ^% $$) ,. m} "та" І СЕЙЧАС ДЛЯ НЕЩОГО ПОЛІЗНОГО РІЗНОГО ". Є ще лише два варіанти.
Випадковість складна, щоб виправитись, і просто вважати, що "експерти це подивилися, тому це нормально" може бути недостатньо. Експертні криптографи (а їх мало хто з тих, хто справді досвідчений) першими визнають, що вони часто помиляються. Ми довіряли сердечному сервісу, DigiNotar тощо.
Я думаю, що Пол Томблін проявляє відповідну обережність. Мій 2с.