แหล่งที่มาของเอนโทรปีสำหรับ Linux


9

สมมติว่าฉันต้องการกิกะไบต์ข้อมูลแบบสุ่มจาก / dev / random เหมาะสำหรับแผ่นครั้งเดียว (ดังนั้น / dev / urandom หมด) ฉันจะหว่าน / dev / random ด้วยเอนโทรปีมากพอที่จะทำสิ่งนี้ได้อย่างไร ฉันกำลังมองหาคำสั่งและโปรแกรมเฉพาะสำหรับสิ่งนี้ ฉันไม่ต้องการซื้ออะไร ฉันใช้ Arch Linux ถ้านั่นสร้างความแตกต่าง


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

@Andon ฉันกำลังพูดถึงโปรแกรมเฉพาะสำหรับการแยกแบบสุ่มจากแหล่งข้อมูลเอนโทรปีเช่นเสียงยิงเสียงความร้อนอุปกรณ์บางอย่าง ฯลฯ ... โปรแกรมจะไม่ทำให้เกิดการสุ่มเอง
PyRulez

... ตัวอย่างเช่นคำสั่งหรือโปรแกรมที่บอกว่าHere — type something:จากนั้นวัดระยะเวลาการกดแป้นระหว่างกันเป็นความแม่นยำสูงกว่าที่มนุษย์สามารถควบคุมได้?
G-Man กล่าวว่า 'Reinstate Monica'


1
มันกล่าวถึงแผ่นเพียงครั้งเดียวเป็นหนึ่งในสองข้อยกเว้นในการยืนยันว่า _'... อัลกอริทึมการเข้ารหัสเกือบทั้งหมด ... "เท่านั้น" มีความปลอดภัยในการคำนวณ ' ถ้าคุณไม่สามารถพูดอะไรบางอย่างที่ฉันพลาดไปมันก็บอกว่าแผ่นรองขาจรครั้งเดียวไม่สามารถใช้ urandom ได้?
ไร้ประโยชน์

คำตอบ:


4

สองโปรแกรมที่สามารถเพิ่มสระว่ายน้ำเอนโทรปีโดยไม่ต้องมีอุปกรณ์เสริมเป็นและrng-tools ใช้ RNGs ที่มีอยู่ในซีพียูและชิปเซ็ตสมัยใหม่ใช้ซีพียูแบบสุ่ม (พฤติกรรมการใช้แคชเป็นต้น) ทั้งสองมีอยู่ใน Arch และวิกิ Archมีหน้าน่าสนใจคุยกัน ฉันไม่ได้ลองใช้มันเพื่อสร้างข้อมูลกิกะไบต์ แต่ควรเป็นไปได้ในเวลาที่เหมาะสมhavegedrng-toolshaveged

คุณแยกการซื้ออย่างชัดเจน แต่เพื่อความสมบูรณ์มีบทความที่น่าสนใจใน LWN เกี่ยวกับเอนโทรปีของ NeuGซึ่งรวมถึงการอภิปรายhavegedและแนวทางอื่น ๆ คุณสามารถซื้อบอร์ด STM8S ที่สามารถใช้งาน NeuG ได้ในราคาต่ำกว่า $ 10 หรือ FST-01 ในราคา $ 35


4

แต่น่าเสียดายที่ / dev / random นั้นไม่เหมาะสำหรับการใช้งานในแผ่นเพียงครั้งเดียวอย่างน้อยก็ไม่ใช่แผ่นแบบครั้งเดียว (ที่มีการรับประกันความปลอดภัยที่พิสูจน์ได้) ซึ่งคนส่วนใหญ่คิดเมื่อพวกเขานึกถึง ข้อมูลส่วนใหญ่ด้านล่างนี้สรุปจากบทความ (ยาวมาก) ที่http://www.2uo.de/myths-about-urandom/

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

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

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

หลักฐานของคำถามนี้คือปัญหาเกี่ยวกับ / dev / random สามารถ "แก้ไข" โดยการเพิ่มเอนโทรปีมากขึ้น น่าเสียดายที่หลักฐานนี้ผิด แหล่งข้อมูลเอนโทรปีที่เป็นอันตรายนั้นเลวร้ายยิ่งกว่าเอนโทรปีใด ๆ เพราะแหล่งข้อมูลเอนโทรปีมักจะสามารถเข้าถึงข้อมูลภายในและสามารถส่งออกข้อมูลนี้ได้อย่างลับๆโดยใช้เอาต์พุต RNG - ดูhttp://blog.cr.yp.to/20140205-entropy .htmlสำหรับการสนทนาเต็มรูปแบบ (ยาวเกินไปที่จะสรุปที่นี่) โดยเฉพาะอย่างยิ่งแหล่งที่มาของฮาร์ดแวร์ของเอนโทรปี (ตามที่แนะนำโดยคำตอบอื่น ๆ อีกหลายข้อ) เป็นตัวเลือกที่แย่มากจากมุมมองด้านความปลอดภัยเนื่องจากฮาร์ดแวร์นั้นอยู่ในตำแหน่งที่เหมาะสมที่สุดในการทำสิ่งที่เป็นอันตราย


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

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

Gilles อ่านลิงค์ที่สองที่ฉันโพสต์ มันผิดทั้งหมดหากอ้างว่าอย่างน้อยหนึ่งแหล่งเอนโทรปีก็ดีผลลัพธ์ก็ดี จุดประสงค์ทั้งหมดของลิงก์นั้นคือการปฏิเสธการอ้างสิทธิ์ที่ผิดพลาดนี้!
djao

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

