Модель криптографии .NET Framework
Обновлен: Ноябрь 2007
.NET Framework предоставляет реализации многих стандартных криптографических алгоритмов. Эти алгоритмы просты в использовании и по умолчанию имеют наиболее безопасные из возможных значений свойств. Кроме того, в .NET Framework криптографическая модель наследования объектов, поточно-ориентированный подход к разработке и конфигурация обладают высокой расширяемостью.
Наследование объектов
Система безопасности .NET Framework реализует расширяемую модель наследования производных классов. Иерархия имеет следующий вид.
Класс типа алгоритма, например SymmetricAlgorithm или HashAlgorithm. Это абстрактный уровень.
Класс алгоритма является производным от класса типа алгоритма, например RC2 или SHA1. Это абстрактный уровень.
Реализация класса алгоритма, который является производным от класса алгоритма, например RC2CryptoServiceProvider или SHA1Managed. Это полностью реализуемый уровень.
Используя данный шаблон производных классов, можно легко добавить новый алгоритм или новую реализацию существующего алгоритма. Например, для создания нового алгоритма шифрования с открытым ключом можно наследовать от класса AsymmetricAlgorithm. Для создания новой реализации некоторого алгоритма, можно создать неабстрактный класс, производный от класса, соответствующего этому алгоритму.
Поточно-ориентированный подход
Среда CLR использует поточно-ориентированный подход для реализации алгоритмов симметричного шифрования и хэширования. Основой такого подхода является класс CryptoStream, производный от класса Stream. Все основанные на потоках криптографические объекты поддерживают единый стандартный интерфейс (CryptoStream) для управления своими частями, ответственными за передачу данных. Благодаря тому, что все эти объекты построены на основе стандартного интерфейса, можно сцеплять вместе различные объекты (например, за объектом, реализующим хэширование, поставить объект, реализующий шифрование) и выполнять ряд операций над данными без использования промежуточных хранилищ данных. Поточная модель также позволяет строить объекты на основе меньших объектов. Например, связанные вместе алгоритмы шифрования и хэширования можно рассматривать как единый поточный объект, несмотря на то, что он может быть построен на основе набора некоторых поточных объектов.
Криптографическая конфигурация
Использование криптографической конфигурации позволяет связать определенную реализацию алгоритма с названием алгоритма, что обеспечивает расширение среды криптографических классов .NET Framework. Можно добавить собственную аппаратную или программную реализацию алгоритма и отображать эту реализацию в имени выбранного алгоритма. Если алгоритм не задается в файле конфигурации, то используются параметры, принятые по умолчанию. Дополнительные сведения о криптографической конфигурации см. в разделе Настройка криптографических классов.