Saya mengerti bahwa / dev / random adalah sumber entropi yang bagus, dan biasanya digunakan - Seperti halnya saya membaca tentang GC, paling tidak di Jawa, tampaknya diterima bahwa daemon pengumpulan sampah dijalankan secara non-deterministik . Jika ini benar, mengapa kita tidak menggunakan waktu pengumpulan sampah sebagai sumber entropi alih-alih variabel / dev / acak?
random
garbage-collection
edthethird
sumber
sumber
Jawaban:
"Tidak ditentukan" dan "acak" adalah dua konsep yang sama sekali berbeda.
Cara kerja yang tepat dari seorang pemulung tidak ditentukan dan tergantung pada pemungut sampah (biasanya diimplementasikan dengan semacam VM, tetapi tidak harus).
Karenanya, Anda tidak memiliki waktu yang ditentukan (yaitu deterministik) untuk mengumpulkan sampah.
Namun setiap implementasi yang diberikan akan mengikuti beberapa aturan dan ada kemungkinan besar bahwa dua program berikutnya dari program yang sama akan memiliki pola pengumpulan sampah yang sangat mirip.
Oleh karena itu entropi aktual yang disediakan oleh pengumpul sampah akan sangat rendah (dan mengetahui bagian mana yang benar-benar dapat Anda gunakan sebagai entropi akan menjadi rumit).
Sebagai perbandingan: A
HashMap
di Jawa tidak menjamin urutan pengambilan untuk anggotanya (pada dasarnya karena menjamin itu akan menambah overhead yang tidak layak dibayar, sebagian besar waktu). Namun untuk diberikan implementasi dan diberikan set sisipan / kepindahan Anda dapat pasti menghitung urutan yang dihasilkan. Hanya karena tidak ada jaminan untuk pesanan yang diberikan, tidak berarti pesanan itu acak.sumber
Pertama, kita harus berhati-hati untuk tidak jatuh ke dalam perangkap penalaran dengan memanipulasi kata-kata belaka. Sebagai contoh, kita bisa bertanya, karena NFA adalah "otomat terbatas hingga non-deterministik", mengapa kita tidak menggunakannya untuk mendapatkan angka acak? Dalam hal itu, itu karena bukan itu arti "non-deterministik" dalam NFA; pada kenyataannya, ketika kita mensimulasikan NFA, pada input yang diberikan, perilaku simulasi sangat menentukan.
"Deterministik" adalah frasa yang dimuat. Bagi seorang programmer komputer atau ilmuwan komputer, perilaku non-deterministik hanya berarti "menentukan perilaku yang tepat itu rumit untuk dipikirkan", dan tergantung pada terlalu banyak faktor, termasuk input program.
Namun, itu tidak berarti itu tidak deterministik bagi seseorang yang termotivasi untuk menyerang cryptosystem. Terkadang faktor lingkungan dan input dapat ditekankan, dan pola yang berulang muncul dari perilaku "non-deterministik".
sumber