Primitive ลายเซ็นดิจิทัลช่วยให้คุณยืนยันได้ว่าไม่มีใครดัดแปลง ข้อมูลของคุณ โดยจะให้ความถูกต้องและความสมบูรณ์ของข้อมูลที่ลงนาม แต่จะไม่ให้ความลับ ซึ่งเป็นแบบอสมมาตร หมายความว่าใช้คู่คีย์ (คีย์สาธารณะและคีย์ส่วนตัว)
Primitive ลายเซ็นดิจิทัลมีคุณสมบัติดังต่อไปนี้
- ความถูกต้อง: คุณจะสร้างลายเซ็นที่
PublicKeyVerify.Verify(signature, message)ตรวจสอบไม่ได้ เว้นแต่คุณจะมี คีย์ส่วนตัว - อสมมาตร: การสร้างลายเซ็นจะใช้คีย์ที่แตกต่างจากการยืนยัน ซึ่งจะช่วยให้คุณเผยแพร่คีย์สาธารณะเพื่อยืนยันลายเซ็นไปยังบุคคลที่ สร้างลายเซ็นเองไม่ได้
หากไม่ต้องการความไม่สมมาตร ให้ลองใช้ Primitive MAC ที่ง่ายกว่าและมีประสิทธิภาพมากกว่าแทน
ฟังก์ชันการทำงานของลายเซ็นดิจิทัลจะแสดงใน Tink เป็นคู่ของ Primitive ดังนี้
- PublicKeySign สำหรับการลงนามข้อมูล
- PublicKeyVerify สำหรับการยืนยันลายเซ็น
หากคีย์ส่วนตัวอยู่ในที่ที่ส่งข้อความได้ยาก เช่น HSM หรือ KMS โปรดดู Prehash และ SignPrehash ซึ่งจะแบ่งการลงนามออกเป็น ขั้นตอนการแฮชคีย์สาธารณะเท่านั้นและขั้นตอนการลงนามคีย์ส่วนตัวเท่านั้น
เลือกประเภทคีย์
เราขอแนะนำให้ใช้ ML_DSA_44 หรือ ECDSA_P256 สำหรับ Use Case ส่วนใหญ่ แต่ก็มีตัวเลือกอื่นๆ ให้เลือกใช้ด้วย โดยทั่วไปแล้ว ข้อความต่อไปนี้เป็นจริง
- ML-DSA-44 มีความปลอดภัยต่อควอนตัม เรากำลังดำเนินการอย่างต่อเนื่องและตอนนี้เราขอแนะนำให้ใช้สำหรับภาษาโปรแกรมที่พร้อมใช้งาน
สำหรับอัลกอริทึมที่ไม่ใช่การเข้ารหัสเพื่อรักษาความปลอดภัยจากคอมพิวเตอร์ควอนตัมต่อไปนี้ คุณจะต้องเปลี่ยนประเภทคีย์ในอนาคตอันใกล้นี้
- ECDSA_P256 เป็นตัวเลือกที่ใช้กันอย่างแพร่หลายมากที่สุดและเป็นค่าเริ่มต้นที่เหมาะสม โปรดทราบว่าลายเซ็น ECDSA แก้ไขได้
- ED25519 สร้างลายเซ็นที่กำหนดไว้ล่วงหน้าและให้ประสิทธิภาพที่ดีกว่า ECDSA_P256
- RSA_SSA_PKCS1_3072_SHA256_F4 สร้างลายเซ็นที่แน่นอนและให้ ประสิทธิภาพการยืนยันที่ดีที่สุด (แต่การลงนามจะช้ากว่า ECDSA_P256 หรือ ED25519 มาก)
การรับประกันความปลอดภัยขั้นต่ำ
- ข้อมูลที่จะลงนามมีความยาวเท่าใดก็ได้
- ระดับการรักษาความปลอดภัย 128 บิตต่อการโจมตีแบบเลือกข้อความที่ดัดแปลงได้สำหรับรูปแบบที่อิงตามเส้นโค้งวงรี
- ระดับการรักษาความปลอดภัย 112 บิตเทียบกับการโจมตีแบบเลือกข้อความที่ปรับเปลี่ยนได้สำหรับรูปแบบที่อิงตาม RSA (อนุญาตคีย์ 2048 บิต)
ความยืดหยุ่น
รูปแบบลายเซ็นจะดัดแปลงได้หากผู้โจมตีสร้างลายเซ็นที่ถูกต้องอื่นสำหรับข้อความที่ลงนามแล้วได้ แม้ว่ากรณีนี้จะไม่ใช่ปัญหาสำหรับสถานการณ์ส่วนใหญ่ แต่ในบางกรณี โปรแกรมเมอร์จะถือว่าลายเซ็นที่ถูกต้องนั้นไม่ซ้ำกันโดยปริยาย ซึ่งอาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
ตัวอย่างกรณีการใช้งาน
ดูฉันต้องการลงนามข้อมูลแบบดิจิทัล