Bazı adamlar şöyle dedi:
Deterministik yöntemlerle rasgele sayılar üretmeye çalışan herkes, elbette bir günah durumunda yaşamaktadır.
Bu her zaman yalnızca bir bilgisayarla gerçek rasgele sayılar üretemeyeceğiniz anlamına gelir. Bilgisayarların tek bir Intel 8080 mikroişlemcinin (~ 6000 vana) eşdeğer büyüklüğünde olduğunu söyledi. Bilgisayarlar daha karmaşık hale geldi ve von Von Neumann'ın ifadesinin artık doğru olamayacağına inanıyorum. Uygulanan bir yazılımın yalnızca algoritmanın imkansız olduğunu düşünün. Fiziksel donanım üzerinde çalışıyorlar. Gerçek rasgele sayı üreteçleri ve entropi kaynakları da donanımdan yapılmıştır.
Bu Java parçası bir döngü içine koydu:
file.writeByte((byte) (System.nanoTime() & 0xff));
resim olarak temsil ettiğim bir veri dosyası oluşturabilir:
Yapıyı görebilirsiniz, ama aynı zamanda çok fazla rastgelelikle. İlgi çekici olan, bu PNG dosyasının 232KB boyutunda olmasına rağmen, 250.000 gri tonlamalı piksel içermesidir. PNG sıkıştırma seviyesi maksimum idi. Bu sadece% 7'lik bir sıkıştırma oranı, yani. oldukça sıkıştırılamaz. Ayrıca ilginç olan, dosyanın benzersiz olmasıdır. Bu dosyanın her nesil biraz farklı bir kalıptır ve benzer ~% 7 oranında sıkıştırılabilirliğe sahiptir. Bunu, tartışmam için kritik öneme sahip olduğunu vurgularım. Bu ~ 7bits / byte entropi. Bu daha güçlü bir sıkıştırma algoritması kullanılmasıyla elbette azalacaktır. Ancak 0 bit / bayt civarında bir şeye düşürmeyin. Yukarıdaki görüntüyü çekerek ve renk haritasını rastgele biriyle değiştirerek daha iyi bir izlenim elde edilebilir: -
Yapının çoğu (üst yarıda), yalnızca benzer fakat marjinal olarak farklı değerlerin dizileri olduğu için kaybolur. Bu, sadece bir Java işletim sistemini çoklu alıp kullanan bir işletim sisteminde çalıştırarak yaratılan gerçek bir entropi kaynağı mıdır? Düzgün dağılmış rasgele sayı üreteci değil, bir entropi kaynağı mı? Sadece bir PC olan fiziksel donanım üzerinde çalışan bir yazılımdan oluşan entropi kaynağı.
tamamlayıcı
Her görüntünün, hepsinde ortak olan sabit bir düzen olmadan taze entropi oluşturduğunu doğrulamak için, ardışık 10 görüntü üretildi. Bunlar daha sonra birleştirildi ve derleyebileceğim en güçlü arşivleyici ile sıkıştırıldı (paq8px). Bu işlem, sadece değişiklikleri / entropiyi bırakan otomatik korelasyon dahil olmak üzere tüm ortak verileri ortadan kaldıracaktır.
Birleştirilmiş dosya ~% 66'ya sıkıştırılmıştır, bu da ~ 5.3 bit / bayt veya 10.5Mbits / görüntü entropi oranına yol açmaktadır. Şaşırtıcı miktarda entropi
Ek 2
Sıkıştırma testi metodolojisine göre entropimin hatalı olduğu ve sadece üst üst sınır tahminde bulunacağı yönünde olumsuz yorumlar var. Bu yüzden şimdi NIST'in resmi kriptografik entropi değerlendirme testi olan SP800-90B_EntropyAssessment olsa da birleştirilmiş dosyayı çalıştırdım . Bu, IID olmayan entropi ölçümü için aldığı kadar iyidir. Bu rapor (üzgünüm bu soru uzun sürüyor, ancak sorun karmaşık): -
Running non-IID tests...
Entropic statistic estimates:
Most Common Value Estimate = 7.88411
Collision Test Estimate = 6.44961
Markov Test Estimate = 5.61735
Compression Test Estimate = 6.65691
t-Tuple Test Estimate = 7.40114
Longest Reapeated Substring Test Estimate = 8.00305
Predictor estimates:
Multi Most Common in Window (MultiMCW) Test: 100% complete
Correct: 3816
P_avg (global): 0.00397508
P_run (local): 0.00216675
Multi Most Common in Window (Multi MCW) Test = 7.9748
Lag
Test: 100% complete
Correct: 3974
P_avg (global): 0.00413607
P_run (local): 0.00216675
Lag Prediction Test = 7.91752
MultiMMC Test: 100% complete
Correct: 3913
P_avg (global): 0.00407383
P_run (local): 0.00216675
Multi Markov Model with Counting (MultiMMC) Prediction Test = 7.9394
LZ78Y Test: 99% complete
Correct: 3866
P_avg (global): 0.00402593
P_run (local): 0.00216675
LZ78Y Prediction Test = 7.95646
Min Entropy: 5.61735
Sonuç olarak, NIST entropinin 5.6 bit / baytını oluşturduğuma inanıyor. DIY sıkıştırma tahminim, bunu biraz daha muhafazakar, 5.3 bit / byte değerine getiriyor.
-> Kanıt, sadece yazılımı çalıştıran bir bilgisayarın gerçek entropi üretebileceği fikrini desteklemektedir. Ve bu von Neumann yanıldı (ama belki de zamanı için doğru).
Talebimi destekleyebilecek aşağıdaki referansları sunuyoruz: -
Program yürütme oranında belirleyici olmayan herhangi bir rasgele model var mı?
Olasılıklı Sabit Gerçek Zamanlı Sistemlerin WCET Analizi
Deterministik olmayan bir kaos paterni üretebilecek bir yazılım algoritması var mı? ve kaotik etkilerin alaka düzeyi.
Kuantum entropik belirsizlik ilkesiyle paralellikler
Aleksey Shipilёv'in nanoTime () 'ın kaotik davranışına ilişkin blog yazısı . Dağılım komploları benimkine benzemiyor.
System.nanoTime()
.