Як комп’ютери генерують випадкові числа

Nov 4, 2024
Конфіденційність та безпека

Комп’ютери генерують випадкові числа для всього - від криптографії до відеоігор та азартних ігор. Існує дві категорії випадкових чисел - „справжні” випадкові числа та псевдовипадкові числа - і різниця важлива для безпеки систем шифрування.

Комп’ютери можуть генерувати справді випадкові числа, спостерігаючи деякі зовнішні дані, такі як рухи миші або шум вентилятора, що не можна передбачити, та створюючи дані з них. Це відоме як ентропія. В інших випадках вони генерують “псевдовипадкові” числа за допомогою алгоритму, тому результати виглядають випадковими, навіть якщо вони не є такими.

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

Для чого використовуються випадкові числа

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

ПОВ'ЯЗАНІ: Що таке шифрування та як воно працює?

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

Криптографія потрібні цифри, які зловмисники не можуть здогадатися. Ми не можемо просто повторно використовувати однакові числа. Ми хочемо генерувати ці цифри вкрай непередбачувано, щоб зловмисники не могли їх вгадати. Ці випадкові числа необхідні для безпечного шифрування, незалежно від того, чи шифруєте ви власні файли, чи просто використовуєте файл HTTPS веб-сайт в Інтернеті.

Справжні випадкові числа

Можливо, вам цікаво, як комп’ютер насправді може генерувати випадкове число. Звідки ця "випадковість". Якщо це лише шматок комп’ютерного коду, чи не можливо цифри, які генерує комп’ютер, можуть бути передбачуваними?

Зазвичай ми групуємо випадкові числа, які комп’ютери генерують, у два типи, залежно від того, як вони генеруються: „Істинні” випадкові числа та псевдовипадкові числа.

Щоб сформувати „справжнє” випадкове число, комп’ютер вимірює певний тип фізичного явища, яке відбувається поза комп’ютером. Наприклад, комп’ютер міг виміряти радіоактивний розпад атома. Згідно з квантовою теорією, неможливо точно знати, коли відбудеться радіоактивний розпад, тому це, по суті, "чиста випадковість" із Всесвіту. Зловмисник не зможе передбачити, коли відбудеться радіоактивний розпад, тому вони не знатимуть випадкового значення.

Для більш повсякденного прикладу комп'ютер може покладатися на атмосферний шум або просто використовувати точний час натискання клавіш на клавіатурі як джерело непередбачуваних даних або ентропії. Наприклад, ваш комп’ютер може помітити, що ви натиснули клавішу рівно 0,23423523 секунди після 14:00. Візьміть достатньо певного часу, пов’язаного з цими натисканнями клавіш, і у вас буде джерело ентропії, яке можна використовувати для створення „справжнього” випадкового номер. Ви не передбачувана машина, тому зловмисник не може вгадати точний момент, коли ви натискаєте ці клавіші. / dev / випадковий пристрій на Linux , який генерує випадкові числа, "блокує" і не повертає результат, поки не набере достатньо ентропії, щоб повернути справді випадкове число.

Псевдовипадкові числа

Псевдовипадкові числа є альтернативою “справжнім” випадковим числам. Комп’ютер міг би використовувати початкове значення та алгоритм для генерації чисел, які видаються випадковими, але насправді передбачуваними. Комп’ютер не збирає випадкових даних із навколишнього середовища.

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

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

Апаратний генератор випадкових чисел АНБ та Intel

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

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

Це викликає серйозне занепокоєння. У грудні 2013 року розробники FreeBSD скасували підтримку використання RdRand безпосередньо як джерело випадковості, заявивши, що не можуть йому довіряти. [ Джерело ] Вихід пристрою RdRand буде подано в інший алгоритм, який додає додаткову ентропію, гарантуючи, що будь-які бекдори в генераторі випадкових чисел не матимуть значення. Linux вже працював таким чином, продовжуючи рандомізувати випадкові дані, що надходять від RdRand, так що це не було б передбачуваним, навіть якщо існував бэкдор. [ Джерело ] В нещодавньому AMA (“Запитайте мене про що завгодно”) на Reddit, генеральний директор Intel Брайан Крзаніч не відповів на запитання щодо цих проблем. [ Джерело ]

Звичайно, це, мабуть, проблема не лише в чіпах Intel. Розробники FreeBSD також називали чіпи Via по імені. Ця суперечка показує, чому генерування випадкових чисел, які є справді випадковими і не передбачуваними, є настільки важливим.


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

Кредит зображення: rekre89 на Flickr , Ліза Брюстер на Flickr , Райан Сомма на Flickr , Huangjiahuion Flickr

How Do Computers Generate Random Numbers?

Why Computers Can't Generate Random Numbers

Can Computers Generate True Random Numbers | CodeinVeins

How Do Computers Generate Random Numbers? #shorts

How Machines Generate Random Numbers With Time

Can Computers Generate Random Numbers?! | Tech Shorts

How Computers Generate Random Numbers | Quantum, ITER, COVID Mutations

How Random Numbers Are Generated

Random Numbers - Numberphile

Almost All Random Numbers Are Actually Fake

Random Numbers (How Software Works)

How To Generate Pseudorandom Numbers | Infinite Series

Lecture 16 - Generation Of Random Numbers

What Is Random?

Pseudo Random Numbers And Stream Ciphers (CSS322, L9, Y14)

Is Anything Truly Random?

How Random Is A Computer Generator Actually?


Конфіденційність та безпека - Найпопулярніші статті

Як застосувати багатофакторну автентифікацію для всіх користувачів вашої передплати на Office 365

Конфіденційність та безпека Apr 9, 2025

Багатофакторна автентифікація (MFA) є чудовим інструментом безпеки, і ми завжди рекомендуємо це..


Бути продуктом - це не зовсім погано

Конфіденційність та безпека May 17, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Це інтернет-кліше: "якщо ви не платите за те, що не є замовником, ви продаєте т..


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

Конфіденційність та безпека Dec 1, 2024

Більшість людей не часто замінюють свої маршрутизатори, і існує так багато важливих налаштувань, щ..


Як зашифрувати свої повідомлення у Facebook за допомогою режиму “Таємна розмова”

Конфіденційність та безпека Jul 11, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Facebook нарешті пішов у ногу з часом і розповсюдив зашифрований зв’язок між пр..


Як налаштувати нову двофакторну автентифікацію Google без коду

Конфіденційність та безпека Jul 12, 2025

Двофакторна автентифікація - це чудовий спосіб переконатись, що ваш обліковий запис у безпеці, але ..


Чому вам не потрібно встановлювати сторонній брандмауер (і коли це потрібно)

Конфіденційність та безпека Dec 13, 2024

Брандмауери є важливою частиною програмного забезпечення безпеки , а хтось завжди намагаєт�..


Ось 6 чудових прийомів для Windows 8, яких ви, мабуть, не знаєте

Конфіденційність та безпека Apr 3, 2025

Ми розглянули безліч порад, підказок та покращень для Windows 8, але є ще кілька. Ось від обходу екрана б..


Список програмного забезпечення для захисту від шпигунського програмного забезпечення, сумісного з Windows 7

Конфіденційність та безпека Sep 16, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Якщо ви один із багатьох людей, які тестують бета-версію Windows 7, вам все одно слід п�..


Категорії