คอมพิวเตอร์สร้างตัวเลขสุ่มได้อย่างไร

คอมพิวเตอร์สร้างหมายเลขสุ่มสำหรับทุกอย่างตั้งแต่การเข้ารหัสไปจนถึงวิดีโอเกมและการพนัน หมายเลขสุ่มมีสองประเภท ได้แก่ หมายเลขสุ่ม“ จริง” และหมายเลขหลอกและความแตกต่างนี้มีความสำคัญต่อความปลอดภัยของระบบเข้ารหัส

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

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

หมายเลขสุ่มใช้สำหรับอะไร

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

ที่เกี่ยวข้อง: การเข้ารหัสคืออะไรและทำงานอย่างไร

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

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

หมายเลขสุ่มจริง

คุณอาจสงสัยว่าคอมพิวเตอร์สร้างตัวเลขสุ่มได้อย่างไร “ การสุ่ม” นี้มาจากไหน หากเป็นเพียงรหัสคอมพิวเตอร์ส่วนหนึ่งเป็นไปได้ไหมว่าตัวเลขที่คอมพิวเตอร์สร้างขึ้นนั้นสามารถคาดเดาได้หรือไม่?

โดยทั่วไปเราจะจัดกลุ่มตัวเลขสุ่มที่คอมพิวเตอร์สร้างออกเป็นสองประเภทขึ้นอยู่กับวิธีการสร้าง: หมายเลขสุ่ม "จริง" และตัวเลขสุ่มหลอก

ในการสร้างตัวเลขสุ่ม "จริง" คอมพิวเตอร์จะวัดปรากฏการณ์ทางกายภาพบางประเภทที่เกิดขึ้นภายนอกคอมพิวเตอร์ ตัวอย่างเช่นคอมพิวเตอร์สามารถวัดการสลายตัวของกัมมันตภาพรังสีของอะตอม ตามทฤษฎีควอนตัมไม่มีทางทราบแน่ชัดว่าจะเกิดการสลายตัวของกัมมันตภาพรังสีเมื่อใดดังนั้นนี่จึงเป็น "การสุ่มอย่างแท้จริง" จากจักรวาล ผู้โจมตีไม่สามารถคาดเดาได้ว่าจะเกิดการสลายตัวของกัมมันตภาพรังสีเมื่อใดดังนั้นพวกเขาจึงไม่ทราบค่าสุ่ม

สำหรับตัวอย่างเพิ่มเติมในแต่ละวันคอมพิวเตอร์อาจอาศัยเสียงรบกวนในบรรยากาศหรือใช้เวลาที่แน่นอนที่คุณกดแป้นบนแป้นพิมพ์เป็นแหล่งข้อมูลที่ไม่สามารถคาดเดาได้หรือเอนโทรปี ตัวอย่างเช่นคอมพิวเตอร์ของคุณอาจสังเกตเห็นว่าคุณกดปุ่มที่ 0.23423523 วินาทีหลัง 14.00 น. หยิบเวลาที่ระบุที่เกี่ยวข้องกับการกดปุ่มเหล่านี้ให้เพียงพอและคุณจะมีแหล่งที่มาของเอนโทรปีที่คุณสามารถใช้เพื่อสร้างตัวเลขสุ่ม "จริง" คุณไม่ใช่เครื่องจักรที่คาดเดาได้ดังนั้นผู้โจมตีจึงไม่สามารถคาดเดาช่วงเวลาที่แม่นยำเมื่อคุณกดปุ่มเหล่านี้ อุปกรณ์ / dev / random บน Linux ซึ่งสร้างตัวเลขสุ่ม "บล็อก" และไม่ส่งคืนผลลัพธ์จนกว่าจะรวบรวมเอนโทรปีเพียงพอที่จะส่งคืนตัวเลขสุ่มอย่างแท้จริง

หมายเลข Pseudorandom

Pseudorandom numbers เป็นอีกทางเลือกหนึ่งของตัวเลขสุ่ม "จริง" คอมพิวเตอร์สามารถใช้ค่าเริ่มต้นและอัลกอริทึมเพื่อสร้างตัวเลขที่ดูเหมือนจะสุ่ม แต่ในความเป็นจริงนั้นสามารถคาดเดาได้ คอมพิวเตอร์ไม่รวบรวมข้อมูลแบบสุ่มจากสภาพแวดล้อม

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

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

ตัวสร้างหมายเลขสุ่มฮาร์ดแวร์ของ NSA และ Intel

เพื่อให้ง่ายขึ้นสำหรับนักพัฒนาและช่วยสร้างตัวเลขสุ่มที่ปลอดภัยชิป Intel จึงรวมตัวสร้างตัวเลขสุ่มบนฮาร์ดแวร์ที่เรียกว่า RdRand ชิปนี้ใช้แหล่งเอนโทรปีบนโปรเซสเซอร์และให้หมายเลขสุ่มแก่ซอฟต์แวร์เมื่อซอฟต์แวร์ร้องขอ

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

นี่เป็นข้อกังวลอย่างยิ่ง ในเดือนธันวาคม 2013 นักพัฒนาของ FreeBSD ได้ลบการสนับสนุนสำหรับการใช้ RdRand โดยตรงเป็นแหล่งที่มาของการสุ่มโดยบอกว่าพวกเขาไม่สามารถไว้วางใจได้ [ที่มา] เอาต์พุตของอุปกรณ์ RdRand จะถูกป้อนเข้าไปในอัลกอริทึมอื่นที่เพิ่มเอนโทรปีเพิ่มเติมเพื่อให้แน่ใจว่าแบ็คดอร์ใด ๆ ในตัวสร้างตัวเลขสุ่มจะไม่สำคัญ Linux ทำงานในลักษณะนี้แล้วโดยทำการสุ่มข้อมูลแบบสุ่มที่มาจาก RdRand เพิ่มเติมเพื่อที่จะไม่สามารถคาดเดาได้แม้ว่าจะมีแบ็คดอร์ก็ตาม [ที่มา] ใน AMA ล่าสุด (“ Ask Me Anything”) บน Reddit ซีอีโอของ Intel Brian Krzanich ไม่ได้ตอบคำถามเกี่ยวกับข้อกังวลเหล่านี้ [ที่มา]

แน่นอนว่านี่ไม่ใช่แค่ปัญหากับชิป Intel นักพัฒนาของ FreeBSD เรียกชื่อชิปของ Via ด้วย ข้อถกเถียงนี้แสดงให้เห็นว่าเหตุใดการสร้างตัวเลขสุ่มที่สุ่มอย่างแท้จริงและไม่สามารถคาดเดาได้จึงมีความสำคัญ

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

เครดิตรูปภาพ: rekre89 บน Flickr, Lisa Brewster บน Flickr, Ryan Somma บน Flickr, huangjiahui บน Flickr