Apakah mungkin untuk meminta gpg (atau gpg4win) hanya memverifikasi apakah file ditandatangani oleh file kunci publik tertentu, tanpa harus mengimpor dan menandatangani dan percaya kunci itu?
yaitu sesuatu seperti
gpg --using-key pubkey.txt --verify message.txt
sebagai lawan harus membuat kunci pribadi Anda sendiri dan kemudian lakukan
gpg --import pubkey.txt
gpg --lsign-key [name within pubkey.txt]
# ... something to do with choosing trust levels
gpg --verify message.txt
gpg --status-fd 1 --verify (thefile)
memberikan dalam outputnya sebagai string pertama sidik jari kunci yang membuat tanda tangan.Jawaban:
Anda harus memiliki kunci publik untuk memverifikasi tanda tangan yang dibuat dengan kunci pribadi yang sesuai, tetapi Anda tidak harus menandatangani atau bahkan menandatangani kunci secara lokal. Dalam hal ini Anda akan menerima peringatan dari GPG bahwa kunci tidak dipercaya.
Inilah tes yang saya buat dengan file yang ditandatangani oleh kunci saya sendiri, tetapi pada sistem di mana kunci tersebut belum diimpor:
Sayangnya saran Harry tidak berfungsi, itu mengekstrak sedikit informasi lebih banyak, tetapi tidak cukup untuk digunakan.
Seperti yang Anda lihat, sebagian besar informasi yang diperoleh adalah ID kunci subkunci yang digunakan untuk membuat tanda tangan dan waktu tanda tangan dibuat. Ini cocok dengan data yang tersedia untuk pgpdump (atau --list-paket):
Seperti yang Anda lihat, ia menyediakan algoritma hash, detail dari jenis kunci (kunci penandatanganan saya adalah subkunci RSA 3072-bit dan ID kunci subkunci, tetapi tidak ada yang mengidentifikasi kunci utama. Informasi itu hanya terungkap ketika Anda memiliki kunci publik dan memverifikasi tanda tangan.
Kemudian saya mengimpor kunci publik saya ke sistem itu dan mencoba lagi:
Sekarang ia dapat mengidentifikasi kunci dan mencocokkannya dengan kunci utama. Namun, adalah mungkin untuk mengurangi sifat dari peringatan tersebut seperti ini:
Masih ada peringatan bahwa itu adalah kunci yang tidak dipercaya, tetapi tidak secara besar-besaran dan menghapus verbositas hanya mengurangi ini menjadi ini:
Kunci publik diperlukan untuk tahap verifikasi karena digunakan untuk mencocokkan data yang dihasilkan oleh penanda tangan dengan kunci pribadi mereka. Dapat dianggap, secara sederhana, sebagai pelengkap enkripsi di mana kunci pribadi diperlukan untuk mendekripsi data yang dienkripsi ke kunci publik.
Catatan: Saya telah sedikit mengubah UID dalam contoh ini, tetapi setiap orang yang mendapatkan kunci itu akan melihat apa sebenarnya mereka. Kalau tidak, hasilnya adalah copy dan paste langsung.
EDIT: Anda dapat memanggil file kunci publik secara langsung seperti keyring jika Anda memilikinya dalam format lapis baja non-ASCII (yaitu file .gpg alih-alih file .asc). Meski begitu, Anda masih membutuhkan kunci publik. Untuk melakukan ini perintahnya seperti ini:
sumber
Jika Anda setuju dengan pengiriman keyring, daripada file kunci publik, Anda mungkin ingin menggunakan
gpgv
daripadagpg
:sumber
Jika kata Anda "verifikasi" dalam pertanyaan berarti "benar-benar memverifikasi", maka tentu saja kunci publik harus diimpor untuk sepenuhnya memverifikasi dokumen yang ditandatangani. Namun, jika ini berarti "mengidentifikasi", maka saya jelaskan di bawah heuristik yang dapat memberi tahu apakah semua dokumen ditandatangani oleh tanda tangan yang sama.
Menurut tes yang dilakukan oleh @Ben untuk memverifikasi komentar saya, ada kemungkinan bahwa perintah berikut dapat digunakan untuk secara heuristik menunjukkan kunci penandatanganan:
Tes Ben memberikan hasil di bawah ini. Yang perlu diperhatikan adalah nilai ERRSIG dan NO_PUBKEY, dan juga nilai "ID kunci RSA" yang sebagian terkandung di dalamnya, sebagai berikut:
Catatan di atas string
7FF2D37135C7553C
. String yang sama ini ditemukan di dalam sidik jari kunci yang dilaporkan setelah kunci diimpor:String ini ditemukan sebagai bagian bawah sidik jari (Subkey di atas), jadi mungkin dapat digunakan untuk mengidentifikasi kunci. "Sidik jari kunci utama" mungkin harus diverifikasi juga, selain Subkunci.
String "RSA key ID" identik di kedua output dan juga ditemukan sebagai bagian terakhir dari sidik jari, sehingga mungkin saja cukup untuk mengidentifikasi tanda tangan. Jika itu masalahnya, hanya menggunakan output
gpg --verify
mungkin cukup untuk mengidentifikasi tanda tangan dengan cara yang lebih sederhana.Pengetahuan saya tentang GPG tidak cukup untuk sepenuhnya memvalidasi metode ini, jadi Anda harus mencobanya pada file contoh lainnya. Jika berhasil, Anda bisa mengurutkan file sesuai dengan tanda tangan mereka, tetapi akan perlu mengimpor kunci untuk menemukan identitas orang yang ditandatanganinya.
Untuk menyatakan kembali dengan jelas: Metode ini tidak dapat sepenuhnya mengidentifikasi tanda tangan. Ini hanya cara memilah dokumen yang ditandatangani secara heuristik.
sumber