Українська

Інструменти розробника · UUID генератор

Як багато випадкових біт робить v4 UUID Чи є? 122, Не 128

· Як працює

Опубліковано ToolAcre · Редакція журналу

Увійти криптографія веб-сайт

Р 128-вільне поле з 6 фіксовані біти (версія і варіант) виділені і 122 випадкові біти показали, ілюструючи, чому ймовірність зіткнення обчислюється з 122 bits
Головна ToolAcre векторна ілюстрація

Шість 128 bits у випадковому порядку UUID фіксуються стандартом, залишаючи 122 для випадковості. Цей пост показує, як оцінити зіткненість, чесно і чому реальні зіткнень зламаних генераторів, а не з математики.

Питання архітектора: ми коли-небудь отримуємо дублікати? — де приходить занепокоєння і чому відповідь залежить від генератора

Архітектор просить: якщо ми виробляємо 10 мільйон Уїдів на день протягом десяти років, ми коли-небудь отримаємо дублікати? Чесна відповідь: майже напевно не, якщо генератор є криптографічно безпечним; майже напевно так, якщо генератор зламався. Мистецтво RFC 9562 мистецтво: в4 UUID з 122 випадкові біти мають ймовірність зіткнення грубо n2 / 2 до 123-ї потужності, де n є число ідентифікаторів, створених. Для більшості реальних систем така ймовірність недбала. Улов є те, що ця формула приймає кожен біт дійсно випадковий. Якщо витік генератора або повторюється або був засіяний заздалегідь, формула неправильна, і дублікати стають неминучими. Мистецтво 128-розмітка бетт включає чотири варіанти біт (0100 для v4 і двох варіантів біт (10 для RFC 9562), які закріплюються і встановлюються стандартом.

Який шість бітів сповіщати — чотири варіанти біт і два варіанти біт, і чому вони встановлюються, а не випадково

Що листя 122 bits для випадковості. Інколи це називається 2 до 122 випадкові біти, що виробляють унікальні значення. Використання парадоксу на день народження, ймовірність принаймні одного зіткнення серед n випадково сформованих значень грубо n2 / 2 до 123. Для n = 1 млн., це (це)10^6)2 / ) 2^123 = 10^12 / 9. 3 × 10^36, що про 10^-25. Для n = 10 мільярди, це все ще про 10^-16"Не буде ніякого неого" Наближення на день народження дає конкретний спосіб розрахувати ризик: підрахувати UUIDs ви плануєте генерувати, квадрат, який номер, поділений на 2 до 123-ї потужності. Якщо генератор є браузером crypto.getRandomValues, кожен біт повертається за допомогою ентропії операційної системи. Якщо це Мат.

Наближення дня народження в звичайних умовах — ймовірність принаймні одного зіткнення серед n ідентифікаторів грубо n квадрати розділений на 2 до 123

Для UUID виготовляється непідіймним або повторно-державним генератором, математична модель розбивається, оскільки її самостійне припущення є помилковим. Зафіксоване насіння тесту, скопіювати фіксацію або процес знімок може відтворювати значення навіть якщо текст все ще продає версію-4 чорнило. Невідкладні дефекти, що не свідчать про те, що 122-Падіння поля неправильно. Ще одне джерело метану копіює той же ідентифікатор лілового випромінювання на кілька світильників і пізніше збільшуючи їх дані. При розслідуванні дублікатів, зберіганні генератора, політики насіння, життєвого циклу та історії імпорту. Не стрибайте з одного багаторазового значення до позову, що незалежна CSPRNG вихід вичерпається UUID простір.

У відповідь на запитання, що ви можете змінити свої власні цифри, і ви можете змінити свої власні цифри

Процес для туризму без ресинхронізації випадкових станів. Помилки, де Math.random замість crypto.getRandomValues. Тест-фіксація, яка була виготовлена з тієї ж UUID в декількох рядах і випадково використовувався в виробництві. Стара версія UUID бібліотека, яка мала обмеження діапазону або державного помилки. Нема цих сценаріїв передбачається наближення з дня народження, вони залучають до реалізації або оперативних помилок. Розрахунок ризику зіткнення чесно для вашої системи: розрахунок курсу UUID покоління (на другий, в день, на рік), проект його над тимчасом буде працювати система, і заблокувати загальну в формулу дня народження. Якщо система генерує 100,000 УУЇД на добу протягом п'яти років (182 мільйон всього, ймовірність зіткнення (1. 82 × 10^8)2 / ) 2^123 ≈ 3. 3 × 10^-22, яка недбала.

