Tanda Tangan Digital

Tanda tangan digital memungkinkan Anda memverifikasi bahwa tidak ada orang yang mengutak-atik data Anda. Elemen ini memberikan keaslian dan integritas data yang ditandatangani, tetapi tidak memberikan kerahasiaannya. Bersifat asimetris, artinya menggunakan sepasang kunci (kunci publik dan kunci pribadi).

Tanda tangan memiliki properti berikut:

  • Keaslian: Anda tidak dapat membuat tanda tangan yang akan divalidasi PublicKeyVerify.Verify(signature, message), kecuali jika Anda memiliki kunci pribadi.
  • Asimetris: Pembuatan tanda tangan menggunakan kunci yang berbeda dari verifikasinya. Dengan begitu, Anda dapat mendistribusikan kunci publik untuk memverifikasi tanda tangan kepada pihak yang tidak dapat membuat tanda tangan sendiri.

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

Fungsi tanda tangan digital direpresentasikan di Tink sebagai sepasang primitif:

  • PublicKeySign untuk data penandatanganan
  • PublicKeyVerify untuk memverifikasi tanda tangan

Pilih jenis kunci

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

  • ECDSA_P256 adalah opsi yang paling banyak digunakan dan merupakan default yang wajar. Namun, perlu diperhatikan bahwa tanda tangan ECDSA dapat dirusak.
  • 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 sembarang
  • Level keamanan 128-bit terhadap serangan pesan pilihan adaptif untuk skema berbasis kurva eliptis
  • Level keamanan 112-bit terhadap serangan pesan pilihan adaptif untuk skema berbasis RSA (memungkinkan kunci 2048-bit)

Contoh kasus penggunaan

Lihat Saya ingin menandatangani data secara digital.

Fleksibilitas

Skema tanda tangan dapat dibentuk, jika penyerang dapat membuat tanda tangan valid yang berbeda untuk pesan yang sudah ditandatangani. Meskipun ini bukan masalah bagi sebagian besar skenario, dalam beberapa kasus, programmer secara implisit berasumsi bahwa tanda tangan yang valid bersifat unik, dan ini dapat menyebabkan hasil yang tidak diharapkan.