Arşiv imzalamak mümkün mü?


15

Bir pub / prv anahtarı yapmak ve bir dosyanın imzasını oluşturmak ve doğrulamak için openssl ile oynadım. Cryptophane (windows gnupg frontend) ile oynadım ve anahtar sunucuları + metin imzalama ile oynadığımı duydum.

Ancak ben hiç bir dosya arşivi imzalamadım. Bir arşiv (7z, rar veya zip, yayınlamak istemiyorsa) ve kullanıcılarımın veya yazılımımın BU arşivin imzalanıp imzalanmadığını kontrol edebilmesini istiyorum, bunu nasıl yaparım? Açık anahtarın açıkça kamuya açık olması gerekir. Ama arşive imza eklemek beni rahatsız eden şey. Herhangi bir yazılım + arşiv, sıkıştırılmış bir arşiv dosyasını imzalamama ve doğrulamama izin veriyor mu?


Neden imzalamak istiyorsun? Sadece bir SHA1 karması oluşturabilir ve karmayı müşterilerinizin / kullanıcıların kontrol edebilmesini sağlayabilirsiniz. Bu, dosyanın kurcalanmadığını doğrulamak için yeterlidir. Kullanıcılarınızın karmayı doğrulama yeteneğine sahip olmalarına rağmen, bir imzayı doğrulamaktan daha zor değildir.
BJ292

@ BJ292: Peki karma işlemin kurcalanmadığını nasıl doğrularsınız ?
user1686

@grawity - Takip ettiğimden emin değilim - karma ile kurcalamanın anlamı nedir? Size bir dosya ve karma gönderiyorum - karma dosyasını dosyadan yeniden oluşturuyor ve eşleştiğini onaylıyorsunuz - bu dosyanın değiştirilmediğini onaylıyor. Çoğu durumda bu çoğu insanın istediği şeydir - dosya A'dan B'ye değişmez. Kesinlikle OP böyle bir şey peşinde gibi geliyor.
BJ292

3
@ BJ292: OP'nin sadece yanlışlıkla veri bozulmasıyla ilgili olduğunu varsayıyorsunuz. Bu soruda belirtilmedi (veya reddedildi), ancak OP dijital imzalar soruyor, bu yüzden kasıtlı (muhtemelen kötü amaçlı) veri değişikliklerine karşı korumaya ihtiyaç olduğunu varsayacağım .
user1686

1
@ BJ292: Dosyalar diğer ppls sitelerine yansıtılacaktır. Onları imzalamak istiyorum, böylece aynaların hiçbiri kurcalanamaz

Yanıtlar:


10

Yaygın bir yöntem, bir dosyada bağımsız bir imza oluşturmaktır.sig (genellikle gpg -b- X.509 kullanarak bir PGP imzası çok nadirdir) ve her iki dosyayı da aynı konumda sağlamaktır. Örneğin:

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

Bu, her türlü dosyayla kullanılabilir, ancak kullanıcının imzayı kullanarak manuel olarak doğrulaması gerekir gpg --verify.


Ne yazık ki, şu anda kullanımda olanlardan, bildiğim hiçbir arşiv formatı PGP veya X.509 kullanan yerleşik imzaları desteklemiyor . (Bu, Windows tarafından dahili olarak ancak neredeyse hiçbir yerde kullanılmayan ve imzalaması oldukça karmaşık olan CAB'yi hariç tutar). WinRAR 4, özel bir biçim kullanarak bir "kimlik doğrulama" kaydı ekleyebildi, ancak WinRAR lisansınızı art arda kırılan imzalama anahtarı olarak kullanıyor. (Güncelleme: Bu özellik güvensizlik nedeniyle WinRAR 5'ten kaldırılmıştır .)