Де дублікати дійсно приходять з — Math.random насіння, клоновані віртуальні машини, обрізані процеси з скопійованим станом, а також копіювання-пасту в світильниках

Якщо ви генеруєте 10 млн. за другий рік (315 трліон загальний, ймовірність (3. 15 × 10^14)2 / ) 2^123 ≈ 10^-10, яка ще ванішно мала. Ці оцінки припускають, що кожен біт є незалежним і випадковим. Мистецтво ToolAcre генератор використовує crypto.getRandomValues, що дає вам CSPRNG-належна випадковості; операція є єдиною частиною, яку потрібно довіряти. Не перейдемо на зіткненість, як скоєння, щоб пропустити правильні перевірки авторизації. А.А UUID не пароль, а не пароль, і не секрет, навіть якщо це 122 випадкові біти. Унікальність – це користь; непередбачувана властивість – окрема (і більш важлива) властивість, яка запобігає здогадуванню. Не завадить вам життя (назволяє це) UUID закінчується? ), секретність (досить, що потрібно бути захоплений перед зберіганням?), або авторизація (дослі, що мають це UUID довести все про дзвоника?). Мистецтво ToolAcre генератор дає вам CSPRNG-зареєстровані UUIDs з 122 випадкового біту, що означає унікальність математики, яка має і непередбачуваність. Все інше — точне підтвердження, витривалість, контроль доступу — це відповідальність за використання вашого додатку. Формула ймовірності передбачає самостійність кожного згенерованого UUID від попередніх поколінь. Якщо система генерує ідентифікатори з однієї CSPRNG аніж, і кожен виклик виводить нову випадковість з ОС, незалежні припущення. Якщо ваша система використовує кеш CSPRNG стан або засіяний генератор без рецензування ОС, припущення зламається вниз. Зростання ризику значно підвищується, якщо джерело ентропії вичерпається (подається на деяких вбудованих системах або віртуальних машин під навантаженням) або якщо випадковий стан ніколи не скидається між процесами (обробка без перевидання) CSPRNG).

Що це не криється — v1 і v7 унікальність, яка відпочиє на часових комп'ютерах і годинникових послідовностях, а не випадковості

Мистецтво ToolAcre скидання crypto.getRandomValues для кожного байтного масиву і не містить рівня додатків PRNG стан. Внутрішня платформа залишається відповідальність за роботу та роботу системи. Симуляційні зіткнення з реальними генераторами показує різницю між теоріями та ламавою практикою. Генератор побудований з Math.random від того ж насіння виготовить ідентичні послідовності; ви побачите перші UUID зіткнення в межах декількох сотень до декількох тисяч створених значень, не після 2^60 значення (квадратний корінь) 2^122) як прогноз наближення дня народження. Генератор за допомогою crypto.getRandomValues від звукової ентропії OS виготовить зіткнення тільки при теоретико-мовірності стає нездійсненною (середній 2^60 УУїди, номер так великий, що ви ніколи не досягнете цього. Генератор з використанням слабкого або багаторазового джерела ентропії (комона в поганому порядку) UUID бібліотеки або тестові засади виготовляти зіткнень між собою.

Похід: довіряємо математики, перевірте генератор — ToolAcre генератор використовує браузер CSPRNG, яка є частиною, яка не повинна бути підроблена

Пакетний тест може зловити виконання, що повертає постійний або повторює явну послідовність, але пропускний зразок не може довести майбутній унікальний стан. Системи виробництва повинні бути використані для використання унікального обмеження, де деякі дублікати будуть пошкоджені дані. Імпорти заслуговують особливу увагу, оскільки дві діючі системи джерела вже можуть містити однаковий ідентифікатор, а світильники можуть бути скопічені по всьому середовищах. ToolAcre- тести перевіряють, що партія 500 , 500 відмінні значення; тобто перевірка регресивності для цієї реалізації, не статистична гарантія. Якщо з'являється дублікат, зберігайте докази та інспектування, імпорт, фіксацію та шляхи зберігання до настання причини.