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, di mana tanda tangan dapat divalidasi oleh pihak yang tidak mengetahui kunci penandatanganan
Tujuan utama tanda tangan digital adalah:
- verifikasi integritas data yang ditandatangani
- penyangkalan 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.
Tanda tangan digital kriptografi pasca-kuantum (PQC)
Komputer kuantum berpotensi mendekripsi materi yang dienkripsi oleh algoritma enkripsi klasik seperti RSA dan ECDSA yang banyak digunakan, yang dapat membuat materi terenkripsi tersebut rentan. Algoritma kriptografi pasca-kuantum dirancang untuk menggunakan hardware dan software klasik untuk menahan serangan kuantum, sehingga membantu memastikan validitas tanda tangan digital yang berkelanjutan. Tanda tangan PQC didasarkan pada berbagai masalah matematika yang sulit dipecahkan oleh komputer klasik dan kuantum.
NIST telah memublikasikan dua standar tanda tangan PQC: ML-DSA (FIPS-204)
dan SLH-DSA (FIPS-205). Anda dapat menggunakan varian acak murni dengan Cloud KMS: ML-DSA-65
dan SLH-DSA-SHA2-128s
, atau varian acak pra-hash HASH-SLH-DSA-SHA2-128s-SHA256
.
Standar NIST menentukan nilai ukuran berikut untuk kunci dan tanda tangan (dalam byte):
Algoritme | Kunci pribadi | Kunci publik | Tanda Tangan |
---|---|---|---|
ML_DSA_65 | 4032 | 1952 | 3309 |
SLH_DSA_SHA2_128s | 64 | 32 | 7856 |
HASH_SLH_DSA_SHA2_128s_SHA256 | 64 | 32 | 7856 |
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 kepada subjek berdasarkan kepemilikan subjek atas bagian kunci pribadi dari kunci publik/pribadi. Sertifikat 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 dimaksud, atau jika aturan verifikasi yang ditetapkan 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 RSA dan kurva elips (EC) untuk penandatanganan digital. Kedua algoritma standar industri ini menawarkan pilihan ukuran kunci dan algoritma digest.
Kriptografi kurva eliptik mengandalkan fungsi hash satu arah dan perkalian titik untuk menghitung titik pada kurva eliptik, yang dikombinasikan dengan ketidakmungkinan untuk menentukan pengali untuk suatu titik yang diberikan asalnya. Kesulitan dalam menentukan pengali adalah manfaat kriptografi dari kriptografi EC. Makin besar ukuran kurva, makin sulit menghitung faktor pengali. Salah satu 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 lebih faktor. Semakin besar ukuran kunci, semakin sulit 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 menyediakan 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 mengetahui informasi tentang cara menggunakan SDK dan alat terbuka, lihat memvalidasi tanda tangan kurva elips dan memvalidasi tanda tangan RSA.