สร้างเอนโทรปีสำหรับคีย์ PGP


12

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

ฉันจะสร้างบางอย่างได้อย่างไร

ฉันพยายามแล้วcat /dev/urandom > /dev/nullแต่ก็ไม่ได้ช่วยอะไร

คำตอบ:


13

การรับข้อมูลออกของ/dev/randomหรือ/dev/urandomแน่นอนไม่ได้ไปช่วยเหลือทั้งหมดก็จะทำคือการทำให้หมดสิ้นลงสระว่ายน้ำเอนโทรปีของคุณทำให้ปัญหายิ่งเลวร้ายลง ความแตกต่างที่สำคัญระหว่างสองไฟล์นี้คือแม้เมื่อเคอร์เนลที่ไม่มีเอนโทรปีurandomจะสร้างข้อมูลแบบสุ่มที่มีคุณภาพน้อยกว่าในขณะที่randomจะบล็อกจนกว่าจะสามารถรวบรวมข้อมูลแบบสุ่มคุณภาพสูงใหม่ได้ PGP /dev/randomต้องการข้อมูลสูงสุดสุ่มไปได้ที่จะสร้างคีย์ที่เชื่อถือได้ดังนั้นจึงมักจะใช้

หากคุณมีข้อมูลแบบสุ่มดีรอบ ๆ หรือส่งออกจากเซิร์ฟเวอร์อื่นของ/dev/randomคุณสามารถcatมันลงในเซิร์ฟเวอร์ของคุณ/dev/randomเอนโทรปีจะได้รับเพิ่มเติม คุณไม่ควรcatไฟล์เดียวกันสองครั้งลงใน/dev/randomแต่

หากคุณพบว่าเอนโทรปีหมดคุณสามารถลองติดตั้งอะไรบางอย่างที่คล้ายกับhasgedภูตที่สร้างเอนโทรปีขึ้นมาใหม่ในพื้นหลังและเติมใหม่/dev/randomตามต้องการ

นอกจากนี้ยังสามารถดึงดูดให้เชื่อมโยง/dev/randomไปถึง/dev/urandomแต่ควรพิจารณาความเสี่ยงด้านความปลอดภัยเป็นรหัสที่สร้างขึ้นโดยใช้มันอาจจะมีความปลอดภัยน้อยกว่าที่ควร แม้ว่ามันจะช่วยให้แอปพลิเคชันที่สำคัญน้อยกว่าคุณต้องพิจารณาการใช้งานที่เป็นไปได้/dev/randomอื่น ๆ รวมถึงผู้ใช้อื่น ๆ ที่สร้างกุญแจของตัวเอง CSR เป็นต้น


โปรดทราบว่าใน FreeBSD /dev/randomนั้นเป็นPRNG คุณภาพสูงและไม่ควรบล็อกตามปกติ
Kevin

@Kevin /dev/randomเป็น PRNG คุณภาพสูงบน BSD และ Linux ที่ทันสมัยแน่นอน แต่มันจะปิดกั้นหากมีเอนโทรปีไม่เพียงพอ ในอีกด้านหนึ่ง/dev/urandomจะไม่ปิดกั้นหากมีไม่เพียงพอ แต่คุณภาพของการสุ่มอาจประสบในกรณีนี้ ในรายละเอียดนั้นมีรายละเอียดปลีกย่อยมากมายระหว่างการใช้งานแบบสุ่มและแบบสุ่มระหว่างลินุกซ์และ BSD ต่างๆ แต่สิ่งที่กล่าวมาข้างต้นควรเป็นจริงในทุก AFAIK
Huygens

บน Linux คุณสามารถสร้างเอนโทรปีได้มากขึ้นเพียงแค่ทำการโฮสต์ (เช่นping 8.8.8.8) ถ้าคุณมีโฮสต์เครือข่ายอื่นพยายามส่ง Ping ทุกๆ 100ms (ถ้า RTT ของคุณ <100ms แน่นอน) และ / หรือใช้findเพื่อค้นหาไฟล์ในฮาร์ดดิสก์ของคุณและล้างแคช RAM ระหว่างการค้นหาแต่ละไฟล์
Huygens

@Huygens: เปิดหน้า man ที่ฉันลิงก์และ Ctrl + F "kern.random.sys.seeded"; ตามค่าเริ่มต้น/dev/randomจะไม่บล็อกใน FreeBSD
เควิน

