2009-07-15 6 views
1

Je suis la programmation d'un projet animal de compagnie en Python, et il implique les utilisateurs A & B interagir sur le réseau, en essayant d'assurer que chacun a une copie locale du même fichier de l'utilisateur C.Une signature cryptographique sécurisée doit-elle résider en dehors du fichier auquel elle fait référence?

L'idée est que C donne chacun un fichier qui a été signé numériquement. A & B échanger les signatures numériques dont ils disposent et les vérifier sur leur propre copie. Si la signature échoue, alors l'un d'eux a une version incorrecte/corrompue/modifiée du fichier.

La question est, par conséquent, est-ce que C peut distribuer un seul fichier qui inclut en quelque sorte sa propre signature? Ou est-ce que C doit fournir le fichier et la signature séparément?

+1

"alors l'un d'entre eux a une version incorrecte/corrompue/modifiée du fichier." - ou l'un d'entre eux ment à propos de la somme de contrôle, ou les deux sont, ou C ment, ou quelqu'un est en train de jouer avec des messages: http://en.wikipedia.org/wiki/Byzantine_fault_tolerance –

+0

merci pour le lien wikipedia. :) – hewhocutsdown

Répondre

5

La signature numérique de C seul devrait être suffisant pour A et B pour confirmer que leur dossier ne soit pas corrompu, sans jamais communiquer avec eachother. Si A et B n'ont pas reçu de signature de C, ils peuvent chacun créer un hachage cryptographique du fichier et comparer le hachage, mais cela ne nécessite aucune signature numérique de la part de C. Si vous voulez que C signe le fichier, envoyez la signature et le fichier séparément, ou enveloppez-les dans un conteneur, tel qu'un fichier zip ou une solution native (par exemple, la première ligne du fichier). représente la signature, le reste est la charge utile).

Pour répondre à votre question littéralement, la signature ne doit pas être en dehors du fichier en soi, mais la partie en cours de signature ne peut pas inclure la signature elle-même.

+0

Cela répond à ma question, je crois. Il n'y a pas vraiment de solution propre, car le format de fichier en question est déjà un fichier .zip. Créer un fichier .zip avec un en-tête personnalisé n'est probablement pas une bonne idée, mais ni l'un ni l'autre .zips imbriqués, alors peut-être que la séparation est le chemin à suivre. Je vous remercie. – hewhocutsdown

+0

Le format zip prend en charge les données de début et de fin arbitraires. Vous pouvez simplement ajouter ou ajouter le hash du fichier au fichier zip, et ce sera toujours un zip valide. –

4

Si vous avez le contrôle sur le format de fichier, oui. Inclure la signature dans un en-tête avant le contenu proprement dit, et faire en sorte que la signature ne couvre que la section du contenu du fichier, et non le fichier entier. Quelque chose comme:

SIGNATURE=72ba51288199b829a4b9ca2ac911e60c 
BEGIN_CONTENTS 
... real file contents here ... 
+0

merci pour l'échantillon. – hewhocutsdown