Tanda Tangan Digital

Primitif Tanda Tangan Digital memungkinkan Anda memverifikasi bahwa tidak ada yang merusak data Anda. Tanda tangan digital memberikan keaslian dan integritas, tetapi bukan kerahasiaan, dari data yang ditandatangani. Kriptografi ini bersifat asimetris, yang berarti menggunakan sepasang kunci (kunci publik dan kunci pribadi).

Primitif Tanda Tangan Digital memiliki properti berikut:

  • Keaslian: Tidak mungkin membuat tanda tangan yang divalidasi oleh PublicKeyVerify.Verify(signature, message), kecuali jika Anda memiliki kunci pribadi.
  • Asimetris: Pembuatan tanda tangan menggunakan kunci yang berbeda dengan verifikasinya. Hal ini memungkinkan Anda mendistribusikan kunci publik untuk memverifikasi tanda tangan kepada pihak yang tidak dapat membuat tanda tangan sendiri.

Jika Anda tidak memerlukan asimetri, pertimbangkan untuk menggunakan primitif MAC yang lebih sederhana dan efisien.

Fungsi tanda tangan digital direpresentasikan di Tink sebagai pasangan primitif:

  • PublicKeySign untuk menandatangani data
  • PublicKeyVerify untuk memverifikasi tanda tangan

Pilih jenis kunci

Sebaiknya gunakan ML_DSA_65 atau ECDSA_P256 untuk sebagian besar kasus penggunaan, tetapi ada berbagai opsi. Secara umum, hal berikut berlaku:

Untuk algoritma non-pasca-kuantum berikut, Anda dapat memperkirakan bahwa Anda harus mengubah jenis kunci dalam waktu dekat.

  • ECDSA_P256 adalah opsi yang paling banyak digunakan dan default yang wajar. Namun, perlu diperhatikan bahwa tanda tangan ECDSA dapat dipalsukan.
  • ED25519 membuat tanda tangan deterministik dan memberikan performa yang lebih baik daripada ECDSA_P256.
  • RSA_SSA_PKCS1_3072_SHA256_F4 membuat tanda tangan deterministik dan memberikan performa verifikasi terbaik (tetapi penandatanganan jauh lebih lambat daripada ECDSA_P256 atau ED25519).

Jaminan keamanan minimal

  • Data yang akan ditandatangani dapat memiliki panjang arbitrer
  • Tingkat keamanan 128-bit terhadap serangan pesan yang dipilih adaptif untuk skema berbasis kurva elips
  • Tingkat keamanan 112-bit terhadap serangan pesan yang dipilih adaptif untuk skema berbasis RSA (memungkinkan kunci 2048-bit)

Kemampuan untuk dibentuk

Skema tanda tangan dapat dimanipulasi jika penyerang dapat membuat tanda tangan valid yang berbeda untuk pesan yang sudah ditandatangani. Meskipun tidak menjadi masalah dalam sebagian besar skenario, dalam beberapa kasus, programmer secara implisit mengasumsikan bahwa tanda tangan yang valid bersifat unik, dan hal ini dapat menyebabkan hasil yang tidak terduga.

Contoh kasus penggunaan

Lihat Saya ingin menandatangani data secara digital.