Rasgele kullanılan entropi tahminini açıklayabilir misiniz? C


12

/dev/randomentropi havuzuna eklemek için çekirdek aralıklarının zamanlamalarını kullanır. Havuzdaki entropi miktarı adlı bir değişkende izlenir entropy_count.

İşte ilgili kod snippet'i random.c. Değişken son iki kesinti deltaile deltalar arasındaki farklar arasındaki süreyi (sanırım jifflerde) temsil eder delta2.

delta = time - state->last_time;
state->last_time = time;

delta2 = delta - state->last_delta;
state->last_delta = delta;

if (delta < 0) delta = -delta;
if (delta2 < 0) delta2 = -delta2;
delta = MIN(delta, delta2) >> 1;
for (nbits = 0; delta; nbits++)
  delta >>= 1;

r->entropy_count += nbits;

/* Prevent overflow */
if (r->entropy_count > POOLBITS)
  r->entropy_count = POOLBITS;

Eklenen entropinin tahmini esas olarak tabanın 2 logaritmasının deltasının tabanıdır (döngüden önceki bit değişimi nedeniyle tavan değil). Bu sezgisel bir anlam ifade ediyor, ancak bunu resmi olarak doğru hale getirmek için hangi varsayımların gerekli olacağından emin değilim.

Yani, ilk sorum "bu tahminin ardındaki sebep nedir?"

İkinci sorum şu delta = MIN(delta, delta2) .... Bu ne yapar? Neden bu deltanın minimumunu ve sonuncuyu almalıyım? Bunun neyi başarması gerektiğini bilmiyorum - belki de tahmini daha iyi, belki daha muhafazakar yapar.

Düzenleme: Tahmin belirten bir kağıt buldum , ama gerçekten bunun için gerekçeli bir argüman vermiyor (gerçi tahmin edicinin karşılaması gereken bazı gayri resmi koşulları özetliyor olsa da).

Yorumlarda ortaya çıkan diğer kaynaklar:


1
Linux'lardaki entropi tahmininin değerinin /dev/randomtitrek bir temel üzerinde olduğuna dikkat edin - Feeding / dev / random entropy pool? . Thomas'a sorunuzu cevaplayacağı ümidiyle ping attım.
Gilles 'SO- kötü olmayı bırak'

Herkes bu konuyla ilgileniyorsa, Wikipedia'da bu konudaki tedavi oldukça iyi bir başlangıç ​​noktasıdır: en.wikipedia.org/wiki//dev/random
slm

1
@Lucas - bu makaleye de göz atın: [Linux entropi tahmin edicisinin yorumu] ( eprint.iacr.org/2012/487.pdf )
slm

@slm İlginç, ancak doğru olduğundan emin değilim - Kolmogorov karmaşıklığını kullanarak minimum işlevi haklı çıkarma adımı, akıl yürütmede büyük bir sıçrama ve bu kavramsal olarak sağlam olduğu benim için net değil.
Lucas

@Lucas - Bunu geçeceğimi sanıyordum, bu Q 8 ile ligimin dışındayım)
slm

Yanıtlar:


5

delta2Önceki değildir delta, ama fark , iki ardışık değerler arasında delta. Bu bir tür türevdir: deltahızı ölçerse, delta2ivmedir.

Bu tahminin arkasındaki sezgisel fikir, kesintilerin fiziksel dünyadan beklenmeyen olaylar (örneğin tuş vuruşları veya ağ paketlerinin gelmesi) tarafından dikte edilen az ya da çok rastgele aralıklarla meydana gelmesidir. Gecikme ne kadar uzun olursa, öngörülemeyen olaylar da o kadar fazla olur. Ancak, sabit bir oranda yangını kesen fiziksel sistemler vardır; delta2ölçer (tüm bu nedenle kesinlikle öngörülebilir kesme sabit aralıklarla meydana gelirse bu tip olayları saptayan bir koruma mekanizması deltabu nedenle, aynı değere sahip olacaktır delta2sıfır olacaktır).

"Sezgisel" dedim ve söyleyecek çok şey yok. Aslında, "rastgele fiziksel olaylar" modelinde, bitlerin sayılması yanlıştır; her zaman birimi için p olasılığı ile bir donanım olayı meydana gelirse ve n bit üzerinden ifade edilen bir gecikme alırsanız , entropi katkısı n bit değil n / 2 bit olarak hesaplanmalıdır . Ancak gerçekte fiziksel olayların tam olarak rastgele anlarda gerçekleşmediğini biliyoruz; mekanizması kadar kabul eder.delta2

Yani pratikte, "entropi tahmini" tam olarak budur: bir tahmin . Güvenlik değeri, iyi gerekçeli, matematiksel olarak kesin bir gerekçeden değil, olağan güvenlik kaynağından gelir: kimse onu kötüye kullanmanın bir yolunu bulamamıştır (henüz).


Bu sayfa , mitleri /dev/randomve entropi tahmincisi ile bıkmış biri tarafından yazılmıştır ve bence her şeyi yeterince ayrıntılı olarak iyi açıklar. RNG ile uğraşırken bazı temel fikirleri almak önemlidir.


Hata! Yanlış yazdım, deltalarda değişiklik söylemeliydim. Ve eğer çalışırsa - Ben en çok tahminler "iyi gerekçeli, matematiksel olarak kesin bir gerekçe", tahminler farklı kılacak ne var olduğunu söylemek zorunda hiç bu olmalı bazı resmi gerekçe. Bu şeyleri önemsememek ve sadece güvenlik pragmatiklerine önem vermemek tamamen iyidir, ancak bu herkes için doğru değildir. İlginç olanı kabul etmemek, "temel fikirleri doğru" elde etme meselesi değildir.
Lucas

Bunun içindeki yanlışınızın tasarlandığı amaçlar için pratik bir tahmin olduğunu söylemiyorum.
Lucas
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.