0Pricing
Cryptology Academy · บทเรียน

ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205)

เปรียบเทียบลายเซ็นแบบแลตทิซ CRYSTALS-Dilithium กับลายเซ็นแบบแฮช SPHINCS+ รวมถึงข้อแลกเปลี่ยนของแต่ละแบบ

ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205) เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

จุดกำเนิดของ ML-DSA

ML-DSA (อัลกอริทึมลายเซ็นดิจิทัลที่อิงโครงสร้างแลตทิซของโมดูล) ซึ่งได้รับการกำหนดเป็นมาตรฐาน FIPS 204 พัฒนาต่อยอดจาก CRYSTALS-Dilithium Dilithium ออกแบบโดย Ducas, Kiltz, Lepoint, Lyubashevsky, Schwabe, Seiler และ Stehle และส่งให้ NIST พิจารณาในปี 2017 อัลกอริทึมนี้ใช้กรอบงาน Fiat-Shamir แบบมีการยกเลิกที่ประยุกต์กับ Module-LWE ทำให้ได้โครงร่างลายเซ็นที่ใช้งานได้จริงและมีการพิสูจน์ความปลอดภัยที่แข็งแกร่ง

Fiat-Shamir แบบมีการยกเลิก

การแปลง Fiat-Shamir แบบดั้งเดิมจะเปลี่ยนโพรโทคอลพิสูจน์ตัวตนแบบโต้ตอบให้เป็นลายเซ็น สำหรับโครงร่างแบบแลตทิซ การนำไปใช้โดยตรงจะทำให้ข้อมูลเกี่ยวกับกุญแจลับรั่วไหลผ่านเวกเตอร์การตอบกลับ เทคนิค «แบบมีการยกเลิก» ของ Lyubashevsky เพิ่มการสุ่มตัวอย่างแบบปฏิเสธ โดยผู้ลงนามจะตรวจสอบว่าการตอบกลับจะเปิดเผยข้อมูลหรือไม่ และยกเลิกพร้อมลองใหม่หากพบว่าอาจเปิดเผยข้อมูล เทคนิคนี้เพิ่มค่าใช้จ่ายในการลงนามเล็กน้อย แต่จำเป็นต่อความปลอดภัย

กระบวนการลงนามของ ML-DSA

ในการลงนาม ML-DSA จะสุ่มเวกเตอร์ปกปิด y จากการแจกแจงสม่ำเสมอ คำนวณค่าผูกมัด w = Ay แฮช (message, w) เพื่อสร้างพหุนามท้าทาย c และคำนวณคำตอบ z = y + cs การสุ่มตัวอย่างแบบปฏิเสธจะตรวจสอบว่า z เปิดเผยข้อมูลเกี่ยวกับ s หรือไม่ หากผ่านการตรวจสอบ ลายเซ็นจะเป็น (c, z) พร้อมคำใบ้สำหรับการตรวจสอบที่มีประสิทธิภาพ หากไม่ผ่าน กระบวนการจะทำซ้ำ

ชุดพารามิเตอร์ของ ML-DSA

ML-DSA กำหนดชุดพารามิเตอร์สามชุด ได้แก่ ML-DSA-44 (ระดับความปลอดภัย NIST ระดับ 2 ประมาณ 128 บิต), ML-DSA-65 (ระดับ 3 ประมาณ 192 บิต) และ ML-DSA-87 (ระดับ 5 ประมาณ 256 บิต) ตัวเลขเหล่านี้หมายถึงอันดับของโมดูลในโครงร่าง ขนาดกุญแจสาธารณะคือ 1312, 1952 และ 2592 ไบต์ตามลำดับ ลายเซ็น ML-DSA-65 มีขนาด 3293 ไบต์ เทียบกับ 64 ไบต์สำหรับ Ed25519 ที่ความปลอดภัย 128 บิต

ข้อแลกเปลี่ยนด้านขนาดลายเซ็นของ ML-DSA

