Как използваме компютъра като генератор на произволни числа

генератор на случайни числа Компютрите генерират произволно число за всичко - от криптография до видео игри и хазарт. Има две категории случайни числа - вярно случайни числа и псевдослучайни числа. И разликата е важна за сигурността на системите за криптиране. В тази статия ще говорим за това как използваме компютъра като генератор на случайни числа. Нека да започнем!





Тази тема стана по-противоречива напоследък, заедно с много хора, които се съмняват дали вграденият хардуерен чип на генератор на произволни числа на Intel е надежден или не. За да разберете защо може да не е надежден, ще трябва да разберете. Това как се генерират случайни числа на първо място и за какво се използват.



За какви случайни числа се използват | генератор на случайни числа

Случайни числа се използват в продължение на много хиляди години. Независимо дали става дума за хвърляне на монета или хвърляне на зарове, целта е крайният резултат да бъде оставен на случаен принцип. Генераторът на случайни числа в компютър е подобен. Те са опит за постигане на непредсказуем, случаен резултат.

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



Криптографията изисква числа, които нападателите не могат да познаят. Не можем просто да използваме едни и същи числа отново и отново. Искаме да генерираме тези числа по много непредсказуем начин, така че нападателите да не могат да ги отгатнат. Тези произволни числа са важни за сигурно криптиране. независимо дали шифровате собствените си файлове или просто използвате HTTPS сайт в Интернет.



Истински случайни числа | генератор на случайни числа

Може би се чудите как компютърът всъщност може да генерира произволно число. Къде е това случайност идвам от? Ако това е само част от компютърен код, не е ли възможно числата, генерирани от компютъра, да бъдат предвидими?

Обикновено групираме компютрите с произволно число, генерирани в два типа. Това зависи от начина им на генериране: Вярно случайни числа и псевдослучайни числа.



мега редактор страничен блог

За генериране на вярно произволно число, компютърът измерва някакъв вид физическо явление, което се случва извън компютъра. Като например компютърът може да измери радиоактивното разпадане на атом. Според квантовата теория няма начин да се знае със сигурност кога ще настъпи радиоактивно разпадане. Така че това е по същество чиста случайност от Вселената. Нападателят не би могъл да предскаже кога ще настъпи радиоактивен разпад. Така те не биха знаели случайната стойност.



За по-ежедневен пример компютърът може да разчита на атмосферния шум или просто да използва точното време на натискане на клавишите на клавиатурата като източник на непредсказуеми данни или ентропия. Например компютърът ви може да забележи, че сте натиснали клавиш точно на 0,23423523 секунди след 14:00. Вземете достатъчно от конкретното време, свързано с тези натискания на клавиши и ще имате източник на ентропия, който можете да използвате за генериране на вярно произволно число. Вие не сте предсказуема машина. Така че нападателят не може да отгатне точния момент, когато натиснете тези клавиши. Устройството / dev / random на Linux, което генерира произволни числа, блокове и не връща резултат, докато не събере достатъчно ентропия, за да върне наистина произволно число.

Псевдослучайни числа | генератор на случайни числа

Псевдослучайните числа са алтернатива на вярно случайни числа. Компютър може да използва начална стойност и алгоритъм, за да генерира числа, които изглеждат случайни, но това всъщност е предсказуемо. Компютърът не събира случайни данни от околната среда.

Това не е непременно лошо във всяка ситуация. Например, ако играете видео игра. Всъщност няма значение дали събитията, които се случват в тази игра, са причинени от вярно случайни числа или псевдослучайни числа. От друга страна. Ако използвате криптиране, не искате да използвате псевдослучайни числа, които нападателят би могъл да отгатне.

Например, да кажем, че нападателят познава алгоритъма и стойността на семена, които използва генератор на псевдослучайни числа. И нека кажем, че алгоритъмът за криптиране получава псевдослучайно число от този алгоритъм. И го използва, за да генерира ключ за криптиране, без да добавя допълнителна случайност. Ако нападателят знае достатъчно, той може да работи назад и да определи псевдослучайния номер. Алгоритъмът за криптиране трябва да е избрал в този случай, нарушавайки криптирането.

NSA и Intel’s Hardware Random Number Generator

За да улесни нещата за разработчиците и да помогне за генерирането на сигурни произволни числа. Чиповете Intel включват хардуерен генератор на произволни числа, известен като RdRand. Този чип използва източник на ентропия на процесора и дава произволни числа на софтуера, когато софтуерът ги поиска.

Проблемът тук е, че генераторът на случайни числа е по същество черна кутия и ние не знаем какво се случва вътре в нея. Ако RdRand съдържаше задната врата на NSA, правителството щеше да може да разбие ключовете за криптиране. Това беше генерирано само с данни, предоставени от този генератор на случайни числа.

Това е сериозно безпокойство. През декември 2013 г. разработчиците на FreeBSD премахнаха поддръжката за използване на RdRand директно като източник на случайност, заявявайки, че не могат да му се доверят. [Източник] Изходът на устройството RdRand ще бъде подаден в друг алгоритъм, който добавя допълнителна ентропия. Това гарантира, че евентуалните бекдори в генератора на случайни числа няма да имат значение. Linux вече работи по този начин, като допълнително рандомизира случайните данни, идващи от RdRand, така че да не могат да бъдат предвидими, дори и да има задна врата. [Източник] В скорошно AMA ( Питай ме каквото и да е ) на Reddit, изпълнителният директор на Intel Брайън Крзанич не отговори на въпроси относно тези опасения. [Източник]

Разбира се, това вероятно не е проблем само с чиповете на Intel. Разработчиците на FreeBSD също извикаха чиповете на Via по име. Този спор показва защо генерирането на произволни числа, които са наистина случайни и не са предвидими, е толкова важно.

Да генерира вярно случайни числа, генераторите на случайни числа се събират ентропия, или на пръв поглед случайни данни от физическия свят около тях. За случайни числа, които не са наистина ли трябва да са случайни, те могат просто да използват алгоритъм и начална стойност.

Заключение

Добре, това беше всички хора! Надявам се тази статия за генератор на произволни числа да ви хареса и да ви е полезна. Изпратете ни отзивите си за него. Също така, ако искате да зададете допълнителни въпроси, свързани с него. След това ни уведомете в раздела за коментари по-долу. Ще се свържем с вас скоро.

как да преинсталирам света на танковете

Приятен ден!

Вижте също: NSFW: Значение и как всъщност работи