2010-06-21 7 views
1

Je développe une application pour les écoles en Afrique du Sud qui doit soumettre des données au format XML à l'agence informatique nationale pour le traitement statistique. Je suis en train de générer les fichiers XML en utilisant la classe DOMDocument de PHP.Comment crypter des champs dans un document XML avec PHP et RSA/Triple DES

Mes fichiers ont subi un premier processus de vérification. L'étape suivante consiste à implémenter le cryptage et la compression des fichiers XML. La compression est un simple GZip donc pas de soucis là-bas. Le document de spécification indique que RSA Encryption est utilisé (des clés RSA seront implémentées dans le logiciel) ainsi qu'une forme de cryptage symétrique telle que Triple DES (bien qu'il s'agisse d'un "exemple" et de les algorithmes à http://www.w3.org/TR/xmldsig-core peuvent être implémentés). Si je comprends bien, le cryptage RSA est d'encoder une clé symétrique qui est utilisée pour le cryptage réel des champs.

Le document de spécification indique également que "le cryptage d'un fichier XML peut être effectué sur l'ensemble du fichier ou sur certains éléments". Je ne suis pas sûr de ce qui est le plus facile, à ce stade et donc des réponses à l'un ou l'autre suffiront!

L'exigence est, je suppose, de crypter le contenu des balises XML et non les noms (comme dans http://www.w3.org/TR/xmlenc-core/#sec-eg-Element-Content-Character). Je m'excuse si cela semble vague.

C'est actuellement toute l'information que j'ai et les contacts à l'Agence sont heureux de dire que les exemples de code (VisualBasic .NET) devraient tout expliquer ... Si vous voulez examiner cet exemple de code, vous êtes invités à jeter un oeil à le document Word dans le fichier ZIP suivant, à partir de la page 213 et suivantes. http://www.sita.co.za/doe_lurits/DEVS-00118%20Rev%201.2%2012%20Jan%202009.zip

Si quelqu'un peut m'aider ou me diriger dans la bonne direction, je l'apprécierais.

+0

triple des est très vieux. – rook

+0

@The Rook Je ne suis pas en désaccord. Toutes les méthodes de chiffrement prises en charge peuvent être utilisées. – Philip

Répondre

0

Vous devez simplement chiffrer le fichier XML à l'aide de XMLSec Encryption. La bibliothèque suivante doit gérer tous les détails pour vous,

http://code.google.com/p/xmlseclibs/

+0

Merci: cela semble faire exactement ce que j'ai besoin de faire. Je vais enquêter plus loin. – Philip

0

Voir openssl_encrypt pour le cryptage symétrique et openssl_public_encrypt/openssl_private_decrypt pour le cryptage asymétrique.

+0

Merci pour ça. La question suivante est comment structurer ceci en XML ... – Philip

+0

@Philip Si vous choisissez de crypter le XML, vous pouvez envelopper le document XML dans un autre document XML où vous incluez la clé publique (ou un certificat), la clé symétrique cryptée et la charge utile chiffrée sur des éléments séparés, éventuellement codée en base64. – Artefacto

0

Des sons comme vous pouvez crypter le document entier ou simplement le contenu de certaines balises "sensibles". Crypter le document entier serait probablement le moyen le plus facile d'y aller. En ce qui concerne le système RSA/3DES, vous avez presque certainement raison. Vous crypter le document avec 3DES, puis crypter votre clé 3DES avec leur clé publique RSA.

Donc, il semble que ce que vous devez faire est juste de générer le document, le compresser, puis crypter les résultats compressés avec 3DES.

+0

Merci, Eric.L'étape suivante consiste à savoir comment cela est finalement structuré en XML. Comment est-ce que j'indique quelle est la clé symétrique? Crypter le fichier entier est assez simple et le placer dans la structure appropriée est très bien. Cela aurait été fait en utilisant Triple DES. Mais quelque part, je dois avoir la clé? – Philip

0

L'architecture clé-Symmetric crypté-document plus-PK crypté est essentiellement PGP. OpenPGP serait-il acceptable pour votre client?

+0

Vous n'avez pas tort, mais j'écris une interface pour le transfert de données dans un système existant. Donc je dois les respecter :-) – Philip

Questions connexes