Kriptografi Tanda tangan digital

Tanda tangan digital adalah primitif kunci publik dari otentikasi pesan. Dalam dunia fisik, tanda tangan tulisan tangan biasa digunakan pada pesan yang ditulis tangan atau diketik. Mereka digunakan untuk mengikat penanda tangan ke pesan.

Demikian pula, tanda tangan digital adalah teknik yang mengikat seseorang / entitas dengan data digital. Pengikatan ini dapat diverifikasi secara independen oleh penerima serta pihak ketiga mana pun.

Tanda tangan digital adalah nilai kriptografi yang dihitung dari data dan kunci rahasia yang hanya diketahui oleh penandatangan.

Di dunia nyata, penerima pesan membutuhkan jaminan bahwa pesan itu milik pengirim dan dia tidak boleh menyangkal asal mula pesan itu. Persyaratan ini sangat penting dalam aplikasi bisnis, karena kemungkinan perselisihan data yang dipertukarkan sangat tinggi.

Model Tanda Tangan Digital

Seperti disebutkan sebelumnya, skema tanda tangan digital didasarkan pada kriptografi kunci publik. Model skema tanda tangan digital digambarkan dalam ilustrasi berikut -

Poin-poin berikut menjelaskan keseluruhan proses secara rinci -

  • Setiap orang yang mengadopsi skema ini memiliki pasangan kunci publik-pribadi.

  • Umumnya, pasangan kunci yang digunakan untuk enkripsi / dekripsi dan penandatanganan / verifikasi berbeda. Kunci pribadi yang digunakan untuk penandatanganan disebut sebagai kunci tanda tangan dan kunci publik sebagai kunci verifikasi.

  • Penandatangan memasukkan data ke fungsi hash dan menghasilkan data hash.

  • Nilai hash dan kunci tanda tangan kemudian diumpankan ke algoritme tanda tangan yang menghasilkan tanda tangan digital pada hash yang diberikan. Tanda tangan ditambahkan ke data dan kemudian keduanya dikirim ke pemverifikasi.

  • Penguji memasukkan tanda tangan digital dan kunci verifikasi ke dalam algoritma verifikasi. Algoritma verifikasi memberikan beberapa nilai sebagai keluaran.

  • Verifier juga menjalankan fungsi hash yang sama pada data yang diterima untuk menghasilkan nilai hash.

  • Untuk verifikasi, nilai hash dan keluaran dari algoritma verifikasi dibandingkan. Berdasarkan hasil perbandingan, verifikator memutuskan validitas tanda tangan digital.

  • Karena tanda tangan digital dibuat oleh kunci 'pribadi' penandatangan dan tidak ada orang lain yang dapat memiliki kunci ini; penandatangan tidak bisa menolak penandatanganan data di masa depan.

Perlu diperhatikan bahwa alih-alih menandatangani data secara langsung dengan algoritme penandatanganan, biasanya hash data dibuat. Karena hash data adalah representasi unik dari data, itu cukup untuk menandatangani hash di tempat data. Alasan terpenting menggunakan hash daripada data secara langsung untuk penandatanganan adalah efisiensi skema.

Mari kita asumsikan RSA digunakan sebagai algoritma penandatanganan. Sebagaimana dibahas dalam bab enkripsi kunci publik, proses enkripsi / penandatanganan menggunakan RSA melibatkan eksponensial modular.

Menandatangani data besar melalui eksponensiasi modular mahal secara komputasi dan memakan waktu. Oleh karena itu, hash data adalah intisari data yang relatif kecilsigning a hash is more efficient than signing the entire data.

Pentingnya Tanda Tangan Digital

Dari semua kriptografi primitif, tanda tangan digital yang menggunakan kriptografi kunci publik dianggap sebagai alat yang sangat penting dan berguna untuk mencapai keamanan informasi.

Selain kemampuan untuk memberikan non-repudiation pesan, tanda tangan digital juga menyediakan otentikasi pesan dan integritas data. Mari kita lihat secara singkat bagaimana hal ini dicapai dengan tanda tangan digital -

  • Message authentication - Saat pemverifikasi memvalidasi tanda tangan digital menggunakan kunci publik pengirim, ia yakin bahwa tanda tangan hanya dibuat oleh pengirim yang memiliki kunci pribadi rahasia yang sesuai dan bukan orang lain.

  • Data Integrity- Jika penyerang memiliki akses ke data dan memodifikasinya, verifikasi tanda tangan digital di ujung penerima gagal. Hash data yang diubah dan keluaran yang diberikan oleh algoritme verifikasi tidak akan cocok. Oleh karena itu, penerima dapat dengan aman menolak pesan tersebut dengan asumsi bahwa integritas data telah dilanggar.

  • Non-repudiation- Karena diasumsikan bahwa hanya penandatangan yang memiliki pengetahuan tentang kunci tanda tangan, ia hanya dapat membuat tanda tangan unik pada data tertentu. Dengan demikian penerima dapat menyajikan data dan tanda tangan digital kepada pihak ketiga sebagai bukti jika timbul perselisihan di kemudian hari.

Dengan menambahkan enkripsi kunci publik ke skema tanda tangan digital, kita dapat membuat sistem kriptografi yang dapat menyediakan empat elemen penting keamanan yaitu - Privasi, Otentikasi, Integritas, dan Non-penyangkalan.

Enkripsi dengan Tanda Tangan Digital

Dalam banyak komunikasi digital, diharapkan untuk bertukar pesan terenkripsi daripada teks biasa untuk mencapai kerahasiaan. Dalam skema enkripsi kunci publik, kunci publik (enkripsi) pengirim tersedia di domain terbuka, dan karenanya siapa pun dapat memalsukan identitasnya dan mengirim pesan terenkripsi apa pun ke penerima.

Ini membuatnya penting bagi pengguna yang menggunakan PKC untuk enkripsi untuk mencari tanda tangan digital bersama dengan data terenkripsi untuk memastikan otentikasi pesan dan non-penolakan.

Ini dapat diarsipkan dengan menggabungkan tanda tangan digital dengan skema enkripsi. Mari kita bahas secara singkat bagaimana mencapai persyaratan ini. Adatwo possibilities, sign-then-encrypt dan encrypt-then-sign.

Namun, sistem kripto yang berbasis pada tanda-lalu-enkripsi dapat dimanfaatkan oleh penerima untuk memalsukan identitas pengirim dan mengirimkan data tersebut ke pihak ketiga. Karenanya, metode ini tidak disukai. Proses encrypt-then-sign lebih dapat diandalkan dan diadopsi secara luas. Ini digambarkan dalam ilustrasi berikut -

Penerima setelah menerima data terenkripsi dan tanda tangan di atasnya, pertama-tama memverifikasi tanda tangan menggunakan kunci publik pengirim. Setelah memastikan validitas tanda tangan, dia kemudian mengambil data melalui dekripsi menggunakan kunci pribadinya.