Лекция 8. XML- криптография
1. Рассмотреть круг задач, на решение которых ориентирована XML - криптография
2. Изучить возможности XML -криптографии:
o зашифрование и расшифрование цифрового контента XML
o обеспечение целостности и невозможности отказа посредством цифровых XML -подписей
3. Сравнить различные типы 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]:
1. "Изолированная" подпись ( Detached signature ) вычисляется по объекту данных, который является внешним по отношению к элементу XML Signature. Элемент Signature и "подписанный" объект могут физически располагаться либо в разных XML -документах, либо внутри различных тэгов одного документа;
2. "Охватывающая" подпись ( Enveloping signature, Wrapped signature ) вычисляется по элементу Object, расположенному внутри элемента Signature ;
3. "Встроенная" подпись ( Enveloped signature, Embedded signature ) вычисляется по XML -контенту, содержащему элемент Signature.
Рис. 11.1. Три типа XML-подписи
Для обеспечения целостности данные преобразуются в короткий дайджест. Если полученные сведения отличаются от оригинала, их дайджест будет отличен от исходного. В параметрах подписи указывается алгоритм, использованный для создания дайджеста. С его помощью получатель может проверить полученную подпись. Перед подписанием XML -документ приводится к канонической форме, определенной правилами разработанной W3C рекомендации "Canonical XML" [11.6]. Это позволяет избежать неоднозначностей генерации дайджеста по синтаксически одинаковым документам, которые могут отличаться порядком тегов, атрибутов или кодировкой.
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.
Таблица 11.1. XML-подпись + XML-шифрование |
|||
Шифрование XML-подписи и подписанных данных |
Шифрование подписанных данных, не захватывающее XML-подпись |
XML-подпись зашифрованных данных |
|
Преимущества |
Скрыто максимально возможное количество данных, в т.ч. исключается возможность идентификации отправителя по подписи. Подпись применима к исходному тексту и при необходимости может быть сохранена и использована в дальнейшем для обеспечения неотказуемости. |
Подпись применима к исходному тексту и при необходимости может быть сохранена и использована в дальнейшем для обеспечения неотказуемости. |
Если данные повреждены, это можно установить сразу, не затрачивая время на расшифровку. |
Недостатки |
Если данные повреждены, до расшифровки это установить невозможно. Подверженность replay -атаке (злоумышленной пересылке получателем сообщения). |
Reference DigestMethod и DigestValue открыты для злоумышленного анализа. В случае использования криптоалгоритмов с открытым ключом для ЭЦП существует возможность идентификации отправителя по подписи. Если данные повреждены, до расшифровки это установить невозможно. Подверженность replay -атаке (злоумышленной пересылке получателем сообщения). |
Reference DigestMethod и DigestValue открыты для злоумышленного анализа. В случае использования криптоалгоритмов с открытым ключом для ЭЦП существует возможность идентификации отправителя по подписи. Подверженность replay -атаке (злоумышленной пересылке получателем сообщения). Для демонстрации подписи третьей стороне потребуется предоставить использованный для шифрования ключ, что может привести к компрометации других данных, зашифрованных на этом ключе. |
Рассмотрены основные принципы криптотехнологий применительно к XML - шифрования и ЭЦП. Указаны особенности комбинированного применения этих методов. Описаны различные виды XML -подписи. Даны ссылки на стандарты и рекомендации, регламентирующие использование XML -криптографии.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.