Apakah mungkin untuk menandatangani arsip?

15

Saya bermain dengan openssl untuk membuat kunci pub / prv dan membuat tanda tangan file dan memvalidasinya. Saya bermain-main dengan Cryptophane (windows gnupg frontend) dan mendengar tentang keyserver + dimainkan dengan teks penandatanganan.

Namun saya tidak pernah menandatangani arsip file. Jika saya ingin menerbitkan arsip (7z, rar atau zip, itu tidak masalah) dan saya ingin pengguna atau perangkat lunak saya dapat memeriksa apakah arsip itu telah ditandatangani, bagaimana saya melakukannya? Kunci publik jelas perlu tersedia untuk umum. Tetapi menambahkan tanda tangan ke arsip adalah hal yang menggangguku. Apakah ada arsip perangkat lunak + yang memungkinkan saya untuk menandatangani dan memverifikasi file arsip yang dikompresi?


sumber
Mengapa Anda ingin menandatanganinya? Anda bisa membuat hash SHA1 dan membuat hash tersedia untuk diperiksa klien / pengguna Anda. Ini cukup untuk mengonfirmasi bahwa file belum dirusak. Meskipun pengguna Anda perlu memiliki kemampuan untuk memverifikasi hash tetapi tidak lebih sulit daripada memverifikasi tanda tangan.
BJ292
@ BJ292: Dan bagaimana Anda memverifikasi bahwa hash belum dirusak?
user1686
@ kegembiraan - Tidak yakin saya mengikuti - apa gunanya merusak hash? Saya mengirimi Anda file dan hash - Anda membuat ulang hash dari file dan mengonfirmasi cocok - ini menegaskan file belum diubah. Dalam sebagian besar keadaan, inilah yang diinginkan kebanyakan orang - konfirmasi bahwa file yang didapat dari A ke B tidak berubah. Tentu kedengarannya seperti inilah yang diinginkan OP.
BJ292
3
@ BJ292: Anda mengasumsikan OP hanya peduli dengan korupsi data yang tidak disengaja. Ini belum dinyatakan (atau ditolak) dalam pertanyaan, tetapi OP bertanya tentang tanda tangan digital, jadi saya akan menganggap ada kebutuhan untuk melindungi terhadap modifikasi data yang disengaja (mungkin berbahaya).
user1686
1
@ BJ292: File-file tersebut akan dicerminkan di situs ppls lainnya. Saya ingin menandatanganinya sehingga tidak ada cermin yang dapat merusak

Jawaban:

10

Metode yang umum adalah membuat tanda tangan terpisah dalam .sigfile (biasanya tanda tangan PGP dengan menggunakan gpg -b- X.509 sangat jarang), dan menyediakan kedua file di lokasi yang sama. Sebagai contoh:

ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig

Ini dapat digunakan dengan semua jenis file, tetapi pengguna harus memverifikasi tanda tangan secara manual gpg --verify.


Sayangnya, di luar yang sedang digunakan, tidak ada format arsip (yang saya ketahui) memiliki dukungan untuk tanda tangan bawaan menggunakan PGP atau X.509. (Ini tidak termasuk CAB, yang digunakan oleh Windows secara internal tetapi praktis tidak ada tempat lain, dan agak rumit untuk ditandatangani). WinRAR 4 mampu menambahkan catatan "verifikasi keaslian" menggunakan format berpemilik, tetapi menggunakan lisensi WinRAR Anda sebagai kunci penandatanganan, yang telah berulang kali di-crack. (Pembaruan: Fitur ini telah dihapus dari WinRAR 5 karena rasa tidak aman.)


Di Windows (dan segera Mac OS X), dimungkinkan untuk membuat "arsip yang mengekstraksi sendiri" - file yang dapat dieksekusi yang ditandatangani secara digital yang mengekstrak arsip dari dalam dirinya sendiri - ini adalah contoh cara penginstal perangkat lunak pada Windows bekerja, misalnya. Namun, SFX terbatas pada sistem operasi tunggal, sehingga hanya cocok untuk mendistribusikan program , bukan dokumen atau gambar. (Program Java dapat ditandatangani dan bersifat lintas platform, tetapi beberapa sistem masih memiliki runtime Java.)

pengguna1686
sumber
2

Jar-arsip, dibangun dengan alat jar Jawa, secara efektif zip-Archives, dan ada alat, jarsigner, untuk menandatanganinya.

Berikut ini beberapa tautan bermanfaat:

Terlihat agak rumit pertama ("Apa, saya perlu keeytool untuk? Apa lagi?") Tetapi mudah untuk mengikuti langkah-langkah untuk menyelesaikannya dengan cara yang sederhana. Berhasil. Lalu Anda bisa mencelupkan lebih dalam ke masalah ini.

Pengguna tidak diketahui
sumber
Ini benar (arsip XPI juga ZIP masuk dengan cara yang sangat mirip), tetapi AFAIK, hanya Java Runtime yang benar-benar memverifikasi tanda tangan JAR, dan perlu melakukan verifikasi manual membuatnya lebih tidak praktis daripada GnuPG.
user1686
Apa maksudmu dengan manual verification? Apa alternatifnya? Autopopup, yang memverifikasi sendiri setiap 10 menit? Haruskah OS secara otomatis memverifikasi arsip saat boot up? Ketika arsip diterima - baik itu dari CD, lampiran email, unduh, ...? Haruskah itu menjadi plugin di pemindai virus Anda?
pengguna tidak diketahui
Maksud saya verifikasi dilakukan oleh alat ekstraksi arsip sebelum / selama ekstraksi, atau oleh OS / runtime selama eksekusi program. Misalnya, .debtanda tangan paket diverifikasi dpkgsebelum paket diinstal, tanpa pengguna mengambil tindakan tambahan apa pun.
user1686
@grawity: Applet yang ditandatangani, dizip dalam toples, DIverifikasi sebelum eksekusi. Untuk menghasilkan skrip shell minimal, yang menggabungkan verifikasi (jarsigner) dengan ekstraksi (jar) akan sepele.
pengguna tidak diketahui
Tautan ketiga "wiki pada penandatanganan file jar" rusak
Jason S
0

Tentu, setiap kali Anda menginstal perangkat lunak yang ditandatangani, Anda memverifikasi arsip yang ditandatangani. Untuk membuatnya, Anda harus menggunakan alat pengemasan yang sama yang digunakan pengembang. Ada beberapa tradeoff, kemudahan penggunaan terhadap kompatibilitas lintas platform. Saya tidak bisa memikirkan cara membuat lintas platform ditandatangani arsip penggalian diri.

Untuk windows, buat arsip pengekstrakan sendiri dengan alat iexpress, lalu tandatangani menggunakan signtool.exe, seperti dijelaskan di sini . Ketika pengguna Anda mengklik dua kali pada file tersebut, mereka akan memiliki jendela konfirmasi yang dikenal untuk mengidentifikasi Anda sebagai penerbit arsip.

bbsimonbb
sumber
-1

Anda bisa menandatangani file menggunakan jarsigner dengan dua perintah ini:

keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>

Anda perlu menginstal java jdk di pc Anda.

-Perintah pertama membuat penyimpanan kunci dalam direktori saat ini (dengan asumsi itu belum ada). Ini menghasilkan pasangan kunci publik / pribadi menggunakan algoritma SHA-256.

-Yang kedua menandatangani file menggunakan algoritma yang sama, keystore dan alias yang dihasilkan oleh yang pertama.

Untuk memverifikasi file yang ditandatangani menggunakan penyimpanan kunci, Anda dapat menjalankan perintah ini:

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
afonte
sumber