Tanda tangan digital adalah output kriptografi yang digunakan untuk memverifikasi keaslian data. Algoritma tanda tangan digital memungkinkan dua operasi yang berbeda:
operasi penandatanganan, yang menggunakan kunci penandatanganan untuk menghasilkan tanda tangan di atas data mentah
operasi verifikasi, di mana tanda tangan dapat divalidasi oleh pihak yang tidak memiliki pengetahuan tentang kunci penandatanganan
Tujuan utama dari tanda tangan digital adalah:
- verifikasi integritas data yang ditandatangani
- anti penyangkalan jika penanda tangan mengklaim bahwa tanda tangan tersebut tidak asli
Tanda tangan digital bergantung pada kriptografi asimetris, yang juga dikenal sebagai kriptografi kunci publik. Kunci asimetris terdiri dari pasangan kunci publik/pribadi. Kunci pribadi digunakan untuk membuat tanda tangan, dan kunci publik yang sesuai digunakan untuk memverifikasi tanda tangan.
Contoh kasus penggunaan tanda tangan digital
Anda dapat memvalidasi build menggunakan tanda tangan digital. Misalnya, dengan biner yang ditandatangani secara digital oleh kunci pribadi, Anda dapat memeriksa validitasnya menggunakan kunci publik yang sesuai dengan kunci pribadi. Jika tanda tangan biner tidak valid, biner telah dimodifikasi dan/atau rusak.
Contoh lainnya adalah memvalidasi subjek sertifikat yang diterbitkan oleh Certificate Authority (CA). CA menerbitkan sertifikat pada suatu subjek berdasarkan kepemilikan subjek atas bagian kunci pribadi dari kunci publik/pribadi. Sertifikat ini berisi tanda tangan digital yang dibuat dengan kunci pribadi subjek. Sertifikat ini juga berisi bagian kunci publik subjek dari kunci publik/pribadi. Entity yang berinteraksi dengan subjek menggunakan kunci publik subjek, dan aturan verifikasi sertifikat tambahan, untuk memvalidasi tanda tangan. Jika tanda tangan tidak sesuai dengan data yang dimaksud, atau jika aturan verifikasi yang ditentukan oleh sertifikat dilanggar, tanda tangan akan dianggap tidak valid.
Alur kerja penandatanganan digital
Berikut ini menjelaskan alur untuk membuat dan memvalidasi tanda tangan. Dua peserta dalam alur kerja ini terdiri dari penanda tangan data dan penerima data.
Penanda tangan membuat kunci asimetris yang mendukung penandatanganan digital.
Penanda tangan dapat menggunakan kunci ini untuk membuat beberapa tanda tangan.
Penanda tangan melakukan operasi kunci pribadi pada data untuk membuat tanda tangan digital.
Penanda tangan memberikan data dan tanda tangan digital kepada penerima data.
Penerima menggunakan bagian kunci publik dari pasangan kunci publik/pribadi penanda tangan untuk memverifikasi tanda tangan digital. Jika verifikasi tidak berhasil, maka data telah diubah.
Algoritma penandatanganan
Cloud Key Management Service mendukung algoritma kurva eliptis (EC) dan RSA untuk penandatanganan digital. Kedua algoritma standar industri ini menawarkan pilihan ukuran kunci dan algoritme ringkasan.
Kriptografi kurva elips mengandalkan fungsi hash satu arah dan perkalian titik untuk menghitung titik pada kurva eliptis, yang dikombinasikan dengan kemampuan dalam menentukan perkalian untuk titik yang diberikan asalnya. Kesulitan dalam menentukan pengganda ini adalah manfaat kriptografi dari kriptografi EC. Semakin besar ukuran kurva, semakin sulit untuk menghitung perkalian dan. Manfaat kriptografi EC adalah kunci EC memiliki ukuran kunci yang lebih kecil dibandingkan dengan kunci RSA yang menawarkan kekuatan kriptografi yang sama.
Kriptografi RSA bergantung pada tingkat kesulitan dalam memfaktorkan bilangan bulat besar menjadi dua faktor atau lebih. Semakin besar ukuran kunci, semakin sulit untuk memfaktorkan bilangan bulat.
Fungsi tanda tangan digital Cloud KMS
Cloud KMS menyediakan fungsi berikut yang terkait dengan pembuatan dan validasi tanda tangan digital.
Kemampuan untuk membuat kunci asimetris dengan tujuan utama
ASYMMETRIC_SIGN
. Kunci Cloud KMS untuk penandatanganan asimetris mendukung algoritma penandatanganan kurva eliptis dan algoritma penandatanganan RSA.Kemampuan untuk membuat tanda tangan digital.
Kemampuan untuk mengambil kunci publik untuk kunci asimetris.
Cloud KMS tidak secara langsung memberikan kemampuan untuk memvalidasi tanda tangan digital. Sebagai gantinya, Anda perlu memvalidasi tanda tangan digital menggunakan SDK dan alat yang tersedia secara terbuka, seperti OpenSSL. SDK dan alat ini memerlukan kunci publik yang Anda ambil dari Cloud KMS. Untuk mengetahui informasi cara menggunakan SDK dan alat terbuka, lihat memvalidasi tanda tangan kurva eliptis dan memvalidasi tanda tangan RSA.