ข้อเสียเปรียบที่สำคัญที่สุดของ ML-DSA เมื่อเทียบกับ ECDSA หรือ EdDSA คือขนาดลายเซ็น ลายเซ็น ML-DSA-65 มีขนาด 3293 ไบต์ เทียบกับ 64 ไบต์สำหรับ Ed25519 สำหรับโพรโทคอลที่ส่งลายเซ็นจำนวนมาก (เช่น สายโซ่ใบรับรอง TLS และการลงนามรหัส) ขนาดที่เพิ่มขึ้นนี้ทำให้ต้องใช้ข้อมูลในการส่งมากขึ้น อย่างไรก็ตาม การลงนามและการตรวจสอบของ ML-DSA ทำได้รวดเร็วมาก (ใกล้เคียงกับหรือเร็วกว่า ECDSA) ดังนั้นข้อแลกเปลี่ยนหลักจึงอยู่ที่ต้นทุนการสื่อสาร

จุดกำเนิดและการออกแบบ SLH-DSA

SLH-DSA (อัลกอริทึมลายเซ็นดิจิทัลแบบไร้สถานะที่อิงแฮช) ซึ่งได้รับการกำหนดเป็นมาตรฐาน FIPS 205 พัฒนาต่อยอดจาก SPHINCS+ ต่างจากโครงร่างแบบแลตทิซ ความปลอดภัยของ SLH-DSA อาศัยเพียงความต้านทานการชนกันและความต้านทานต่อการหาอินพุตต้นแบบที่สองของฟังก์ชันแฮชพื้นฐาน (SHA-256 หรือ SHAKE-256) ทำให้ SLH-DSA มีแนวทางด้านความปลอดภัยที่ระมัดระวังอย่างยิ่ง และยังคงปลอดภัยแม้ข้อสมมติฐานเกี่ยวกับแลตทิซจะถูกทำลาย

ลายเซ็นใช้ครั้งเดียวของ WOTS+

SLH-DSA สร้างบน WOTS+ (ลายเซ็นใช้ครั้งเดียวแบบ Winternitz) ซึ่งเป็นโครงร่างที่อิงแฮช โดยกุญแจส่วนตัวเป็นชุดสตริงสุ่ม และกุญแจสาธารณะได้มาจากการคำนวณแฮชของแต่ละสตริงซ้ำหลายครั้ง การลงนามจะคำนวณแฮชบางส่วนโดยอิงจากบิตของข้อความ WOTS+ สามารถใช้อย่างปลอดภัยได้เพียงครั้งเดียวต่อคู่กุญแจ การใช้ซ้ำสองครั้งจะทำให้ข้อมูลรั่วไหล SLH-DSA สร้างความสามารถในการลงนามหลายครั้งบนพื้นฐานของ WOTS+ ผ่านโครงสร้างต้นไม้

ต้นไม้ Merkle สำหรับการลงนามหลายครั้ง

SLH-DSA ใช้ไฮเปอร์ทรี ซึ่งเป็นต้นไม้ของต้นไม้ Merkle ใบแต่ละใบคือกุญแจสาธารณะของอินสแตนซ์ WOTS+ ส่วนรากคือกุญแจสาธารณะของ SLH-DSA ลายเซ็นประกอบด้วยลายเซ็น WOTS+ สำหรับข้อความและเส้นทางยืนยันตัวตนจากใบไปยังราก โครงสร้างไฮเปอร์ทรีช่วยให้สามารถสร้างลายเซ็นจำนวนมากจากคู่กุญแจเดียวได้ โดยใช้ใบ WOTS+ ที่แตกต่างกัน

ชุดพารามิเตอร์ของ SLH-DSA

SLH-DSA มีชุดพารามิเตอร์ 12 ชุด ซึ่งผสมผสานฟังก์ชันแฮช (SHA-256 หรือ SHAKE-256) ระดับความปลอดภัย (128s/128f, 192s/192f, 256s/256f) และการปรับให้เหมาะสม (s = ลายเซ็นขนาดเล็ก, f = การลงนามที่รวดเร็ว) รูปแบบ 128f มีลายเซ็นขนาด 7856 ไบต์และลงนามได้รวดเร็ว ส่วน 128s มีขนาด 7856 ไบต์เท่ากันแต่ลงนามช้ากว่า ทุกชุดมีขนาดใหญ่กว่า ML-DSA มาก แต่ใช้ข้อสมมติฐานด้านความปลอดภัยที่แข็งแกร่งที่สุดเท่าที่เป็นไปได้

