2010-06-08 12 views
2

Je dois signer numériquement les fichiers MS Office et PDF stockés sur un serveur. Je veux vraiment dire une signature numérique qui est intégrée dans le document, en fonction de chaque format de fichier spécifique.Signer numériquement MS Office (Word, Excel, etc.) et les fichiers PDF sur le serveur

C'est le processus que j'avais à l'esprit:

  1. Créer un hachage du contenu du fichier
  2. Envoyer le hachage à un applet java écrit personnalisé dans le navigateur
  3. L'utilisateur crypte le hachage avec sa clé privée (sur un jeton usb via PKCS # 11 par exemple), signant ainsi effectivement le fichier. Ensuite, l'applet envoie la signature au serveur
  4. Sur le serveur, j'intègre ensuite la signature dans le fichier (les fichiers MS Office et PDF peuvent le faire sans changer le contenu du fichier, probablement en définissant simplement un champ de métadonnées)

Ce qui est cool, c'est que vous n'avez jamais à télécharger et à télécharger le fichier complet sur le serveur. Quoi de plus cool, le client n'a pas besoin d'Office ou de PDF Writer pour signer les fichiers.

Les parties 2, 3 et 4 sont OK pour moi, mon entreprise a acheté toute la technologie JAVA dont j'ai besoin pour un projet précédent sur lequel j'ai travaillé.

Problème: Je n'arrive pas à trouver de documentation/exemples pour faire les parties 1 et 5 pour les fichiers Office. Est-ce que mes compétences google m'échouent cette fois?

Avez-vous des pointeurs vers la documentation ou des exemples pour faire cela pour les fichiers MS Office? La technologie sous-jacente n'est pas si importante pour moi: je peux utiliser Java, .Net, COM, toute technologie de travail est OK!

Note: Je suis 95% sûr que je peux clouer les points 1 et 5 pour les fichiers PDF à l'aide iText

Merci

** Edit: Si je ne peux pas le faire avec hash et doit télécharger le compléter le fichier au client, c'est aussi possible. Mais j'ai encore besoin de la documentation pour pouvoir signer le fichier Office ... en java cette fois (depuis une applet)

+1

Vous êtes sûrs à 95% ... soyez sûrs à 100%, nous avons développé une solution qui fait exactement cela pour les fichiers PDF en utilisant iText –

+0

Carles: Avez-vous un lien direct vers un produit? –

+0

Bonjour Sébastien, Avez-vous trouvé une bonne solution à votre problème? J'ai actuellement le même défi que vous aviez. J'apprécierais beaucoup si vous partagez votre expérience. Thks à l'avance, José –

Répondre

0

Je vois un problème: une fois que vous incorporez la signature dans le fichier, vous changez immédiatement sa valeur de hachage. Donc, si vous prenez la signature plus tard pour vérifier que le fichier n'a pas été modifié, il échouera définitivement.

+0

Je suis d'accord, mais les formats PDF et Office gèrent ce problème. Voici comment je pense que c'est fait: chaque fichier est une enveloppe contenant le contenu réel du fichier PDF/Ofice + quelques métadonnées. Lorsque vous signez le fichier, vous signez le contenu, puis vous stockez la signature dans les métadonnées. Le fichier a changé, mais pas le contenu. Lorsque Acrobat ou Office ouvre ensuite le fichier, il vérifie si le contenu et la signature stockés dans les métadonnées correspondent. Exemple de ce type de signature pour les fichiers PDF: http://itextpdf.sourceforge.net/howtosign.html#howtosign –

+0

Ah, donc vous ne voulez pas hacher le 'fichier' mais le 'contenu' du fichier, comme le texte dans un document Word ...? –

+0

droite, mais pas seulement le texte mais aussi les images et tout ... Je vais essayer de rendre ma question originale un peu plus claire –

-1

Vous ne devriez pas vous inventer la signature. Vous pouvez convertir des fichiers au format XML et utiliser XMLDSIG (JSR 105), qui est inclus dans Java 6.

http://java.sun.com/javase/7/docs/technotes/guides/security/xmldsig/overview.html

Si vous pouvez utiliser des formats ouverts de fichiers Office comme docx, il est déjà XML de sorte que vous avez juste besoin d'ajouter Signature.

+1

Il n'y a rien à inventer ici - tous les formats de fichiers Office (ancien MS Office, OOXML et OpenOffice ODF) la prise en charge de la signature, ainsi que la spécification PDF. Tout est documenté et standard. –

1

En général, vous pouvez utiliser notre produit SecureBlackbox pour signer des fichiers Office et PDF. Cependant, la signature distribuée comme celle de votre scénario n'est pas triviale (bien que possible). Nous travaillons actuellement sur un add-on à SecureBlackbox pour simplifier ces opérations distribuées.Mise à jour: fonctionnalité de signature distribuée est maintenant disponible et décrite en détails dans this answer.

+0

Merci pour le lien. Je vais regarder dans cela. –

+0

Question; votre module complémentaire prendra-t-il en charge le jeton PKCS # 11 pour la signature (sans configuration spécifique pour chaque jeton: je dois supporter une tonne de jetons différents: Gemplus, Oberthur, ...)? –

+0

En fait, la signature avec des certificats et des clés privées stockées sur du matériel cryptographique est disponible maintenant (via CryptoAPI ou via l'interface PKCS # 11). Donc, la seule pièce manquante dans le travail est maintenant un add-on pour simplifier la signature distribuée. –