Экстернат |
XML- криптография
![](http://www.intuit.ru/sites/default/files/icons/ppt.gif)
Цель лекции
- Рассмотреть круг задач, на решение которых ориентирована XML - криптография
- Изучить возможности XML -криптографии:
- Сравнить различные типы XML -подписей
XML-подпись
Реализация целостности и невозможность отказа обеспечиваются посредством цифровых XML -подписей ( XML-Signature ). XML -подпись служит для проверки целостности принятых сообщений и полной либо частичной аутентификации XML -документов. Стандарт цифровой подписи XML-Signature Syntax and Processing (сокращенно XMLDSIG от eXtensible Markup Language Digital SIGnature specification ) разработан консорциумом W3C в 2002 году [11.1]. Он определяет синтаксис представления цифровых подписей и правила их обработки, а также сервисы, обеспечивающие целостность данных (в том числе документов XML в передаваемом сообщении или вне его), установление подлинности сообщения и подписавшего его лица. Для реализации функциональности, связанной с XML -подписью, .NET Framework предоставляет набор готовых классов, расположенных в пространстве имен System.Security.Cryptography.Xml.
Применительно к XML -документам этот стандарт не является чем-то принципиально новым. Его специфика состоит в описании того, как цифровые подписи могут быть использованы внутри XML -документов. Проверка целостности служит подтверждением того, что при передаче сообщение не получило повреждений в результате атаки. Кроме того, цифровая подпись обеспечивает свойство невозможности отказа, в соответствии с которым пославший документ не может отказаться от выполненного им действия. От других подобных стандартов XML-Signature отличается возможностью распространения не на весь документ, а только на его часть. Разделение подписи на части обеспечивает гибкость работы с документами с долгой историей, на протяжении которой отдельные части могли создаваться и подписываться независимо. Гибкость важна и в тех случаях, когда требуется целостность всего документа, но некоторые его части нужно оставить свободными для дальнейших изменений.
Данные, заверенные подписью, могут содержаться внутри самого документа XML или размещаться в других документах. На рис. 11.1 схематически показаны три различных способа реализации XML -подписи [11.2]:
- "Изолированная" подпись ( Detached signature ) вычисляется по объекту данных, который является внешним по отношению к элементу XML Signature. Элемент Signature и "подписанный" объект могут физически располагаться либо в разных XML -документах, либо внутри различных тэгов одного документа;
- "Охватывающая" подпись ( Enveloping signature, Wrapped signature ) вычисляется по элементу Object, расположенному внутри элемента Signature ;
- "Встроенная" подпись ( Enveloped signature, Embedded signature ) вычисляется по XML -контенту, содержащему элемент Signature.
Для обеспечения целостности данные преобразуются в короткий дайджест. Если полученные сведения отличаются от оригинала, их дайджест будет отличен от исходного. В параметрах подписи указывается алгоритм, использованный для создания дайджеста. С его помощью получатель может проверить полученную подпись. Перед подписанием XML -документ приводится к канонической форме, определенной правилами разработанной W3C рекомендации "Canonical XML" [11.6]. Это позволяет избежать неоднозначностей генерации дайджеста по синтаксически одинаковым документам, которые могут отличаться порядком тегов, атрибутов или кодировкой.
XML-криптография
XML -криптография ( XML encryption ) как процесс зашифрования и расшифрования цифрового контента XML заключается в использовании определенного XML -синтаксиса и алгоритмов. XML -криптография предоставляет стандартизованные средства для шифрования структурированных данных и представления результата в формате XML. XML -криптография позволяет зашифровать любые данные, будь то целый XML -документ, его элементы или внешние данные (не обязательно в формате XML ), на которые ссылается документ. Результат шифрования представляется как зашифрованный элемент XML, который либо непосредственно содержит зашифрованные данные, либо ссылается на них. В обоих случаях полученное представление может быть использовано приложениями, использующими мощные кросс-платформенные технологии XML для доступа к данным.
Существуют Интернет-протоколы шифрования, такие как Secure Sockets Layer ( SSL ), Transport Layer Security ( TLS ) и IPSec, позволяющие шифровать данные, которыми обмениваются два приложения, и обеспечивать их целостность. Тем не менее, между шифрованием XML и этими протоколами существуют фундаментальные различия [11.3]. Во-первых, XML -криптография позволяет шифровать не все данные, а только те элементы XML -документа, которые нуждаются в защите, оставляя остальное содержимое открытым. Защита канала с помощью SSL обеспечивает шифрование всех передаваемых сообщений. Такой метод не всегда применим, поскольку отдельные части XML -сообщений нередко нужно оставлять открытыми. Например, части (или все тело) сообщения SOAP нуждаются в защите, но заголовки должны оставаться открытыми, а информация, необходимая для маршрутизации и других промежуточных действий, - быть доступной. Во-вторых, шифрование XML может быть использовано не только для защищенного обмена данными между двумя приложениями, но и для хранения данных в зашифрованном виде на диске или другом устройстве, обеспечивая доступ к документу сразу для нескольких приложений. Протоколы SSL, TLS и IPSec могут применяться только для шифрования соединения между двумя приложениями.
Таким образом, XML -криптография не заменяет существующие протоколы безопасности, но решает проблему другого рода, которая включает два основных аспекта [11.3]:
- Шифрование определенных фрагментов структурированных данных
- Шифрование структурированного хранилища данных, к которому одновременно имеет доступ несколько приложений
В консорциуме W3C создана рабочая группа W3C XML Encryption Working Group [11.4], которая специально занимается вопросами шифрования XML -данных. В марте 2002 года группа выпустила рекомендации Candidate Recommendation Specification, и вместе с W3C в декабре того же года утвердила их. В рекомендациях определены требования к XML -криптографии ( XML Encryption Requirements ), синтаксис и правила обработки ( XML Encryption Syntax and Processing ). Спецификация "XML - Encryption Syntax and Processing " ("Синтаксис и обработка шифрования XML") [11.5] на момент написания данного курса лекций имеет статус рекомендации, т.е. потенциально подвержена изменениям. В отличие от спецификации XML -подписи, которая уже признана стандартом, .NET Framework не обеспечивает высокоуровневой поддержки спецификации XML -криптографии. Тем не менее, доступные классы пространств имен System.Xml и System.Security.Cryptography позволяют реализовать необходимую функциональность своими силами.
Спецификация XML Encryption, определяет методы, с помощью которых XML будет представлять зашифрованные XML -данные и другую информацию, но не предписывает применение конкретного метода шифрования. Для представления информации, относящейся к использованным технологиям шифрования (например, данных об алгоритме и ключе шифрования ) используется стандартный синтаксис XML -тэгов. Так, для указания алгоритма шифрования предусмотрен специальный элемент EncryptionMethod. Данные шифруются, как правило, с помощью случайно формируемого ключа с использованием симметричного криптоалгоритма; затем этот ключ зашифровывается на открытом ключе предполагаемого получателя. Таким образом, извлечь ключ, позволяющий расшифровать данные, может только указанный получатель-владелец секретного ключа.
Существует возможность совместного использования механизмов XML -подписи и XML - шифрования:
- Шифрование XML -подписи и подписанных данных
- Шифрование подписанных данных, не захватывающее XML -подпись
- XML -подпись зашифрованных данных
Преимущества и недостатки этих подходов показаны в табл. 11.1.
Краткие итоги
Рассмотрены основные принципы криптотехнологий применительно к XML - шифрования и ЭЦП. Указаны особенности комбинированного применения этих методов. Описаны различные виды XML -подписи. Даны ссылки на стандарты и рекомендации, регламентирующие использование XML -криптографии.