Linux için Entropi Kaynakları


9

Diyelim ki / dev / random'dan bir kerelik bir ped için uygun bir gigabayt veya rastgele veri istiyorum (so / dev / urandom çıktı.) Bunu yapmak için yeterli entropi ile / dev / random'ımı nasıl ekleyebilirim? Bunun için özel komutlar ve programlar arıyorum. Hiçbir şey satın almak istemiyorum. Fark yaratırsa Arch Linux kullanıyorum.


Böyle bir program, / dev / random'ı kullanmak istemediğiniz / dev / urandom ile aynı soruna sahip bir şeye dönüştürmez mi? Yoksa bazı cihazlardan veya ağ üzerinden ekstra entropi elde eden bir şey mi kastediyorsunuz?
Anthon

@Anthon Atropi kaynağından atış gürültüsü, termal gürültü, bazı cihazlar, vb.
Temmuz 2015 tarihinde PyRulez

... örneğin, bir Here — type something:tuş ya da tuşlar arası vuruş zamanını bir insanın kontrol edebileceğinden daha yüksek bir hassasiyetle ölçen bir komut ya da program ?
G-Man, 'Monica'yı Eski


1
Kriptografik algoritmaların neredeyse hepsinin ... “yalnızca” hesaplama güvenliği sunduğunu iddia etmenin iki istisnasından biri olarak tek seferlik bir pad'den bahseder. Bir kerelik pedlerin urandom kullanamayacağını söylediği yerde kaçırdığım bir şeyi teklif edemezseniz?
Yararsız

Yanıtlar:


4

Ek donanım gerektirmeden entropi havuzunu artırabilecek iki program rng-toolsve haveged. rng-toolsModern CPU'larda ve yonga setlerinde bulunan RNG'leri, havegedmodern CPU rasgeleliğini (önbellek davranışı vb.) kullanır. Her ikisi de Arch'de mevcuttur ve Arch wiki'nin bunları tartışan ilginç bir sayfası vardır. Bir gigabayt veri oluşturmak için bunları kullanmayı denemedim, ancak makul bir süre içinde mümkün olmalı.

Herhangi bir şeyi satın almayı açıkça hariç tutuyorsunuz , ancak sadece bütünlük için LWN'de NeuG ile entropi hakkında tartışma havegedve çeşitli yaklaşımları içeren ilginç bir makale var . NeuG'yi 10 dolardan daha düşük bir fiyata çalıştırabilecek bir STM8S kartı veya 35 dolara bir FST-01 satın alabilirsiniz.


4

Ne yazık ki / dev / random, tek seferlik bir pedde kullanım için uygun değildir, en azından çoğu insanın bir defalık pedleri düşündüklerinde veya uygularken hayal ettikleri tek seferlik ped (kanıtlanabilir güvenlik garantileriyle) için uygun değildir. Aşağıdaki bilgilerin çoğu http://www.2uo.de/myths-about-urandom/ adresindeki (çok uzun) makalede özetlenmiştir.

Sorun şu ki / dev / random gerçekten rastgele değil; çıktısını oluşturmak için bir CSPRNG kullanır. Aslında, / dev / random, / dev / urandom ile tam olarak aynı CSPRNG'yi kullanır. Tek fark, / entropi / random / entropinin iç tahmini yetersizse bloke olmasıdır.

Önceki cümlede "tahmin" kelimesi anahtardır. Çoğu insan bu tahminin her zaman doğru ve mükemmel olduğunu düşünür, ancak gerçekte hiç de doğru değildir. Tahminin yanlış olduğu anda, bir kerelik pedin tüm kanıtlanabilir güvenlik garantilerini kaybedersiniz ve geriye kalan tek şey hesaplama güvenliğidir - / dev / urandom'u kullanmanızdan daha iyi değil!

Entropi tahmininin biraz yanlış yapılması, tek seferlik pedinizi biraz güvensiz yapmaz. Bir defalık pedin kanıtlanabilir güvenlik garantisi ya hep ya hiç.

Bu sorunun önermesi, / dev / random ile ilgili problemlerin daha fazla entropi eklenerek "düzeltilebildiğidir". Ne yazık ki, bu öneri yanlış. Kötü niyetli bir entropi kaynağı entropi olmamasından çok daha kötüdür, çünkü entropi kaynakları genellikle dahili verilere erişebilir ve bu verileri RNG çıktısını kullanarak gizli bir şekilde dışa aktarabilir - bkz. Http://blog.cr.yp.to/20140205-entropi Tam bir tartışma için .html (burada özetlemek için çok uzun). Özellikle, bir donanım entropi kaynağı (diğer birkaç cevap tarafından tavsiye edildiği gibi), güvenlik açısından çok kötü bir seçimdir, çünkü bu donanım kötü amaçlı şeyler yapmak için birinci konumdadır ve esasen dayanılmazdır.


Daha entropi ile düzelttiğimi söylemedim, daha büyük bir anahtar için daha fazlasına ihtiyacım vardı. Hatalı olmasına rağmen bu iyi bir nokta. Alternatif önerebilir misin?
Temmuz

