it-swarm-id.com

Bagaimana cara kerja proses verifikasi tanda tangan digital?

Saya tidak dapat memahami bagaimana tanda tangan digital diverifikasi. Saya tahu bahwa tanda tangan digital akan dilampirkan pada pesan dan dikirim oleh pengirim ke penerima. kemudian penerima menggunakan kunci publik digunakan untuk memverifikasinya. Ini pertanyaan saya:

  • dari mana kunci publik ini berasal?
  • dan bagaimana didistribusikan ke penerima?
  • bagaimana kunci publik diidentifikasi untuk tanda tangan digital spesifik?
  • dan apa peran otoritas sertifikasi dalam proses ini?
58
n92

OK, jawabannya sejauh ini benar-benar sesuai, tapi saya akan mencoba menjawab pertanyaan Anda saat mereka masuk:

* where did this public key come from?

Kunci publik adalah bagian dari pasangan kunci yang digunakan dalam kriptografi asimetris. Ada banyak algoritma enkripsi di luar sana, tetapi bermuara pada kunci publik dan kunci pribadi yang secara matematis ditautkan. Mereka dapat digunakan dengan cara ini:

Enkripsi (kunci publik, data asli) -> data terenkripsi

Dekripsi (kunci pribadi, data terenkripsi) -> data asli

Sifat hubungan matematika antara kunci privat dan publik terkait dengan algoritma kriptografi dan dengan cepat menjadi topik yang bagus untuk Math Overflow. :)

Bagian penting adalah bahwa mereka adalah sepasang kunci yang dihasilkan bersama.

Selanjutnya, untuk berurusan dengan tanda tangan digital, pengirim mengirim:

  • data asli, data terenkripsi, kunci publik, dan informasi tentang cara memverifikasi tanda tangan (misalnya, algoritma apa yang digunakan)

Verifier melakukan operasi Decrypt di atas dan membandingkan outputnya dengan data asli. Jika keduanya sama, ia tahu bahwa pesan itu tidak dirusak, karena hanya pengirim yang memiliki kunci privat, dan tidak ada cara yang masuk akal untuk menentukan kunci privat dari kunci publik.

mengambil ini sedikit rusak ...

* and what is the role of the certification authority in this process?

Siapa pun dapat membuat pasangan kunci pribadi/publik. Ini tugas yang cukup mudah, mengingat toolkit hari ini. Jadi memberi Anda kunci publik saya, bersama dengan data dan tanda tangan terenkripsi seperti yang dijelaskan hampir dapat dipercaya seperti memberi Anda kartu nama yang saya cetak di Staples seharga $ 50. Untuk benar-benar memercayai bahwa saya adalah diri saya sendiri, dan karena itu saya percaya layak, Anda memerlukan seseorang untuk menandatangani identitas saya (seperti memeriksa SIM).

Itu pekerjaan Otoritas Sertifikat (disingkat CA). CA memiliki pasangan kunci sendiri - dan menggunakan kunci pribadi untuk menandatangani sertifikat digital untuk pemegang kunci. Sertifikat mencakup kunci publik, serta banyak informasi tentang orang atau benda yang memegang kunci pribadi ini. Ini seperti pemerintahan saya menjadikan saya id yang terlihat bagus dengan gambar yang tidak mudah dipalsukan tanpa peralatan khusus - Anda dapat mempercayai informasi saya karena Anda mempercayai pemerintah ... tidak karena Anda mempercayai saya.

Biasanya ketika suatu sistem memverifikasi tanda tangan, itu tidak hanya memeriksa bahwa data yang dienkripsi cocok dengan data asli, tetapi juga bahwa sertifikat yang menjamin identitas pemegang kunci publik juga ditandatangani dengan benar oleh sumber tepercaya. Biasanya sistem CA diatur dalam rantai CA yang berasal dari Root. Kumpulan CA root yang lebih menonjol (yang ditandatangani sendiri, yaitu, ditandatangani oleh kunci pribadi mereka sendiri), dapat ditemukan di browser Anda.

Untuk sistem yang sangat aman, pemeriksaan tambahan hingga informasi status menit dapat dilakukan. Itu semua tergantung pada seberapa penting untuk benar-benar yakin tentang status pengirim.

* and how is it (the public key) distributed to the receiver?

Periksa ulang di sini - maksud Anda penerima sertifikat atau pemegang kunci?

