Ketika saya log in, hang sampai crng init selesai

22

Ketika saya masuk dengan LightDM di laptop saya yang menjalankan Debian Unstable, baru-baru ini mulai hang selama sekitar 2 menit sampai journalctlmuncul pesan kernel: random: crng init done. Ketika saya menekan tombol acak pada keyboard saya saat hang, itu masuk lebih cepat (sekitar 10 detik). Sebelum saya tidak memiliki masalah ini, apakah ada cara saya bisa memperbaikinya?

Sunting: menggunakan linux-image-4.15.0-3-amd64alih-alih linux-image-4.16.0-1-amd64bekerja, tapi saya tidak ingin menggunakan kernel yang lebih lama.

wb9688
sumber
1
Kedengarannya seperti ada sesuatu yang memakan semua kolam entropi.
Kusalananda
1
Subjek systemd-journalddan kebutuhannya (diklaim) untuk CSPRNG untuk diunggulkan telah muncul dalam berbagai diskusi baru-baru ini. Lihat lists.freedesktop.org/archives/systemd-devel/2018-May/… misalnya.
JdeBP
1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

Jawaban:

15

Sepertinya beberapa komponen blok sistem Anda ketika mencoba untuk mendapatkan data acak dari kernel (yaitu membaca dari /dev/urandomatau memanggil getrandom()) karena tidak cukup entropi (keacakan) yang tersedia.

Saya tidak memiliki penjelasan siap tentang mengapa masalahnya tergantung pada versi kernel tertentu, atau komponen mana pada sistem Anda yang benar-benar diblokir, tetapi terlepas dari akar penyebabnya,

Memang, seperti yang ditunjukkan oleh Bigon dalam jawabannya , tampaknya bug kernel diperkenalkan pada 4.16:

Bug ini diperkenalkan oleh perubahan "crng_init> 0" ke "crng_init> 1" di komit ini: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Perubahan ini secara tidak sengaja memengaruhi urandom_read, menyebabkan kondisi crng_init == 1 diperlakukan sebagai tidak diinisialisasi dan menyebabkan urandom diblokir, meskipun kondisi ini ada secara khusus untuk mendukung kebutuhan non-kriptografi pada saat boot: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

Mengembalikan 43838a23a05f ("random: fix crng_ready () test") memperbaiki bug (diuji dengan 4.16.5-1), tetapi ini dapat menyebabkan masalah keamanan (CVE-2018-1108 disebutkan dalam 43838a23a05f). Saya sedang menguji perbaikan yang lebih lokal yang harus lebih enak untuk hulu.

( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572#82 )

... Namun, Anda dapat mencoba menggunakan havegedatau rng-toolsmengumpulkan entropi lebih cepat.

intelfx
sumber
4
Sepertinya di Linux 4.16.4 beberapa hal yang terkait dengan CRNG telah berubah karena CVE-2018-1108. rng-toolstidak berfungsi pada laptop saya, karena Intel Celeron N2840 tidak mendukung AES-NI dan karenanya tidak memiliki TRNG bawaan.
wb9688
3
Upload terakhir rng-toolsdi debian dari 2011. Anda memiliki rng-tools5paket yang telah diperkenalkan baru
Bigon
@Bigon TBH Saya tidak tahu apa-apa tentang paket di Debian; Saya tidak menggunakannya. Ini adalah saran umum, bukan khusus Debian.
intelfx
1
Dikonfirmasi dengan Ubuntu 18.04 (bionik). Mengalami masalah ini setelah menginstal dropbear-initramfsdan membuka kunci disk saya dari jarak jauh cryptroot-unlock. Sederhananya apt install rng-toolsmembuat semuanya bekerja secara ajaib. Terima kasih!
kutu buku yang dibayar
Instalasi havegedbekerja untuk saya. Saya memiliki Intel Core 2 Duo lama yang tidak memiliki True Random Number Generator.
Balau
7

Ini adalah perubahan (bug?) Di kernel, lihat: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

Untuk mengurangi instalasi itu rng-tools5sepertinya membantu. Perhatikan bahwa saya tidak tahu apakah menginstal paket ini berdampak atau tidak pada pembuatan kunci kriptografi yang kuat

Sunting: Rupanya memperbarui util-linux 2.32 akan memperbaiki masalah ini

Bigon
sumber
Tidak, util-linux 2.32 tidak memperbaiki masalah bagi saya.
vinc17
5

Ini adalah bug kernel yang dapat terjadi dengan kernel yang berbeda.

Berjalan apt-get install rng-toolsseperti sudi terminal harus bekerja.

Giulio G
sumber
Menjalankan apt-get install rng-tools seperti su di terminal telah memperbaiki masalah dengan kotak linux saya.
Giovanni Cannizzaro
2

rng-toolshanya membantu jika sistem Anda memiliki dukungan perangkat keras untuk angka acak, seperti " Kunci Aman " intel . Cara ini ditemukan dengan Ivy Bridge . Sistem saya dengan prosesor 1037u (berbasis ivy bridge) tidak memiliki dukungan perangkat keras ini. Karena itu rng-toolsjangan membantu.

Pada sistem lain di sini dengan prosesor i3 berpasir jembatan rng-toolsmemang membantu. The rngdlayanan harus dimulai sangat awal dalam proses boot, untuk mengisi antrian entropi up. Ini adalah kasus dalam urutan boot dengan Ubuntu, saya tidak tahu apakah ini berlaku untuk distribusi lain, tetapi Anda dapat mengetahuinya, karena awal dari rngdlogin di syslog.

J. Schwender
sumber
1
Ini tidak sepenuhnya benar. Anda dapat menjalankan rngd -f -r /dev/urandomuntuk memompa /dev/urandomke dalam /dev/random, meskipun itu dianjurkan untuk tidak menjalankannya dengan cara ini, itu adalah pilihan ..
slm
2

Mungkin juga terjadi setelah menghapus partisi swap

Menggantung sebelumnya kernel: random: crng init donejuga dapat terjadi setelah menghapus partisi swap.

Jika partisi swap dihapus, file konfigurasi /etc/initramfs-tools/conf.d/resume harus benar-benar kosong atau dibaca RESUME=. Hapus nomor UUID apa pun. RESUME=NONEtidak valid.

$ sudo vim /etc/initramfs-tools/conf.d/resume

Sistem file RAM awal mengharuskan pembaruan agar perubahan ini berlaku:

$ sudo update-initramfs -u
Serge Stroobandt
sumber
1

Dalam kasus saya, saya menjalankan 4.19.0-4-amd64VM Debian Buster (kernel ) di Proxmox VE.

Solusinya adalah menambahkan perangkat VirtIO RNG ke VM. Pada Proxmox, ini dilakukan dengan mengedit file konfigurasi VM .

Dalam kasus saya, saya mengedit /etc/pve/qemu-server/110.confdan menambahkan baris berikut:

args: -device virtio-rng-pci

Tidak ada alat userspace (misalnya rng-toolsatau haveged) yang dibutuhkan.

Jonathon Reinhart
sumber