Інструменти розробника · UUID генератор
Випадковий UUID Сейф як пароль?
· Чому це питання
Опубліковано ToolAcre · Редакція журналу
Увійти криптографія веб-сайт

В4 UUID з CSPRNG має багато ентропії, тому чому огляди безпеки все ще фраунтують на UUID токени? Цей пост відокремлює питання антропії від проекту.
Завантажувальний посилання, який використовує рядок UUID — загальний ярлик і два дуже різні причини, які можуть бути небезпечними
Поширений ярлик: використання користувача UUID ідентифікатор рядка як токен з паролем. У таблиці є уйований стовпчик; він унікальний; він важко вгадати (якщо це в4). Мистецтво URL , /reset? токен=550e8400-e29b-41d4-a716-446655440000. Рецензент безпеки негайно відхиляє його, не тому, що огляд безпеки UUID є слабким, але тому що він поєднується з двома проблемами, які повинні бути незалежними. Підрядний UUID є стабільним і зазвичай загальнодоступним (в URL, API, журналах). Скинути токени слід однокористуватися і секрет. Пересування ряду UUID як токен означає ідентичність користувача та їх скидання є однаковою вартістю, а також достовірне життя назавжди замість закінчення. Атакувальник, який знає ідентифікатор користувача, може здійснити скидання. Користувач, який копіював посилання скидання 5 років тому може використовувати його. Це дизайнерські недоліки, не ентропічні недоліки.
Перевірка ентропії: 122 випадкові біти — чому CSPRNG-генерований v4 не вгадується силою брюта
Перевірка випадковості є необхідною, але не достатнім. верстка 4 резервує чотири варіанти біт і два варіанти біт, залишаючи 128 - 4 - 2 = 122 випадкові позиції при виконанні заповнює інші поля випадковим чином. Що заперечення говорить про те, що нічого про витривалість, зберігання або авторизації. У генераторі перевірте, чи прийшли ті поля з CSPRNG до Math.random або час. ToolAcre сатифи, які генератор межа. Перевірка дизайну залишається специфічним: скидання достовірності потреб окремого життєвого циклу, що зберігається в одному місці, недійсне використання та закінчення, обраного з політики ризику. Здійснення постійного запису користувача, не вдалося, що розділення навіть при створенні ID.
Перевірка генератора: де UUID токени насправді не здаються Math.random-генерація на основі, v1 часові тампи та MAC адреси, і передбачувані насіння
Приклад роботи: схема пароля, яка не вдається, потім проходить, три перевірки. Включає перевірку ентропії: проблеми з сервером скидання токени через Math.random(), упакований як v4 UUID. Ататар дотримується трьох токени і прогнозує четвертий. Ввімкніть перевірку генератора: сервер використовує v1 UUID як скидання токену, в тому числі час створення і час створення MAC адреса в значення. Атакіра читає часову скидання, дізнається, коли скидання була видана, і звужує вікно пошуку. Передача перевірок антропії, але не перевіряється на дизайн: сервер використовує v4 UUID від crypto.getRandomValues, але зберігає його в звичайному тексті в базі даних і не встановлює термін дії. Атакувальник, який порушує базу даних, читає скидання токени та використовує їх для скидання облікових записів через кілька тижнів. Потрібні три перевірки незалежні, необхідно пройти всі три.
Перевірка дизайну: ідентифікатор versus credential — чому переоснащення початкового ключа запису як секретні пари двох речей, які повинні обертати самостійно
За допомогою скидання токени, яка проходить перевірку ентропії та генератора, але не несе перевірки дизайну (не хеш, не викривлення, не застосувати недійсним) все ще вразливе. Обробка сервера в токени: коли користувач запитує скидання пароля, генерувати новий випадковий токени (не рядок) UUID) з crypto.getRandomValues. Зберігайте одностороннє уявлення, а не представлене значення, встановлюємо полісічну експірию, і недійсним записом після успішного використання. Коли користувач натискає посилання, подивіться користувача по електронній пошті, викопувати збережену хеш, порівняти надану токени з хешем, перевірити ексірі і виконати скидання тільки якщо токени діє і ще не закінчується. Відразу недійсним токени (видали його або відмітити його як використовується) так що не можна повторно використовувати. Не ввійдіть сирий токен; ввійдіть тільки ідентифікатор користувача і дію.
Обробка токенного сервера - зберігати хеш, встановити витривалість, недійсне використання, і ніколи не ввійдіть сиру вартість
Токен ніколи не з'являється в повідомленнях про помилки або в базі даних, якщо не має. Повна автентитація дизайну є за рамки UUID стаття, але принципи утримуються: 122-розміщений випадкового токену не властиво доступу до токену. По випадковості є легкою частиною ToolAcre генератор дає вам CSPRNG-зареєстровані UUIDs. Важка частина - це конструкція: що має місце перед зберіганням, встановлення часів закінчення терміну, недійсним використання, запобігання повторному використанню постійних ідентифікаторів як тимчасових секретів, аудиту, які з'являються в цьому і коли. Рецензент безпеки, який затверджує схему скидання на основі антропії токени, один, пропускає решту аналізу. Розробник, який продумав розробника CSPRNG-зареєструватися UUID є достатнім для посилання на скидання пароля без хешування, витривалості, недійсності та недійсності, що занижує загрозу. У випадковості відмовляється від здогадувань; дизайн захищає від відтворення, витривалості та зловживання.
Успішний приклад — огляд схеми скидання на кожному чеку та рерайтингу слабких частин
Мистецтво ToolAcre генератор робить випадковість частини правою; додаток повинен зробити проект правильно. Тестуйте власний код скидання посилань на всі три перевірки: він використовує CSPRNG (crypto.getRandomValues, crypto.randomUUIDбібліотека криптографічних даних, не Math.random? Чи має токен час? Чи має токени перед зберіганням? Чи недійсний токени після використання? Чи не вдається код, який не переймає постійний ідентифікатор користувача як тимчасовий токен? Якщо ви відповіли так, щоб всі ці, ваш дизайн посилання на скидання звуку. Мистецтво ToolAcre генератор - це CSPRNG частина; решта - це код заявки, який необхідно уважно ознайомитися. Розуміння трьох шарів безпеки допоможе вам аудитувати сторонній UUID бібліотеки та рамки. Якщо ви оцінюєте бібліотеку, перевірте, що він використовує CSPRNG (попередній чек), не слабкий випадковий джерело. Перевірити, що це документи, які джерела, які використовуються і чому (перевірити генератора).
Що це не криється — повне автентифікаційне позначення, MFA і обмеження швидкості, що має значення стільки, скільки токен ентропія
Перевірити цей приклад коду і документації підкреслюють принципи проектування: хешування, витривалість, недійсність (перевірка дизайну). Бібліотеки, які проходять всі три перевірки, є рідкісними; більшість фокусів на ентропії окремо. Мистецтво ToolAcre генератор переходить на ентропію та перевірку генератора за допомогою crypto.getRandomValues. Перевірка дизайну – це ваша відповідальність; бібліотека не може знати ваші вимоги до термінів або Стратегія хешування. Відхилити систему скидання, зазвичай, розкриває одну з трьох збоїв. Якщо користувачі повідомляють про отримання посилань, які більше не працюють, то, швидше за все, питання закінчується: токен був видано, але висунуто перед користувачем, натискаючи посилання. Якщо токени багаторазово використовуються, недійсність порушується. Якщо ви з'являються токени в повідомленнях про помилку або виводу, залога витікає їх. Якщо скидання посилань працює для одного користувача, але не іншого, може бути перезастосування бази даних, проблеми з розрахунками. Якщо законні скидання не випадково CSPRNG може бути порушений (відновлення).
Похід: випадання є легкою частиною — це ToolAcre генератор дає вам CSPRNG-закінчений Уїд; решта - дисципліна проектування
Зареєструватися: ввімкніть детальні журнали аудиту для створення скидання посилань та перевірки, потім відтворите проблему та слідуйте потоку. Мистецтво ToolAcre генератор забезпечує проходження першого двох перевірок; усунення несправностей скидання-посилання практично завжди потрапляє в категорію дизайну. Найкращі практики для виробництва скидання посилань включають: генерувати новий випадковий токени для кожного запиту скидання, не використовувати старі токени. Зберігайте одну сторону представлення облікового запису та створення метаданих, потім оберіть термін дії з політики документованого ризику сервісу. Забезпечити токени відразу після успішної перевірки. Заяви на скидання документів та успіхи для проведення перевірок. Реалізація обмеження швидкості для запобігання нападів брута. Відправте скидання посилань через електронну пошту тільки, не SMS або нерозшифровані канали. Повідомити користувача спроб пароля (так вони можуть виявити несанкціоновані скидання). Мистецтво ToolAcre генератор дає вам випадковість; після цих практик надає вам безпеку.