Pengirim (gantungan kunci) dapat memperoleh pasangan kunci dan sertifikat dalam berbagai cara. Cara paling sederhana adalah membuatnya secara lokal, dan kemudian berlaku untuk CA untuk sertifikat, mengirimkan data kunci publik. Dalam kasus lain, kunci dapat dibuat secara terpusat dan didistribusikan oleh saluran yang aman ke pemegang kunci.

Dalam sebagian besar kasus tanda tangan, pasangan kunci dibuat oleh pemegang kunci, karena membatasi potensi bahwa kunci pribadi terbuka.

Ketika tanda tangan dibuat dan dikirim ke penerima, biasanya kunci publik juga dilampirkan pada pesan (misalnya, standar untuk ini adalah XMLDSIG di mana satu bidang opsional dalam elemen adalah sertifikat digital, yang mencakup kunci publik).

Dalam kasus di mana bandwidth merupakan masalah, kunci publik dapat disimpan di repositori pusat - seperti basis data karyawan, atau seringkali Active Directory atau server LDAP lainnya. Kemudian tanda tangan dapat merujuk identitas pengirim dan proses verifikasi dapat menyertakan permintaan ke repositori untuk mengambil kunci publik.

* how the public key is identified for the specific digital signature?

Biasanya melalui sertifikat digital.

Saat pengirim membuat tanda tangan digital, ia biasanya memiliki aturan yang terkait dengan pasangan kunci apa yang dapat ia gunakan untuk tujuan apa. Dalam standar sertifikat X509, sertifikat mengidentifikasi bidang Penggunaan Kunci yang menjabarkan tujuan khusus untuk pasangan kunci yang dijelaskan oleh sertifikat. Salah satu kegunaan itu adalah Digital Signature, dan banyak sistem perangkat lunak tidak akan membiarkan Anda membuat tanda tangan tanpa pengaturan dalam sertifikat.

CA sebenarnya menentukan pengaturan ini sebelum menandatangani sertifikat. Dalam banyak kebijakan keamanan, pengaturan penggunaan utama tertentu tidak dapat diberikan tanpa proses otentikasi khusus, sehingga tanggung jawab untuk mengetahui hal ini terletak pada CA dan orang-orang yang bertanggung jawab atasnya (biasanya RA, Otoritas Registrasi).

Jika, karena alasan tertentu, Anda memiliki sistem yang tidak menggunakan sertifikat digital, mungkin ada cara lain untuk menentukan pasangan kunci apa. Pada akhirnya itu tergantung pada kebijakan keamanan yang berlaku dan apa yang dianggap sesuai untuk aktivitas yang diberikan yang membutuhkan tanda tangan.

37
bethlakshmi

Masalah yang Anda rujuk (bagaimana kami mendistribusikan kunci publik?) Adalah persis apa yang dimaksud dengan Infrastruktur Kunci Publik untuk dipecahkan, dan PKI pada dasarnya adalah sekelompok Otoritas Sertifikasi.

Dalam pengaturan yang sederhana, kita akan memiliki direktori pusat dari kunci publik semua orang; bayangkan itu sebagai lempengan marmer besar di tengah taman umum, dengan kunci publik terukir di atasnya. Siapa pun dapat melihatnya, dan pastikan itu adalah "hal yang asli" karena Anda tidak bisa hanya melukis sesuatu yang terukir.

Bagian publik tidak terhubung dengan baik ke Internet pada umumnya, dan komputer tidak dapat "melihat" bahwa beberapa informasi terukir dan dengan demikian "dijamin benar". Juga, mungkin ada miliaran pemegang kunci di luar sana, yang akan membutuhkan sepotong batu yang agak besar. Jadi terjemahan ke seluruh dunia yang terkomputerisasi adalah sertifikat.

Sertifikat adalah struktur kecil yang berisi, dalam format konvensional:

  • an identitas (nama pemilik kunci);
  • a kunci publik (yang konon dimiliki oleh orang itu);
  • a tanda tangan digital dihitung pada dua bagian sebelumnya oleh Otoritas Sertifikasi.

