Поделиться через


Модель криптографии .NET Framework

.NET Framework предоставляет реализации многих стандартных криптографических алгоритмов. Эти алгоритмы просты в использовании и по умолчанию имеют наиболее безопасные из возможных значений свойств. Кроме того, в .NET Framework криптографическая модель наследования объектов, поточно-ориентированный подход к разработке и конфигурация обладают высокой расширяемостью.

Наследование объектов

Система безопасности .NET Framework реализует расширяемую модель наследования производных классов. Иерархия имеет следующий вид.

  • Класс типа алгоритма, например SymmetricAlgorithm, AsymmetricAlgorithm или HashAlgorithm. Это абстрактный уровень.

  • Класс алгоритма является производным от класса типа алгоритма, например Aes, RC2 или ECDiffieHellman. Это абстрактный уровень.

  • Реализация класса алгоритма, который является производным от класса алгоритма, например AesManaged, RC2CryptoServiceProvider или ECDiffieHellmanCng. Это полностью реализуемый уровень.

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

Реализация алгоритмов в .NET Framework

В качестве примера различных реализаций, доступных для алгоритма, рассмотрим симметричные алгоритмы. В основе всех симметричных алгоритмов лежит класс SymmetricAlgorithm, наследуемый следующими алгоритмами:

  1. Aes

  2. DES

  3. RC2

  4. Rijndael

  5. TripleDES

Класс Aes наследуется двумя классами: AesCryptoServiceProvider и AesManaged. Класс AesCryptoServiceProvider представляет собой оболочку для реализации алгоритма AES в Windows Cryptography API (CAPI), а класс AesManaged написан с использованием только управляемого кода. Помимо реализации в управляемом коде и реализации в CAPI, существует также третий тип реализации, криптография следующего поколения (CNG). Примером алгоритма CNG является класс ECDiffieHellmanCng. Алгоритмы CNG доступны в Windows Vista и последующих версиях.

Вы можете выбрать оптимальную для себя реализацию. Реализации в управляемом коде доступны на всех платформах, поддерживающих платформу .NET Framework. Реализации CAPI доступны в предыдущих версиях операционных систем и больше не развиваются. CNG — это новейшая реализация, дальнейшая разработка которой будет продолжена. Однако реализации на основе управляемого кода не сертифицированы Федеральным стандартом обработки информации (FIPS) и могут работать медленнее реализаций на основе классов-оболочек.

Поточно-ориентированный подход

Среда CLR использует поточно-ориентированный подход для реализации алгоритмов симметричного шифрования и хэширования. Основой такого подхода является класс CryptoStream, производный от класса Stream. Основанные на потоках криптографические объекты поддерживают единый стандартный интерфейс (CryptoStream) для управления своими частями, ответственными за передачу данных. Благодаря тому, что все эти объекты построены на основе стандартного интерфейса, можно сцеплять вместе различные объекты (например, за объектом, реализующим хэширование, поставить объект, реализующий шифрование) и выполнять ряд операций над данными без использования промежуточных хранилищ данных. Поточная модель также позволяет строить объекты на основе меньших объектов. Например, связанные вместе алгоритмы шифрования и хэширования можно рассматривать как единый поточный объект, несмотря на то, что он может быть построен на основе набора некоторых поточных объектов.

Криптографическая конфигурация

Использование криптографической конфигурации позволяет связать определенную реализацию алгоритма с названием алгоритма, что обеспечивает расширяемость среды криптографических классов .NET Framework. Можно добавить собственную аппаратную или программную реализацию алгоритма и отображать эту реализацию в имени выбранного алгоритма. Если алгоритм не задается в файле конфигурации, то используются параметры, принятые по умолчанию. Дополнительные сведения о криптографической конфигурации см. в разделе Настройка криптографических классов.

Выбор алгоритма

Алгоритм может выбираться для различных целей: например, для обеспечения целостности данных, для обеспечения конфиденциальности данных или для создания ключа. Симметричные алгоритмы и хэш-алгоритмы предназначены для защиты данных от нарушения целостности (защита от изменения) или для соблюдения конфиденциальности (защита от просмотра). Хэш-алгоритмы используются в основном для обеспечения целостности данных.

Ниже приведен список рекомендуемых алгоритмов по областям применения:

См. также

Основные понятия

Службы криптографии

Службы криптографии

Другие ресурсы

Задачи криптографии

Журнал изменений

Дата

Журнал

Причина

Июль 2010

Раздел расширен.

Улучшение информации.