1.2. Шифрование xml
Ключевое значение для безопасности данных XML имеет корректное шифрование, особенно если речь идет об особо секретных данных, передаваемых через такие незащищенные сети, как Internet. Итак, переходим к спецификации XML Encryption.
Шифрование нередко представляют как самодостаточную операцию — просто данные шифруются на одном конце и затем дешифруются на другом. Однако на самом деле для ее успешного выполнения требуется гораздо больше информации. В экземпляре XML в связи с этим выделяются четыре основных типа данных.
Шифрованное содержимое — собственно зашифрованные данные или ссылка на их местоположение. Разнообразие подлежащих шифрованию типов данных и методов их логической организации практически ничем не ограничено.
Нешифруемое содержимое — прочая информация, относящаяся к контексту взаимодействия, но по какой-то причине не подлежащая шифрованию: например, по соображениям быстродействия или потому, что считается не настолько секретной, чтобы ее стоило шифровать.
Информация о ключах — сведения (или указатели на сведения) о ключах, с помощью которых выполняется шифрование и, соответственно, дешифрование. Они могут храниться в другом месте и заменяться в экземпляре XML на ссылку URL.
Информация о получателях — сведения об одном или нескольких предполагаемых получателях зашифрованных данных. Это необязательные параметры, так как возможны ситуации, когда соответствующая информация о получателях уже известна или предоставляется отдельно, как, например, при общении партнеров по бизнесу, уже связанных договорными отношениями.
Шифрование данных XML производится традиционными методами криптографии с открытыми ключами. Вначале шифруются сами данные, как правило, с помощью случайно формируемого секретного ключа, который затем тоже кодируется — с помощью открытого ключа предполагаемого получателя. Эта информация упаковывается так, чтобы извлечь секретный ключ и расшифровать данные мог только указанный получатель. Для дешифрования секретного ключа применяется скрытый ключ, а затем происходит дешифрование данных с помощью найденного секретного ключа. [1]
Пакеты реализации защиты XML
Уже сегодня, несмотря на то что стандарты W3C появились совсем недавно, некоторые компании объявили о выпуске своих пакетов (библиотек классов), реализующих и ЭЦП, и шифрование.
На данный момент существует множество реализаций с различными вариантами лицензирования — как реализации спецификации электронной цифровой подписи XML-документов, так и шифрования XML-документов. Вот некоторые из них:
Xml Security Suite (ibm)
Xml Security (Apache)
XML Security Library (Aleksey Sanin)
KeyTools XML (Baltimore)
XML Security (Phaos)
XML Signature SDK (Verisign)
Наиболее известными компаниями среди вышеупомянутых, безусловно, являются IBM и Apache. Рассмотрим более подробно пакеты, представленные этими компаниями. [2] [3]
Xml Security Suite (ibm)
Этот пакет основан на языке программирования Java. XML Security Suite является средством, обеспечивающим такие элементы безопасности, как цифровая подпись, шифрование и управление доступом для документов XML. С его помощью можно добиться больших успехов, нежели используя возможности протоколов безопасности транспортного уровня (например, Secure Sockets Layer, SSL).
Этот пакет реализует три технологии:
ЭЦП основана на спецификации «XML — Signature Syntax and Processing» от W3C и IETF (и на спецификации «Canonical XML»);
шифрование реализовано на основе спецификации «XML — Encryption Syntax and Processing» от W3C;
управление доступом для документов XML (XML Access Control Language).
XML Security Suite — это одно из лучших современных средств для защиты XML-документов. Кроме самого архива (JAR) с библиотекой классов, оно включает подробную документацию и примеры, позволяющие быстро сориентироваться в иерархии классов. [2]