เมื่อฉันเข้าสู่ระบบมันแฮงค์จนกว่า crng init จะเสร็จสิ้น


22

เมื่อฉันเข้าสู่ระบบด้วย LightDM แล็ปท็อปของฉันทำงาน Debian Unstable มันเพิ่งเริ่มต้นที่จะแขวนประมาณ 2 นาทีจนการแสดงข้อความjournalctl kernel: random: crng init doneเมื่อฉันกดปุ่มสุ่มบนแป้นพิมพ์ในขณะที่มันหยุดทำงานมันจะเข้าสู่ระบบเร็วขึ้น (ประมาณ 10 วินาที) ก่อนที่ฉันจะไม่มีปัญหานี้มีวิธีใดบ้างที่ฉันสามารถแก้ไขได้

แก้ไข: ใช้linux-image-4.15.0-3-amd64แทนการlinux-image-4.16.0-1-amd64ทำงาน แต่ฉันไม่ต้องการใช้เคอร์เนลที่เก่ากว่า


1
เสียงเหมือนมีอะไรบางอย่างกำลังทำลายพูลเอนโทรปีทั้งหมด
Kusalananda

1
หัวข้อsystemd-journaldและ (อ้างสิทธิ์) ของ CSPRNG จำเป็นต้องได้รับการอบรมได้เกิดขึ้นในการอภิปรายที่หลากหลายในเร็ว ๆ นี้ ดูlists.freedesktop.org/archives/systemd-devel/2018-May/…เป็นต้น
JdeBP

1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

คำตอบ:


15

ดูเหมือนว่าส่วนประกอบบางส่วนของบล็อกระบบของคุณในขณะที่พยายามรับข้อมูลแบบสุ่มจากเคอร์เนล (เช่นการอ่าน/dev/urandomหรือการโทรgetrandom()) เนื่องจากเอนโทรปี (สุ่ม) ไม่เพียงพอ

ฉันไม่มีคำอธิบายที่พร้อมสำหรับเหตุผลที่ปัญหาขึ้นอยู่กับเคอร์เนลเวอร์ชันใดรุ่นหนึ่งหรือส่วนประกอบใดในระบบของคุณบล็อกจริง แต่ไม่คำนึงถึงสาเหตุที่แท้จริง

แน่นอนตามที่ Bigon ชี้ให้เห็นในคำตอบของเขาดูเหมือนว่าจะเป็นข้อผิดพลาดเคอร์เนลใน 4.16:

ข้อผิดพลาดนี้ถูกนำเสนอโดยการเปลี่ยนแปลง "crng_init> 0" เป็น "crng_init> 1" ในการคอมมิทนี้: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

การเปลี่ยนแปลงนี้ส่งผลต่อ urandom_read โดยไม่ได้ตั้งใจทำให้ crng_init == 1 สถานะถูกถือว่าเป็นค่าเริ่มต้นและทำให้ urandom บล็อกได้แม้ว่าสถานะนี้จะมีอยู่เฉพาะเพื่อรองรับความต้องการที่ไม่ใช่การเข้ารหัสในเวลาบูต: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

การย้อนกลับ 43838a23a05f ("random: fix crng_ready () test") แก้ไขข้อบกพร่อง (ทดสอบด้วย 4.16.5-1) แต่สิ่งนี้อาจทำให้เกิดปัญหาด้านความปลอดภัย (CVE-2018-1108 ถูกกล่าวถึงใน 43838a23a05f) ฉันกำลังทดสอบการแก้ไขที่มีการแปลที่ควรเป็นที่น่าพอใจมากกว่าสำหรับอัปสตรีม

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

... ถึงกระนั้นคุณอาจลองใช้havegedหรือrng-toolsรวบรวมเอนโทรปีได้เร็วขึ้น


4
ดูเหมือนว่าในLinux 4.16.4บางสิ่งที่เกี่ยวข้องกับ CRNG มีการเปลี่ยนแปลงเนื่องจาก CVE-2018-1108 rng-toolsไม่ทำงานบนแล็ปท็อปของฉันเพราะ Intel Celeron N2840 ไม่รองรับ AES-NI และดังนั้นจึงไม่มี TRNG ในตัว
wb9688

3
อัปโหลดครั้งล่าสุดของrng-toolsเดเบียนจาก 2011 คุณมีrng-tools5แพ็คเกจที่ได้รับการเปิดตัวเมื่อเร็ว ๆ นี้
Bigon

@Bigon TBH ฉันไม่รู้อะไรเกี่ยวกับแพ็คเกจใน Debian; ฉันไม่ได้ใช้มัน. นี่เป็นคำแนะนำทั่วไปไม่ใช่เฉพาะเดเบียน
intelfx

