โฮมเพจ » ทำอย่างไร » คอมพิวเตอร์สร้างตัวเลขสุ่มอย่างไร

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

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

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

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

    ใช้ตัวเลขสุ่มเพื่ออะไร

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

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

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

    ตัวเลขสุ่มจริง

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

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

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

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

    หมายเลข Pseudorandom

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

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

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

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

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

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

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

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


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

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