Çöp Toplama deterministik olmadığından, neden güvenli rasgele sayı üretimi için kullanılmıyor?


13

Bu / dev / randomın iyi bir entropi kaynağı olduğunu ve genellikle kullanılan şey olduğunu görüyorum - Tıpkı GC'de okuduğum gibi, en azından Java'da, çöp toplama arka plan programının determinist olarak yürütülmediği kabul ediliyor. . Bu doğruysa, neden çöp toplama zamanlamasını / dev / random değişkeni yerine entropi kaynağı olarak kullanmıyoruz?


7
standart C kitaplığındaki rand () işlevleri için bazı belgelere göz atın. Özellikle rastgele sayılar gibi görünen şeyleri verirken güvenlik için kullanılamayacaklarını söylüyorlar. Tipik çöp toplayıcınız muhtemelen aynı kategoriye girer. Güvenlik için bir tane kullanacaksanız, kriptografik olarak güvenli bir çöp toplayıcı kullandığınızdan emin olmalısınız.
DXM

15
belirsiz bir şey hala oldukça öngörülebilir olabilir
cırcır ucube

7
Bu durumda "deterministik olmayan" zayıf bir tanımdır. Bir çöp toplayıcı tamamen deterministik bir sistemdir ve durumu ve onu kullanan programın durumu hakkında tam bilgiye sahipseniz, sonuçları belirleyici bir şekilde tahmin edebilirsiniz.
Robotu Gort

4
@DXM, kriptografik olarak güvenli bir çöp toplayıcı için iyi bir uygulama biliyor musunuz? ;)
AJMansfield

7
"Rastgele rakamlar üretmenin aritmetik yöntemlerini düşünen herkes elbette günah halindedir." - John von Neumann
Mark Adler

Yanıtlar:


58

"Belirtilmemiş" ve "rastgele" tamamen farklı iki kavramdır.

Bir çöp toplayıcının tam çalışması belirtilmez ve çöp toplayıcıya bağlıdır (genellikle bir VM türü tarafından uygulanır, ancak zorunlu değildir).

Bu nedenle, çöplerin toplanacağı belirlenmiş (yani deterministik) zamanınız yoktur.

Bununla birlikte, verilen herhangi bir uygulama bazı kurallara uyacaktır ve aynı programın sonraki iki çalışmasının çok benzer çöp toplama modellerine sahip olma olasılığı yüksektir.

Bu nedenle, bir çöp toplayıcı tarafından sağlanan gerçek entropi çok düşük olacaktır (ve aslında entropi olarak hangi parçaları kullanabileceğinizi bulmak zor olacaktır).

Karşılaştırma olarak: HashMapJava'daki A , üyeleri için herhangi bir geri alma sırasını garanti etmez (temel olarak, çoğu zaman ödemeye değer olmayan bir ek yük ekleyeceğini garanti etmesi nedeniyle). Bununla birlikte , belirli bir uygulama ve verilen bir ekleme / çıkarma seti için , ortaya çıkan siparişi kesinlikle hesaplayabilirsiniz. Herhangi bir sipariş için garanti olmaması, siparişin rastgele olduğu anlamına gelmez.


20
Bir bilgisayar aslında belirleyici olmayan bir şey yaparsa, o bilgisayarın bozuk olduğunu söylemek adil bir ifade olacağını düşünüyorum.
Schilcote

Deterministik olmayan aynı zamanda mevcut programın dışındaki bazı durumlara dayandığı anlamına gelebilir, bu da kendisi deterministik olabilir, ancak programın kendisiyle tamamen ilgisiz olacaktır ve bu nedenle program her çalıştığında farklı olabilir.
asmeurer

@asmeurer Bu terimleri böyle bir bağlamda duyduğumu sanmıyorum. Aslında, ne demek istediğinizden bile emin değilim: Harici girdi alan her program (diğer bir deyişle, en faydalı programlar) "bazı harici durumlara dayanır", ancak bu onu deterministik yapmaz.
us2012

2
@Schilcote: Bazı modern CPU'ların donanımda deterministik olmayan (gerçek) RNG'leri vardır. Bunlar gerçekten kuantum düzey fiziğine kadar deterministik değildir.
MSalters

2
@Schilcote Özel RNG talimatları olmasa bile (Intel'in RDRAND ve RDSEED) bir bilgisayar tamamen belirleyici değildir. Bazı zamanlamalar tam olarak tanımlanmamıştır ve sıcaklık gibi dış faktörlere bağlı olabilir.
CodesInChaos

8

İlk olarak, sadece kelimelerin manipülasyonu ile akıl yürütme tuzağına düşmemeye dikkat etmeliyiz. Örneğin, bir NFA bir "deterministik olmayan sonlu otomat" olduğu için bunu rastgele sayılar elde etmek için neden kullanmıyoruz? Bu durumda, bir NFA'da "deterministik olmayan" ifadesinin anlamı bu değildir; aslında, bir NFA'yı simüle ettiğimizde, belirli bir girdide, simülasyonun davranışı mükemmel bir şekilde belirleyicidir.

"Deterministik" yüklü bir ifadedir. Bir bilgisayar programcısı veya bilgisayar bilimcisi için, deterministik olmayan davranış sadece "tam davranışın belirlenmesi karmaşıktır" anlamına gelir ve program girişi de dahil olmak üzere çok fazla faktöre bağlıdır.

Ancak bu, bir şifreleme sistemine saldırmak için motive olmuş biri için belirleyici olmadığı anlamına gelmez. Bazen çevresel faktörler ve girdiler sabitlenebilir ve tekrarlanabilir modeller "deterministik olmayan" davranıştan ortaya çıkar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.