Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



26.08.2021

Firma Fortinet rozszerzyła...

Firma Fortinet rozszerzyła ofertę o usługę FortiTrust, która dołączyła do innych usług...
26.08.2021

Aplikacje biznesowe

Ready_™ AppStore
26.08.2021

Automatyzacja chmur...

Integracja z Red Hat Ansible
26.08.2021

Backup kodu źródłowego

GitProtect.io dostępny na Github
26.08.2021

Wsparcie pracy hybrydowej

Zdalny SD WAN
26.08.2021

Nowy monitor Philips 498P9Z

Nowy monitor Philips 498P9Z to model wyposażony w 49-calowy, zakrzywiony panel VA o...
26.08.2021

Wytrzymały punkt dostępowy

D-Link DIS-2650AP
26.08.2021

Ekonomiczne dyski

SSD bez DRAM
26.08.2021

Petabajty pojemności

Serwery QNAP

Generowanie liczb losowych

Data publikacji: 01-04-2021 Autor: Adam Kamiński

Jeśli jest jedna rzecz, w której komputery są dobre, to przewidywalność. Mogą wykonać tę samą operację milion razy i jeśli za każdym razem dostarczymy im te same dane wejściowe, zawsze otrzymamy te same wyniki. Jest to korzystne pod względem niezawodności, ale niefortunne dla kryptologów.

 

W kryptografii termin „losowy” oznacza nieprzewidywalny. Cała kryptografia opiera się na asymetrii informacji. Oznacza to, że proces generowania losowych bitów jest bezpieczny, jeśli atakujący nie jest w stanie przewidzieć następnego bitu z dokładnością większą niż 50%. Wartość wygenerowana w danym momencie nie powinna być w żaden sposób skorelowana z poprzednimi wartościami. Sekwencja jest uważana za losową, jeśli nie można w niej rozpoznać wzorców.


Liczby losowe były używane od wielu tysięcy lat, a w XX w. eksplodował na nie popyt. Naukowcy używają ich do modelowania chaotycznego zachowania molekularnego, fizykom potrzebne są do przeprowadzenia symulacji wybuchów jądrowych. Losowe liczby odgrywają również kluczową rolę w loteriach i grach hazardowych. Niezależnie od tego, czy chodzi o rzucanie monetą, czy kośćmi, celem jest pozostawienie wyniku końcowego przypadkowi. Generatory liczb losowych (ang. Random Number Generator) w komputerze z założenia mają działać podobnie – są próbą uzyskania nieprzewidywalnego, losowego wyniku.
Komputery nie są dobrymi generatorami liczb losowych. Z założenia są deterministyczne, co oznacza, że jeśli zada im się to samo pytanie, za każdym razem dadzą tę samą odpowiedź. Ta przewidywalność jest problemem, jeśli chodzi o generowanie bezpiecznych kluczy szyfrujących. Generator liczb losowych opierający się na obliczeniach deterministycznych nie może być nigdy postrzegany jako naprawdę losowy – wyniki mogą być wystarczająco złożone, aby utrudnić identyfikację wzorca, ale jeśli wszystkie wartości początkowe są znane, generowany wynik będzie z natury przewidywalny.


Prawdziwa…


Do wygenerowania nieprzewidywalnych, chaotycznych danych niezbędnych do silnego szyfrowania komputer potrzebuje źródła losowych danych. Ich doskonałym źródłem okazuje się świat zewnętrzny, ponieważ zdarzenia w świecie fizycznym są nieprzewidywalne. Losowe dane wejściowe nazywane są ziarnem kryptograficznym.
Prawdziwa przypadkowość to każda informacja uzyskana poprzez pomiar procesu fizycznego. Komputery mogą generować prawdziwie losowe liczby, obserwując np. ruchy myszy lub hałas wentylatora, których nie można przewidzieć, i tworząc na ich podstawie dane. Nazywa się to pulą entropii – jest to zbiór losowości, który uważa się za bezpieczny. Jego nieprzewidywalność zależy albo od nieodłącznej nieprzewidywalności mierzonego procesu fizycznego (np. nieprzewidywalność rozpadu radioaktywnego), albo od niedokładności nieodłącznie związanej z wykonywaniem precyzyjnych pomiarów fizycznych (np. niedokładność najmniej znaczących cyfr niektórych pomiarów fizycznych, takich jak pomiar temperatury procesora lub czasu naciśnięcia klawiszy na klawiaturze). Uzyskane w ten sposób wartości losowe są nieprzewidywalne nawet dla osoby je mierzącej (osoba dokonująca pomiaru nie jest w stanie przewidzieć, jaka będzie wartość przed wykonaniem pomiaru), a przez to równie nieprzewidywalne dla atakujących z zewnątrz.


…i pseudolosowość


Jednak uzyskanie prawdziwie losowych wartości jest zwykle kosztowne i powolne, więc używanie ich bezpośrednio w algorytmach kryptograficznych jest niepraktyczne. Zamiast tego wykorzystywana jest pseudolosowość. Generatory liczb losowych próbują obejść przewidywalność swoich liczb, generując nasiona z wielu pozornie nieprzewidywalnych źródeł. Jednak fakt, że te źródła nasion zwykle nie są losowe, oznacza, że system jest nadal bardziej podatny na atak niż źródło losowe. Pod koniec lat 90. eksperci ds. bezpieczeństwa odkryli, że ziarno RNG firmy Netscape pochodziło tylko z trzech wielkości: pory dnia, identyfikatora procesu i identyfikatora procesu nadrzędnego.


Powszechnym podejściem do rozwiązywania problemów z bezpieczeństwem jest mieszanie wielu źródeł losowości razem w puli entropii systemu (przy założeniu, że dopóki niektóre źródła pozostają nieskompromitowane, system pozostaje bezpieczny), które następnie łączone są z liczbami pseudolosowymi w CSPRNG. Kryptograficznie zabezpieczony generator liczb pseudolosowych (CSPRNG) to PRNG, który spełnia bardziej rygorystyczne standardy. CSPRNG używane w nowoczesnej kryptografii są zarówno bardzo szybkie, jak i są w stanie bezpiecznie wytwarzać skutecznie nieskończoną ilość danych wyjściowych przy stosunkowo niewielkim ziarnie (rzędu kilkuset bitów). Aby efektywnie generować dużo bezpiecznej losowości, prawdziwą losowość uzyskuje się z procesu fizycznego (jest to powolne) i wprowadza do CSPRNG, który z kolei wytwarza tyle losowości, ile jest wymagane przez aplikację (jest to szybkie). W ten sposób można uzyskać losowość, która jest zarówno bezpieczna (ponieważ pochodzi z prawdziwie losowego źródła, którego atakujący nie może przewidzieć), jak i tania (ponieważ CSPRNG służy do przekształcenia prawdziwie losowego ziarna w znacznie większy strumień pseudolosowych wyników).

 

[...]

 

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"