Katakanlah saya ingin satu gigabyte atau lebih dari data acak dari / dev / random, cocok untuk pad sekali pakai (so / dev / urandom keluar.) Bagaimana cara saya seed / dev / random dengan cukup entropi untuk melakukan ini? Saya mencari perintah dan program khusus untuk ini. Saya tidak ingin membeli apa pun. Saya menggunakan Arch Linux, jika itu membuat perbedaan.
arch-linux
random
PyRulez
sumber
sumber
Here — type something:
, dan kemudian mengukur delta waktu antar-keystroke dengan presisi yang lebih tinggi daripada yang dapat dikendalikan manusia?Jawaban:
Dua program yang dapat meningkatkan kumpulan entropi tanpa memerlukan perangkat keras tambahan adalah
rng-tools
danhaveged
.rng-tools
menggunakan RNG yang tersedia di CPU dan chipsethaveged
modern , menggunakan keacakan CPU modern (perilaku cache dll.). Keduanya tersedia di Arch, dan Arch wiki memiliki halaman yang menarik untuk membahasnya. Saya belum mencoba menggunakannya untuk menghasilkan satu gigabyte data tetapi harus mungkin dalam jumlah waktu yang masuk akal.Anda secara eksplisit mengecualikan membeli sesuatu, tetapi hanya demi kelengkapan ada artikel menarik di LWN tentang entropi dengan NeuG , yang mencakup diskusi tentang
haveged
dan berbagai pendekatan lainnya. Anda dapat membeli papan STM8S yang mampu menjalankan NeuG dengan harga kurang dari $ 10, atau FST-01 dengan harga $ 35.sumber
Sayangnya / dev / random juga tidak cocok untuk digunakan dalam pad sekali pakai, setidaknya bukan jenis pad sekali pakai (dengan jaminan keamanan yang dapat dibuktikan) yang kebanyakan orang bayangkan ketika mereka memikirkan atau menerapkan bantalan sekali pakai. Sebagian besar informasi di bawah ini dirangkum dari artikel (sangat panjang) di http://www.2uo.de/myths-about-urandom/
Masalahnya adalah bahwa / dev / random tidak benar-benar acak; ia menggunakan CSPRNG untuk menghasilkan outputnya. Faktanya, / dev / random menggunakan CSPRNG yang sama persis dengan / dev / urandom. Satu-satunya perbedaan adalah bahwa / dev / blok acak jika estimasi entropi internal tidak cukup.
Kata "taksiran" dalam kalimat sebelumnya adalah kuncinya. Kebanyakan orang berpikir bahwa perkiraan ini selalu akurat dan sempurna, tetapi pada kenyataannya itu sama sekali tidak akurat. Begitu perkiraannya salah, Anda kehilangan semua jaminan keamanan yang dapat dibuktikan dari kertas sekali pakai, dan yang tersisa adalah keamanan komputasi - tidak lebih baik daripada jika Anda telah menggunakan / dev / urandom!
Mendapatkan estimasi entropi sedikit salah tidak membuat pad sekali pakai Anda sedikit tidak aman. Jaminan keamanan yang terbukti dari pad sekali pakai adalah semua atau tidak sama sekali.
Premis dari pertanyaan ini adalah bahwa masalah dengan / dev / random dapat "diperbaiki" dengan menambahkan lebih banyak entropi. Sayangnya, premis ini salah. Sumber entropi berbahaya jauh lebih buruk daripada tidak ada entropi sama sekali, karena sumber entropi sering memiliki akses ke data internal dan dapat mengekspor data ini secara diam-diam menggunakan output RNG - lihat http://blog.cr.yp.to/20140205-entropy .html untuk diskusi lengkap (terlalu panjang untuk diringkas di sini). Secara khusus, sumber perangkat keras entropi (seperti yang direkomendasikan oleh beberapa jawaban lain) adalah pilihan yang sangat buruk dari sudut pandang keamanan, karena perangkat keras itu berada dalam posisi utama untuk melakukan hal-hal jahat, dan pada dasarnya tidak dapat didengar.
sumber
Sepertinya komponen HW adalah ide terbaik. Ada beberapa IC generator HW di luar sana, tetapi Anda harus mempercayai mereka ketika mereka datang.
Dua solusi yang mungkin bagus adalah menginduksi komponen untuk membuat noise; dua solusi utama tampaknya bias suhu dan kebisingan avanche dibuat dengan dioda (lihat http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )
Karena komponen seperti gyro dan akselerometer telah menjadi lebih masuk akal, menjadikannya bekerja pada sensitivitas tertinggi dan menggunakan nilai LSB mereka juga bisa menjadi solusi yang bagus, tetapi AFAIK tidak ada yang mengauditnya.
Lucu karena ada banyak kertas di TIDAK melakukan RNG, tetapi bukan implementasi HW yang terbuka dan diverifikasi
sumber
Anda bisa menggunakan pycsprng.py . Aman secara kriptografis? Saya tidak begitu yakin, tetapi saya ingin melakukan peer-review.
python pycsprng.py | pv | dd of=data.file bs=1024 count=1000
Pipa ke
pv
opsional, dan hanya akan membantu Anda mengetahui berapa banyak data yang telah ditransfer.Anda mungkin menemukan bahwa ukuran blok yang lebih besar (bs) meningkatkan kinerja. Anda harus menyesuaikan jumlah untuk tidak menghasilkan file terlalu besar jika Anda meningkatkan ukuran blok.
sumber
/dev/urandom
...pycsprng.py
secara harfiah 10 skrip SLOC yang mendapatkan keacakan darios.urandom
. Documents mengatakan bahwa "Data yang dikembalikan harusnya tidak dapat diprediksi cukup untuk aplikasi kriptografi [...] Pada sistem seperti UNIX ini akan meminta/dev/urandom
" . Sebenarnya (sumbernya sudah ketinggalan jaman) dan Security.SE mengatakan tidak apa-apa untuk crypto .Apa yang Anda dapatkan dari saluran mikrofon analog ketika Anda tidak mencolokkan mikrofon biasanya hanya statis. Pipa yang melalui bzip2, misalnya, untuk memutihkan, campur dengan sumber keacakan lain (urandom atau jack mikrofon lain), mungkin pipa hasil melalui openssl untuk ukuran yang baik dan apa yang Anda dapatkan harus cukup acak.
Akan sulit untuk membuktikan sifat keamanan yang keras dan cepat tentang keacakan hasilnya.
sumber
Jika Anda menggunakan kernel Linux 2.6.9 atau yang lebih baru pada prosesor amd64 / x86_64, lingkungan virtual atau fisik, Anda dapat mencoba ncomputers.org/pandom penghasil angka acak, yang menawarkan 8 KiB / entropi 64 ubits / 64 bit melalui
/dev/random
sumber
Untuk menghasilkan 100 MB data acak yang dihasilkan perangkat keras, Anda dapat:
Rekam audio selama 20 menit (96khz 16bit mono) dengan mikrofon internal komputer Anda (tersedia di laptop). Anda akan mendapatkan file WAV ~ 220 MB.
Buang bit yang tidak berguna, dan kocok bit data biner (banyak cara untuk melakukan ini) dengan beberapa matematika
Ekspor bit yang diacak sebagai file biner ~ 100 MB
Berikut ini adalah artikel tentang ini: Upaya untuk menghasilkan data entropi dan acak yang sebenarnya dengan audio (dan mikrofon internal komputer Anda) .
sumber