Спонсор: Microsoft
Опубликован: 25.06.2010 | Доступ: свободный | Студентов: 1536 / 238 | Оценка: 4.32 / 4.18 | Длительность: 25:57:00
Лекция 9:

Шаблоны использования криптографических функций в корпоративных приложениях

Аннотация: В данной лекции рассматриваются назначение, область применения и функции Enterprise Library на примере Cryptography Application Block
Презентацию к лекции Вы можете скачать здесь.

Цель лекции

  • Рассмотреть назначение, область применения и функции Enterprise Library
  • Изучить структуру и принципы использования Cryptography Application Block
  • Оценить роль шаблонов проектирования в создании корпоративных приложений

Понятие криптоанализа

Библиотека предприятия ( Enterprise Library ) [12.2] включает набор блоков для разработки корпоративных приложений и представляет собой один из проектов инициативы Microsoft "Patterns & Practices" ("Шаблоны и лучшие практики"). Шаблон проектирования (паттерн, англ. design pattern ) - это многократно применяемая архитектурная конструкция, предоставляющая решение общей проблемы проектирования в рамках конкретного контекста и описывающая значимость этого решения. Шаблон, в общем случае, состоит из четырех элементов:

  1. Имя - однозначное определение шаблона, говорящее о его назначении.
  2. Задача - условия применения шаблона.
  3. Решение - абстрактное описание решения задачи и модель решения в виде набора связанных классов.
  4. Результат - ожидаемые последствия применения шаблона.

Программные компоненты, входящие в библиотеку, предназначены для того, чтобы помочь программисту справиться со стандартными задачами, возникающими при разработке сложных приложений уровня предприятий. Блоки интегрируются в . NET приложения и разработаны с целью их многократного использования в различных проектах.

В библиотеку предприятия входят:

  • Исполняемый двоичный код (скомпилированные сборки для всего исходного кода)
  • Исходный код (для всех блоков приложений, а также утилит конфигурации, модульных тестов и обучающих примеров)
  • Модульные тесты (созданные на этапе разработки блоков приложений)
  • Документация (для просмотра используется справочная система Visual Studio )

К корпоративным приложениям обычно предъявляются высокие требования по безопасности, надежности и производительности. Основными принципами библиотеки предприятия являются:

  • Согласованность. Все блоки приложений характеризуются согласованным дизайном и способами реализации;
  • Расширяемость. Для всех блоков приложений определены возможности расширения, позволяющие разработчикам настраивать поведение блоков путем добавления собственного кода;
  • Простота использования. Библиотека предприятия проста в установке, снабжена графической утилитой конфигурации блоков, подробной документацией и примерами использования;
  • Интеграция. Компоненты библиотеки предприятия можно использовать по отдельности, однако в них изначально был заложен принцип совместной работы.

Текущая версия Enterprise Library 4.1 [12.2], выпущенная в октябре 2008 г., включает следующие блоки приложений:

  • Caching Application Block ;
  • Cryptography Application Block ;
  • Data Access Application Block ;
  • Exception Handling Application Block ;
  • Logging Application Block ;
  • Security Application Block ;
  • Validation Application Block ;
  • Unity Application Block ;
  • Policy Injection Application Block.

Для нас интерес будет представлять криптографический блок приложений ( Cryptography Application Block, CAB ). Криптографический блок обеспечивает разработчикам простой способ включения в приложения криптографических функций. САВ содержит:

  • Алгоритмы шифрования;
  • Алгоритмы хеширования;
  • Различные криптопровайдеры;
  • Дополнительные реализации криптопровайдеров;
  • Функции защиты ключей с помощью DPAPI.

CAB сокращает усилия по написанию кода для выполнения стандартных задач, предоставляя реализации, которые могут быть использованы в разнообразных приложениях. Использование общей архитектурной модели для всей предоставляемой функциональности сокращает время, необходимое программисту для освоения инструментария. САВ позволяет придерживаться согласованных подходов к реализации криптографии в рамках как отдельного приложения, так и предприятия в целом.

САВ является расширяемым и поддерживает дополнительные реализации криптопровайдеров. Абстрагируя код приложений от конкретных криптопровайдеров, САВ упрощает работу программиста. Для изменения используемого криптопровайдера нет необходимости исправлять исходный код, достаточно использовать утилиту конфигурации.

Библиотека предприятия использует DPAPI ( Data Protection API ) для обеспечения безопасности ключей. Создать ключ можно при помощи мастера криптоключей ( Cryptographic Key Wizard ); каждый ключ хранится в отдельном файле, защищенном DPAPI. Доступны два режима генерации ключа: машинный режим и пользовательский режим, ограничивающий доступ к ключу. Машинный режим используется в тех случаях, когда:

  • На выделенном сервере выполняется только одно приложение;
  • На сервере одновременно работает несколько приложений, которые совместно используют секретную информацию.

САВ разрабатывался с целью обеспечения простого и интуитивно понятного интерфейса для доступа к необходимой функциональности и инкапсуляции логики, используемой для решения стандартных криптографических задач.

Архитектура блока САВ представлена на рис. 12.1. Класс Cryptographer реализует шаблон "фасад" [12.1] между клиентским кодом и криптографическими функциями блока. Клиентский код вызывает статические методы класса Cryptographer для создания и сравнения хешей, шифрования и расшифрования данных. Каждый статический метод создает экземпляр класса, реализующий шаблон "фабрика" [12.1], передавая параметры конфигурации конструктору класса. Класс-"фабрика" по конфигурационным данным определяет тип криптопровайдера, который нужно создать.

Класс DpapiCryptographer использует DPAPI для шифрования и расшифрования данных. При этом используются учетные записи пользователя или локальной машины.

Класс SymmetricCryptographer инкапсулирует реализации провайдеров, унаследованные от базового класса SymmetricAlgorithm, принадлежащего пространству имен System.Security.Cryptography .NET Framework. Это означает, что класс SymmetricCryptographer поддерживает любой симметричный криптоалгоритм .NET Framework - например, Rijndael. Для шифрования ключа используется DPAPI.

Структура криптографического блока приложений

увеличить изображение
Рис. 12.1. Структура криптографического блока приложений

Краткие итоги

Рассмотрено назначение, область применения и функции Enterprise Library на в создании корпоративных приложений на платформе . NET. Показана структура и описана функциональность Cryptography Application Block.

Мария Архипова
Мария Архипова
Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Алмаз Зарипов
Алмаз Зарипов
Россия, Набережные Челны