Peran CA adalah untuk, tepatnya, menerbitkan sertifikat, yaitu menandatanganinya. Anda dapat menganggap sertifikat sebagai potongan lempengan marmer besar yang berisi kunci publik tertentu. Untuk menggunakan kunci publik, pertama-tama Anda ingin memastikan bahwa ini berisi informasi yang benar; untuk melakukan itu, Anda verifikasi tanda tangan satu sertifikat, menggunakan kunci publik CA. Jika tanda tangan itu benar, maka Anda tahu bahwa CA melakukan menandatangani sertifikat itu, dan karena CA menandatangani hanya sertifikat setelah memeriksa identitas pemilik kunci (melalui protokol fisik satu kali dengan mereka, misalnya pemilik kunci menunjukkan ID), Anda dapat "diyakinkan" bahwa kunci publik dalam sertifikat benar-benar milik pemilik yang diidentifikasi.

Sekarang Anda dapat memberi tahu saya bahwa kami belum menyelesaikan masalah sama sekali, cukup pindahkan: untuk memverifikasi sertifikat, Anda harus mengetahui kunci publik CA; bagaimana kamu tahu it kunci? Jawabannya ada dalam angka: CA yang diberikan dapat menandatangani beberapa sertifikat, mungkin jutaan dari mereka. Jadi mungkin ada, katakanlah, seratus CA, yang mengeluarkan sertifikat untuk seluruh Dunia. Dengan mengetahui ratusan kunci publik, Anda berpotensi memverifikasi ada sertifikat. Di dunia lain, kami tidak hanya pindah masalah, kami juga terkonsentrasi itu: kami mengubah masalah pendistribusian milyaran kunci publik menjadi masalah pendistribusian ratusan dari mereka .

Dan, lihat! itulah tepatnya yang dilakukan untuk situs Web HTTPS. Selama fase awal koneksi antara browser Anda dan server Web, server mengirimkan sertifikatnya. Browser kemudian memverifikasi sertifikat terhadap daftar kunci publik CA hardcoded (yang telah termasuk milik browser atau vendor sistem operasi). Setelah browser memverifikasi sertifikat, ia mengetahui kunci publik server, dan menggunakannya untuk membuat terowongan rahasia dengan server.

27
Thomas Pornin

Tanda tangan digital biasanya dibuat dalam proses dua langkah. Langkah pertama adalah menggunakan algoritma hashing yang aman pada data. Algoritma SHA-2 akan menjadi contohnya. Langkah kedua adalah mengenkripsi output yang dihasilkan dengan kunci penandatanganan pribadi.

Jadi, ketika tanda tangan diverifikasi oleh kunci publik, ia mendekripsi ke hash yang cocok dengan pesan. Hash itu hanya dapat didekripsi menggunakan kunci publik jika dienkripsi dengan kunci tanda tangan pribadi.

Kunci publik dibuat oleh pemilik keypair. Otoritas sertifikat menandatangani sertifikat kunci publik. Pemilik server menginstal sertifikat yang ditandatangani itu. Dalam SSL (yang saya anggap Anda maksudkan), sertifikat termasuk kunci dan tanda tangan dari otoritas sertifikat dilewatkan oleh server yang terhubung dengan Anda. Perangkat lunak Anda memeriksa apakah situs yang terhubungnya cocok dengan data dalam sertifikat, dan memvalidasi sertifikat dengan memeriksa tanda tangannya terhadap kunci otoritas sertifikat. Otoritas sertifikat menggunakan kunci mereka untuk menandatangani dan server menggunakan kunci mereka untuk enkripsi.

12
Jeff Ferland

Anda tahu apa itu kunci publik - privat, bukan?

Anda ingin mengenkripsi sesuatu ke bob. Jadi Anda akan membutuhkan kunci publiknya. Anda mencarinya di internet, tetapi Anda tidak dapat memastikan bahwa kunci publik yang Anda miliki benar-benar miliknya.

Jadi Anda mengambil pendekatan yang berbeda: dapatkan kunci dari seseorang yang dapat meyakinkan Anda bahwa satu kunci spesifik milik bob. CA melakukan hal itu.

Bagaimana CA melakukan itu? Sederhana. bob mengidentifikasi dirinya ke CA dan mengirimkan kunci publiknya kepada mereka. Dengan cara ini, CA memiliki sesuatu yang menghubungkan "identitas" bob dengan kunci publik ini. Dan Anda dapat percaya bahwa kunci publik yang Anda dapatkan benar-benar milik bob.

7
woliveirajr