Шифрование

В статье содержится обзор функций шифрования, доступных для приложений универсальной платформы Windows (UWP). Подробнее об определенных задачах см. в таблице в конце данной статьи.

Терминология

Следующая терминология широко применяется в шифровании и инфраструктуре открытых ключей (PKI).

Термин Описание
Шифрование Процесс преобразования данных с помощью алгоритма шифрования и ключа. Преобразованные данные могут быть восстановлены только с помощью того же алгоритма и того же (симметричного) или связанного (открытого) ключа.
Расшифровка Процесс возвращения зашифрованным данным их исходной формы.
Открытый текст Изначально понятие относилось к незашифрованному текстовому сообщению. Теперь так называют любые незашифрованные данные.
Зашифрованные данные Изначально понятие обозначало зашифрованное текстовое сообщение, которое невозможно прочесть. Теперь так называют любые зашифрованные данные.
Хэширование Процесс преобразования данных переменной длины в значение с фиксированной (как правило, меньшей) длиной. С помощью сравнения хэшей можно с большой точностью утверждать, что разные фрагменты данных идентичны.
Сигнатура Зашифрованный хэш цифровых данных, как правило используемый для проверки подлинности отправителя данных или для того, чтобы убедиться в том, что данные не были незаконно изменены во время передачи.
Алгоритм Пошаговая процедура шифрования данных.
Ключ Случайное или псевдослучайное число, используемое как входные данные для алгоритма шифрования, чтобы зашифровать или расшифровать данные.
Шифрование с симметричным ключом Шифрование, при котором для шифрования и для расшифровки используется один и тот же ключ. Такое шифрование также называется шифрованием с секретным ключом.
Шифрование с асимметричным ключом Шифрование, при котором для шифрования и для расшифровки используются разные, но математически связанные ключи. Такое шифрование также называется шифрованием с открытым ключом.
Кодирование Процесс кодирования цифровых сообщений, включая сертификаты, для передачи по сети.
Поставщик алгоритма Библиотека DLL, реализующая алгоритм шифрования.
Поставщик хранилища ключей Контейнер для хранения материала ключа. В настоящий момент ключи можно хранить в программном обеспечении, на смарт-картах или в доверенном платформенном модуле (TPM).
Сертификат X.509 Цифровой документ (как правило, издаваемый центром сертификации), предназначенный для подтверждения подлинности человека, системы или объекта другим заинтересованным сторонам.

 

Пространства имен

Следующие пространства имен доступны для использования в приложениях.

Windows.Security.Cryptography

Содержит класс CryptographicBuffer и статические методы, позволяющие выполнять следующие действия:

  • преобразовывать данные в строки и из строк;
  • преобразовывать данные в байтовые массивы и из массивов;
  • кодировать сообщения для сетевой транспортировки;
  • декодировать сообщения после транспортировки.

Windows.Security.Cryptography.Certificates

Содержит классы, интерфейсы и типы перечисления, позволяющие выполнять следующие действия:

  • создавать запрос сертификата;
  • устанавливать ответ сертификата;
  • импортировать сертификат в PFX-файл;
  • указывать и получать свойства запроса сертификата.

Windows.Security.Cryptography.Core

Содержит классы и типы перечисления, позволяющие выполнять следующие действия:

  • шифровать и расшифровывать данные;
  • хэшировать данные;
  • подписывать данные и проверять подписи;
  • создавать, импортировать и экспортировать ключи;
  • работать с поставщиками алгоритмов с асимметричными ключами;
  • работать с поставщиками алгоритмов с симметричными ключами;
  • работать с поставщиками алгоритмов хэша;
  • работать с поставщиками алгоритмов для кодов проверки подлинности компьютера (MAC);
  • работать с поставщиками алгоритмов для формирования ключа.

Windows.Security.Cryptography.DataProtection

Содержит классы, позволяющие выполнять следующие действия:

  • асинхронно шифровать и расшифровывать статические данные;
  • асинхронно шифровать и расшифровывать потоки данных.

Возможности шифрования и PKI приложений

Упрощенный программный интерфейс для приложений предоставляет следующие возможности шифрования и инфраструктуры открытых ключей (PKI).

Поддержка шифрования

Вы можете выполнять следующие задачи шифрования. Дополнительные сведения см. в статье о пространстве имен Windows.Security.Cryptography.Core.

  • Создание симметричных ключей
  • Выполнение симметричного шифрования
  • Создание асимметричных ключей
  • Выполнение асимметричного шифрования
  • Получение ключей на основе пароля
  • Создание кодов проверки подлинности сообщения (MAC)
  • Хэширование содержимого
  • Создание цифровой подписи содержимого

SDK также предоставляет упрощенный интерфейс для защиты данных паролем. С его помощью можно выполнять следующие задачи. Дополнительные сведения см. в статье о пространстве имен Windows.Security.Cryptography.DataProtection.

  • Асинхронная защита статических данных
  • Асинхронная защита потока данных

Поддержка кодирования

Приложение может кодировать зашифрованные данные для передачи по сети и декодировать данные, полученные из сетевого источника. Дополнительные сведения см. в статических методах, доступных в пространстве имен Windows.Security.Cryptography.

Поддержка PKI

Приложения могут выполнять следующие задачи PKI. Дополнительные сведения см. в статье о пространстве имен Windows.Security.Cryptography.Certificates.

  • Создание сертификата
  • Создание самозаверяющего сертификата.
  • устанавливать ответ сертификата;
  • Импорт сертификата в формате PFX
  • Использование сертификатов и ключей смарт-карты (набор возможностей sharedUserCertificates)
  • Использование сертификатов из хранилища MY пользователя (набор возможностей sharedUserCertificates)

Также с помощью манифеста можно выполнить следующие действия.

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

Подробные статьи

В следующих статьях представлены дополнительные сведения о сценариях безопасности.

Раздел Описание
Сертификаты В этой статье описано использование сертификатов в приложениях UWP. Цифровые сертификаты применяются в шифровании с открытым ключом для привязки открытого ключа к пользователю, компьютеру или организации. Чаще всего удостоверения привязки используются для проверки подлинности одного объекта по отношению к другому. Например, часто сертификаты используются для проверки подлинности веб-сервера по отношению к пользователю и пользователя по отношению к веб-серверу. Можно создавать запросы сертификатов и устанавливать или импортировать выданные сертификаты. Сертификат также можно регистрировать в иерархии сертификатов.
Криптографические ключи В этой статье описано, как использовать стандартные функции формирования производных ключей и шифровать содержимое с помощью симметричных и асимметричных ключей.
Защита данных В этой статье описано, как использовать класс DataProtectionProvider в пространстве имен Windows.Security.Cryptography.DataProtection для шифрования и расшифровки цифровых данных в приложении UWP.
Коды проверки подлинности сообщений, хэши и подписи В этой статье описано выявление в приложениях UWP несанкционированных изменений сообщений с помощью кодов проверки подлинности сообщения (MAC), хэшей и подписей.
Ограничения на экспорт шифрования В данной статье рассказывается, как определить, используются ли в вашем приложении средства шифрования, из-за которых вам может быть отказано в публикации приложения в Microsoft Store.
Общие задачи шифрования В этих статьях показан пример кода для типичных задач шифрования UWP, включая создание случайных значений, сравнение буферов, преобразования между строками и двоичными данными, копирование в массив байтов и из него и кодирование и декодирование данных.