Saya mencoba untuk mendapatkan pemahaman yang lebih baik tentang cara kerja kunci publik / pribadi. Saya mengerti bahwa pengirim dapat menambahkan tanda tangan digital ke dokumen menggunakan kunci pribadinya untuk mendapatkan hash dokumen, tetapi yang tidak saya mengerti adalah bagaimana kunci publik dapat digunakan untuk memverifikasi tanda tangan itu.
Pemahaman saya adalah bahwa kunci publik mengenkripsi, kunci pribadi mendekripsi ... adakah yang bisa membantu saya mengerti?
digital-signature
public-key-encryption
private-key
public-key
pki
jcampos8782
sumber
sumber
Jawaban:
Pemahaman Anda tentang "kunci publik mengenkripsi, mendekripsi kunci pribadi" benar ... untuk data / pesan ENCRYPTION. Untuk tanda tangan digital, ini adalah kebalikannya. Dengan tanda tangan digital, Anda mencoba membuktikan bahwa dokumen yang Anda tandatangani berasal dari Anda. Untuk melakukan itu, Anda perlu menggunakan sesuatu yang hanya ANDA miliki: kunci pribadi Anda.
Tanda tangan digital dalam deskripsi paling sederhana adalah hash (SHA1, MD5, dll.) Dari data (file, pesan, dll.) Yang kemudian dienkripsi dengan kunci pribadi penandatangan. Karena itu adalah sesuatu yang hanya dimiliki oleh penandatangan (atau yang seharusnya) di situlah kepercayaan berasal. SEMUA ORANG memiliki (atau seharusnya memiliki) akses ke kunci publik penandatangan.
Jadi, untuk memvalidasi tanda tangan digital, penerima
Jika cocok, tanda tangan dianggap valid. Jika tidak cocok, itu berarti bahwa kunci yang berbeda digunakan untuk menandatanganinya, atau bahwa data telah diubah (baik sengaja atau tidak sengaja).
Semoga itu bisa membantu!
sumber
Kunci-kunci itu bekerja secara terbalik:
Di bawah ini adalah contoh skrip untuk menguji keseluruhan alur ini
openssl
.Script ini menghasilkan yang berikut:
sumber
Kunci publik mengenkripsi dan hanya kunci pribadi yang dapat mendekripsi, dan kebalikannya benar. Keduanya mengenkripsi hash yang berbeda tetapi masing-masing kunci dapat mendekripsi enkripsi yang lain.
Ada beberapa cara berbeda untuk memverifikasi bahwa pesan datang dari pengirim yang diharapkan. Sebagai contoh:
Pengirim mengirim:
Pesan
Hash pesan dienkripsi dengan kunci pribadi mereka
Penerima:
Jika mereka tidak identik itu berarti pesan itu diubah atau ditandatangani dengan beberapa kunci lain dan bukan yang kami pikir ...
Contoh lain adalah bagi pengirim untuk menggunakan hash yang umum bahwa penerima mungkin tahu untuk menggunakan juga. Sebagai contoh:
Pengirim mengirim:
Penerima:
Ini lagi memastikan pesan tidak dirusak dan itu dari pengirim yang diharapkan.
sumber
Jika saya harus menyusun kembali pertanyaan Anda dari bagaimana saya memahaminya, Anda mengajukan yang berikut:
Jawaban lain telah menjelaskan bagaimana asimetris berarti kriptografi yang dapat Anda baik :
Kita tahu bahwa kedua contoh # 1 dan # 2 berfungsi. Contoh # 1 masuk akal secara intuitif, sedangkan contoh # 2 meminta pertanyaan awal .
Ternyata, kriptografi kurva eliptik (juga disebut "perkalian kurva eliptik") adalah jawaban untuk pertanyaan awal. Kriptografi kurva elips adalah hubungan matematika yang memungkinkan kondisi berikut:
Bagi sebagian besar, kondisi # 1 dan # 2 masuk akal, tetapi bagaimana dengan # 3?
Anda punya dua pilihan di sini:
Kesimpulannya, keypair publik / pribadi dibuat menggunakan kriptografi kurva eliptik, yang pada dasarnya, menciptakan kunci publik dan pribadi yang secara matematis terhubung di kedua arah, tetapi tidak secara matematis diturunkan di kedua arah . Inilah yang memungkinkan Anda menggunakan kunci publik seseorang untuk memverifikasi bahwa mereka menandatangani pesan tertentu, tanpa mereka membuka kunci pribadi mereka kepada Anda.
sumber
Pikir saya akan memberikan penjelasan tambahan untuk siapa pun yang mencari sesuatu yang lebih intuitif mengungkapkan.
Sebagian besar kebingungan ini muncul dari penamaan 'kunci publik' dan 'kunci privat' karena bagaimana hal-hal ini benar-benar bekerja secara langsung bertentangan dengan bagaimana 'kunci' dipahami.
Ambil enkripsi misalnya. Dapat dianggap bekerja seperti ini:
Ini memungkinkan pesan rahasia dikirim antar pihak, tetapi dari sudut pandang intuitif di sini, 'kunci publik' adalah nama yang lebih cocok daripada 'kunci publik'.
Namun, untuk mengirim tanda tangan digital perannya agak terbalik:
Kemudian ketika penerima menerima pesan, mereka dapat membacanya, dan kemudian menggunakan kunci publik untuk membuka kunci pesan yang terkunci dan membandingkan dua pesan. Jika pesannya sama, maka mereka tahu bahwa:
Pesan yang dibuka tidak dirusak selama perjalanan dan,
Pesan harus berasal dari orang yang memiliki kunci yang cocok untuk kunci publik mereka.
Dan akhirnya, seluruh sistem ini hanya berfungsi jika ada orang yang ingin memvalidasi tanda tangan penanda tangan memiliki tempat otoritatif untuk pergi untuk mendapatkan kunci yang cocok dengan kunci tanda tangan. Kalau tidak, siapa pun dapat mengatakan "Hei, inilah kunci untuk kunci pribadi ini-dan-begitu", mengirimi Anda pesan berpura-pura menjadi mereka tetapi menguncinya dengan kunci pribadi mereka, Anda melakukan semua langkah di atas dan percaya bahwa pesan tersebut harus benar-benar dari orang yang Anda pikir, tetapi Anda dibodohi karena Anda menyesatkan pemilik kunci publik yang sebenarnya.
Selama ada sumber yang layak dipercaya untuk mengambil kunci publik penandatangan, Anda akan tahu siapa pemilik kunci publik yang sah, dan akan dapat memvalidasi tanda tangan mereka.
sumber
Untuk pertanyaan Anda - saya melihat implementasi RSA. Dan mendapatkan kejelasan lebih lanjut tentang cara kunci publik digunakan untuk memverifikasi tanda tangan menggunakan kunci pribadi. Tidak diragukan lagi, kunci pribadi tidak terbuka. Begini caranya ...
Trik di sini adalah menyembunyikan kunci pribadi dalam suatu fungsi. Pada kasus ini,
(p-1)*(q-1).
Anggap p sebagai kunci privat dan e sebagai kunci publik. 'p' diringkas dalam fungsi lain untuk membuatnya tersembunyi.
Data terkirim = [terenkripsi (hash), pesan] = [m ^ d, pesan]; di mana m adalah pesan Misalkan 'Data terkirim' = y Untuk memeriksa integritas kita menemukan y ^ e untuk mendapatkan m. Sejak
m ^(d*e) = m ^1 = m
.Semoga ini membantu! :)
sumber