Chữ ký số giúp bạn xác minh rằng không có ai can thiệp vào dữ liệu của bạn. Cấu hình này đảm bảo tính xác thực và tính toàn vẹn của dữ liệu đã ký nhưng không đảm bảo tính bảo mật. Khoá này bất đối xứng, tức là sử dụng một cặp khoá (khoá công khai và khoá riêng tư).
Chữ ký có các thuộc tính sau:
- Tính xác thực: Bạn không thể tạo chữ ký để
PublicKeyVerify.Verify(signature, message)
xác thực, trừ phi bạn có khoá riêng tư. - Bất đối xứng: Việc tạo chữ ký sử dụng một khoá khác với việc 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 các bên không thể tự tạo chữ ký.
Nếu không cần tính đối xứng, hãy cân nhắc sử dụng 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 dữ liệu nguyên gốc:
- PublicKeySign để ký dữ liệu
- PublicKeyVerify để xác minh chữ ký
Chọn một loại khoá
Bạn nên sử dụng 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. Nói chung, những điều sau đúng:
- ECDSA_P256 là tùy chọn được sử dụng rộng rãi nhất và là giá trị mặc định hợp lý. Tuy nhiên, xin lưu ý rằng chữ ký ECDSA rất dễ đọc.
- ED25519 tạo ra chữ ký xác định và cung cấp hiệu suất tốt hơn ECDSA_P256.
- RSA_SSA_PKCS1_3072_SHA256_F4 tạo chữ ký xác định và cung cấp 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 bảo mật tối thiểu
- Dữ liệu được ký có thể có độ dài tuỳ ý
- Cấp độ bảo mật 128 bit chống lại các cuộc tấn công thích ứng qua tin nhắn đã chọn cho các giao thức dựa trên đường cong elip
- Cấp độ bảo mật 112 bit trước các cuộc tấn công thích ứng thông báo đã chọn cho các giao thức dựa trên RSA (cho phép khoá 2048 bit)
Trường hợp sử dụng mẫu
Hãy xem phần Tôi muốn ký dữ liệu bằng chữ ký số.
Dễ uốn
Lược đồ chữ ký có thể thay đổi được 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 đã 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 mặc nhiên cho rằng chữ ký hợp lệ là duy nhất, và điều này có thể dẫn đến các kết quả không mong muốn.