Cryptology Academy · บทเรียน

ลายมือชื่อ CRYSTALS-Dilithium และ Falcon

เปรียบเทียบรูปแบบลายมือชื่อดิจิทัลที่ใช้แลตทิซและได้รับการกำหนดมาตรฐานโดย NIST

บทเรียน 3 จาก 413 ขั้นตอน

ลายมือชื่อ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. อธิบายอัลกอริทึมของ Shor และ Grover
  2. CRYSTALS-Kyber: KEM ที่ใช้แลตทิซ
  3. ลายมือชื่อ CRYSTALS-Dilithium และ Falcon
  4. การย้ายสู่ PQC: แนวทางแบบผสม
← กลับไปที่ Cryptology Academy