La différence entre la signature d'un message XML en utilisant dsig: Signature et TLS certificat client

StackOverflow https://stackoverflow.com/questions/4153568

Question

Je me rends compte cette question peut être un peu vague ou je peut utiliser une terminologie incorrecte, qui est parce que je suis en train de se familiariser avec ce genre de choses :).

J'ai l'obligation de mettre en œuvre la signature numérique d'un message XML en utilisant une dsig: section Signature. Je pense que je comprends ce processus; Je vais utiliser une clé privée pour signer ce qui garantira au destinataire qu'il est moi qui a envoyé le message et que personne n'a trafiqué avec elle.

Ai-je raison que ceci est différent de la mise en œuvre des certificats TLS client, mais le but est le même? (Parce que TLS est le niveau de transport, non?) Would des certificats clients mettant en œuvre plus facile? Est-ce mieux que l'autre?

Merci beaucoup pour votre réponse,

Martijn

Mise à jour 1:

Je pense qu'une autre différence est que l'aide d'un certificat TLS client tout le message sera chiffré, alors qu'avec la signature numérique du message lui-même sera le texte brut, contenant une section de signature.

Était-ce utile?

La solution

Vous comparez la sécurité au niveau des messages avec la sécurité au niveau des transports. Bien qu'ils ont des similitudes, ils ont des objectifs différents.

Utilisation de TLS protège la communication d'être vu et modifié par des parties intermédiaires. Le certificat X.509 sur les garanties côté serveur que les messages qui lui sont envoyés ne peuvent être lus par le serveur avec cette clé privée et que ce qu'il envoie provient du serveur avec cette clé privée. Cela pourrait vaguement être considéré comme la signature par le serveur et le cryptage pour le serveur avec le certificat X.509, bien qu'il applique vraiment que les messages de prise de contact TLS, pas les données d'application qui est échangés contre par la suite. (Je quitte le fait que vous obtenez un chiffrement symétrique du canal de toute façon, que ce soit ou non une partie a présenté un certificat, il est important d'avoir au moins l'utilisation du serveur un certificat afin que le client sait ce qu'il communique avec au lieu de communiquant avec un potentiel man in the middle). Lorsque vous ajoutez un certificat client à cela, le client signe également les messages TLS, il a échangé au cours de la poignée de main.

Lorsque vous utilisez les deux certificats client et serveur, vous pouvez (soigneusement) faire une analogie avec la sécurité au niveau des messages, en ce que les messages signés et chiffrés sont les messages de prise de contact TLS qui sont utilisés pour établir le canal TLS.

Cependant, il y a de grandes différences avec la sécurité au niveau des messages (par exemple XML-DSig et XML-Enc).

Tout d'abord, l'une des caractéristiques de signature de message (XML-DSig) est l'audit, de sorte que vous pouvez tenir des registres de ce qui a été dit. Ce n'est pas spécifiquement limitée dans le temps. C'est beaucoup plus difficile à faire même si vous avez enregistré les paquets TLS. Avec des suites de chiffrement modernes dans SSL / TLS que l'utilisation DHE (mode éphémère Diffie-Hellman), même si vous avez la clé privée du serveur, vous ne pouvez pas nécessairement déchiffrer le canal si vous avez enregistré tous ses paquets (sans autre connaissance de la DHE mécanisme).

En second lieu, en termes de mise en oeuvre, XML-DSig a tendance à faire au niveau de l'application, alors que TLS a tendance à faire par le connecteur du serveur. La différence peut être floue en fonction des conditions de déploiement, mais TLS est sur la communication avec la machine / conteneur plutôt que l'application derrière eux. En règle générale, le certificat TLS sera mis en place sur un conteneur Java ou au niveau du Fonds de roulement, alors que le certificat utilisé pour XML-DSig sera utilisé par l'application Web / application en cours d'exécution en arrière. Il peut y avoir des personnes différentes ou procédure en charge il.

(Vous avez également raison que si vous utilisez XML-DSig sans XML-Enc, vous n'êtes pas chiffrer les données.)

Autres conseils

Jusqu'à présent, vous comparez des pommes avec des oranges.

Les données XML peuvent être signés de plusieurs façons, par exemple en utilisant la norme XMLDSig et X.509 (il est possible d'utiliser d'autres types de clés XMLDSig aussi). Signature certifie l'auteur du document (bien, dans une certaine mesure bien sûr).

TLS est synonyme de sécurité de la couche de transport et est utilisé pour Chiffrer (signe pas) les données pendant le transfert. Cela n'a rien à voir avec XML spécifiquement. TLS utilise des certificats X.509 aussi, mais vous ne pouvez pas utiliser le même certificat pour XMLSDig et TLS cause de certificats doivent avoir des fins spécifiques (champ d'utilisation des clés).

Je vous suggère de prendre un livre sur l'ICP (je recommande toujours Guide officiel Rsa sécurité à Cryptography pour sa simplicité) et le lire attentivement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top