Kryptoanaliza RNG Windows

2007-11-12 00:00:00 +0000


Izraelscy badacze przedstawili kryptoanalizę generatora liczb pseudolosowych w systemie Windows 2000 (WRNG), zwracając uwagę na kilka słabości, nie mających jednak krytycznego charakteru.

Praca “Cryptanalysis of the Random Number Generator of the Windows Operating System” omawia odtworzony przy pomocy “reverse engineeringu” algorytm generatora liczb pseudolosowych w systemie Windows 2000, porównuje go z generatorami wbudowanymi w inne systemy operacyjne (FreeBSD, OpenBSD, Linux) i wskazuje na potencjalne słabości.

Generator jest oparty o algorytm RC4 używany jako PRNG oraz SHA-1 jako funkcję haszującą. Zarzuty dotyczą między innymi przewidywalności wartości zwracanych przez generator w sytuacji gdy atakujący pozna jego stan wewnętrzny. Atakujący może wówczas obliczać wartości generatora w zakresie 128 KB w obu kierunkach, co odpowiada około 600-1200 sesjom SSL dokonywanym w tym czasie. Badacze skazują również na błędy implementacyjne takie jak przechowywanie licznika iteracji w zmiennej w pamięci.

Jest to o tyle istotne, że generator Windows działa w postaci niezależnych kopii w każdym procesie, przez co atak na pojedynczą aplikację pozwala na odtworzenie wykorzystywanych przez nią liczb losowych. W systemach gdzie PRNG działa w kernelu (Linux) trzeba by w tym celu zaatakować z powodzeniem kernel systemu.

Pewne wątpliwości może budzić badanie wersji w stopniowo wycofywanym dzisiaj systemie Windows 2000, jednak autorzy twierdzą że generator nie zmienił się w Windows XP. Zastrzegaja równocześnie, że nie analizowali Visty bo w momencie prowadzenia prac nie była jeszcze dostępna.

Aktualizacja: jak zwrócono uwagę na liście openssl-dev, Windows CAPI podlegało w 2000 roku certyfikacji wg FIPS 180-1, choć prawdopodobnie nie obejmowała ona RNG. Windows CAPI wraz z generatorem było jednak przedmiotem certyfikacji później - RNG Validated Implementations (certyfikaty #321, #316, #314, #313, #292, #286, and #66).