WikiZero - Генератор псевдовипадкових чисел
- Якісні вимоги, що пред'являються до ГПСЧ [ правити | правити код ]
- алгоритм [ правити | правити код ]
- Одноразовий блокнот [ правити | правити код ]
- Приклад найпростішого ГСЧ з джерелом ентропії [ правити | правити код ]
- Приклади ГСЧ і джерел ентропії [ правити | правити код ]
- Приклади криптостійкі ГПСЧ [ правити | правити код ]
- ANSI X9.17 [ правити | правити код ]
open wikipedia design.
Генератор псевдовипадкових чисел (ГПСЧ, англ. pseudorandom number generator, PRNG) - алгоритм , Який породжує послідовність чисел , Елементи якої майже незалежні один від одного і підкоряються заданому розподілу (зазвичай рівномірному ).
сучасна інформатика широко використовує псевдовипадкові числа в самих різних додатках - від методу Монте-Карло і імітаційного моделювання до криптографії . При цьому від якості використовуваних ГПСЧ безпосередньо залежить якість одержуваних результатів. Ця обставина підкреслює відомий афоризм математика ORNL Роберта Кавью (англ.): «генерація випадкових чисел занадто важлива, щоб залишати її на волю випадку».
Джерела справжніх випадкових чисел знайти вкрай важко. фізичні шуми [1] , Такі, як детектори подій іонізуючої радіації , дробовий шум в резисторі або космічне випромінювання [2] , Можуть бути такими джерелами. Однак застосовуються такі пристрої в додатках мережевої безпеки рідко. Складнощі також викликають грубі атаки на подібні пристрої.
У фізичних джерел випадкових чисел існує ряд недоліків:
- Час і трудовитрати при установці і настройці в порівнянні з програмними ГПСЧ;
- дорожнеча;
- Генерація випадкових чисел відбувається повільніше, ніж при програмної реалізації ГПСЧ;
- Неможливість відтворення раніше згенерувала випадкових чисел. [3]
У той же час випадкові числа, одержувані з фізичного джерела можуть використовуватися в якості породжує елемента (англ. Seed) для програмних ГПСЧ. Такі комбіновані генератори застосовуються в криптографії, лотереях, ігрових автоматах. [3]
Якісні вимоги, що пред'являються до ГПСЧ [ правити | правити код ]
Джон фон Нейман вважав неприйнятним використання фізичних генераторів випадкових чисел в обчислювальній техніці, так як при виникненні необхідності перевірки обчислень повтор попередніх дій вимагав би відтворення випадкового числа, в той час як генерація нового випадкового числа неприпустима. Попередній запис і зберігання згенерованих випадкових чисел передбачало б можливість їх зчитування. Механізм зчитування даних був одним з найслабших ланок обчислювальних машин 1940-х років. Джон фон Нейман привів наступний метод «середини квадрата» ( англ. middle-square method) [4] отримання десятизначних псевдовипадкових чисел:
Десятизначні число зводиться в квадрат, потім з середини квадрата числа береться десятизначні число, яке знову зводиться в квадрат, і так далі.
Наприклад, для 4-значних чисел, починаючи з 1234, отримуємо 1234 2 = 1522756 {\ displaystyle 1234 ^ {2} = 1522756} , Де беремо середні 4 цифри 01 5227 ¯ 56 {\ displaystyle 01 {\ overline {5227}} 56} (Дописавши нуль на початку, якщо це необхідно). Потім будуємо отримане число в квадрат 5227 2 = 27 3215 ¯ 29 {\ displaystyle 5227 ^ {2} = 27 {\ overline {3215}} 29} , і так далі. Недоліком даного методу є обмеженість безлічі ПСЧ через те, що послідовність зациклюється - 5000 2 = 25 0000 ¯ 00, 0 2 = 0, ... {\ displaystyle 5000 ^ {2} = 25 {\ overline {0000}} 00,0 ^ {2} = 0, \ dots} .
В 1951 році Д. Г. Лемер запропонував лінійний конгруентний метод , [5] суть якого полягає в завданні послідовності цілих чисел рекурсивної формулою X n + 1 = (a X n + c) mod m, {\ displaystyle X_ {n + 1} = (aX_ {n} + c) ~~ {\ bmod {~ }} ~ m,} де a, m, c {\ displaystyle a, \ m, \ c} - цілі і задовольняють таким умовам: 0 <m, 0 <a <m, 0 <c <m, X 0 <m {\ displaystyle 0 <m, \ \ 0 <a <m, \ \ 0 <c <m, \ \ X_ {0} <m} . Недоліком даного методу є залежність X n, n> 0 {\ displaystyle X_ {n}, \ n> 0} від X 0 {\ displaystyle X_ {0}} , Так як X n = (an X 0 + c (an - 1) (a - 1)) mod m {\ displaystyle X_ {n} = \ left (a ^ {n} X_ {0} + {\ frac { c (a ^ {n} -1)} {(a-1)}} \ right) ~~ {\ bmod {~}} ~ m} , А також те, що ПСЧ зациклюється.
алгоритм [ правити | правити код ]
Більшість детермінованих ГПСЧ відповідають структурі, запропонованої П. Лекуером [1] в 1994 році: (S, μ, f, U, g) {\ displaystyle ({\ mathcal {S}}, \ mu, f, {\ mathcal {U}}, g)} , Де S {\ displaystyle {\ mathcal {S}}} - це кінцевий набір станів, μ {\ displaystyle \ mu} - імовірнісний розподіл в просторі станів S {\ displaystyle {\ mathcal {S}}} , Що використовується для вибору початкового стану s 0 {\ displaystyle {\ mathcal {s_ {0}}}} (Англ. Seed), f: S → S {\ displaystyle f: {\ mathcal {S}} \ rightarrow {\ mathcal {S}}} - функція переходу, U {\ displaystyle {\ mathcal {U}}} - простір вихідних значень, g: S → U {\ displaystyle g: {\ mathcal {S}} \ rightarrow {\ mathcal {U}}} . Зазвичай U = (0, 1) {\ displaystyle {\ mathcal {U}} = (0,1)} , А стан генератора задається рекурентної формулою s i = f (s i - 1) {\ displaystyle s_ {i} = f \ (s_ {i-1})} для i ≥ 1 {\ displaystyle i \ geq 1} . Вихідна значення генератора u i = g (s i) ∈ U {\ displaystyle u_ {i} = g \ (s_ {i}) \ in {\ mathcal {U}}} ; u 0, u 1, u 2. . . {\ Displaystyle u_ {0}, \ u_ {1}, \ u_ {2} \ ...} - послідовність псевдовипадкових чисел. Так як U {\ displaystyle {\ mathcal {U}}} звичайно, то повинні існувати деякі кінцеві l ≥ 0 {\ displaystyle l \ geq 0} і j> 0 {\ displaystyle j> 0} такі, що s l + j = s l {\ displaystyle s_ {l + j} = s_ {l}} . Значить, для всіх i ≥ l {\ displaystyle i \ geq l} будуть виконуватися умови s i + j = s i {\ displaystyle s_ {i + j} = s_ {i}} і u i + j = u i {\ displaystyle u_ {i + j} = u_ {i}} , Тому що функції f {\ displaystyle f} і g {\ displaystyle g} детерміновані. Таким чином, виходить, що послідовність періодична. Періодом ГПСЧ називається мінімальне позитивне j {\ displaystyle j} . [3]
найбільш поширені лінійний конгруентний метод , метод Фібоначчі з запізнюваннями , регістр зсуву з лінійним зворотним зв'язком , регістр зсуву з узагальненою зворотним зв'язком .
Із сучасних ГПСЧ широке поширення також отримав « вихор Мерсенна », Запропонований в 1997 році Мацумото і Нісимура. Його перевагами є колосальний період (219937-1), рівномірний розподіл в 623 вимірах (лінійний конгруентний метод дає більш-менш рівномірний розподіл максимум в 5 вимірах), швидка генерація випадкових чисел (в 2-3 рази швидше, ніж стандартні ГПСЧ, що використовують лінійний конгруентний метод). Однак існують алгоритми, що розпізнають послідовність, що породжуються вихором Мерсенна, як невипадково.
Генератор псевдовипадкових чисел включений до складу багатьох сучасних процесорів , Наприклад, RdRand входить в набір інструкцій IA-32. [6]
Різновидом ГПСЧ є ГПСБ (PRBG) - генератори псевдо-випадкових біт, а також різних потокових шифрів .
Одноразовий блокнот [ правити | правити код ]
Альтернативним рішенням є створення набору з великої кількості випадкових чисел і опублікування його в деякому словнику , Званому « одноразовим блокнотом ». Проте, і такі набори забезпечують дуже обмежений джерело чисел в порівнянні з тією кількістю, яка потрібна додатків мережевої безпеки. Хоча дані набори дійсно забезпечують статистичну випадковість, вони недостатньо безпечні, так як зловмисник може отримати копію словника.
ніякий детермінований алгоритм не може генерувати повністю випадкові числа, він може тільки апроксимувати деякі їх властивості. Як сказав Джон фон Нейман , «Всякий, хто має схильність до арифметичним методам отримання випадкових чисел, грішний поза всяких сумнівів».
Будь ГПСЧ з обмеженими ресурсами рано чи пізно зациклюється - починає повторювати одну і ту ж послідовність чисел. Довжина циклів ГПСЧ залежить від самого генератора і становить близько 2 n 2 {\ displaystyle 2 ^ {\ frac {n} {2}}} , Де n {\ displaystyle n} - розмір внутрішнього стану в бітах, хоча лінійні конгруентні і РСЛОС -генератори володіють максимальними циклами близько 2 n {\ displaystyle 2 ^ {n}} [7] . Якщо породжувана послідовність ГПСЧ сходиться до занадто коротким циклам, то такий ГПСЧ стає передбачуваним і непридатним для практичного застосування.
Більшість простих арифметичних генераторів хоча і володіють великою швидкістю, але страждають від багатьох серйозних недоліків:
- Занадто короткий період / періоди.
- Послідовні значення не є незалежними.
- Деякі біти «менш випадкові», ніж інші.
- Нерівномірний одномірний розподіл.
- Оборотність.
Зокрема, алгоритм RANDU , Десятиліттями використовувався на основному комплекті , Виявився дуже поганим [8] [9] , Що викликало сумніви в достовірності результатів багатьох досліджень, які використовували цей алгоритм.
Нарівні з існуючою необхідністю генерувати легко відтворювані послідовності випадкових чисел, також існує необхідність генерувати абсолютно непередбачувані або просто абсолютно випадкові числа. Такі генератори називаються генераторами випадкових чисел (ГВЧ - англ. random number generator, RNG). Так як такі генератори найчастіше застосовуються для генерації унікальних симетричних і асиметричних ключів для шифрування, вони найчастіше будуються з комбінації криптостійкого ГПСЧ і зовнішнього джерела ентропії (І саме таку комбінацію тепер і прийнято розуміти під ГСЧ).
Майже всі великі виробники мікрочіпів поставляють апаратні ГВЧ з різними джерелами ентропії, використовуючи різні методи для їх очищення від неминучої передбачуваності. Однак на даний момент швидкість збору випадкових чисел усіма існуючими мікрочіпами (кілька тисяч біт в секунду) не відповідає швидкодії сучасних процесорів.
У сучасних дослідженнях здійснюються спроби використання вимірювання фізичних властивостей об'єктів (наприклад, температури ) або навіть квантових флуктуацій вакууму в якості джерела ентропії для ГСЧ. [10]
У персональних комп'ютерах автори програмних ГСЧ використовують набагато швидші джерела ентропії, такі, як шум звукової карти або лічильник тактів процесора . Збір ентропії був найбільш вразливим місцем ГСЧ. Ця проблема досі повністю не вирішена в багатьох пристроях (наприклад, смарт-картах ), Які таким чином залишаються уразливими. [11] Багато ГСЧ використовують традиційні випробувані, хоча і повільні, методи збору ентропії зразок вимірювання реакції користувача (рух миші і т. п.), як, наприклад, в PGP і Yarrow [12] , Або взаємодії між потоками , Як, наприклад, в Java SecureRandom.
Приклад найпростішого ГСЧ з джерелом ентропії [ правити | правити код ]
Якщо в якості джерела ентропії використовувати поточний час, то для отримання цілого числа від 0 до N досить обчислити остача від ділення поточного часу в миллисекундах на число N +1. Недоліком цього ГСЧ є те, що протягом однієї мілісекунди він видає один і той же число.
Приклади ГСЧ і джерел ентропії [ правити | правити код ]
джерело ентропіїГПСЧ Переваги Недоліки / Dev / random в UNIX / Linux Лічильник тактів процесора, однак збирається тільки під час апаратних переривань РСЛОС , З хешированием виходу через SHA-1 Є у всіх Unix, надійне джерело ентропії Дуже довго «нагрівається», може надовго «застрявати», або працює як ГПСЧ (/ dev / urandom) Yarrow від Брюса Шнайера [12] традиційні методи AES -256 і SHA-1 маленького внутрішнього стану Гнучкий криптостійкий дизайн Повільний Microsoft CryptoAPI Поточний час, розмір жорсткого диска, розмір вільної пам'яті, номер процесу і NETBIOS-ім'я комп'ютера MD5 -хеш внутрішнього стану розміром в 128 біт Вбудований в Windows, не "застряє» Сильно залежить від використовуваного криптопровайдера (CSP). Java SecureRandom Взаємодія між потоками SHA-1 -хеш внутрішнього стану (1024 біт) Велике внутрішній стан Повільний збір ентропії RdRand від intel [13] Шуми струмів Побудова ПСЧ на основі «випадкового» битового зчитування значень від струмів [13] Дуже швидкий, не "застряє» Оригінальна розробка, властивості приведені тільки за твердженням розробників.
Одним з критеріїв того, що ГПСЧ криптографически стійкий, є неможливість відрізнити вихідні значення ГПСЧ від незалежної рівномірно розподіленим на проміжку U = (0, 1) {\ displaystyle {\ mathcal {U}} = (0,1)} випадкової послідовності. Нехай існує сімейство ГПСЧ ξ k = (S k, μ k, f k, U k, g k), k = 1, 2,. . . {\ Displaystyle {\ xi _ {k} = ({\ mathcal {S_ {k}}}, \ mu _ {k}, f_ {k}, {\ mathcal {U_ {k}}}, g_ {k} ), k = 1,2, ...}} , Де потужність безлічі S k {\ displaystyle {\ mathcal {S_ {k}}}} дорівнює 2 k {\ displaystyle 2 ^ {k}} . Як було зазначено вище, S {\ displaystyle {\ mathcal {S}}} - це кінцевий набір станів, μ {\ displaystyle \ mu} - імовірнісний розподіл в просторі станів S {\ displaystyle {\ mathcal {S}}} , Що використовується для вибору початкового стану s 0 {\ displaystyle {\ mathcal {s_ {0}}}} (Англ. Seed), f: S → S {\ displaystyle f: {\ mathcal {S}} \ rightarrow {\ mathcal {S}}} - функція переходу, U {\ displaystyle {\ mathcal {U}}} - простір вихідних значень, g: S → U {\ displaystyle g: {\ mathcal {S}} \ rightarrow {\ mathcal {U}}} . Зазвичай U = (0, 1) {\ displaystyle {\ mathcal {U}} = (0,1)} , А стан генератора задається рекурентної формулою s i = f (s i - 1) {\ displaystyle s_ {i} = f \ (s_ {i-1})} для i ≥ 1 {\ displaystyle i \ geq 1} . Вихідна значення генератора u i = g (s i) ∈ U {\ displaystyle u_ {i} = g \ (s_ {i}) \ in {\ mathcal {U}}} ; u 0, u 1, u 2. . . {\ Displaystyle u_ {0}, \ u_ {1}, \ u_ {2} \ ...} - послідовність псевдовипадкових чисел. Припустимо, що функції переходу f {\ displaystyle f} і виходу g {\ displaystyle g} можуть бути обчислені за поліноміальний, ступеня k {\ displaystyle k} , Час. Нехай T {\ displaystyle {\ mathcal {T}}} - клас статистичних тестів , Які намагаються за поліноміальний, ступеня k {\ displaystyle k} , Час відрізнити вихідні значення ГПСЧ від незалежної рівномірно розподіленим на проміжку U = (0, 1) {\ displaystyle {\ mathcal {U}} = (0,1)} випадкової послідовності. Сімейство ГПСЧ ξ k {\ displaystyle \ xi _ {k}} називається хорошим з точки зору полиномиального часу, якщо знайдеться ε> 0 {\ displaystyle \ epsilon> 0} така, що для всіх k {\ displaystyle k} ніякий з тестів T {\ displaystyle {\ mathcal {T}}} не може відрізнити вихідні значення ГПСЧ від незалежної рівномірно розподіленим на проміжку U = (0, 1) {\ displaystyle {\ mathcal {U}} = (0,1)} випадкової послідовності з ймовірністю 1/2 + e - k ε {\ displaystyle 1/2 + e ^ {- k \ epsilon}} . [3]
Криптографічні додатки використовують для генерації випадкових чисел детерміновані алгоритми, отже, генерують послідовність чисел, яка теоретично не може бути статистично випадковою. У той же час, якщо вибрати хороший алгоритм, отримана чисельна послідовність - псевдовипадкових чисел - буде проходити більшість тестів на випадковість. Однією з характеристик такої послідовності є великий період повторення. [3]
Прикладами відомих криптостійкі ГПСЧ є RC4 [7] , ISAAC [14] , SEAL [15] , SNOW [16] , Дуже повільний теоретичний алгоритм Блюм - Блюма - Шуба [7] , А також лічильники з криптографічними хеш-функціями або крипостійкість блоковими шифрами замість функції виведення [7] .
Також до криптографически стійким шифрів відносяться генератори з декількома регістрами зсуву , генератори з нелінійними перетвореннями , мажоритарні генератори шифрування A5 / x . [7]
Приклади криптостійкі ГПСЧ [ правити | правити код ]
Циклічне шифрування [ правити | правити код ]
Відбувається шифрування випадкових чисел генератора за допомогою різних секретних ключів X i {\ displaystyle X_ {i}} , Отриманих на кожній стадії. Лічильник з великим періодом N {\ displaystyle N} використовується в якості входу в шифрувальне пристрій. При використанні 56-бітного ключа DES може використовуватися лічильник з періодом 2 56 {\ displaystyle 2 ^ {56}} .
- У момент ініціалізації генерується секретний ключ K {\ displaystyle K} і константа C {\ displaystyle C} . K {\ displaystyle K} повинен бути випадковим і використовується тільки для даного генератора.
- На кожній стадії відбувається наступне:
X i = E K (C) {\ displaystyle X_ {i} = E_ {K} (C)} C = C + 1 {\ displaystyle C = C + 1}
Псевдослучайная послідовність, отримана за даною схемою, має повний період: кожне вихідне значення X 0 {\ displaystyle X_ {0}} , X 1 {\ displaystyle X_ {1}} , ... X N - 1 {\ displaystyle X_ {N-1}} засноване на різних значеннях лічильника, тому X 0 ≠ X 1 ≠. . . ≠ X N - 1 {\ displaystyle X_ {0} \ neq X_ {1} \ neq ... \ neq X_ {N-1}} . Так як ключ K {\ displaystyle K} є секретним, то будь-який секретний ключ X i {\ displaystyle X_ {i}} не залежить від знання одного або більше попередніх секретних ключів. Для збільшення криптостійкості алгоритму необхідно на кожному кроці шифрувати випадкове число R i {\ displaystyle R_ {i}} з ГСЧ - X i = E K (R i) {\ displaystyle X_ {i} = E_ {K} (R_ {i})} . [17]
ANSI X9.17 [ правити | правити код ]
ГПСЧ зі стандарту ANSI X9.17 використовується в багатьох додатках фінансової безпеки і PGP . В основі цього ГПСЧ лежить потрійний DES . Генератор ANSI X9.17 складається з наступних частин:
- У момент ініціалізації генерується секретний ключ K {\ displaystyle K} . Він повинен бути випадковим і використовується тільки для даного генератора.
- На кожній стадії відбувається наступне:
T i = E K (D i) {\ displaystyle T_ {i} = E_ {K} (D_ {i})} R i = E K (T i ⊕ V i) {\ displaystyle R_ {i} = E_ {K} (T_ {i} \ oplus V_ {i})} V i + 1 = E K (T i ⊕ R i) {\ displaystyle V_ {i + 1} = E_ {K} (T_ {i} \ oplus R_ {i})}
Вхідними випадковими значеннями є D i {\ displaystyle D_ {i}} і V i {\ displaystyle V_ {i}} . R i {\ displaystyle R_ {i}} - вихідне значення. Обчислення V i + 1 {\ displaystyle V_ {i + 1}} з R i {\ displaystyle R_ {i}} без знання K {\ displaystyle K} не є можливим за розумний час, і, отже, наступне псевдовипадкове значення R i + 1 {\ displaystyle R_ {i + 1}} , Так як для отримання V i + 1 {\ displaystyle V_ {i + 1}} додатково виконуються три операції шифрування. [18]
Крім застарілих, добре відомих РСЛОС-генераторів , Широко застосовувалися в якості апаратних ГПСЧ в XX столітті, дуже мало відомо про сучасних апаратних ГПСЧ, так як більшість з них розроблено для військових цілей або запатентовані і тримаються в секреті . Апаратно реалізовані РСЛОС-генератори Toyocrypt і LILI-128 , Були зламані за допомогою алгебраїчних атак [19] [20] .
В даний час відомо про застосування апаратних ГПСЧ, що реалізуються на основі малопотужних шумів в електросхемах. [21]
Генератор випадкових чисел для лотерей - апаратно-програмний комплекс, що застосовується в розіграшах, в яких необхідно вгадувати комбінацію з певної кількості чисел. Будь-яке з можливих чисел має однакову ймовірність появи.
Спроби створити генератор випадкових чисел відносяться до 3500 року до н. е. і пов'язані з давньоєгипетської настільною грою Сенет . У Сенет два гравці грають за дві сторони. Ходи визначаються за допомогою 4 плоских паличок, що і може вважатися генератором випадкових чисел того часу. Кидають всі чотири палички відразу. Підрахунок очок відбувається наступним чином: 1 паличка впала білої стороною вгору - 1 очко і додатковий кидок; 2 - 2 очка; 3 - 3 очка, 4 - 4 і додатковий кидок. Одна зі сторін палички чорна і якщо всі чотири палички падали чорної стороною вгору - це максимальний результат - 5 очок і додатковий кидок.
Відомий генератор випадкових чисел ERNIE застосовувався протягом багатьох років для визначення виграшних номерів британської лотереї.
Основні вимоги до програмного забезпечення і устаткування, використовуваного для проведення розіграшів в Російській Федерації, встановлюються Федеральним законом від 11.11.2003 № 138-ФЗ "Про лотереї":
- Технічні характеристики лотерейного обладнання повинні забезпечувати випадковість розподілу виграшів при розіграші призового фонду тиражних лотерей.
- Чи не повинні використовуватися процедури, що реалізують алгоритми, які дозволяли б визначати результат розіграшу призового фонду до початку такого розіграшу.
- Лотерейне обладнання, яке використовується при проведенні тиражної лотереї, має забезпечувати захист інформації від втрати, розкрадання, спотворення, несанкціонованих дій по її знищенню, модифікації, копіювання та інших подібних дій і несанкціонованого доступу по мережі передачі даних. [22]
У російських державних лотереях ( «Гослото« 5 з 36 »,« Гослото «6 з 36», «Гослото« 6 із 45 »,« Гослото «7 з 49», «Гослото« 4 з 20 »,« Спортлото 6 з 49 ») [23] для визначення переможців використовуються самозаряджається лототрони . Трансляція розіграшів ведеться в прямому ефірі. [24]
У російських державних лотереях ( «Рапідо», «Кено-Спортлото», «Топ-3», «12/24», «Все по сто») для визначення переможців використовується генератор випадкових чисел - апаратно-програмний комплекс, Сертифікований АНО "МІЦ" і відповідає рекомендаціям ФГУП ВНИИМС . Апарат формує безперервний потік випадкових шумів, які перетворюються в числа. У заданий момент часу з потоку вихоплюються поточні значення, які і є виграшною лотерейної комбінацією. [25]
У 2015 році колишньому директору з безпеки US Multi-State Lottery Association після виграшу в 16.5 млн. доларів, який мав доступ до програмного забезпечення, що використовується при розіграшах лотерей, було пред'явлено звинувачення в використанні спеціальних алгоритмів, що дозволяють визначати виграшну комбінацію лотереї протягом декількох днів в році. [26]
- ↑ NG Bardis, AP Markovskyi, N. Doukas, NV Karadimas. True Random Number Generation Based on Environmental Noise Measurements for Military Applications // Proceedings of the 8th WSEAS International Conference on SIGNAL PROCESSING, ROBOTICS and AUTOMATION. - 2009. - С. 68-73. - ISBN 978-960-474-054-3 . - ISSN 1790-5117 .
- ↑ Random.org (неопр.).
- ↑ 1 2 3 4 5 6 L'Ecuyer, Pierre. Random Number Generation // Springer Handbooks of Computational Statistics: Глава. - 2007. - С. 93 - 137. - DOI : 10.1002 / 9780470172445.ch4 .
- ↑ Von Neumann, John. Various techniques used in connection with random digits // National Bureau of Standards Applied Mathematics Series. - 1951. - № 12. - С. 36-38.
- ↑ Lehmer, DH Mathematical Methods in Large-Scale Computing Units // Ann, Comput Lab. Harvard Univ .. - 1951. - Vol. 26. - С. 141-146. (Недоступна посилання)
- ↑ Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1 (неопр.) (PDF). Intel Corporation (7 серпня 2012). Дата звернення 25 листопада 2012. Читальний зал 18 травня 2013 року.
- ↑ 1 2 3 4 5 Габідулін Е. М., Кшевецкій А. С., Колибельніков А. І., Владимиров С. М. Захист інформації. навчальний посібник . - С. 100-113.
- ↑ Дональд Кнут . Глава 3.3. Спектральний критерій // Мистецтво програмування. Указ. соч. - С. 129-130.
- ↑ William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. Numerical Recipes in C: The Art of Scientific Computing. - 2nd ed. - Cambridge University Press, 1992. - P. 277. - ISBN 0-521-43108-5 .
- ↑ З квантового вакууму отримали випадкові числа
- ↑ Jovan Dj. Goli c. Cryptanalytic Attacks on MIFARE Classic Protocol // Topics in Cryptology - CT-RSA 2013. - Springer, Berlin, Heidelberg, 2013. - № 7779. - С. 239-259. - DOI : 10.1007 / 978-3-642-36095-4_16 .
- ↑ 1 2 Yarrow
- ↑ 1 2 Intel DRNG Software Implementation Guide (неопр.). Intel.
- ↑ J.-P. Aumasson. On the pseudo-random generator ISAAC // Cryptology ePrint Archive. - 2006.
- ↑ H. Chen, K. Laine, R. Player. [ https://eprint.iacr.org/2017/224.pdf Simple Encrypted Arithmetic Library - SEAL v2.1] // Cryptology ePrint Archive. - 2017.
- ↑ A. Kircanski and AM Youssef. [ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.301.2615&rep=rep1&type=pdf On the Sliding Property of SNOW 3G and SNOW 2.0] // Information Security, IET. - 2010. - № 5 (4). - С. 199-206.
- ↑ Лапонін О. Р. Алгоритми симетричного шифрування (неопр.). НОУ ІНТУЇТ.
- ↑ Kelsey J., Schneier B., Wagner D., Hall C. Cryptanalytic Attacks on Pseudorandom Number Generators // Fast Software Encryption. FSE 1998. Lecture Notes in Computer Science. - Springer, Berlin, Heidelberg, 1998. - Vol. 1372. - DOI : 10.1007 / 3-540-69710-1_12 .
- ↑ NT Courtois. Higher Order Correlation Attacks, XL Algorithm and Cryptanalysis of Toyocrypt // Cryptology ePrint Archive. - 2002.
- ↑ Ed Dawson, Andrew Clark, J Golic, W Millan, L Penna. The LILI-128 Keystream Generator . - 2000-12-13.
- ↑ CS Petrie, JA Connelly. A noise-based IC random number generator for applications in cryptography // IEEE Transactions on Circuits and Systems I: Fundamental Theory and Applications. - May 2000. - Vol. 47, № 5. - С. 615-621. - ISSN 1057-7122 . - DOI : 10.1109 / 81.847868 .
- ↑ Стаття 12.1. Вимоги до лотерейному обладнанню і лотерейним терміналів (неопр.).
- ↑ Відповіді на питання про «Столото» (неопр.). Сто Лото.
- ↑ Трансляції розіграшів державних лотерей (неопр.). Сто Лото.
- ↑ Генератор випадкових чисел (неопр.). Сто Лото.
- ↑ Man hacked random-number generator to rig lotteries, investigators say , The Guardian.