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 pada data mentah
operasi verifikasi, dengan tanda tangan dapat divalidasi oleh pihak yang tidak mengetahui kunci penandatanganan
Tujuan utama tanda tangan digital adalah:
- verifikasi integritas data yang ditandatangani
- non-penolakan jika penanda tangan mengklaim bahwa tanda tangan tersebut tidak autentik
Tanda tangan digital mengandalkan 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 untuk 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 dikeluarkan oleh Certificate Authority (CA). CA menerbitkan sertifikat kepada 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 juga berisi bagian kunci publik subjek dari kunci publik/pribadi. Entitas 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 dipermasalahkan, atau jika aturan verifikasi yang ditetapkan oleh sertifikat dilanggar, tanda tangan akan dianggap tidak valid.
Alur kerja penandatanganan digital
Berikut ini penjelasan alur untuk membuat dan memvalidasi tanda tangan. Dua partisipan 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, berarti data telah diubah.
Algoritma penandatanganan
Cloud Key Management Service mendukung algoritma elliptic curve (EC) dan RSA untuk penandatanganan digital. Kedua algoritma standar industri ini menawarkan pilihan algoritma ringkasan dan ukuran kunci.
Kriptografi kurva eliptik mengandalkan fungsi hash satu arah dan perkalian titik untuk menghitung titik pada kurva eliptik, yang dikombinasikan dengan ketidakmampuan untuk menentukan pengganda untuk titik berdasarkan asalnya. Kesulitan dalam menentukan pengganda ini adalah manfaat kriptografis dari kriptografi EC. Makin besar ukuran kurva, makin sulit untuk menghitung pengganda. Manfaat kriptografi EC adalah kunci EC memiliki ukuran kunci yang lebih kecil dibandingkan dengan kunci RSA yang menawarkan kekuatan kriptografi yang sama.
Kriptografi RSA mengandalkan kesulitan dalam memfaktorkan bilangan bulat besar menjadi dua atau beberapa faktor. Makin besar ukuran kunci, makin 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 kunci
ASYMMETRIC_SIGN
. Kunci Cloud KMS untuk penandatanganan asimetris mendukung algoritma penandatanganan kurva elips 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 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 informasi tentang cara menggunakan SDK dan alat terbuka, lihat memvalidasi tanda tangan kurva elips dan memvalidasi tanda tangan RSA.