Sumber Entropi untuk Linux

9

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.

PyRulez
sumber
Bukankah program seperti itu akan mengubah / dev / acak menjadi sesuatu yang memiliki masalah yang sama dengan / dev / urandom yang tidak ingin Anda gunakan? Atau apakah Anda merujuk pada sesuatu yang mendapat entropi ekstra dari beberapa perangkat atau melalui jaringan?
Anthon
@Anthon Saya berbicara tentang program spesifik untuk mengekstraksi keacakan dari sumber entropi, seperti suara tembakan, suara termal, beberapa perangkat, dll ... Program tidak akan membuat keacakan itu sendiri.
PyRulez
... misalnya, perintah atau program yang mengatakan Here — type something:, dan kemudian mengukur delta waktu antar-keystroke dengan presisi yang lebih tinggi daripada yang dapat dikendalikan manusia?
G-Man Mengatakan 'Reinstate Monica'
1
Ini menyebutkan pad satu kali sebagai salah satu dari dua pengecualian terhadap pernyataan bahwa _ '... hampir semua algoritma kriptografi ... "hanya" menawarkan keamanan komputasi'. Kecuali Anda dapat mengutip sesuatu yang saya lewatkan di mana dikatakan bantalan sekali pakai tidak dapat menggunakan urandom?
berguna

Jawaban:

4

Dua program yang dapat meningkatkan kumpulan entropi tanpa memerlukan perangkat keras tambahan adalah rng-toolsdan haveged. rng-toolsmenggunakan RNG yang tersedia di CPU dan chipset havegedmodern , 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 havegeddan berbagai pendekatan lainnya. Anda dapat membeli papan STM8S yang mampu menjalankan NeuG dengan harga kurang dari $ 10, atau FST-01 dengan harga $ 35.

Stephen Kitt
sumber
4

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.

djao
sumber
Saya tidak mengatakan saya memperbaikinya dengan lebih banyak entropi, saya hanya perlu lebih banyak untuk kunci yang lebih besar. Namun itu adalah poin yang bagus tentang hal itu menjadi salah. Bisakah Anda merekomendasikan alternatif lain?
PyRulez
1
Ini adalah jawaban yang bagus kecuali untuk bagian terakhir tentang sumber perangkat keras. Sumber perangkat keras dari entropi adalah satu-satunya cara yang andal dan dapat diaudit untuk mendapatkan entropi. Anda (atau seseorang yang Anda percayai) perlu mengaudit sumbernya - yang mengharuskan memiliki informasi desain dan memverifikasi bahwa proses pembuatannya menghormati informasi desain. Anda bahkan dapat menggabungkan sumber entropi sehingga jika setidaknya salah satu dari mereka baik-baik saja maka hasilnya baik-baik saja (NB Anda harus menggabungkannya dengan benar untuk itu).
Gilles 'SANGAT berhenti menjadi jahat'
Gilles, baca tautan kedua yang saya poskan. Adalah sepenuhnya salah untuk mengklaim bahwa jika setidaknya satu sumber entropi baik-baik saja maka hasilnya baik-baik saja. Seluruh tujuan tautan itu adalah untuk membantah klaim palsu ini!
djao
Selain itu, tidak cukup untuk mengaudit sumber dan proses pembuatannya. Anda perlu mengaudit perangkat pribadi Anda untuk memastikan bahwa perangkat Anda diproduksi sesuai dengan proses pembuatan. Ini adalah tugas yang jauh lebih sulit daripada tugas analog dalam perangkat lunak, yang hanya terdiri dari pemeriksaan checksum.
djao
Adapun alternatif: tidak ada cara ajaib alternatif untuk mendapatkan 1GB data acak dari PC. Anda akan memerlukan perangkat keras untuk itu (tapi kemudian perhatikan apa yang saya katakan tentang perangkat keras yang sulit diaudit). Jika Anda bersedia menggunakan / dev / random, maka / dev / urandom sama baiknya; tidak lebih buruk dari / dev / acak untuk semua aplikasi kriptografi.
djao
3

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

Lesto
sumber
2

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 pvopsional, 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.

Daryl Tucker
sumber
3
Itu hanya menggunakan /dev/urandom...
Stephen Kitt
1
pycsprng.pysecara harfiah 10 skrip SLOC yang mendapatkan keacakan dari os.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 .
gronostaj
Tidak satu kali pad crypto!
PyRulez
0

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.

Johannes Bauer
sumber
0

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

output sampel

ncomputer
sumber
Tautan rusak, tidak dapat menemukan cadangan untuk itu.
slm
0

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) .

Basj
sumber