ลายมือชื่อ CRYSTALS-Dilithium และ Falcon
เปรียบเทียบรูปแบบลายมือชื่อดิจิทัลที่ใช้แลตทิซและได้รับการกำหนดมาตรฐานโดย NIST
ลายมือชื่อ CRYSTALS-Dilithium และ Falcon เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
ความจำเป็นของลายเซ็นหลังควอนตัม
ลายเซ็น RSA และ ECDSA ถูกทำลายได้ด้วยอัลกอริทึมของ Shor ลายเซ็นหลังควอนตัมต้องเข้ามาแทนที่ลายเซ็นเหล่านี้สำหรับใบรับรอง TLS, การเซ็นโค้ด, การเซ็นอีเมล (S/MIME, PGP) และการยืนยันความถูกต้องของการอัปเดตซอฟต์แวร์ NIST ได้กำหนดมาตรฐานรูปแบบที่อิงโครงข่ายไว้สองรูปแบบ ได้แก่ ML-DSA และ FN-DSA
CRYSTALS-Dilithium (ML-DSA)
Dilithium อิงความยากของ Module-LWE และ Module-SIS (คำตอบจำนวนเต็มสั้น) โดยมีการพิสูจน์ความปลอดภัยใน QROM (แบบจำลองออราเคิลสุ่มเชิงควอนตัม) มีสามรูปแบบ ได้แก่ Dilithium2 (ความปลอดภัยประมาณ 128 บิต), Dilithium3 (ประมาณ 192 บิต) และ Dilithium5 (ประมาณ 256 บิต) เส้นทางการเซ็นเรียบง่ายและไม่ต้องใช้การสุ่มตัวอย่างแบบปฏิเสธ
การเซ็นด้วย Dilithium
กุญแจส่วนตัว: เมทริกซ์ลับ s1, s2 กุญแจสาธารณะ: t = As1 + s2 การเซ็น: สุ่ม y คำนวณ w = Ay คำนวณค่าท้าทาย c = H(mu || w1) โดยที่ w1 = HighBits(w) คำนวณ z = y + cs1 หาก ||z|| หรือ ||r0|| มีขนาดใหญ่เกินไป ให้ปฏิเสธและลองใหม่ ผลลัพธ์คือ (z, c, hint)
การตรวจสอบลายเซ็น Dilithium
ตรวจสอบ (z, c, hint): ตรวจสอบว่า ||z|| มีขนาดเล็ก คำนวณ w' = Az - ct ใช้คำใบ้เพื่อกู้คืน w1 แล้วตรวจสอบว่า c == H(mu || w1) คำใบ้คือบิตจำนวนเล็กน้อยจาก MakeHint() การปฏิเสธช่วยให้มั่นใจว่า z จะไม่เปิดเผย s1 โดยข้อโต้แย้งด้านความปลอดภัยคือข้อโต้แย้งแบบ "ยุติแล้วจึงเป็นแบบสม่ำเสมอ"
ขนาดกุญแจและลายเซ็นของ Dilithium
ML-DSA-65 (Dilithium3, ความปลอดภัย 192 บิต): กุญแจสาธารณะ 1952 ไบต์, กุญแจส่วนตัว 4000 ไบต์, ลายเซ็น 3293 ไบต์ เมื่อเปรียบเทียบกับ ECDSA-P256 ซึ่งมีกุญแจสาธารณะ 64 ไบต์และลายเซ็น 64 ไบต์ ลายเซ็นของ Dilithium มีขนาดใหญ่กว่าประมาณ 40-50 เท่า แต่ปลอดภัยต่อควอนตัม
Falcon (FN-DSA)
Falcon อิงโครงข่าย NTRU และใช้ตัวสุ่มตัวอย่างแบบเกาส์เซียนเหนือโครงข่าย NTRU ลายเซ็นมีขนาดเล็กกว่า Dilithium อย่างมาก แต่การเซ็นต้องใช้ตัวสุ่มตัวอย่างแบบเกาส์เซียนที่ใช้เลขทศนิยม จึงนำไปใช้งานให้มีเวลาคงที่ได้ยากกว่า และต้องเขียนโค้ดอย่างปลอดภัยซับซ้อนกว่า
ขนาดกุญแจและลายเซ็นของ Falcon
Falcon-512 (ความปลอดภัย 128 บิต): กุญแจสาธารณะ 897 ไบต์, ลายเซ็น 666 ไบต์ ซึ่งเล็กกว่า Dilithium มาก ข้อแลกเปลี่ยนคือ Falcon นำไปใช้งานให้ปลอดภัยได้ยากกว่า เนื่องจากการสุ่มตัวอย่างแบบเกาส์เซียนมีความเสี่ยงต่อการโจมตีจากเวลา เหมาะสำหรับสภาพแวดล้อมที่มีแบนด์วิดท์จำกัด แต่ต้องนำไปใช้งานอย่างระมัดระวัง
SPHINCS+ (SLH-DSA)
SPHINCS+ เป็นรูปแบบลายเซ็นอิงแฮช ซึ่งเป็นตัวเลือกแบบอนุรักษนิยมและไม่ตั้งอยู่บนสมมติฐานพีชคณิตเชิงโครงสร้าง ความปลอดภัยอาศัยเพียงความปลอดภัยของฟังก์ชันแฮช ขนาดลายเซ็นประมาณ 8-50 KB ซึ่งใหญ่ และการเซ็นทำได้ช้า เหมาะสำหรับกรณีที่ความน่าเชื่อถือระยะยาวมีความสำคัญมากกว่าประสิทธิภาพ
การเลือกระหว่างรูปแบบต่าง ๆ
ML-DSA (Dilithium): ใช้งานทั่วไป นำไปใช้งานได้ง่าย เหมาะสำหรับใบรับรอง TLS และการเซ็นโค้ด FN-DSA (Falcon): เหมาะสำหรับสภาพแวดล้อมที่มีแบนด์วิดท์จำกัด (อินเทอร์เน็ตของสรรพสิ่ง, LPWAN) SLH-DSA (SPHINCS+): อนุรักษนิยมอย่างยิ่ง เหมาะสำหรับรากฐานที่ต้องใช้งานเป็นเวลานาน (กุญแจ CA แบบออฟไลน์, รากความน่าเชื่อถือของซอฟต์แวร์)
ข้อกังวลในการนำไปใช้งาน
Dilithium: การสุ่มตัวอย่างแบบปฏิเสธอาจทำให้เวลาของแขนงการทำงานรั่วไหล ควรใช้การเปรียบเทียบที่ใช้เวลาคงที่ Falcon: ตัวสุ่มตัวอย่างแบบเกาส์เซียนใช้เลขทศนิยม ควรตรวจสอบให้ FP มีความแน่นอนเหมือนกันในการคำนวณ ทั้งสองรูปแบบ: หลีกเลี่ยงช่องทางข้างเคียงในเลขคณิตพหุนาม ควรใช้การนำไปใช้งานอ้างอิงจากแพ็กเกจเอกสารส่งของ NIST
มาตรฐาน FIPS
NIST FIPS 204: ML-DSA (Dilithium) NIST FIPS 205: SLH-DSA (SPHINCS+) NIST FIPS 206: FN-DSA (Falcon) ทั้งหมดเผยแพร่ในเดือนสิงหาคม 2024 ไลบรารีต่าง ๆ ได้แก่ OpenSSL 3.x, BoringSSL และ liboqs (โครงการ Open Quantum Safe) รองรับทั้งสามรูปแบบ
ตรวจสอบความเข้าใจ
ข้อได้เปรียบหลักของ Falcon เหนือ Dilithium คืออะไร
สรุปทบทวน
ML-DSA (Dilithium): อิงโครงข่าย เรียบง่าย ลายเซ็นประมาณ 3 KB FN-DSA (Falcon): อิง NTRU ลายเซ็นประมาณ 700 ไบต์ นำไปใช้งานได้ซับซ้อน SLH-DSA (SPHINCS+): อิงแฮช อนุรักษนิยม และมีขนาดใหญ่ ทั้งหมดได้รับการกำหนดมาตรฐานใน FIPS 204/205/206 บทถัดไป: การย้ายไปใช้ PQC ด้วยแนวทางแบบผสม
เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 67
- บทเรียน
- 261
คำถามที่พบบ่อย
บทเรียน “ลายมือชื่อ CRYSTALS-Dilithium และ Falcon” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ลายมือชื่อ CRYSTALS-Dilithium และ Falcon” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ลายมือชื่อ CRYSTALS-Dilithium และ Falcon”
เปรียบเทียบรูปแบบลายมือชื่อดิจิทัลที่ใช้แลตทิซและได้รับการกำหนดมาตรฐานโดย NIST คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ลายมือชื่อ CRYSTALS-Dilithium และ Falcon” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อธิบายอัลกอริทึมของ Shor และ Grover
- CRYSTALS-Kyber: KEM ที่ใช้แลตทิซ
- ลายมือชื่อ CRYSTALS-Dilithium และ Falcon
- การย้ายสู่ PQC: แนวทางแบบผสม