ควรเลือก SLH-DSA หรือ ML-DSA เมื่อใด

ควรเลือก ML-DSA เมื่อประสิทธิภาพและแบนด์วิดท์มีความสำคัญ และมีความเชื่อมั่นในข้อสมมติฐานเกี่ยวกับแลตทิซ ควรเลือก SLH-DSA สำหรับการใช้งานที่ต้องการแนวทางด้านความปลอดภัยแบบระมัดระวังอย่างยิ่ง โดยเชื่อถือเฉพาะความปลอดภัยของฟังก์ชันแฮช หรือสำหรับการเตรียมพร้อมรับอนาคตจากความเป็นไปได้ที่ข้อสมมติฐานเกี่ยวกับแลตทิซจะถูกทำลาย หน่วยงานออกใบรับรองและระบบของรัฐบาลที่ลงนามไม่บ่อยแต่ต้องการการรับประกันสูงสุดอาจเลือก SLH-DSA ขณะที่เซิร์ฟเวอร์ TLS ที่ลงนามบ่อยจะเลือก ML-DSA

FN-DSA (FALCON): ลายเซ็นแบบแลตทิซอีกแบบหนึ่ง

FN-DSA (FIPS 206 ซึ่งอิงจาก FALCON) ให้ลายเซ็นขนาดเล็กกว่า ML-DSA (897 ไบต์สำหรับ FALCON-512 ที่ความปลอดภัย 128 บิต) โดยใช้แลตทิซ NTRU และการสุ่มตัวอย่างแบบเกาส์ อย่างไรก็ตาม FALCON ต้องมีการนำไปใช้แบบใช้เวลาเท่ากันทุกกรณีอย่างระมัดระวัง เพื่อป้องกันการโจมตีช่องทางข้างเคียงจากตัวสุ่มตัวอย่างแบบเกาส์ คาดว่า FIPS 206 จะได้รับการกำหนดเป็นมาตรฐานหลัง FIPS 203-205 และจะเป็นตัวเลือกที่มีประสิทธิภาพสูงสำหรับสภาพแวดล้อมที่มีทรัพยากรจำกัด

แบบทดสอบ ML-DSA และ SLH-DSA

ข้อได้เปรียบหลักด้านความปลอดภัยของ SLH-DSA เหนือ ML-DSA คืออะไร

สรุป ML-DSA และ SLH-DSA

ML-DSA (FIPS 204) ใช้ Fiat-Shamir แบบมีการยกเลิกบน Module-LWE และให้การลงนามที่รวดเร็วพร้อมลายเซ็นขนาด 3 KB (ที่ความปลอดภัย 192 บิต) SLH-DSA (FIPS 205) ใช้ต้นไม้ Merkle ที่อิงแฮช (WOTS+) โดยอาศัยเพียงความปลอดภัยของฟังก์ชันแฮช และมีลายเซ็นขนาด 7-50 KB ML-DSA เหมาะสำหรับแอปพลิเคชันที่ให้ความสำคัญกับประสิทธิภาพ ส่วน SLH-DSA เหมาะสำหรับการใช้งานที่ต้องการแนวทางแบบระมัดระวังสูงสุด FN-DSA (FALCON, FIPS 206) จะเพิ่มตัวเลือกลายเซ็นแบบแลตทิซที่มีขนาดเล็กลง

คำถามที่พบบ่อย

บทเรียน “ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205)”

เปรียบเทียบลายเซ็นแบบแลตทิซ CRYSTALS-Dilithium กับลายเซ็นแบบแฮช SPHINCS+ รวมถึงข้อแลกเปลี่ยนของแต่ละแบบ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การแข่งขัน NIST PQC: กระบวนการและเกณฑ์
  2. ML-KEM (FIPS 203): มาตรฐาน CRYSTALS-Kyber
  3. ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205)
  4. การวางแผนย้ายไปใช้มาตรฐานหลังยุคควอนตัม
← กลับไปที่ Cryptology Academy