Prawdziwa losowość a pseudolosowość
Rozróżnić sprzętowe źródła entropii od programowych PRNG
Prawdziwa losowość a pseudolosowość to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Dlaczego losowość ma znaczenie
Bezpieczeństwo kryptograficzne zależy przede wszystkim od nieprzewidywalności. Jeśli atakujący może przewidzieć Twój klucz, IV lub nonce — nawet częściowo — cały system kryptograficzny może się załamać. Słaba losowość doprowadziła do katastrofalnych przełamań zabezpieczeń w rzeczywistych systemach.
Generatory prawdziwych liczb losowych (TRNG)
TRNG czerpią entropię fizyczną: szum termiczny w rezystorach, szum śrutowy w diodach spolaryzowanych zaporowo, rozpad promieniotwórczy, ruchy myszy, czasy naciskania klawiszy i opóźnienia wyszukiwania dysku. Są to rzeczywiście nieprzewidywalne zjawiska fizyczne.
Pula entropii
System operacyjny utrzymuje pulę entropii — zbiór próbek fizycznego szumu, które są łączone operacją XOR i haszowane. Linux: /dev/random i /dev/urandom pobierają dane z tej puli. Pula jest stale uzupełniana podczas działania systemu.
Generatory pseudolosowe (PRNG)
PRNG (nazywany również deterministycznym generatorem liczb losowych / DRNG) rozwija krótkie ziarno do długiego strumienia pseudolosowych bajtów za pomocą deterministycznego algorytmu. Dla tego samego ziarna generuje ten sam wynik. Nie nadaje się do kryptografii, chyba że został zainicjalizowany prawdziwą entropią.
PRNG a CSPRNG
PRNG może wykazywać wykrywalne obciążenie statystyczne lub być przewidywalny na podstawie zaobserwowanych danych wyjściowych. Kryptograficznie bezpieczny PRNG (CSPRNG) zapewnia dodatkowo: (1) bezpieczeństwo w przód (nie można przewidzieć wcześniejszych danych wyjściowych na podstawie bieżącego stanu) oraz (2) odporność na odtwarzanie wstecz (nie można przewidzieć przyszłych danych wyjściowych na podstawie wcześniejszych).
Test rozróżniający
PRNG jest kryptograficznie bezpieczny, jeśli żaden algorytm działający w czasie wielomianowym nie potrafi odróżnić jego wyników od prawdziwie losowej sekwencji z prawdopodobieństwem istotnie większym niż 1/2. Jest to kryterium nieprzewidywalności następnego bitu.
Źródła entropii na różnych platformach
Linux: /dev/urandom (nieblokujący po początkowym zainicjalizowaniu), wywołanie systemowe getrandom(). Windows: CryptGenRandom(), BCryptGenRandom(). macOS/iOS: SecRandomCopyBytes(). Przeglądarka: window.crypto.getRandomValues(). Wszystkie zasilają pulę entropii systemu operacyjnego.
Testy statystyczne
NIST SP 800-22 udostępnia 15 testów statystycznych losowości: częstości, częstości bloków, serii, uniwersalny Maurera, złożoności liniowej itd. Przejście testów statystycznych nie dowodzi bezpieczeństwa kryptograficznego — wskazuje jedynie na brak oczywistego obciążenia.
Jakość ziarna
CSPRNG zainicjalizowany słabą entropią (np. bieżącym czasem w sekundach) jest przewidywalny. Atakujący, który zna ziarno, może odtworzyć cały wynik. Zawsze inicjalizuj generator na podstawie entropii systemu operacyjnego: os.urandom(32) w Pythonie, a nie time.time() ani random.random().
Sprzętowe generatory liczb losowych
Intel RDRAND (instrukcja x86) zwraca wygenerowane sprzętowo losowe bajty z TRNG znajdującego się w układzie. Odpowiedni sprzęt istnieje również dla AMD i ARM. Linux łączy dane RDRAND z /dev/urandom. Jest używany jako dodatkowe źródło entropii, a nie jedyne źródło (ze względu na kwestie zaufania).
Kwantowe generatory liczb losowych
QRNG wykorzystują zjawiska mechaniki kwantowej (czasy nadejścia fotonów, fluktuacje próżni) do generowania wyników o dowiedzionej losowości. Komercyjne QRNG (ID Quantique, Quantis) są używane w zastosowaniach o wysokich wymaganiach bezpieczeństwa. Ich koszt uniemożliwia powszechne zastosowanie.
Szybkie sprawdzenie
Jaka właściwość odróżnia CSPRNG od zwykłego PRNG?
Podsumowanie
TRNG czerpią entropię fizyczną, PRNG deterministycznie rozwijają ziarno, a CSPRNG są nierozróżnialne od prawdziwej losowości. Pule entropii systemu operacyjnego łączą oba źródła. Dalej: konkretne konstrukcje CSPRNG stosowane w praktyce.
Często zadawane pytania
Czy lekcja „Prawdziwa losowość a pseudolosowość” jest bezpłatna?
Tak — pełny tekst „Prawdziwa losowość a pseudolosowość” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Prawdziwa losowość a pseudolosowość”?
Rozróżnić sprzętowe źródła entropii od programowych PRNG Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?
Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Prawdziwa losowość a pseudolosowość”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?
Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Prawdziwa losowość a pseudolosowość
- Kryptograficznie bezpieczne PRNG
- Niedobór entropii i błędy związane ze słabymi kluczami
- Bezpieczne generowanie kluczy, nonce’ów i IV