Adakah VPN Kehabisan Entropi? Apa yang Sebenarnya Ditunjukkan entropy_avail
Kesesakan semasa boot dan terowong mantap yang perlahan ialah dua kerosakan berbeza. Baca peringkat, makna sebenar pembilang dan baris gilir sebelum menyalahkan kerawakan.
Kehabisan kerawakan kernel ialah penjelasan yang menarik untuk VPN perlahan, dan hampir selalu salah untuk gejala yang dilaporkan orang. Hos yang menunggu keluaran rawak terhenti pada saat tertentu, biasanya awal semasa boot atau semasa pengendalian kunci. Terowong yang bersambung pantas dan kemudian memindahkan data dengan perlahan sebenarnya menerangkan daya pemprosesan. Pisahkan kedua-dua pemerhatian itu sebelum memasang daemon untuk membaiki nombor yang belum selesai anda baca.
Mengapa mitos ini bertahan
Kedua-dua masalah itu nyata dan dari jauh kelihatan serupa. Kesesakan permulaan pada mesin maya yang baru boot memang berlaku, dan terowong mantap yang perlahan sama nyatanya. Kesilapannya ialah menganggap yang kedua disebabkan yang pertama kerana kriptografi muncul di suatu tempat dalam kedua-dua cerita. Tiada apa-apa dalam perkataan penyulitan yang membayangkan bahawa setiap bait yang dipindahkan menggunakan bait baru bunyi persekitaran.
Bukan begitu penjana ini berfungsi. Pustaka kriptografi menyimpan penjana berbiji dan mengambil keluaran daripadanya, menyemai semula mengikut dasarnya sendiri, jadi saat yang mahal ialah penyemaian, bukan pemindahan berterusan.
Apa yang penjana lakukan bagi setiap paket
Dalam OpenSSL 3 hierarki penjana lalai dibina daripada contoh DRBG yang menyemai dan menyemai semula mengikut konfigurasi dan keadaan. Dalam OpenVPN 2.6 laluan data AEAD memperoleh nonce daripada nombor jujukan paket bersama nilai tersirat setiap sesi, manakala laluan CBC yang lebih lama mengambil IV pseudorawak bagi setiap paket. Tiada corak menyokong peraturan bahawa memindahkan satu gigabait menggunakan satu gigabait bunyi kernel baru. Kedua-duanya menyokong idea bahawa penjanaan kunci dan jabat tangan ialah tempat penyemaian penting.
Kes CBC wajar dinamakan kerana ia kelihatan seperti mitos dan bukan: IV setiap paketnya datang daripada penjana pustaka mengikut jadual penyemaian semula pustaka itu sendiri, tidak pernah daripada panggilan kernel bagi setiap paket. Apabila seseorang menyebut kos entropi setiap bait, tanya versi pustaka dan laluan kod mana yang mereka ukur.
Di mana penantian sebenarnya kelihatan
Letakkan cap masa di sekeliling peringkat, bukan di sekeliling sesi: permulaan, pengesahan, pertukaran kunci dan pemindahan. Menunggu sebelum terowong boleh digunakan ialah aduan berbeza daripada kadar mantap yang rendah, dan hanya satu daripadanya menunjuk kepada kerawakan. Dalam Linux permintaan getrandom() biasa boleh menyekat sehingga sumber rawak kernel dimulakan, itulah sebabnya versi semasa boot bagi masalah ini nyata pada mesin maya dan papan terbenam yang mempunyai sedikit untuk memberi makan kolam pada awal.
| Peringkat | Apa yang perlu dijalankan | Bacaan yang bermaksud menunggu | Bacaan yang bermaksud daya pemprosesan |
|---|---|---|---|
| Boot, sebelum mana-mana terowong | systemd-analyze critical-chain | unit yang duduk beberapa saat sebelum terowong bermula | tidak berkenaan, belum ada apa yang dipindahkan |
| Jabat tangan | journalctl -u openvpn-server@server -b | jurang panjang sebelum urutan permulaan selesai | tidak berkenaan, terowong belum naik |
| Pemindahan mantap | ss -tin di sebelah sar -n DEV 1 | proses tersekat dengan baris gilir soket kosong | baris gilir penuh, penghantaran semula dan satu benang sibuk |
Dua arahan murah terletak pada permulaan koleksi itu, dan kedua-duanya menyelesaikan soalan mudah sebelum jadual diperlukan. Pembilang yang mereka baca ialah perakaunan entropi, bukan meter lebar jalur, dan satu petikan tidak boleh menunjukkan bahawa proses tersekat, berapa lama ia menunggu atau antara muka mana yang dipanggil oleh pustakanya. Sampel yang diambil selepas pemulihan biasanya terlepas kesesakan sepenuhnya, jadi simpan versi kernel di sebelah bacaan.
cat /proc/sys/kernel/random/entropy_avail
uname -rPadankan pembetulan dengan bacaan
Jika kernel benar-benar menunggu pemulaan, lihat laluan penyemaian yang disokong platform, bukan terowong. Mesin maya boleh diberi peranti rawak yang disediakan hos, seperti virtio-rng, dan penyediaan imej penting kerana benih yang disalin tanpa perubahan ke banyak tetamu bukan pemulaan bebas. Jika pustaka melaporkan kegagalan penyemaian selepas boot, periksa sumber yang dikonfigurasikan dan tingkah laku penyedianya dan bukan menukar tetapan kernel.
ss -tin dst 203.0.113.7
sar -n DEV 1 5Dokumentasi penjana OpenSSL menerangkan bagaimana hierarki itu memperoleh input dan bila penyemaian semula berlaku, yang merupakan dakwaan jauh lebih sempit daripada mitos dan hanya sah untuk pelaksanaan itu. Daemon entropi bukan pembaikan kelajuan sejagat, dan memasangnya supaya pembilang naik mengubah andaian keselamatan tanpa membuktikan kelewatan. Untuk daya pemprosesan, ikut laluan data: satu benang tepu, penghantaran semula, kehilangan luar dan kejatuhan baris gilir masing-masing memerlukan pembetulan berbeza, dan saiz penimbal menangani penimbalan soket dengan bukti baris gilirnya sendiri.