ลายเซ็นดิจิทัล

Primitive ลายเซ็นดิจิทัลช่วยให้คุณยืนยันได้ว่าไม่มีใครดัดแปลง ข้อมูลของคุณ โดยจะให้ความถูกต้องและความสมบูรณ์ของข้อมูลที่ลงนาม แต่จะไม่ให้ความลับ การเข้ารหัสนี้เป็นแบบอสมมาตร ซึ่งหมายความว่าใช้คู่คีย์ (คีย์สาธารณะและคีย์ส่วนตัว)

Primitive ลายเซ็นดิจิทัลมีคุณสมบัติดังนี้

  • ความถูกต้อง: คุณจะสร้างลายเซ็นที่ PublicKeyVerify.Verify(signature, message) ตรวจสอบไม่ได้ เว้นแต่คุณจะมี คีย์ส่วนตัว
  • อสมมาตร: การสร้างลายเซ็นใช้คีย์ที่แตกต่างจากการยืนยัน ซึ่งช่วยให้คุณเผยแพร่คีย์สาธารณะเพื่อยืนยันลายเซ็นไปยังบุคคลที่ สร้างลายเซ็นเองไม่ได้

หากไม่ต้องการความไม่สมมาตร ให้ลองใช้ Primitive MAC ที่ง่ายกว่าและมีประสิทธิภาพมากกว่าแทน

ฟังก์ชันของลายเซ็นดิจิทัลจะแสดงใน Tink เป็นคู่ของ Primitive ดังนี้

  • PublicKeySign สำหรับการลงนามข้อมูล
  • PublicKeyVerify สำหรับการยืนยันลายเซ็น

เลือกประเภทคีย์

เราขอแนะนำให้ใช้ ML_DSA_65 หรือ ECDSA_P256 สำหรับ Use Case ส่วนใหญ่ แต่ก็มีตัวเลือกอื่นๆ ด้วย โดยทั่วไปแล้ว ข้อต่อไปนี้เป็นจริง

สำหรับอัลกอริทึมที่ไม่ใช่การเข้ารหัสเพื่อรักษาความปลอดภัยจากคอมพิวเตอร์ควอนตัมต่อไปนี้ คุณจะต้องเปลี่ยนประเภทคีย์ในอนาคตอันใกล้นี้

  • ECDSA_P256 เป็นตัวเลือกที่ใช้กันอย่างแพร่หลายมากที่สุดและเป็นค่าเริ่มต้นที่เหมาะสม โปรดทราบ ว่าลายเซ็น ECDSA นั้นดัดแปลงได้
  • ED25519 สร้างลายเซ็นที่กำหนดไว้ล่วงหน้าและให้ประสิทธิภาพที่ดีกว่า ECDSA_P256
  • RSA_SSA_PKCS1_3072_SHA256_F4 สร้างลายเซ็นที่กำหนดไว้ล่วงหน้าและให้ ประสิทธิภาพการยืนยันที่ดีที่สุด (แต่การลงนามจะช้ากว่า ECDSA_P256 หรือ ED25519 มาก)

การรับประกันความปลอดภัยขั้นต่ำ

  • ข้อมูลที่จะลงนามมีความยาวเท่าใดก็ได้
  • ระดับความปลอดภัย 128 บิตเทียบกับการโจมตีแบบเลือกข้อความที่ปรับเปลี่ยนได้สำหรับรูปแบบที่อิงตามเส้นโค้งวงรี
  • ระดับความปลอดภัย 112 บิตเทียบกับการโจมตีแบบเลือกข้อความที่ดัดแปลงได้สำหรับรูปแบบที่อิงตาม RSA (อนุญาตคีย์ 2048 บิต)

ความยืดหยุ่น

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

ตัวอย่างกรณีการใช้งาน

ดูที่หัวข้อฉันต้องการลงนามข้อมูลแบบดิจิทัล