Українська

Текстові та щоденні інструменти · Генератор паролів

crypto.getRandomValues проти Math.random: чому це стосується паролів

· Як працює

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

паролі веб-шифрування випадіння

Слабкий випадковий шлях, що закінчується в той час як Web Crypto шлях продовжується в символи пароля
Головна ToolAcre векторна ілюстрація

Передбачає різницю між генератором випадкових чисел веб-переглядача та його криптографічною, чому передбачуваність є жирною для паролів, і як розповісти, який використовує інструмент.

Випадковий достатній для дайс-гра, не для пароля — два види випадкових пропозицій браузера

Переглядач може запропонувати більше одного джерела значень, які виглядають нерегулярними, але візуальний розлад не свідчить про те, що послідовність підходить для облікового запису. ToolAcre малює жорсткий продукт межарію: кожен вибір слова, вибір чіткості, вибір персонажа і шафл леза проходить через одну безпечну цілу функцію, що підтримується `crypto.getRandomValues`. Якщо це API не можна використовувати, що генерація сторінки, а не виготовляючи заміну позикового типу.

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

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

Опис книги Math.random як засіяний псевдо-пожежний реконструйований з декількох спостережень, але це загальне виконання стверджує, що цей репозиторій не встановлює для кожного JavaScript двигун. Місцевий факт простий і міцний для цього продукту: файли генератора виробництва не називають `Math.random`. Випадкові тестові смуги, сканування виконуваного коду і не вдається, якщо це з'являється в будь-якій точці двигуна або пароля додаток.

Ця відмінність зберігає статтю від перетворення правила реалізації в універсальну лекцію браузера. ToolAcre не потрібно оцінити кожну можливість Math.random алгоритм відхилення API для створення пароля. Його пакет приймає Web Crypto або ін'єкційне джерело, що використовується за допомогою тестів, і не поширюється варіант виробництва для насіння, детермінованого режиму або слабкого падіння.

Що таке репозиторій доводить про Math.random: немає виробництва

`createWebCryptoSource` Шукаю роботу `getRandomValues`, потім загортає цей метод як випадковий джерело пакета. Додаток виконує додатковий зонд перед тим, як забезпечити контроль: він просить глобальний криптооб'єкт, щоб заповнити один вид, який типований масив всередині блоку. Що виловлює обмежені умови, де майно існує, але кидає при використанні, а не довіряє перевірці функції суперфіціальної функції.

Джерело зупиняється на браузері API межа. Не доведено, що операційно-системний басейн, апаратна інструкція або дизайн рецензування знаходиться під конкретним браузером. Деталі інтерфейсу та необхідної документації. Який код доведено, що байти прибувають через названий Web Crypto метод і це покоління не намагалось, коли зонд не вдається.

Що crypto.getRandomValues тут: заповнює масиви типу через браузер API

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

У зв'язку з тим, як кандидат обраний, не все, що відбувається з ним пізніше. Пакет повертає рядок і не зберігає його. На сторінці розміщено одне поточне значення у пам’яті та надано текст. Захист паролів, передача, відновлення облікового запису та автентифікації залишаються обов’язками інших систем.

Читання коду — як перевірити, API Сторінка використовує, і чому відкриті, перевірені сторінки простіше довірити

Читання коду починається в `packages/password-generator/src/index.js`, угода якого говорить кожен випадковий рішення `secureRandomInt`. Імплементація файлу потім показує `getRandomValues`, відхилення відхилення та явні помилки. Нарешті, `no-math-random.test.js` і більш широкий номер безпеки пароля робить негативну гарантію, що виконується замість того, щоб залишити «ми ніколи не використовуємо» Math.random” як неперевірений коментар.

Відкрийте джерело самостійно не робить код правильно, але це дає рецензенту бетонні шви для перевірки. Пошук випадкових джерел, слідувати за телефонами через вибір і шлафи, і перевірити, що відбувається, коли API відсутні. Довірчий огляд повинен бути в змозі назвати як шлях успіху, так і шлях відмови, а не запліднити безпеку від брендингу.

Виконаний приклад — те ж саме слово-розмальовки, написані як способами, так і що нападник може робити з кожним

Розглянемо запит на ціле нижче 100. `secureRandomInt` потрібен один байт, діапазон якого містить 256 значення. Приймає тільки найбільший префікс дівидимий 100, яка закінчується до 200і відхиляє решту хвоста. Детерміністичні тестові корми 200 Увійти 7. Реалізація листівок 200 і повернення 7; прямий ярлик modulo повернув нульовий від відхилених байтів.

Те ж безпечна ціла функція вибирає індекси для слів і персонажів, тому цей приклад не є іграшкам, що виділяється від покоління. Точні байти у виробництві не є повторюваними прикладами і ніколи не повинні бути опубліковані як достовірність. Корисний артефакт є доказом керованості: Web Crypto заповнює буфер, нерівний хвіст відхилений, і тільки прийнятий значення стає обмеженим вибором.

Призначений для користувача приклад: простежуйте одну обмежену форму через відвантажений безпечнийRandomInt шлях

Цей репозиторій не реалізує або порівнює генератори, апаратні генератори випадкових чисел або інструменти командного рядка операційної системи. Також не можна слухати внутрішнє виконання браузера від JavaScript. Ці теми потребують власного джерела матеріалу, загрози моделей і оперативних перевірок, а не аналогії, що задаються на ToolAcre Шлях коду.

Сторінка також не є менеджером пароля. Не економить, синхронізувати, передавати або автоматично заповнювати те, що він генерує. Читач не повинен інтерпретувати “криптографічне випадкове джерело” як поради щодо повторного використання результату або переміщення його через непристойний канал. Заява відноситься лише до вибору всередині вкладки браузера.

Пароль-генератор використовує криптографічний генератор випадкових чисел браузера, і ви можете перевірити його з самої сторінки

ToolAcreВигідний вибір є крипто- або нічого. Сторінка викликає браузер API під час виявлення опор, управління відключенням, коли він не вдається, і дозволяє кинути двигун `InsecureRandomError` якщо генерувати, якось не вистачає стану. Немає Math.random заховані за гілкою.

Використовуйте цей шаблон при перегляді генератора: виявляйте джерело, слідуйте за кожним з обмежених тиражів, зменшуйте інспектування та збиваючи, а також змусити шлях до недоступного джерела. Потім оцініть пристрій і встановіть окремо. Для роботи даного генератора необхідно звуковий випадковий джерело, але це не універсальний сертифікат для всього життя, що свідчить про те, що він є універсальним сертифікатом.