คีย์แบ็กดอร์ของ NSA ใน Lotus Notes ปี 2002
(cypherspace.org)- ก่อนที่ข้อจำกัดการส่งออกการเข้ารหัสของสหรัฐฯ จะถูกยกเลิก รุ่นส่งออกของ Lotus Notes มีโครงสร้างคีย์เอสโครว์/แบ็กดอร์ที่เรียกว่า differential cryptography
- วิธีนี้ใช้การเข้ารหัส 24 บิต จากการเข้ารหัส 64 บิตด้วยกุญแจสาธารณะของ NSA เพื่อให้ผ่านการอนุญาตส่งออก และ NSA สามารถเข้าถึงข้อความต้นฉบับได้ด้วยการ brute-force เฉพาะอีก 40 บิตที่เหลือ
- ระหว่างกระบวนการรีเวิร์สเอนจิเนียริง ตัวระบุของกุญแจสาธารณะ NSA ภายในแอปพลิเคชันแสดงเป็น
O=MiniTruth CN=Big Brotherซึ่งเผยให้เห็นการตั้งชื่อแบบ Orwell โดยเจตนา - ข้อมูลกุญแจสาธารณะถูกสร้างขึ้นใหม่จากบันทึกย่อในอีกหลายปีถัดมา จึงมี ความเป็นไปได้ที่จะมีข้อผิดพลาด และโมดูลัสดูเหมือนจะเป็นแบบ little endian โดยเมื่อเขียนในรูปแบบ big endian จะได้
e = 3และมีขนาด 760 บิต - user ID ในรูปแบบคีย์ PGP คือ
Director, NSA <dirnsa@nsa.gov>ถูกสร้างขึ้นโดยพลการ และ ไม่ใช่ คีย์ที่ลงลายมือชื่อด้วยตนเอง (self-signed)
โครงสร้างแบ็กดอร์ใน Lotus Notes รุ่นส่งออก
- ก่อนที่ข้อจำกัดการส่งออกการเข้ารหัสของสหรัฐฯ จะถูกยกเลิก รุ่นส่งออกของ Lotus Notes มีฟังก์ชัน คีย์เอสโครว์/แบ็กดอร์ ที่เรียกว่า differential cryptography
- แนวคิดหลักคือการเข้ารหัส 24 บิต จากคีย์เข้ารหัส 64 บิตด้วยกุญแจสาธารณะของ NSA เพื่อให้ผ่านการอนุญาตส่งออก
- NSA สามารถได้ข้อความต้นฉบับโดย brute-force เพียงอีก 40 บิต ที่เหลือ
- ผู้ใช้ทั่วไปต้องรับมือกับคีย์สเปซ 64 บิตทั้งหมด แต่แม้ในเวลานั้นก็ยังมีความเป็นไปได้ที่ NSA จะสามารถ brute-force ได้ด้วยต้นทุนที่สูงกว่า
- มีการทำรีเวิร์สเอนจิเนียริงจากการคาดการณ์ว่าน่าจะมีกุญแจสาธารณะของ NSA ที่จับคู่กับกุญแจส่วนตัวของ NSA อยู่ที่ไหนสักแห่งภายในแอปพลิเคชัน
ตัวระบุคีย์และข้อมูลกุญแจสาธารณะที่ค้นพบ
- ในดีบักเกอร์ ชื่อองค์กรและชื่อสามัญของกุญแจสาธารณะ NSA แสดงดังนี้
O=MiniTruth CN=Big Brother
MiniTruthและBig Brotherเชื่อมโยงกับถ้อยคำที่ปรากฏในนิยาย 1984 ของ George Orwell- Ministry of Truth เป็นหน่วยงานที่รับผิดชอบด้านโฆษณาชวนเชื่อและการกดทับความจริงในหนังสือ
- Big Brother ปรากฏในฐานะผู้นำผู้ชั่วร้ายของรัฐบาลนั้น
- ข้อมูลกุญแจสาธารณะถูกรวบรวมจากบันทึกย่อหลายปีหลังการรีเวิร์สเอนจิเนียริง จึงมี ความเป็นไปได้ที่จะมีข้อผิดพลาด
- raw public key modulus เป็นค่าที่ได้จากดีบักเกอร์ และจากการลองผิดลองถูกสรุปได้ว่าเป็นรูปแบบ little endian
- เมื่อเขียนในรูปแบบ big endian จะได้
e = 3 - โมดูลัสมีขนาด 760 บิต
- เมื่อเขียนในรูปแบบ big endian จะได้
- กุญแจสาธารณะถูกนำเสนอในรูปแบบคีย์ PGP ด้วย
pub 760/13629D8D 1998/10/25 Director, NSA <dirnsa@nsa.gov>- user ID นี้ถูกสร้างขึ้นโดยพลการ และไม่ใช่คีย์ที่ลงลายมือชื่อด้วยตนเอง
- ในเอาต์พุต
pgpacketยืนยันว่าเป็นแพ็กเก็ตกุญแจสาธารณะ RSA- Version Byte: 3
- Key Created: 25 Oct 1998 01:12:02
- Algorithm: 1 (RSA)
- Key ID:
0xA703EFD313629D8D
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
สำหรับหัวข้อนี้ ควรลองอ่านคอมเมนต์ของ Ray Ozzie (ผู้สร้าง Lotus Notes) ในกระทู้ HN ปี 2013
https://news.ycombinator.com/item?id=5846189
ก่อนซอฟต์แวร์จะออกวางจำหน่าย Ray Ozzie และ Kauffman ได้อธิบายต่อสาธารณะในงาน RSA Conference ว่าพวกเขากำลังทำอะไรอยู่ มันไม่ใช่แบ็กดอร์ลับ แต่เป็นเรื่อง การปฏิบัติตามข้อควบคุมการส่งออก ที่ทั้งอุตสาหกรรมต้องรับมือ คอมเมนต์ของ barrkel ที่อยู่ถัดลงไปไม่กี่คอมเมนต์ก็น่าอ่านเช่นกัน
https://en.m.wikipedia.org/wiki/Crypto_Wars
พูดสั้น ๆ คือ รัฐบาลสหรัฐฯ แทบจะห้ามไม่ให้ใส่การเข้ารหัสที่แข็งแกร่งลงในผลิตภัณฑ์ที่เผยแพร่ไปต่างประเทศ ผลิตภัณฑ์เชิงพาณิชย์โดยทั่วไปเข้าข่ายเกือบทั้งหมด แม้ว่าจะมีการใช้งานแบบโอเพนซอร์สของการเข้ารหัสที่แข็งแกร่งอย่าง PGP อยู่แล้วก็ตาม ทุกวันนี้จะใส่การเข้ารหัสที่ปลอดภัยแค่ไหนแล้วเผยแพร่ก็ไม่มีใครสนใจ แต่ตอนนั้นเป็นยุคที่มีโอกาสครึ่งต่อครึ่งว่ากลไกทางกฎหมายทั้งหมดของรัฐบาลสหรัฐฯ จะถูกนำมาใช้จริง เป็นช่วงเวลาที่ขัดแย้งกันแบบบ้าบอมาก
https://www.youtube.com/watch?v=vjkBAl84PJs
ถึงอย่างนั้นมันก็ไม่ได้แตกง่ายแบบเป็นเรื่องจิ๊บจ๊อยเสียทีเดียว แต่ในช่วงเวลาที่ลองรหัสผ่านได้หนึ่งครั้งกับเอกสาร Office สมัยใหม่ คุณสามารถลองรหัสผ่านได้เป็นล้าน ๆ ชุดกับรายการในไฟล์ ZIP archive
(2002)
กระทู้ก่อนหน้าที่มี Lotus Notes อยู่ในชื่อเรื่อง:
4 ปีก่อน
https://news.ycombinator.com/item?id=21859581
8 ปีก่อน
https://news.ycombinator.com/item?id=9291404
10 ปีก่อน
https://news.ycombinator.com/item?id=5846189
NSA's Backdoor Key from Lotus Notes (2002) - https://news.ycombinator.com/item?id=21859581 - ธันวาคม 2019 (87 คอมเมนต์)
NSA's Backdoor Key from Lotus Notes - https://news.ycombinator.com/item?id=9291404 - มีนาคม 2015 (51 คอมเมนต์)
NSA's Backdoor Key from Lotus Notes - https://news.ycombinator.com/item?id=5846189 - มิถุนายน 2013 (85 คอมเมนต์)
NOBUS เก่า ๆ อันแสนดี ความผิดพลาดที่น่าสนใจกว่าของ NSA:
https://en.wikipedia.org/wiki/Clipper_chip
https://en.wikipedia.org/wiki/Dual_EC_DRBG
ส่วน FBI ไม่ได้แคร์มากนักว่าผู้คนจะรู้หรือไม่ เพราะอาชญากรที่พวกเขาเล็งไว้ทำ OPSEC ได้ไม่ดีอยู่แล้ว
น่าแปลกที่คนของ NSA มีการไตร่ตรองตัวเองพอจะมองออกว่านี่เป็นพฤติกรรมแบบ Big Brother แต่กลับไม่ตระหนักว่าทำไมมันถึงไม่ดี
แต่ MiniTruth นี่สิ… โห น่าตกใจจริง ๆ
ตามบริบทแล้ว Ministry of Truth ในนิยาย 1984 คือหน่วยงานที่รับผิดชอบโฆษณาชวนเชื่อ และทั้งสังคมถูกแช่อยู่ในโฆษณาชวนเชื่อนั้น ทุกสิ่งในสังคมที่พวกเขาอาศัยอยู่ล้วนเป็นเรื่องโกหก สิ่งนี้ทำลายความหวังสุดท้ายที่ว่าพวกเขาอาจมีเจตนาดีไปจนหมด ตัวอย่างล่าสุดที่ผมนึกออกซึ่งแสดงให้เห็นว่าพวกเขาดูหมิ่นคนที่อ้างว่ารับใช้อย่างเหยียดหยันแค่ไหน และสะเพร่าเพียงใด คือเมื่อมีการเปิดเผยว่าชื่อห้องแชตภายในของ FTX คือ ‘Wirefraud’
เดิมทีแบ็กดอร์ไม่ได้อยู่ใน ตัวอย่างโค้ด ที่ NSA ให้กับบริษัทที่อยากใช้เทคโนโลยีเข้ารหัสหรอกหรือ? ผมจำได้ทำนองว่าเขาให้ seed ตัวอย่างอะไรสักอย่าง แล้วบริษัทส่วนใหญ่ก็แค่คัดลอก/วางมันแทนที่จะสร้างจำนวนเฉพาะของตัวเอง ทำให้ NSA แกะได้ง่ายมาก
ความทรงจำเลือน ๆ และหาต้นฉบับยากจัง
สงสัยว่าในปี 1998 การหาไพรเวตคีย์ของ คีย์สาธารณะ RSA 760 บิต ด้วยการลองแบบ brute force จะยากแค่ไหน มีใครรู้บ้างไหม?
ต่อมาในปี 2019 มีการแยกตัวประกอบคีย์ 795 บิต และว่ากันว่าเวลา CPU อยู่ที่ “ประมาณ 900 core-year บน CPU Intel Xeon Gold 6130 2.1GHz” เมื่อเทียบกับการแยกตัวประกอบ RSA-768 ผู้เขียนประเมินว่าอัลกอริทึมที่ดีขึ้นช่วยเร่งการคำนวณได้ 3–4 เท่า และคอมพิวเตอร์ที่เร็วขึ้นช่วยเร่งได้ 1.25–1.67 เท่า
ดังนั้นถ้าถือว่าอัลกอริทึมที่ปรับปรุงแล้วใช้กับตัวเลขที่เล็กกว่านี้ได้ด้วย คนที่รู้วิธีจัดการก็น่าจะทำได้ภายในไม่กี่เดือนด้วยเครื่องสมัยใหม่หลายสิบเครื่อง ถึงอย่างนั้น การแยกตัวประกอบจำนวนขนาดใหญ่ก็ดูยากกว่าการรัน CADO-NFS แล้วชี้ไปที่ตัวเลขกับคลัสเตอร์มาก
ตัวอย่างเช่น ถ้าใช้ค่าจากบทความการแยกตัวประกอบฉบับที่สองที่ว่า “การคำนวณ 795 บิตควรยากกว่าการคำนวณ 768 บิต 2.25 เท่า” ก็อาจมองได้ว่าการเจาะคีย์ที่เล็กกว่าด้วยซอฟต์แวร์สมัยใหม่ต้องใช้ CPU ระดับ Xeon ราว 900/2.25 = 400 core-year ซึ่ง CPU รุ่นนี้ก็เป็นรุ่นอายุ 6 ปีแล้ว ถ้ามีเซิร์ฟเวอร์ 64 คอร์สมรรถนะเทียบเท่า 24 เครื่อง ก็น่าจะใช้เวลามากกว่า 3 เดือนเล็กน้อย อาจหนักเกินไปสำหรับทำเล่นเป็นงานอดิเรก แต่ถ้าเป็นบริษัทที่มีผลประโยชน์ทางการเงินพอสมควร ก็ทำได้มากพอ หากมีบุคลากรที่เข้าใจและทำซ้ำงานนี้ได้
https://crypto.stackexchange.com/a/1982
ตอนนี้มี คลาวด์ แล้ว เรื่องพวกนี้ก็ไม่จำเป็นอีกต่อไปทั้งหมด เพราะกฎหมายเกี่ยวกับข้อมูลที่จัดเก็บทำให้อีเมลทุกฉบับที่เกิน 6 เดือนกลายเป็นสิ่งที่แตะต้องได้ตามใจ
เกี่ยวข้อง: https://github.com/goshacmd/nsa_panel