Windows'ta (ve yakında Mac OS X'te), kendi içinden bir arşivi çıkaran dijital imzalı bir yürütülebilir dosya olan "kendiliğinden açılan bir arşiv" oluşturmak mümkündür - örneğin Windows'taki yazılım yükleyicileri bu şekilde çalışır. Bununla birlikte, SFX'ler tek bir işletim sistemiyle sınırlıdır, bu nedenle belge veya resim için değil, yalnızca programların dağıtımı için uygundurlar . (Java programları imzalanabilir ve platformlar arası olabilir, ancak çok az sistemde Java çalışma zamanı vardır.)


2

Kavanoz arşivleri, Javas kavanoz aracı ile inşa edilir, etkili bir şekilde Zip Arşivleridir ve bunları imzalayacak bir araç, jarsigner vardır.

İşte bazı yararlı bağlantılar:

İlk önce biraz karmaşık görünüyor ("Ne, keeytoole ihtiyacım var? Başka ne var?") Ama basit bir şekilde çözmek için adımları takip etmek kolaydır. İşe yarıyor. Sonra konunun derinliklerine inebilirsiniz.


Bu doğrudur (XPI arşivleri de çok benzer şekilde imzalanmış ZIP'lerdir), ancak AFAIK, yalnızca Java Runtime , JAR imzalarını gerçekten doğrular ve manuel doğrulama yapılması GnuPG'den daha az pratik hale getirir.
user1686

Ne demek istiyorsun manual verification? Alternatif nedir? Her 10 dakikada bir kendini doğrulayan bir otomatik çalışma? İşletim sistemi açılıştaki arşivi otomatik olarak doğrulayacak mı? Bir arşiv alındığında - CD'den, e-posta eklentisinden, indirmeden, ...? Virüs tarayıcınızda bir eklenti olmalı mı?
kullanıcı bilinmiyor

Ben çıkarma önce / sırasında arşiv çıkarma aracı veya program yürütme sırasında OS / çalışma zamanı tarafından yapılan doğrulama demek istedim. Örneğin, .debpaket imzaları , kullanıcı herhangi bir işlem yapmadandpkg paket kurulmadan önce doğrulanır .
user1686

@grawity: İmzalı uygulamalar, bir kavanoza sıkıştırılmış, yürütmeden önce ARE doğrulanmış. Doğrulamayı (jarsigner) ekstraksiyon (kavanoz) ile birleştiren minimal bir kabuk betiği oluşturmak önemsiz olacaktır.
kullanıcı bilinmiyor

üçüncü bağlantı "wiki jar dosyalarını imzalamada" bozuldu
Jason S

0

Elbette, imzalı yazılımı her yüklediğinizde imzalı bir arşivi doğrularsınız. Bir tane oluşturmak için geliştiricilerin kullandığı aynı ambalaj araçlarını kullanmalısınız. Bazı platformlar, çapraz platform uyumluluğuna karşı kullanım kolaylığı vardır. Çapraz platform imzalı kendi kendine açılan bir arşiv oluşturmanın bir yolunu düşünemiyorum.

Windows için, iexpress aracıyla kendi kendine ayıklanan bir arşiv oluşturun, sonra burada açıklandığı gibi signtool.exe'yi kullanarak imzalayın . Kullanıcılarınız dosyayı çift tıkladıklarında, tanıdık pencerelerin sizi arşivin yayıncısı olarak tanımlayan diyalogu onaylamasını sağlar.


-1

Aşağıdaki iki komutla jarsigner'ı kullanarak dosya imzalayabilirsiniz:

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>

PC'nize Java JDK yüklemeniz gerekiyor.

-İlk komut, geçerli dizinde anahtar deposunu oluşturur (zaten mevcut olmadığı varsayılarak). SHA-256 algoritmasını kullanarak bir genel / özel anahtar çifti üretir.

-İkincisi dosyayı aynı algoritmayı, anahtar deposunu ve birincisi tarafından oluşturulan takma adı kullanarak imzalar.

Anahtar deposu kullanılarak imzalanmış bir dosyayı doğrulamak için şu komutu çalıştırabilirsiniz:

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.