Niestety, / dev / random nie nadaje się również do użycia na padzie jednorazowym, a przynajmniej nie na padzie jednorazowym (z możliwymi do udowodnienia gwarancjami bezpieczeństwa), którą większość ludzi wyobraża sobie, gdy myśli o lub wdraża pady jednorazowe. Większość poniższych informacji streszczono w (bardzo długim) artykule na stronie http://www.2uo.de/myths-about-urandom/
Problem polega na tym, że / dev / random nie jest tak naprawdę losowy; wykorzystuje CSPRNG do generowania danych wyjściowych. W rzeczywistości / dev / random używa dokładnie tego samego CSPRNG, co / dev / urandom. Jedyną różnicą jest to, że / dev / random blocks, jeśli wewnętrzne oszacowanie entropii jest niewystarczające.
Kluczowe jest słowo „oszacowanie” w poprzednim zdaniu. Większość ludzi uważa, że ta ocena jest zawsze dokładna i idealna, ale w rzeczywistości wcale nie jest dokładna. Gdy tylko oszacowanie jest błędne, tracisz wszystkie możliwe do udowodnienia gwarancje jednorazowego padu, a wszystko, co pozostało, to bezpieczeństwo obliczeniowe - nie lepiej niż gdybyś użył / dev / urandom!
Nieprawidłowe oszacowanie entropii nie powoduje, że twój jednorazowy pad jest trochę niepewny. Udokumentowana gwarancja bezpieczeństwa jednorazowej podkładki to wszystko albo nic.
Założeniem tego pytania jest to, że problemy z / dev / random można „naprawić”, dodając więcej entropii. Niestety, ta przesłanka jest błędna. Złośliwe źródło entropii jest znacznie gorsze niż brak entropii, ponieważ źródła entropii często mają dostęp do danych wewnętrznych i mogą je eksportować potajemnie przy użyciu danych wyjściowych RNG - patrz http://blog.cr.yp.to/20140205-entropy .html do pełnej dyskusji (zbyt długo, by streścić tutaj). W szczególności sprzętowe źródło entropii (zalecane przez kilka innych odpowiedzi) jest bardzo złym wyborem z punktu widzenia bezpieczeństwa, ponieważ sprzęt ten jest w najlepszej pozycji do robienia szkodliwych rzeczy i jest zasadniczo niesłyszalny.