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