Сигурност

/ dev / random срещу / dev / urandom и сигурни ли са?

/ dev / random срещу / dev / urandom и сигурни ли са?

Приготвяме се да започнем

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

Защо машините не могат да генерират истински произволни числа сами?

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

Защо генерирането на истинско произволно число е толкова важно?

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

Генератор на случайни числа в ядра на Linux:

Темата за нашата днешна дискусия се основава на генератора на случайни числа на Linux, на какви фактори се основава този генератор и дали наистина е толкова случаен или е просто друго типично ненадеждно случайно число.

Linux използва Pseudo Random Number Generator (PRNG) или Cryptographically Secure Pseudo Random Number Generator (CSPRNG), което означава, че използва сложни математически формули и свойства на околната среда за постигане на максимална произволност. Linux беше първата операционна система, която включи PRNG в своето пространство на ядрото. Това е изпълнено от Теодор Цо през 1994г.

Linux има три категории генератори на случайни числа, / dev / random, / dev / urandom, / dev / arandom. И трите са файловете, в които Linux съхранява произволни числа. Случайните числа в тези файлове се генерират, като се използва шумът от околната среда от драйверите на устройството и други източници. Също така, за да осигури случайност в случайните си числа, linux използва ентропия, която е степента на несигурност или разстройство между тях. Можете също да намерите страницата с ръководството за Linux Генератор на произволни числа (RNG) тук:

http: // man7.org / linux / man-pages / man4 / random.4.html

/ dev / произволно срещу / dev / urandom срещу / dev / arandom:

Основните разлики между / dev / random, / dev / urandom и / dev / arandom са, че / dev / random блокове, ако ентропията не показва достатъчна случайност, / dev / urandom не блокира никога, дори когато генераторът на псевдо случайни числа не е напълно зареден при стартиране и накрая / dev / arandom блокира само когато генераторът на псевдо случайни числа все още не е напълно зареден. Накратко, / dev / random е най-безопасният от всички, след това идва / dev / arandom и най-безопасното е / dev / urandom. Обикновено се използват / dev / random и / dev / urandom, защото / dev / arandom в много термини е подобен на / dev / urandom. Оценката на ентропията за набора от случайни числа накратко се използва за определяне на случайността на генерираните числа. Колкото повече е ентропията, толкова повече хаотичност се постига и по-добре. Текущото количество ентропия и размерът на нейния ентропиен пул са налични на / proc / sys / kernel / random /, наречени съответно entropy_avail и pool_size, които могат да бъдат показани в терминала с помощта на команди:

cat / proc / sys / kernel / random / entropy_avail

И:

cat / proc / sys / kernel / random / pool_size

Както различни, така и случайни се използват в различни сценарии. „Urandom“ се използва, когато има постоянна нужда от случайни числа и неговата произволност не е много важна, докато „random“ се използва там, където има опасения за сигурността и неговата произволност трябва да бъде надеждна, тъй като блокира извеждането на случайни числа, ако ентропията не е до марката. Въпреки че ентропията за urandom (Unlimited Random) не е много по-слаба, но се препоръчва да се използва произволно, когато се изисква по-голяма сигурност поради възможността за атаки върху брой, генериран от urandom.

Слабости в Linux генераторите на случайни числа

За енергонезависим хардуер на паметта:

За ядрата на Linux генераторът на случайни числа не е добър за вграден хардуер като рутери, в които стартиращото състояние е предсказуемо и източникът за достатъчно ентропия е ограничен. За този вид хардуер се препоръчва запазване и използване на състояние на генератор на случайни числа (RNG) преди изключване, което ще се използва при следващото зареждане. В такива случаи на рутери атакуващите могат да компрометират и прогнозират генерираните случайни числа само ако имат достъп до всички връзки на рутера и подслушват комуникационните му връзки или ако имат пряк достъп до запазеното състояние на RNG от самия рутер.

За този недостатък на RNG в случай на хардуер на помощ идват генератори на ентропия на трети страни. Тези ентропийни генератори като „hasged“ използват синхронизация на кеша на процесора, външни аудио и видео устройства за въвеждане, за да увеличат ентропията до приемлива степен.

Оценка на ентропията:

Както бе споменато преди, ядрото на Linux определя случайността по отношение на ентропията, но всъщност не изчислява ентропията всеки път и вместо това използва оценки на ентропията. Няколко изследвания също разкриха, че оценката на ентропията на случайни числа, използвани в Linux, не са подходящи или по-близки оценки, като по този начин общата случайност на числата е по-слаба.

Въпреки че има някои слабости в Linux Random Number Generator, но е далеч по-добър вариант в сравнение с други RNG, да не забравяме текущите кръпки, предоставени от сътрудници и разработчици на Linux.

Заключение:

Всичко беше от моя страна за генератора на случайни числа в ядрото на Linux. Прекарах добре в разпространението на това знание с вас. Надявам се, че сте научили нещо ново чрез него, както и че ще споделите знанията по-нататък със света. И накрая, благодаря, че инвестирахте време в тази статия.

Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...
Екранен тракпад и указател на мишката на AppyMouse за таблети с Windows
Потребителите на таблети често пропускат показалеца на мишката, особено когато са привични да използват лаптопите. Смартфоните и таблетите със сензоре...