1
@ เควินใช่คุณพูดถูกเอนโทรปีพัวพันหรือเก็บเกี่ยวอาจเป็นสองวิธีที่แตกต่างกันของ "การเพาะ" PRNG และหลังจากการทดสอบบางอย่างในกล่อง BSD ของฉันฉันพบว่าการสุ่มและ urandom ทำงานในลักษณะเดียวกันพวกเขาบล็อกเมื่อพวกเขาไม่สามารถสร้าง PRNG ได้ดีพอ ลองใช้dd if=/dev/random of=/tmp/rndtest bs=64M count=1หลังจากบูตใหม่ใช้เวลา 2 ครั้งติดต่อกันเพื่อดูเวลาในการสร้างไฟล์ที่เพิ่มขึ้น 64MB ฉันคิดว่าฉันจะไม่เห็นเอฟเฟกต์นี้กับ urandom เป็นอินพุท แต่ FreeBSD ดูเหมือนว่าจะปิดกั้นด้วยเช่นกันซึ่งแตกต่างจาก Linux
Huygens

9

havegedคุณสามารถใช้

haveged เป็น daemon ที่สร้างเอนโทรปีเมื่อต้องการ


ใช่ apt-get install ได้ติดตั้งแล้ว
Uwe Burger

2
ดูแลด้วย Haveged ในสภาพแวดล้อมเสมือนจริง มันอาจเป็นสิ่งที่ไม่ดีขึ้นอยู่กับการกำหนดค่าไฮเปอร์ไวเซอร์ ตรวจสอบหน้านี้: wiki.archlinux.org/index.php/Haveged#Virtual_machines
Huygens

4

ฉันอยากจะแนะนำให้สร้างคีย์ gpg ของคุณบนเครื่องของคุณซึ่งจะมีการสุ่มได้ดีกว่ารีโมต จากนั้นโอนย้ายคีย์โดยใช้ SSH ไปยังเครื่องระยะไกลของคุณ

การสร้างภายในเครื่องจะเร็วขึ้น (แหล่งข้อมูลเพิ่มเติมสำหรับเอนโทรปี) ปลอดภัยยิ่งขึ้น (ไม่มีใครสามารถสอดแนมกระบวนการได้หากเครื่องของคุณไม่ติดไวรัสแบบสุ่มดีกว่า)

หากคุณยังต้องการสร้างสิ่งเหล่านั้นจากระยะไกล: บน Linux คุณสามารถสร้างเอนโทรปีได้มากขึ้นโดยเพียงแค่ทำการโฮสต์ (เช่นping 8.8.8.8) ถ้าคุณมีโฮสต์เครือข่ายอื่นพยายามส่ง Ping ทุกๆ 100ms (ถ้า RTT ของคุณ <100ms แน่นอน) และ / หรือใช้findเพื่อค้นหาไฟล์ในฮาร์ดดิสก์ของคุณและล้างแคช RAM ระหว่างการค้นหาแต่ละไฟล์

คุณสามารถติดตั้งได้havegedแต่อ่านข้อ จำกัด หากคุณใช้งานในสภาพแวดล้อมเสมือน: https://wiki.archlinux.org/index.php/Haveged#Virtual_machines


ในใจของฉันนี่คือทางออกที่ถูกต้อง - +1 จากฉัน
MadHatter

3

บนระบบที่ใช้ Debian คุณสามารถติดตั้งrng-toolsแพ็กเกจโดยใช้ atp-get จากนั้นเริ่ม daemon เพื่อสร้างเอนโทรปี:

echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart

บนเซิร์ฟเวอร์ CentOS-6 rngdaemon ถูกติดตั้งเป็นหนึ่งในเครื่องมือพื้นฐาน (อย่างน้อยที่สุดในระบบส่วนใหญ่ที่ฉันใช้งานอยู่) และคุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มต้นเพื่อสร้างเอนโทรปี:

sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart

ฉันไม่คิดว่าการใช้ urandom เป็นแหล่งข้อมูลสำหรับ rngd นั้นฉลาด มันจะช่วยทำให้หมดสิ้นเอนโทรปีที่มีอยู่ได้เร็วขึ้นและเมื่อหมดมันจะเป็นแหล่งที่เอนเอียงสำหรับเอนโทรปี ดังนั้นฉันจะหลีกเลี่ยงทางออกนี้
Huygens

1
sudo yum install haveged && sudo systemctl start haveged

ใช้งานได้กับ CentOS 7.2 VM อย่างแน่นอน บางครั้งคุณต้องการสร้างคีย์ GPG บน vm หากคุณสร้างพวงและต้องการพวงกุญแจของคุณเหมือนเดิม

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