1
ยืนยันกับ Ubuntu 18.04 (ไบโอนิค) มีปัญหานี้หลังจากติดตั้งและการปลดล็อคดิสก์ของฉันจากระยะไกลด้วยdropbear-initramfs cryptroot-unlockเพียงแค่apt install rng-toolsทำให้การทำงานสิ่งที่น่าอัศจรรย์ ขอขอบคุณ!
เงินที่จ่ายเมื่อ

การติดตั้งใช้havegedงานได้สำหรับฉัน ฉันมี Intel Core 2 Duo เก่าซึ่งไม่มี True Random Number Generator
Balau

7

มันเป็นการเปลี่ยนแปลง (บั๊ก?) ในเคอร์เนลดูที่: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

เพื่อลดการติดตั้งที่rng-tools5ดูเหมือนว่าจะช่วย โปรดทราบว่าฉันไม่ทราบว่าการติดตั้งแพคเกจนี้มีผลกระทบหรือไม่กับการสร้างคีย์เข้ารหัสที่แข็งแกร่ง

แก้ไข: เห็นได้ชัดว่าการอัพเดต util-linux 2.32 ควรแก้ไขปัญหา


ไม่ util-linux 2.32 ไม่สามารถแก้ไขปัญหาให้ฉันได้
vinc17

5

มันเป็นข้อผิดพลาดเคอร์เนลที่สามารถเกิดขึ้นกับเมล็ดที่แตกต่างกัน

ทำงานapt-get install rng-toolsเหมือนsuในเทอร์มินัลควรทำงาน


ใช้ apt-get install rng-tools เหมือน su ใน terminal ได้แก้ไขปัญหากับกล่อง linux ของฉัน
Giovanni Cannizzaro

2

rng-toolsจะช่วยได้ก็ต่อเมื่อระบบของคุณรองรับฮาร์ดแวร์สำหรับตัวเลขสุ่มเช่น " Secure Key " ของ Intel วิธีนี้คิดค้นด้วยสะพานไม้เลื้อย ระบบของฉันที่ใช้โปรเซสเซอร์ 1037u (อยู่ใน ivy bridge) ไม่มีการสนับสนุนฮาร์ดแวร์นี้ ดังนั้นrng-toolsอย่าช่วย

ในระบบอื่นที่นี่ด้วยตัวประมวลผล i3 bridge sandy rng-toolsช่วย rngdบริการต้องเริ่มต้นมากในช่วงต้นขั้นตอนการบู๊ตในการสั่งซื้อเพื่อเติมเต็มคิวเอนโทรปีขึ้น นี่เป็นกรณีในลำดับการบูตด้วย Ubuntu ฉันไม่รู้ว่านี่เป็นเรื่องจริงสำหรับการแจกแจงอื่น ๆ หรือไม่ แต่คุณสามารถทราบได้ว่าการเริ่มต้นrngdถูกบันทึกไว้ใน syslog


1
สิ่งนี้ไม่เป็นความจริงทั้งหมด คุณสามารถเรียกใช้rngd -f -r /dev/urandomเพื่อสูบน้ำ/dev/urandomเข้า/dev/randomแต่ก็แนะนำไม่ให้ทำงานในลักษณะนี้ก็เป็นตัวเลือก ..
SLM

2

อาจเกิดขึ้นหลังจากลบพาร์ติชัน swap

การหยุดก่อนkernel: random: crng init doneอาจเกิดขึ้นหลังจากลบพาร์ติชัน swap

ถ้าพาร์ทิชัน swap ถูกลบแฟ้มการกำหนดค่าที่ควรจะเป็นอย่างใดอย่างหนึ่งอย่างสมบูรณ์ว่างหรืออ่าน/etc/initramfs-tools/conf.d/resume RESUME=ลบหมายเลข UUID ใด ๆ RESUME=NONEไม่ถูกต้อง

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

ระบบไฟล์ RAM เริ่มต้นต้องการการอัปเดตเพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล:

$ sudo update-initramfs -u

1

ในกรณีของฉันฉันใช้ Debian Buster (เคอร์เนล4.19.0-4-amd64) VM บน Proxmox VE

ทางออกคือการเพิ่มอุปกรณ์VirtIO RNGไปยัง VM เมื่อวันที่ Proxmox นี้จะทำโดยการแก้ไขไฟล์ config VM

ในกรณีของฉันฉันแก้ไข/etc/pve/qemu-server/110.confและเพิ่มบรรทัดต่อไปนี้:

args: -device virtio-rng-pci

ไม่ต้องการเครื่องมือ userspace (เช่นrng-toolsหรือhaveged)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.