Peran dan Fungsi Tanda Tangan Digital (Digital Signatures)
Bagian selanjutnya pada kesempatan kali ini kita akan membahas tentang Tanda Tangan Digital, atau Digital Signature. Tanda tangan digital dibutuhkan dalam proses membuat blok pada mata uang digital.
Teknisnya, tanda tangan digital ini seperti halnya membubuhkan tanda tangan di atas kertas pada umumnya. Hanya saja, pembubuhan tanda tangan ini dilakukan secara digital, bisa pada dokumen, atau sebuah file.
Ada dua hal yang perlu dilakukan agar tanda tangan digital ini bisa berfungsi layaknya sebuah tanda tangan hasil tulisan tangan diatas kertas. Pertama, pembubuhan tanda tangan digital ini hanya bisa dilakukan oleh anda sendiri. Sedangkan untuk orang lain, hanya akan bisa melihatnya saja, dan juga bisa untuk memverifikasi keabsahannya.
Kedua, pembubuhan tanda tangan ini sebagai pengikat atas sebuah dokumen tertentu. Sehingga tidak bisa digunakan untuk menunjukkan persetujuan ataupun dukungan anda pada dokumen tertentu lainnya.
Selanjutnya, bagaimana bisa membuat tanda tangan digital ini dalam kriptografi? Skema tanda tangan digital terdiri dari tiga algoritma berikut:
⦁ (sk, pk): = generateKeys (keysize)
Metode generateKeys ini berfungsi untuk memperoleh ukuran key dan juga membuat generate key pair-nya. Sementara sk adalah private key yang bersifat rahasia dan dijaga kerahasiaannya untuk menandatangani sebuah pesan. Dan, pk adalah public key yang bisa diberikan kepada orang lain. Dengan key ini, orang lain akan bisa melakukan verifikasi atas tanda tangan digital itu.
Sebagai catatan dalam hal ini, bahwa generateKeys dan sign bisa berupa algoritma acak. Pada dasarnya generateKeys akan lebih baik jika diacak. Karena dengan begitu bisa membuat key yang berbeda untuk orang yang berbeda pula. Di lain hal, selalu menjadi deterministik, sesuai dengan fungsinya.
⦁ sig: = sign(sk, message)
Metode ini akan mengambil key dan juga pesan (message). Selanjutnya, sk sebagai input, untuk bisa menghasilkan output berupa tanda tangan pada pesan dibawah sk .
⦁ isValid: = verify (pk, message, sig)
Cara ini untuk mengambil pesan, tanda tangan, dan public key sebagai inputnya. Lalu, menjadikannya bernilai boolean, yakni benar atau salah (true atau false). Sedangkan isValid akan menghasilkan pernyataan true, jika sig dalam pesan tersebut berisikan tanda tangan yang valid, dibawah public key (pk). Selanjutnya, akan bernillai false jika menunjukkan kebalikannya.
Ketiga algoritma tersebut, harus bisa memenuhi dua hal berikut:
⦁ Tanda tangan yang valid, harus terverifikasi terlebih dahulu.
verify(pk, message, sign(sk, message)) == true
⦁ Tanda tangan bersifat existentially unforgeable (tidak bisa dirubah).