Nguyên tắc cơ bản về Chữ ký số giúp bạn xác minh rằng không ai đã giả mạo dữ liệu của bạn. Khoá này cung cấp tính xác thực và tính toàn vẹn, nhưng không cung cấp tính bí mật cho dữ liệu đã ký. Đây là khoá bất đối xứng, tức là khoá này sử dụng một cặp khoá (khoá công khai và khoá riêng tư).
Nguyên tắc cơ bản Chữ ký số có các thuộc tính sau:
- Tính xác thực: Không thể tạo chữ ký mà
PublicKeyVerify.Verify(signature, message)xác thực, trừ phi bạn có khoá riêng tư. - Bất đối xứng: Quá trình tạo chữ ký sử dụng một khoá khác với khoá xác minh. Điều này cho phép bạn phân phối khoá công khai để xác minh chữ ký cho những bên không thể tự tạo chữ ký.
Nếu không cần tính bất đối xứng, hãy cân nhắc sử dụng nguyên tắc cơ bản MAC đơn giản và hiệu quả hơn.
Chức năng của chữ ký số được biểu thị trong Tink dưới dạng một cặp nguyên tắc cơ bản:
- PublicKeySign để ký dữ liệu
- PublicKeyVerify để xác minh chữ ký
Chọn loại khoá
Bạn nên sử dụng ML_DSA_65 hoặc ECDSA_P256 cho hầu hết các trường hợp sử dụng, nhưng có nhiều lựa chọn khác. Nói chung, những điều sau đây là đúng:
- ML-DSA-65 có khả năng bảo mật lượng tử. Chúng tôi đang tích cực triển khai tính năng này và hiện tại, tính năng này được đề xuất cho các ngôn ngữ lập trình có hỗ trợ.
Đối với các thuật toán không hậu lượng tử sau đây, bạn có thể dự kiến rằng bạn sẽ phải thay đổi loại khoá trong tương lai gần.
- ECDSA_P256 là lựa chọn được sử dụng rộng rãi nhất và là lựa chọn mặc định hợp lý. Tuy nhiên, xin lưu ý rằng chữ ký ECDSA có thể thay đổi.
- ED25519 tạo ra các chữ ký xác định và mang lại hiệu suất tốt hơn so với ECDSA_P256.
- RSA_SSA_PKCS1_3072_SHA256_F4 tạo chữ ký xác định và mang lại hiệu suất xác minh tốt nhất (nhưng việc ký chậm hơn nhiều so với ECDSA_P256 hoặc ED25519).
Đảm bảo an ninh tối thiểu
- Dữ liệu cần ký có thể có độ dài tuỳ ý
- Mức an ninh 128 bit chống lại các cuộc tấn công bằng thông báo được chọn thích ứng cho các lược đồ dựa trên đường cong elip
- Mức an ninh 112 bit chống lại các cuộc tấn công bằng thông báo được chọn thích ứng cho các lược đồ dựa trên RSA (cho phép khoá 2048 bit)
Tính dễ uốn
Một lược đồ chữ ký có thể bị giả mạo nếu kẻ tấn công có thể tạo một chữ ký hợp lệ khác cho một thông báo đã được ký. Mặc dù đây không phải là vấn đề đối với hầu hết các trường hợp, nhưng trong một số trường hợp, các lập trình viên ngầm định giả định rằng các chữ ký hợp lệ là duy nhất và điều này có thể dẫn đến kết quả không mong muốn.
Trường hợp sử dụng mẫu
Xem phần Tôi muốn ký dữ liệu bằng chữ ký số.