1
Bu, donanım kaynakları hakkındaki son bit dışında iyi bir cevaptır. Entropinin donanım kaynakları entropi elde etmenin tek güvenilir, denetlenebilir yoludur. Siz (veya güvendiğiniz biri), tasarım bilgisine sahip olmanızı ve üretim sürecinin tasarım bilgilerine uyduğunu doğrulamanızı gerektiren kaynağı denetlemeniz gerekir. Entropi kaynaklarını bile birleştirebilirsiniz, böylece bunlardan en az biri iyi ise sonuç iyidir (NB bunları bunun için doğru bir şekilde birleştirmeniz gerekir).
Gilles 'SO- kötü olmayı kes'

Gilles, gönderdiğim ikinci bağlantıyı okudum. En az bir entropi kaynağının iyi olması durumunda sonucun iyi olduğunu iddia etmek tamamen yanlıştır. Bu bağlantının amacı bu yanlış iddiayı yalanlamaktır!
djao

Ayrıca, kaynağı ve üretim sürecini denetlemek yeterli değildir. Cihazınızın üretim sürecine göre üretildiğinden emin olmak için bireysel cihazınızı denetlemeniz gerekir. Bu, bir sağlama toplamını kontrol etmekten oluşan yazılımdaki benzer görevden çok daha zor bir görevdir.
djao

Alternatiflere gelince: PC'den 1GB rastgele veri almanın alternatif sihirli bir yolu yoktur. Bunun için bir donanım cihazına ihtiyacınız olacaktır (ancak donanımın denetlenmesi zor olduğu hakkında söylediklerime dikkat edin). / Dev / random kullanmaya istekli olsaydınız, / dev / urandom kadar iyidir; tüm şifreleme uygulamaları için / dev / random'dan daha kötü değildir.
djao

3

HW bileşeni en iyi fikir gibi görünüyor. Orada bazı HW jeneratör IC var, ama geldikleri gibi onlara güvenmek zorunda.

Muhtemelen iyi bir çözüm, gürültüyü oluşturmak için bileşen oluşturmaktır; iki büyük çözüm sıcaklık önyargısı ve bir diyotla yaratılan avanche gürültüsü gibi görünüyor (bkz. http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )

Jiroskop ve ivmeölçer gibi bileşenler daha mantıklı olduğu için, bunların en yüksek hassasiyette çalışmasını sağlamak ve LSB değerlerini kullanmak da güzel bir çözüm olabilir, ancak AFAIK kimse denetlemedi.

RNG YAPMAYIN, ancak açık ve doğrulanmış bir HW uygulaması üzerinde çok fazla kağıt olduğu için komik


2

Pycsprng.py kullanabilirsiniz . Kriptografik olarak güvenli mi? Emin değilim, ama bazı hakemler istiyorum.

python pycsprng.py | pv | dd of=data.file bs=1024 count=1000

Yöneltme borusu pvisteğe bağlıdır ve ne kadar veri aktarıldığını bilmenize yardımcı olur.

Daha büyük blok boyutlarının (bs) performansı arttırdığını görebilirsiniz. Blok boyutunu artırırsanız, sayıyı çok büyük bir dosya oluşturmayacak şekilde ayarlamanız gerekir.


3
Bu sadece kullanır /dev/urandom...
Stephen Kitt

1
pycsprng.pykelimenin tam anlamıyla rastgele gelen 10 SLOC betiğidir os.urandom. Dokümanlar , "Döndürülen verilerin kriptografik uygulamalar için yeterince tahmin edilemez olması gerektiğini/dev/urandom söylüyor [...] UNIX benzeri bir sistemde bu sorgulanacak " . Aslında (modası geçmiş bir kaynak olsa da) ve Security.SE kripto için uygun olduğunu söylüyor .
gronostaj

Tek seferlik bir kripto para değil!
Temmuz

0

Mikrofon takmadığınızda analog mikrofon kanalından aldığınız şey genellikle statiktir. Örneğin bzip2 ile beyazlatma için başka bir rastgele kaynakla karıştırın (urandom veya başka bir mikrofon jakı), belki de sonucu iyi bir ölçüm için opensl'den geçirin ve aldığınız şey oldukça rastgele olmalıdır .

Yine de, sonucun rastgeleliği ile ilgili sert ve hızlı güvenlik özelliklerini kanıtlamak zor olacaktır.



0

100 MB donanım tarafından oluşturulan rastgele veriler oluşturmak için şunları yapabilirsiniz:

  • Bilgisayarınızın yerleşik mikrofonuyla (dizüstü bilgisayarda bulunur) 20 dakikalık ses (96khz 16bit mono) kaydedin. ~ 220 MB WAV dosyası alacaksınız.

  • Yararsız bitleri atın ve ikili verilerin bitlerini (bunu yapmanın birçok yolu) biraz matematikle karıştırın

  • Karıştırılan bitleri ~ 100 MB ikili dosya olarak dışa aktarma

İşte bununla ilgili bir makale: Sesli gerçek entropi ve rastgele veriler (ve bilgisayarınızın dahili mikrofonu) üretme girişimi .

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.