Est-il possible de signer des archives?


15

J'ai joué avec openssl pour créer une clé pub / prv et créer une signature de fichier et la valider. J'ai joué avec Cryptophane (interface Windows gnupg) et entendu parler des serveurs de clés + joué avec la signature du texte.

Je n'ai cependant jamais signé d'archives de fichiers. Si je veux publier une archive (7z, rar ou zip, cela n'a pas d'importance) et que je souhaite que mes utilisateurs ou logiciels puissent vérifier si CETTE archive a été signée, comment dois-je procéder? La clé publique devrait évidemment être disponible publiquement. Mais l'ajout de la signature aux archives est ce qui me dérange. Est-ce qu'un logiciel + archive me permet de signer et de vérifier un fichier d'archive compressé?


Pourquoi voulez-vous le signer? Vous pouvez simplement créer un hachage SHA1 et le rendre disponible pour vérification par vos clients / utilisateurs. Cela suffit pour confirmer que le fichier n'a pas été falsifié. Bien que vos utilisateurs doivent avoir la possibilité de vérifier le hachage, mais pas plus difficile que de vérifier une signature.
BJ292

@ BJ292: Et comment vérifiez-vous que le hachage n'a pas été falsifié?
user1686

@grawity - Je ne suis pas sûr de suivre - quel est l'intérêt de falsifier le hachage? Je vous envoie un fichier et le hachage - vous recréez le hachage à partir du fichier et confirmez qu'il correspond - cela confirme que le fichier n'a pas été modifié. Dans la plupart des cas, c'est tout ce que la plupart des gens veulent - confirmation que le fichier est passé de A à B inchangé. On dirait certainement que c'est ce que l'OP recherche.
BJ292

3
@ BJ292: Vous supposez que le PO ne concerne que la corruption accidentelle des données. Cela n'a pas été indiqué (ou nié) dans la question, mais le PO pose des questions sur les signatures numériques, donc je vais supposer qu'il faut se protéger contre les modifications intentionnelles (éventuellement malveillantes) des données.
user1686

1
@ BJ292: Les fichiers seront mis en miroir sur d'autres sites ppls. Je voudrais les signer pour qu'aucun des miroirs ne puisse trafiquer

Réponses:


10

Une méthode courante consiste à créer une signature détachée dans un .sigfichier (généralement une signature PGP en utilisant gpg -b- X.509 est très rare) et à fournir les deux fichiers au même emplacement. Par exemple:

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

Cela peut être utilisé avec n'importe quel type de fichier, mais l'utilisateur devra vérifier manuellement la signature à l'aide de gpg --verify.


Malheureusement, parmi ceux actuellement utilisés, aucun format d'archive (à ma connaissance) ne prend en charge les signatures intégrées à l' aide de PGP ou X.509. (Ceci exclut CAB, qui est utilisé par Windows en interne mais pratiquement nulle part ailleurs, et est plutôt compliqué à signer). WinRAR 4 a pu ajouter un enregistrement de "vérification d'authenticité" en utilisant un format propriétaire, mais il utilise votre licence WinRAR comme clé de signature, qui a été piratée à plusieurs reprises. (Mise à jour: cette fonctionnalité a été supprimée de WinRAR 5 en raison de l'insécurité.)


Sous Windows (et bientôt Mac OS X), il est possible de créer une "archive auto-extractible" - un exécutable signé numériquement qui extrait une archive de lui-même - c'est ainsi que les installateurs de logiciels sur Windows fonctionnent, par exemple. Cependant, les SFX sont limités à un seul système d'exploitation, ils ne conviennent qu'à la distribution de programmes , pas de documents ou d'images. (Les programmes Java peuvent être signés et sont multiplates-formes, mais peu de systèmes ont encore un runtime Java.)


2

Les jar-archives, construites avec Javas jar-tool, sont en fait des archives zip, et il existe un outil, le jarsigner, pour les signer.

Voici quelques liens utiles:

Cela semble un peu compliqué en premier ("Quoi, j'ai besoin de keeytool pour? Quoi d'autre?") Mais il est facile de suivre les étapes pour le résoudre de manière simple. Ça marche. Ensuite, vous pouvez approfondir la question.


C'est vrai (les archives XPI sont également des ZIP signés de manière très similaire), mais AFAIK, seul le Java Runtime vérifie réellement les signatures JAR, et avoir besoin de faire une vérification manuelle le rend encore moins pratique que GnuPG.
user1686

Que voulez-vous dire manual verification? Quelle est l'alternative? Un autopopup, qui se vérifie toutes les 10 minutes? Le système d'exploitation vérifiera-t-il automatiquement l'archive au démarrage? Lorsqu'une archive est reçue - que ce soit à partir d'un CD, d'une pièce jointe à un courrier électronique, d'un téléchargement, ...? Doit-il s'agir d'un plugin dans votre antivirus?
utilisateur inconnu

Je voulais dire la vérification effectuée par l'outil d'extraction d'archive avant / pendant l'extraction, ou par le système d'exploitation / runtime pendant l'exécution du programme. Par exemple, .debles signatures de package sont vérifiées par dpkgavant l'installation du package, sans que l'utilisateur n'ait à effectuer d'action supplémentaire.
user1686

@grawity: Les applets signées, zippées dans un bocal, SONT vérifiées avant exécution. Pour générer un script shell minimal, qui combine la vérification (jarsigner) avec l'extraction (jar) sera triviale.
utilisateur inconnu

le troisième lien "wiki sur la signature des fichiers jar" est cassé
Jason S

0

Bien sûr, chaque fois que vous installez un logiciel signé, vous vérifiez une archive signée. Pour en créer un, vous devez utiliser les mêmes outils de packaging que les développeurs utilisent. Il existe des compromis, une facilité d'utilisation contre la compatibilité multiplateforme. Je ne peux pas penser à un moyen de créer une archive auto-extractible signée multiplateforme.

Pour Windows, créez une archive auto-extractible avec l'outil iexpress, puis signez-la à l'aide de signtool.exe, comme décrit ici . Lorsque vos utilisateurs double-cliquent sur le fichier, ils ont la fenêtre de confirmation familière qui vous identifie en tant qu'éditeur de l'archive.


-1

Vous pouvez signer des fichiers à l'aide de jarsigner avec ces deux commandes:

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>

Vous devez installer java jdk sur votre PC.

-La première commande crée le magasin de clés dans le répertoire courant (en supposant qu'il n'existe pas déjà). Il génère une paire de clés publique / privée en utilisant l'algorithme SHA-256.

-Le second signe le fichier en utilisant le même algorithme, le magasin de clés et l'alias généré par le premier.

Pour vérifier un fichier signé à l'aide d'un magasin de clés, vous pouvez exécuter cette commande:

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.