นักวิจัยจากมหาวิทยาลัย Masaryk เปิดเผยข้อมูล สำคัญ เกี่ยวกับช่องโหว่ใน ต่างๆ iการใช้อัลกอริธึมการสร้างลายเซ็นดิจิทัล ECDSA / EdDSA ที่อนุญาตให้กู้คืนค่าของคีย์ส่วนตัวจากการวิเคราะห์การรั่วไหลของข้อมูลในแต่ละบิตที่ปรากฏขึ้นเมื่อใช้วิธีการวิเคราะห์ผ่านช่องทางของบุคคลที่สาม ช่องโหว่นี้มีชื่อรหัสว่า Minerva
โครงการที่มีชื่อเสียงที่สุด ที่มีผลต่อ วิธีการโจมตีที่เสนอคือ OpenJDK, ออราเคิล JDK (CVE-2019-2894) และห้องสมุด libgcrypt (CVE-2019-13627) ที่ใช้ใน GnuPG ปัญหาคือ ยังอ่อนแอสำหรับห้องสมุด MatrixSSL, Crypto ++, wolfCrypt, รูปไข่, jsrsasign, Python-ECDSA, ruby_ecdsa, fastecdsa และสมาร์ทการ์ดบางตัว Athena IDProtect, TecSec Armored Card, SafeNet eToken 4300, S / A IDflex V. ที่ถูกต้อง
นอกเหนือจากช่องโหว่ที่กล่าวถึงในขณะนี้ยังไม่ได้รับผลกระทบ OpenSSL, Botan, mbedTLS และ BoringSSL Mozilla NSS, LibreSSL, Nettle, BearSSL, cryptlib, OpenSSL ในโหมด FIPS Microsoft .NET crypto, Linux kernel libkcapi, Sodium และ GnuTLS ยังไม่ได้รับการทดสอบ
เราพบการใช้งานที่สูญเสียความยาวบิตของสเกลาร์ระหว่างการคูณสเกลาร์ใน ECC การรั่วไหลนี้อาจดูเหมือนเล็กน้อยเนื่องจากความยาวบิตมีข้อมูลจำนวนน้อยมากที่มีอยู่ในสเกลาร์ อย่างไรก็ตามในกรณีของการสร้างลายเซ็น ECDSA / EdDSA การกรองความยาวบิตของ nonce แบบสุ่มนั้นเพียงพอสำหรับการกู้คืนคีย์ส่วนตัวที่ใช้หลังจากสังเกตลายเซ็นสองสามร้อยถึงสองสามพันลายเซ็นในข้อความที่รู้จักเนื่องจากการประยุกต์ใช้ เทคนิคบางอย่าง
เราเชื่อว่าการ์ดก่อนหน้าทั้งหมดได้รับผลกระทบเนื่องจากใช้ส่วนประกอบ ECDSA ร่วมกัน (โมดูล FIPS 214) ซึ่งอธิบายไว้ว่า Athena OS2 ECDSA755 Component ใน Inside Secure AT90SC A1.0 (เฟิร์มแวร์) เราได้ทดสอบช่องโหว่บนการ์ด Athena IDProtect ด้วยข้อมูล CPLC และ ATR เท่านั้น
ปัญหาเกิดจากความสามารถในการกำหนดค่าบิตแต่ละตัว ระหว่างการคูณด้วยสเกลาร์ระหว่างการซื้อขาย ECC วิธีการทางอ้อมเช่นการประมาณความล่าช้าในการคำนวณจะใช้เพื่อดึงข้อมูลจากบิต
การโจมตีต้องการการเข้าถึงโฮสต์ที่ไม่มีสิทธิ์ ซึ่งลายเซ็นดิจิทัลถูกสร้างขึ้น (ไม่รวมการโจมตีระยะไกล แต่มีความซับซ้อนมากและต้องใช้ข้อมูลจำนวนมากในการวิเคราะห์จึงถือได้ว่าไม่น่าเป็นไปได้
แม้จะมีขนาดเล็กของการรั่วไหลสำหรับ ECDSA การกำหนดข้อมูลเกี่ยวกับเวกเตอร์การเริ่มต้น (nonce) เพียงไม่กี่บิตก็เพียงพอที่จะดำเนินการโจมตีเพื่อเรียกคืนคีย์ส่วนตัวที่สมบูรณ์ตามลำดับ
ตามที่ผู้เขียนวิธีการ สำหรับการกู้คืนคีย์ที่ประสบความสำเร็จการวิเคราะห์ลายเซ็นดิจิทัลที่สร้างขึ้นหลายร้อยถึงหลายพันก็เพียงพอแล้ว สำหรับข้อความที่ผู้โจมตีรู้จัก ตัวอย่างเช่นในการกำหนดคีย์ส่วนตัวที่ใช้ในสมาร์ทการ์ด Athena IDProtect โดยใช้ชิป Inside Secure AT90SC โดยใช้เส้นโค้งวงรี secp256r1 จะมีการวิเคราะห์ลายเซ็นดิจิทัล 11 ลายเซ็น เวลาโจมตีทั้งหมดคือ 30 นาที
รหัสการโจมตีและการพิสูจน์แนวคิดของเราได้รับแรงบันดาลใจจากวิธี Brumley & Tuveri
ปัญหาได้รับการแก้ไขแล้วใน libgcrypt 1.8.5 และ wolfCrypt 4.1.0โครงการอื่น ๆ ยังไม่ได้สร้างการอัปเดต นอกจากนี้ยังสามารถติดตามการแก้ไขช่องโหว่ในแพ็คเกจ libgcrypt ในการแจกแจงบนเพจเหล่านี้: debian, อูบุนตู, RHEL, Fedora, openSUSE / SUSE, FreeBSD, โค้ง.
นักวิจัยยังทดสอบการ์ดและไลบรารีอื่น ๆ ซึ่งสิ่งต่อไปนี้ไม่มีช่องโหว่:
- โอเพ่น SSL 1.1.1d
- ปราสาทเด้ง 1.58
- BoringSSL 974f4dddf
- libtomcrypt 1.18.2
- โบตั๋น 2.11.0
- ไมโครซอฟต์ ซีเอ็นจี
- mbedTLS 2.16.0
- Intel IPP-Crypto
การ์ด
- DHW ACOSJ 40K
- เฟยเทียน A22CR
- G&D SmartCafe 6.0
- G&D SmartCafe 7.0
- อินฟิเนียน CJTOP 80K INF SLJ 52GLA080AL M8.4
- Infineon SLE78 สากล JCard
- NXP JCOP31 เวอร์ชัน 2.4.1
- NXP เจคอป CJ2A081
- NXP JCOP เวอร์ชัน 2.4.2 R2
- NXP JCOP เวอร์ชัน 2.4.2 R3
- SIMOME TaiSYS ห้องนิรภัย
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการโจมตีที่ใช้และช่องโหว่ที่ตรวจพบคุณสามารถทำได้ในไฟล์ ลิงค์ต่อไปนี้ เครื่องมือที่ใช้ในการจำลองการโจมตีมีให้ดาวน์โหลด