Apakah Arduino ideal untuk membuat HRNG (generator nomor acak perangkat keras)?

21

Saya sedang menyusun desain untuk generator nomor acak perangkat keras yang akan memanfaatkan beberapa sumber entropi ( gabungan ):

  • Cahaya sekitar
  • Suara sekitar (dan level suara)
  • Temperatur sekitar
  • Kelembaban sekitar
  • Posisi perangkat itu sendiri (terbalik, miring ke kiri, berjudul kanan, dll)
  • Sumber lain di masa depan, bahkan mungkin data GPS (ditandai mungkin karena dua pengguna mungkin berdiri di samping satu sama lain, karenanya mungkin deterministik jika Anda mengenalnya.)

Gagasan saya adalah membuat 'entrisi' kolam entropi yang dapat dibawa orang-orang di siang hari sambil terus menulis ke drive USB.

Setelah beberapa jam, pengguna akan memiliki kumpulan entropi ~ 4GB yang bagus yang dapat dicolokkan ke PC dan digunakan. Saya tidak mampu membeli QRNG yang benar-benar mahal berdasarkan peluruhan cahaya atau radioaktif, jadi saya mencoba membuat sesuatu yang lebih murah.

Menurut Anda, apakah Arduino pilihan terbaik untuk membuat prototipe ini? Jika tidak, apa yang akan Anda rekomendasikan?

Pos Tim
sumber

Jawaban:

22

Saya pikir Anda akan ingin menyusuri jalan yang disarankan busz. Cari konsep "diode noise". Persimpangan PN dalam dioda dan transistor dapat menghasilkan mendekati white noise Gaussian yang sempurna. Pengambilan sampel yang seharusnya menjadi sumber entropi yang lebih baik daripada sumber lingkungan mana pun.

Masalah dengan sebagian besar data lingkungan / ambien adalah nilai-nilai tidak berubah banyak dari waktu ke waktu: suhu, kelembaban, cahaya dan suara semua memiliki kurang dari urutan variabilitas dengan mode yang sangat kuat. Akselerometer untuk mengukur gerakan mungkin merupakan sumber variabilitas yang baik jika dipasang pada seseorang, tetapi Anda mungkin harus melakukan sedikit pemrosesan sinyal untuk menghapus mode osilasi normal yang ada dalam cara manusia bergerak. Sumber cahaya & suara sekitar mungkin memiliki beberapa variabilitas yang cukup tinggi jika ditempatkan di ruang kota dengan kepadatan tinggi, tapi sekali lagi saya pikir akan ada banyak pengulangan.

todbot
sumber
8

Ada beberapa sirkuit yang menarik untuk HRNG tanpa perlu sumber entropi sekitar: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ dan banyak lagi ...

Sangat mungkin untuk mengadaptasi salah satu sirkuit ini ke perisai Arduino . Arduino kemudian akan bertindak sebagai gerbang antara HRNG dan PC.

Jika Anda benar-benar membutuhkan input entropi sekitar, Arduino memiliki 6 saluran input analog sehingga Anda dapat membaca hampir semua sensor yang dapat Anda pikirkan dan menggunakan data sebagai sumber untuk seed acak.

bpijl
sumber
6

Dua komentar:

  1. Lihatlah algoritma Yarrow PRNG Bruce Schneier . Poin utamanya adalah Anda dapat memiliki sumber informasi acak "benar" yang sangat buruk; selama Anda mengakumulasi cukup banyak dari waktu ke waktu, ketidakpastian yang dihasilkan dapat dikombinasikan dengan teknik pembuatan angka pseudo-acak perangkat lunak untuk menghasilkan angka acak yang layak.

  2. Di sisi lain, saya harus setuju dengan sebagian besar penjawab lain. Sinyal yang berubah perlahan dari sensor lingkungan adalah sumber entropi yang buruk, dan dapat dengan mudah dipengaruhi. Pastikan Anda menggunakan sesuatu yang didasarkan pada kebisingan perangkat intrinsik, dan itu akan peka terhadap perubahan lingkungan.

Jason S
sumber
3

Saya setuju dengan dua tanggapan di atas. Aktivitas manusia dan pembacaan ambient akan membuat kumpulan acak yang mengerikan. Tapi sepertinya Anda hanya akan diyakinkan dengan mencobanya dan memeriksa sendiri keacakannya. Ini akan menjadi pengalaman belajar yang luar biasa bagi Anda!

Arduino baik-baik saja untuk aplikasi ini. Semua sensor yang Anda minati dapat dilampirkan ke Arduino dan ada perpustakaan Arduino yang tersedia untuk sensor tersebut.

Lihatlah tutorial ini tentang menghubungkan sensor ke Arduino: http://www.ladyada.net/learn/sensors/

SiliconFarmer
sumber
3

Sejumlah generator derau putih di synthesizer musik analog (Moog dan Arp) akan longsoran transistor. Jika Anda mencari skematik Minimoog atau ARP4027 secara daring, Anda harus menemukan skematiknya.

Saya melakukan layout PCB untuk ARP4027. Jika Anda tidak dapat menemukan skematisnya, kirimi saya email.

National telah membuat generator nomor acak digital - MM5437. IIRC ada beberapa program untuk AT-mungil yang akan melakukan ini juga. Bisa jadi proyek kecil yang menyenangkan.

jluciani
sumber
2

Saya baru-baru ini membaca sebuah diskusi yang sangat menarik tentang penggunaan resistor untuk menghasilkan suara acak. Karena efek kuantum, sebuah resistor akan menghasilkan tegangan yang sangat kecil. Ini dapat diperkuat dengan op-amp untuk menghasilkan sumber suara acak berkualitas tinggi.

wackyvorlon
sumber
2

Anda bisa menggunakan input sensor sebagai seed ke generator angka pseudo-acak. OS Linux menggunakan input dari keyboard / mouse sebagai seed ke / dev / random. Hanya sebuah ide.

J. Polfer
sumber