Шифрование
В статье содержится обзор функций шифрования, доступных для приложений универсальной платформы 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, включая создание случайных значений, сравнение буферов, преобразования между строками и двоичными данными, копирование в массив байтов и из него и кодирование и декодирование данных. |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по