สำหรับทางเลือก: ไม่มีทางเลือกอื่นในการรับข้อมูลแบบสุ่ม 1GB จากพีซี คุณจะต้องมีอุปกรณ์ฮาร์ดแวร์สำหรับสิ่งนั้น (แต่ให้ความสนใจกับสิ่งที่ฉันพูดเกี่ยวกับฮาร์ดแวร์ที่จะตรวจสอบได้ยาก) หากคุณยินดีที่จะใช้ / dev / random ดังนั้น / dev / urandom ก็ดีเหมือนกัน มันไม่เลวร้ายไปกว่า / dev / random สำหรับแอปพลิเคชันเข้ารหัสทั้งหมด
djao

3

ดูเหมือนว่าองค์ประกอบ HW เป็นความคิดที่ดีที่สุด มีตัวกำเนิด HW บางตัวออกมา แต่คุณต้องเชื่อใจพวกเขาเมื่อพวกเขามา

การแก้ปัญหาที่ดีสองวิธีอาจทำให้เกิดส่วนประกอบเพื่อสร้างเสียงรบกวน สองวิธีแก้ปัญหาที่สำคัญน่าจะมีอคติต่ออุณหภูมิและเสียงรบกวนแบบ avanche ที่สร้างขึ้นด้วยไดโอด (ดูhttp://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )

เนื่องจากส่วนประกอบอย่างไจโรและมาตรวัดความเร่งนั้นมีความสมเหตุสมผลมากขึ้นทำให้การทำงานนั้นมีความไวสูงสุดและการใช้ค่า LSB ของพวกเขาก็เป็นทางออกที่ดีเช่นกัน แต่ไม่มีใคร AFAIK ตรวจสอบมัน

เป็นเรื่องตลกเพราะมีกระดาษจำนวนมากที่ไม่ทำ RNG แต่ไม่ใช่การเปิดใช้งาน HW และตรวจสอบแล้ว


2

คุณสามารถใช้pycsprng.py ปลอดภัยด้วยการเข้ารหัส? ฉันไม่แน่ใจ แต่ฉันต้องการความเห็นจากเพื่อน

python pycsprng.py | pv | dd of=data.file bs=1024 count=1000

ไปป์ที่ pvเป็นทางเลือกและจะช่วยให้คุณทราบว่ามีการถ่ายโอนข้อมูลจำนวนเท่าใด

คุณอาจพบว่าขนาดบล็อกที่ใหญ่กว่า (bs) จะเพิ่มประสิทธิภาพ คุณจะต้องปรับจำนวนเพื่อไม่สร้างไฟล์ที่มีขนาดใหญ่เกินไปหากคุณเพิ่มขนาดบล็อก


3
นั่นเพิ่งจะใช้/dev/urandom...
Stephen Kitt

1
pycsprng.pyเป็นอักษรสคริปต์ 10 SLOC os.urandomที่ได้รับการสุ่มจาก เอกสารบอกว่า"ข้อมูลกลับควรจะเพียงพอที่คาดเดาไม่ได้สำหรับการใช้งานการเข้ารหัสลับ [ ... ] บนระบบ UNIX เหมือนนี้จะสอบถาม/dev/urandom " มันไม่จริง (เป็นแหล่งที่ล้าสมัยแม้ว่า) และ Security.SE บอกว่ามันโอเคสำหรับการเข้ารหัสลับ
gronostaj

ไม่ใช่ crypto pad ครั้งเดียว!
PyRulez

0

สิ่งที่คุณได้จากช่องไมโครโฟนแบบอะนาล็อกเมื่อคุณไม่ได้เสียบไมโครโฟนโดยปกติแล้วจะเป็นแบบคงที่ ไปป์ที่ผ่าน bzip2 ตัวอย่างเช่นสำหรับไวท์เทนนิ่งให้ผสมกับแหล่งอื่นของการสุ่ม (urandom หรือแจ็คไมโครโฟนอื่น) บางทีท่อผลลัพธ์ผ่าน openssl สำหรับการวัดที่ดีและสิ่งที่คุณควรได้รับจะค่อนข้างสุ่ม

มันจะยากที่จะพิสูจน์คุณสมบัติความปลอดภัยที่ยากและรวดเร็วใด ๆ เกี่ยวกับการสุ่มผลลัพธ์


0

หากคุณกำลังใช้ลินุกซ์เคอร์เนล 2.6.9 หรือใหม่กว่าใน amd64 / ประมวลผล x86_64 เสมือนหรือสภาพแวดล้อมทางกายภาพคุณอาจลองncomputers.org/pandomเครื่องกำเนิดไฟฟ้าจำนวนสุ่มจริงว่าข้อเสนอ 8 กิโล / s เอนโทรปี 64 ubits / 64 บิตผ่าน/dev/random

ตัวอย่างผลลัพธ์


ลิงก์ถูกจับไม่พบข้อมูลสำรอง
slm

0

ในการสร้างข้อมูลสุ่มที่สร้างจากฮาร์ดแวร์ 100 MB คุณสามารถ:

  • บันทึกเสียง 20 นาที (96khz 16 บิตขาวดำ) ด้วยไมโครโฟนในตัวคอมพิวเตอร์ของคุณ (มีให้ในแล็ปท็อป) คุณจะได้รับไฟล์ WAV ขนาด ~ 220 MB

  • ยกเลิกบิตที่ไม่มีประโยชน์และสลับบิตของข้อมูลไบนารี (หลายวิธีในการทำเช่นนี้) ด้วยคณิตศาสตร์

  • ส่งออกบิตสับเป็นไฟล์ไบนารีขนาด ~ 100 MB

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

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