Как зашифровать поля в XML-документе с помощью PHP и RSA / Triple DES - PullRequest
1 голос
/ 21 июня 2010

Я разрабатываю приложение для школ в Южной Африке, которое требуется для предоставления данных в формате XML в Государственное агентство информационных технологий для статистической обработки. В настоящее время я генерирую XML-файлы, используя класс PHP DOMDocument.

Мои файлы прошли проверку на первом этапе. Следующим этапом является реализация шифрования и сжатия файлов XML. Сжатие - это простой GZip, так что не беспокойтесь.

В документе спецификации указано, что используется как шифрование RSA (мне будут выданы ключи RSA для реализации в программном обеспечении), так и некоторая форма симметричного шифрования, например Triple DES (хотя это «пример» и любой из алгоритмы на http://www.w3.org/TR/xmldsig-core могут быть реализованы). Если я правильно понимаю, шифрование RSA заключается в кодировании симметричного ключа, который используется для фактического шифрования полей.

В спецификации также говорится: «Шифрование XML-файла может выполняться либо для всего файла, либо для определенных элементов». Я не совсем уверен, что проще, на данном этапе и поэтому ответов на оба вопроса будет достаточно!

Требуется, я полагаю, шифровать содержимое тегов XML, а не имена (как в http://www.w3.org/TR/xmlenc-core/#sec-eg-Element-Content-Character).

Я прошу прощения, если это кажется расплывчатым. В настоящее время это вся информация, которая у меня есть, и контакты в Агентстве рады сообщить, что примеры кода (VisualBasic .NET) должны объяснить все ... Если вы хотите изучить этот пример кода, вы можете ознакомиться с документ Word в следующем ZIP-файле, начиная со страницы 213 и далее. http://www.sita.co.za/doe_lurits/DEVS-00118%20Rev%201.2%2012%20Jan%202009.zip

Если кто-нибудь может помочь или указать мне правильное направление, я был бы признателен.

Ответы [ 4 ]

0 голосов
/ 21 июня 2010

Архитектура Symmetric-encrypted-document-plus-PK-encrypted-key по сути является PGP.Будет ли OpenPGP приемлемым для вашего клиента?

0 голосов
/ 21 июня 2010

Похоже, что вы можете либо зашифровать весь документ или только содержимое определенных «конфиденциальных» тегов.Шифрование всего документа, вероятно, будет самым простым способом.

Что касается RSA / 3DES - вы почти наверняка правы.Вы бы зашифровали документ с помощью 3DES, а затем зашифровали свой ключ 3DES с помощью их открытого ключа RSA.

Итак, похоже, вам нужно просто сгенерировать документ, сжать его, а затем зашифровать сжатые результаты с помощью 3DES.

0 голосов
/ 21 июня 2010

Вы должны просто зашифровать файл XML с помощью XMLSec Encryption. Следующая библиотека должна обработать все детали для вас,

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

0 голосов
/ 21 июня 2010

См. openssl_encrypt для симметричного шифрования и openssl_public_encrypt / openssl_private_decrypt для асимметричного шифрования.

...