ช่องโหว่ของไฟร์วอลล์ Juniper ที่ทางบริษัทรายงานออกมาเองมีสองช่องโหว่สำคัญ ช่องโหว่รหัสผ่านลับนั้นนักวิจัยสามารถวิเคราะห์หารหัสผ่านลับออกมาได้แล้ว อีกช่องโหว่หนึ่งคือช่องโหว่ VPN ที่ผู้ที่ดักฟังการเชื่อมต่อได้จะสามารถถอดรหัสออกมาได้
กระบวนการเข้ารหัส VPN ของ ScreenOS นั้นอาศัยการสร้างเลขสุ่มเทียมสองชั้น คือ Dual_EC ซึ่งถูกตั้งข้อสงสัยมาตั้งแต่สมัยที่ Snowden เปิดเผยข้อมูล ว่า NSA อาจจะจงใจออกแบบให้มีช่องโหว่ โดยเฉพาะแนวทางการเลือกค่าคงที่ที่ไม่เปิดเผยว่าได้มาอย่างไร นักวิจัยของไมโครซอฟท์เคยเสนอไว้ว่าหากค่าคงที่ถูกออกแบบไว้เฉพาะ หากใครสังเกตเห็นค่าสุ่ม 30 ไบต์ก็สามารถคำนวณหาค่ากุญแจเริ่มต้นสำหรับการสร้างเลขสุ่มเทียมได้โดยง่าย
แต่ ScreenOS ของ Juniper ใช้ค่าคงที่ต่างไปจากที่ NSA เสนอมาตั้งแต่แรก และใช้ค่าสุ่มเทียมจาก Dual_EC มาเป็นค่ากุญแจของการสร้างเลขสุ่มเทียมด้วยอัลกอริทึม ANSI X9.17 อีกชั้น ทำให้กระบวนการสร้างเลขสุ่มของ ScreenOS ไม่น่าจะมีช่องโหว่ใด (แม้ค่าคงที่ของ NSA เป็นการวางช่องโหว่จริง)
Ralf-Philipp Weinmann ดีคอมไพล์โค้ดส่วนสร้างเลขสุ่มของ ScreenOS ออกมาและพบว่า เลขสุ่มใน ScreenOS จะใช้เลขสุ่ม 32 ไบต์แรกจาก Dual_EC โดยตรงโดยไม่ผ่านอัลกอริทึมอื่น ดังนั้นหากค่าคงที่ใน Dual_EC ถูกวางช่องโหว่ไว้จริงแฮกเกอร์ก็จะสามารถหาค่าสุ่มเทียมได้ทั้งหมด เพราะสามารถคาดเดาค่าตั้งต้นของ ANSI X9.17 ได้อยู่ดี
โค้ดที่ไม่ได้รับอนุญาตที่ Juniper ระบุว่าถูกเปลี่ยนค่า และเปลี่ยนกลับไปนั้น เป็นค่าคงที่ใน Dual_EC เท่านั้น ไม่มีการเปลี่ยนกระบวนการอื่นใดอีก แต่กระบวนการดั้งเดิมของ Juniper เองก็เตรียมช่องทางทำให้ค่าสุ่มของ Dual_EC หลุดออกมาได้อยู่แล้ว โค้ดที่ถูกแก้ไขเป็นการวางค่าคงที่ใหม่เข้าไปอย่างจงใจซึ่งน่าจะเป็นค่าที่ถูกออกแบบให้มีช่องโหว่
กระบวนการสร้างค่าสุ่มสองชั้นที่แปลกประหลาดเช่นนี้ (สองชั้นบางส่วน ชั้นเดียวบางส่วน) ทำให้ Matthew Green นักวิทยาการเข้ารหัสตั้งคำถามว่าโค้ดเดิมเองก็เป็นช่องโหว่ที่จงใจวางไว้อยู่แล้วหรือไม่ (เขาระบุว่าผู้อ่านต้องตัดสินใจกันเอง) แต่แฮกเกอร์เข้ามาวางโค้ดเพียงเล็กน้อยสร้างผลกระทบอย่างมากเช่นนี้ได้เพราะโครงสร้างของโค้ดเดิม
ช่องโหว่นี้ยังเป็นข้อโต้แย้งสำคัญสำหรับการวางช่องทางลับเอาไว้ในกระบวนการเข้ารหัสสำหรับเจ้าหน้าที่รัฐ เพราะหากมีกระบวนการเช่นนั้นอยู่ในกระบวนการเข้ารหัสแล้ว แฮกเกอร์ที่ต้องการเจาะระบบก็สามารถอาศัยช่องทางที่มีอยู่แล้วเป็นวงกว้างเพื่อวางช่องโหว่ของตัวเองซ้อนเข้าไปอีกครั้ง
ที่มา - Matthew Green, Ralf-Philipp Weinmann
Comments
คือคงที่ >> ค่าคงที่ ไหมครับ