_NSAKEY
_NSAKEYเป็น ชื่อ ตัวแปรที่ถูกค้นพบในWindows NT 4 SP5ในปี 1999 โดย Andrew D. Fernandes จาก Cryptonym Corporation ตัวแปรนี้บรรจุคีย์สาธารณะขนาด 1024 บิต คีย์สาธารณะถูกใช้ในการเข้ารหัสแบบคีย์สาธารณะสำหรับการเข้ารหัสและการตรวจสอบลายเซ็นดิจิทัล (แต่ไม่ใช่การถอดรหัสหรือการลงนาม) อย่างไรก็ตาม เนื่องจากชื่อดังกล่าว ทำให้เกิดการคาดการณ์ว่าคีย์นี้จะทำให้ หน่วยงานความมั่นคงแห่งชาติของสหรัฐอเมริกา(NSA) สามารถบุกรุกความปลอดภัยของผู้ใช้ Windows ได้ Microsoft ปฏิเสธการคาดการณ์ดังกล่าวและกล่าวว่าชื่อของคีย์มาจากข้อเท็จจริงที่ว่า NSA เป็นหน่วยงานตรวจสอบทางเทคนิคสำหรับ การควบคุมการส่งออกการเข้ารหัส ของสหรัฐฯ
ภาพรวม
Microsoft กำหนดให้ ผู้ให้บริการการเข้ารหัสทั้งหมดที่ใช้โดยMicrosoft Cryptographic API (CryptoAPI)ต้องมีลายเซ็นดิจิทัล RSA เนื่องจากสามารถใช้เฉพาะผู้ให้บริการที่ได้รับการอนุมัติจาก Microsoft กับ CryptoAPI ได้ จึงสามารถเก็บสำเนาการส่งออกของระบบปฏิบัติการนี้ให้เป็นไปตามข้อบังคับการบริหารการส่งออก (EAR) ซึ่งบังคับใช้โดยสำนักงานอุตสาหกรรมและความมั่นคง (BIS) [ 1 ]
เป็นที่ทราบกันอยู่แล้วว่า Microsoft ใช้คีย์สองคีย์ คือคีย์หลักและคีย์สำรอง ซึ่งคีย์ใดคีย์หนึ่งก็สามารถสร้างลายเซ็นที่ถูกต้องได้ เมื่อปล่อย Service Pack 5 สำหรับWindows NT 4.0 Microsoft ละเลยที่จะลบสัญลักษณ์การดีบัก ใน ADVAPI32.DLL ซึ่ง เป็นไลบรารีที่เปิดเผยคุณสมบัติของ Windows เช่นWindows Registryและความปลอดภัย Andrew Fernandes หัวหน้านักวิทยาศาสตร์ของ Cryptonym พบว่าคีย์หลักถูกเก็บไว้ในตัวแปร_KEYและคีย์ที่สองมีชื่อว่า_NSAKEY [ 2 ] Fernandes ได้เผยแพร่การค้นพบของเขา ทำให้เกิดการคาดเดาและ ทฤษฎีสมคบคิด มากมาย รวมถึงความเป็นไปได้ที่คีย์ที่สองจะทำให้ หน่วยงานความมั่นคงแห่งชาติของสหรัฐอเมริกา(NSA) สามารถทำลายความปลอดภัยของผู้ใช้ Windows ได้[ 3 ]
ระหว่างการนำเสนอใน งานประชุม Computers, Freedom and Privacy 2000 (CFP2000) Duncan CampbellนักวิจัยอาวุโสจากElectronic Privacy Information Center (EPIC) ได้กล่าวถึง กรณีพิพาทเรื่อง _NSAKEYเป็นตัวอย่างของประเด็นสำคัญที่เกี่ยวข้องกับความปลอดภัยและการสอดแนม
นอกจากนี้ ดร.นิคโก แวน โซเมเรน ยังพบคีย์ที่สามใน Windows 2000 ซึ่งเขาสงสัยว่ามีจุดประสงค์ที่ถูกต้อง และประกาศว่า "มันดูน่าสงสัยกว่า" [ 4 ]
ปฏิกิริยาของไมโครซอฟต์
ไมโครซอฟต์ปฏิเสธ การคาดเดา เรื่องช่องโหว่ใน_NSAKEYและกล่าวว่า "การคาดเดานี้เป็นเรื่องที่น่าขัน เพราะไมโครซอฟต์คัดค้าน ข้อเสนอ การเก็บรักษาคีย์ ต่างๆ ที่รัฐบาลเสนอมาโดยตลอด" ตามที่ไมโครซอฟต์ระบุ สัญลักษณ์ของคีย์คือ " _NSAKEY " เนื่องจาก NSA เป็นหน่วยงานตรวจสอบการควบคุมการส่งออกการเข้ารหัสของสหรัฐฯ[ 5 ] [ 6 ]
Richard Purcell ผู้อำนวยการฝ่ายความเป็นส่วนตัวขององค์กรของ Microsoft ได้เข้าหา Campbell หลังจากการนำเสนอของเขาและแสดงความปรารถนาที่จะชี้แจงความสับสนและความสงสัยเกี่ยวกับ_NSAKEYทันทีหลังจากการประชุม Scott Culp จากศูนย์ตอบสนองด้านความปลอดภัยของ Microsoft ได้ติดต่อ Campbell และเสนอที่จะตอบคำถามของเขา การติดต่อสื่อสารของพวกเขาเริ่มต้นด้วยความสุภาพ แต่ในไม่ช้าก็ตึงเครียด Campbell รู้สึกว่า Culp กำลังหลีกเลี่ยง และ Culp รู้สึกว่า Campbell กำลังถามคำถามซ้ำๆ อย่างเป็นปรปักษ์ซึ่งเขาได้ตอบไปแล้ว เมื่อวันที่ 28 เมษายน 2543 Culp กล่าวว่า "เราได้มาถึงจุดสิ้นสุดของการสนทนานี้แล้วอย่างแน่นอน ... [ซึ่ง] กำลังกลายเป็นทฤษฎีสมคบคิดอย่างรวดเร็ว" [ 7 ]
ไมโครซอฟต์อ้างว่าคีย์ที่สามมีเฉพาะในเวอร์ชันเบต้าของ Windows 2000 และจุดประสงค์คือเพื่อลงนามผู้ให้บริการการเข้ารหัส[ 6 ]
ข้อมูลทางเทคนิคเพิ่มเติม
หน้า เว็บ ของ Mozillaเกี่ยวกับคำถามที่พบบ่อยด้านการเข้ารหัสลับ อธิบายวิธีการที่ Microsoft ลงนามใน CSP:
ในความเป็นจริงแล้ว ภายใต้สถานการณ์บางอย่าง เป็นไปได้ที่จะได้รับใบอนุญาตส่งออกสำหรับซอฟต์แวร์ที่เรียกใช้ฟังก์ชันการเข้ารหัสผ่าน API ตัวอย่างเช่น การใช้งานข้อกำหนด Microsoft Cryptographic API (CryptoAPI) ของ Microsoft ได้รับการอนุมัติให้ส่งออกจากสหรัฐอเมริกา แม้ว่าจะมีการใช้งาน API ที่บุคคลที่สาม รวมถึงบุคคลที่สามนอกสหรัฐอเมริกา สามารถเพิ่มโมดูลแยกต่างหาก ("ผู้ให้บริการการเข้ารหัส" หรือ CSP) ที่ใช้ฟังก์ชันการเข้ารหัสได้ การอนุมัติการส่งออกนี้เป็นไปได้เนื่องจาก ก) การใช้งาน CryptoAPI กำหนดให้ CSP ของบุคคลที่สามต้องได้รับการลงนามดิจิทัลโดย Microsoft และปฏิเสธความพยายามในการเรียกใช้ CSP ที่ไม่ได้ลงนามดังกล่าว ข) ผ่านกระบวนการลงนามนี้ Microsoft สามารถรับประกันการปฏิบัติตามกฎระเบียบการควบคุมการส่งออกของสหรัฐอเมริกาที่เกี่ยวข้อง (เช่น พวกเขาจะไม่ลงนามใน CSP ที่พัฒนาขึ้นนอกสหรัฐอเมริกาซึ่งใช้การเข้ารหัสที่แข็งแกร่ง) และ ค) การใช้งาน CryptoAPI ของ Microsoft มีให้ใช้งานเฉพาะในรูปแบบที่สามารถเรียกใช้งานได้ ดังนั้นจึงสันนิษฐานได้ว่ามีความทนทานต่อการดัดแปลงของผู้ใช้เพื่อปิดใช้งานการตรวจสอบลายเซ็นดิจิทัลของ CSP ในระดับที่เหมาะสม[ 8 ]
ตามที่ Fernandes กล่าวไว้ เป็นไปได้ที่จะเปลี่ยน_NSAKEYเมื่อโหลดโมดูลการเข้ารหัสcrypto_verifyฟังก์ชันจะลองใช้_KEYเพื่อตรวจสอบโมดูลก่อน จากนั้น_NSAKEYเนื่องจากไม่มีโมดูลการเข้ารหัสใน Windows ที่ลงนามด้วย_NSAKEYจึงไม่เคยถูกใช้งาน การแทนที่ด้วยคีย์อื่นทำให้บริษัทนอกสหรัฐอเมริกาสามารถติดตั้งบริการการเข้ารหัสลงใน Windows ได้โดยไม่ต้องขออนุมัติจาก Microsoft หรือ NSA [ 2 ]
การคาดเดาเพิ่มเติม
ไมโครซอฟต์ระบุว่ากุญแจตัวที่สองมีไว้เป็นข้อมูลสำรองเพื่อป้องกันความเป็นไปได้ที่จะสูญหายกุญแจลับหลัก เฟอร์นันเดสตั้งข้อสงสัยในคำอธิบายนี้ โดยชี้ให้เห็นว่าวิธีการที่ยอมรับกันโดยทั่วไปในการป้องกันการสูญเสียกุญแจลับคือการแบ่งกุญแจลับออกเป็นหลายส่วน แล้วกระจายไปยังผู้บริหารระดับสูง เขาบอกว่าวิธีนี้จะมีความแข็งแกร่งกว่าการใช้กุญแจสองตัวมาก หากกุญแจตัวที่สองสูญหายไปอีก ไมโครซอฟต์จะต้องแก้ไขหรืออัปเกรด Windows ทุกเวอร์ชันทั่วโลก รวมถึงโมดูลการเข้ารหัสทั้งหมดที่เคยลงนามไว้ด้วย
ในทางกลับกัน หาก Microsoft ไม่ได้คิดถึงผลที่ตามมาจากการสูญหายของคีย์ และสร้างคีย์แรกโดยไม่ใช้การแยกส่วนความลับ (และทำเช่นนั้นในฮาร์ดแวร์ที่ปลอดภัยซึ่งไม่อนุญาตให้ลดทอนการป้องกันหลังจากการสร้างคีย์) และ NSA ชี้ให้เห็นปัญหานี้ในระหว่างกระบวนการตรวจสอบ อาจอธิบายได้ว่าทำไม Microsoft จึงลดทอนระบบของตนด้วยคีย์ที่สอง และทำไมคีย์ใหม่จึงเรียกว่า_NSAKEY (คีย์ที่สองอาจได้รับการสำรองข้อมูลโดยใช้การแยกส่วนความลับ ดังนั้นการสูญหายของคีย์ทั้งสองจึงไม่น่าจะเป็นปัญหา) อีกความเป็นไปได้หนึ่งคือ Microsoft ได้รวมคีย์ที่สองไว้เพื่อให้สามารถลงนามโมดูลการเข้ารหัสลับนอกสหรัฐอเมริกาได้ ในขณะที่ยังคงปฏิบัติตาม EAR ของ BIS หากโมดูลการเข้ารหัสลับต้องได้รับการลงนามในหลายตำแหน่ง การใช้คีย์หลายตัวเป็นแนวทางที่สมเหตุสมผล อย่างไรก็ตาม ไม่เคยพบโมดูลการเข้ารหัสลับใด ๆ ที่ลงนามโดย_NSAKEYและ Microsoft ปฏิเสธว่ามีหน่วยงานรับรองอื่นใดอยู่
Bruce Schneierเชื่อว่าความกังวลประเภทข้างต้น เช่น NSA ใส่คีย์ใน Windows เพื่อให้สามารถโหลด CSP ที่มีช่องโหว่ได้ตามอำเภอใจนั้นไม่มีมูลความจริง เขาโต้แย้งว่ามีวิธีที่ง่ายกว่าในการใส่ช่องโหว่ใน Windows โดยไม่ต้องใช้คีย์เพิ่มเติม หรือแม้แต่คีย์ที่เรียกว่า "NSAKEY" ในสัญลักษณ์การดีบักที่มองเห็นได้ทั้งบริษัท: NSA สามารถขอคีย์หลักได้เลย API การเข้ารหัสก็เป็นจุดเริ่มต้นที่ไม่ดีเช่นกัน เนื่องจากต้องให้เหยื่อเรียกใช้ไฟล์ปฏิบัติการที่ NSA จัดหาให้[ 9 ]
ค่านิยมหลัก
คีย์ทั้งสองเป็นคีย์ RSA ที่มีค่าeเท่ากับ 65537 ซึ่งเป็นตัวเลือกมาตรฐาน [ 10 ]
_KEYมีค่าnเป็น:
b273e277a9c375c70bb7493e52b0b36962e976626ad609ba31be6accac12f1f3 da6c18d96951820c457c7b4c4893bd149de279a39f6ec926d3544db3491fa2e9 af1bf8260b3b0fbadd69cbd77b28012925711b17c0b877eaf7da9d02dd5f8572 854e5c90e9b10cfbaeaf8b8fe1df5047bc18829a531499bbf49e8021346b5095
_NSAKEYมีค่าnเป็น:
ba8e15fee3cd160fb47cf93e2b4d842615af23f0659264d81edc35a27d3aa450 890a227b561da401ff3908771d243f6eeb4f9e351976e90f07fd22cd099ccd71 e85b97f5439adb172d32d71cb66c26c5b188a3e11790ed01eb31bf27bc667b39 6fd8283097d8b3869cc7511a3496e829a32bbad6d2f7aa7e8ca9805d51682d1f
คีย์ PGP
ในเดือนกันยายน พ.ศ. 2542 นักวิจัยนิรนามคนหนึ่งได้ทำการวิศวกรรมย้อนกลับทั้งคีย์หลักและ _NSAKEY ให้เป็น รูปแบบที่เข้ากันได้ กับ PGPและเผยแพร่ไปยังเซิร์ฟเวอร์คีย์[ 11 ]
คีย์หลัก (_KEY)
ประเภท บิต/รหัสคีย์ วันที่ รหัสผู้ใช้ pub 1024/346B5095 1999/09/06 รหัส CAPI ของ Microsoft <[email protected]> -----เริ่มต้นบล็อกคีย์สาธารณะ PGP----- เวอร์ชัน: 2.6.3i mQCPAzfTc8YAAAEEALJz4nepw3XHC7dJPlKws2li6XZiatYJujG+asysEvHz2mwY 2WlRggxFfHtMSJO9FJ3ieaOfbskm01RNs0kfoumvG/gmCzsPut1py9d7KAEpJXEb F8C4d+r32p0C3V+FcoVOXJDpsQz7rq+Lj+HfUEe8GIKaUxSZu/SegCE0a1CVABEB AAG0L01pY3Jvc29mdCdzIENBUEkga2V5IDxwb3N0bWFzdGVyQG1pY3Jvc29mdC5j b20+iQEVAwUQN9Nz5j57yqgoskVRAQFr/gf8DGm1hAxWBmx/0bl4m0metM+IM39J yI5mub0ie1HRLExP7lVJezBTyRryV3tDv6U3OIP+KZDthdXb0fmGU5z+wHt34Uzu xl6Q7m7oB76SKfNaWgosZxqkE5YQrXXGsn3oVZhV6yBALekWtsdVaSmG8+IJNx+n NvMTYRUz+MdrRFcEFDhFntblI8NlQenlX6CcnnfOkdR7ZKyPbVoSXW/Z6q7U9REJ TSjBT0swYbHX+3EVt8n2nwxWb2ouNmnm9H2gYfXHikhXrwtjK2aG/3J7k6EVxS+m Rp+crFOB32sTO1ib2sr7GY7CZUwOpDqRxo8KmQZyhaZqz1x6myurXyw3Tg== =ms8C -----สิ้นสุดบล็อกคีย์สาธารณะ PGP-----
คีย์รอง (_NSAKEY และ _KEY2)
ประเภท บิต/รหัสคีย์ วันที่ รหัสผู้ใช้ pub 1024/51682D1F 1999/09/06 รหัส CAPI ของ Microsoft สำหรับ NSA <[email protected]> -----เริ่มต้นบล็อกคีย์สาธารณะ PGP----- เวอร์ชัน: 2.6.3i mQCPAzfTdH0AAAEEALqOFf7jzRYPtHz5PitNhCYVryPwZZJk2B7cNaJ9OqRQiQoi e1YdpAH/OQh3HSQ/butPnjUZdukPB/0izQmczXHoW5f1Q5rbFy0y1xy2bCbFsYij 4ReQ7QHrMb8nvGZ7OW/YKDCX2LOGnMdRGjSW6CmjK7rW0veqfoypgF1RaC0fABEB AAG0LU5TQSdzIE1pY3Jvc29mdCBDQVBJIGtleSA8cG9zdG1hc3RlckBuc2EuZ292 PokBFQMFEDfTdJE+e8qoKLJFUQEBHnsH/ihUe7oq6DhU1dJjvXWcYw6p1iW+0euR YfZjwpzPotQ8m5rC7FrJDUbgqQjoFDr++zN9kD9bjNPVUx/ZjCvSFTNu/5X1qn1r it7IHU/6Aem1h4Bs6KE5MPpjKRxRkqQjbW4f0cgXg6+LV+V9cNMylZHRef3PZCQa 5DOI5crQ0IWyjQCt9br07BL9C3X5WHNNRsRIr9WiVfPK8eyxhNYl/NiH2GzXYbNe UWjaS2KuJNVvozjxGymcnNTwJltZK4RLZxo05FW2InJbtEfMc+m823vVltm9l/f+ n2iYBAaDs6I/0v2AcVKNy19Cjncc3wQZkaiIYqfPZL19kT8vDNGi9uE= =PhHT -----สิ้นสุดบล็อกคีย์สาธารณะ PGP-----
ดูเพิ่มเติม
- Lotus Notes – เปิดเผยการใช้คีย์ของ NSA เพื่อให้เป็นไปตามข้อกำหนดด้านการส่งออกการเข้ารหัส
- ชิปคลิปเปอร์