Обзор защиты основных данных ASP.NET

ASP.NET Core предоставляет криптографический API для защиты данных, включая управление ключами и смену ключей.

Веб-приложения часто должны хранить конфиденциальные данные. API защиты данных Windows (DPAPI) не предназначен для использования в веб-приложениях.

Стек защиты основных данных ASP.NET был разработан для следующих способов:

  • Предоставьте встроенное решение для большинства веб-сценариев.
  • Устранение многих недостатков предыдущей системы шифрования.
  • В качестве замены элемента <machineKey> в ASP.NET 1.x — 4.x.

формулировка проблемы;

Мне нужно сохранить доверенные сведения для последующего извлечения, но я не доверяю механизму сохраняемости. В веб-терминах это может быть записано, так как мне нужно выполнить круговую поездку доверенного состояния через ненадежный клиент.

Проверка подлинности, целостность и проверка подлинности — это требование. Канонический пример этого является маркером проверки подлинности cookie или носителя. Сервер создает маркер разрешений Xyz и отправляет его клиенту. Клиент представляет этот маркер обратно на сервер, но серверу требуется некоторое подтверждение того, что клиент не загнул маркер.

Конфиденциальность — это требование. Так как сохраненное состояние является доверенным сервером, это состояние может содержать сведения, которые не должны быть раскрыты ненадежным клиентом. Например:

  • Путь к файлу.
  • Разрешение.
  • Дескриптор или другая непрямая ссылка.
  • Некоторые данные, относящиеся к серверу.

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

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

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

Философия проектирования

ASP.NET Защита основных данных — это простой стек защиты данных. Это связано со следующими аспектами.

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

API защиты данных не предназначены в первую очередь для неограниченного сохранения конфиденциальных полезных данных. Другие технологии, такие как Windows CNG DPAPI и Azure Rights Management , более подходят для сценария неограниченного хранения. Они имеют соответствующие возможности управления ключами. Тем не более чем ASP.NET API-интерфейсы защиты данных Core можно использовать для долгосрочной защиты конфиденциальных данных.

Аудитория

Система защиты данных предоставляет API, предназначенные для трех основных аудиторий:

  1. API-интерфейсы потребителей предназначены для разработчиков приложений и платформ.

    Я не хочу узнать, как работает стек или как он настроен. Я просто хочу выполнить некоторую операцию с высокой вероятностью успешного использования API.

  2. API конфигурации предназначены для разработчиков приложений и системных администраторов.

    Мне нужно сообщить системе защиты данных, что для моей среды требуются пути или параметры, отличные от по умолчанию.

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

    Мне нужно заменить весь компонент в системе, потому что у меня есть действительно уникальные требования к поведению. Я готов узнать редко используемые части поверхности API, чтобы создать подключаемый модуль, который соответствует моим требованиям.

Макет пакета

Стек защиты данных состоит из пяти пакетов:

  • Microsoft.AspNetCore.DataProtection.Abstractions содержит следующее:

    Если система защиты данных создается в другом месте, и вы используете API, обратитесь по ссылке Microsoft.AspNetCore.DataProtection.Abstractions.

  • Microsoft.AspNetCore.DataProtection содержит основную реализацию системы защиты данных, в том числе:

    • Основные криптографические операции.
    • Управление ключами.
    • Конфигурация и расширяемость.

    Чтобы создать экземпляр системы защиты данных, перейдите по ссылке Microsoft.AspNetCore.DataProtection. Возможно, вам потребуется ссылаться на систему защиты данных, если:

    • Добавление его в IServiceCollectionобъект .
    • Изменение или расширение его поведения.
  • Microsoft.AspNetCore.DataProtection.Extensions содержит дополнительные API, которые разработчики могут найти полезными, но которые не принадлежат в основном пакете. Например, этот пакет содержит следующее:

    • Методы фабрики для создания экземпляра системы защиты данных для хранения ключей в расположении файловой системы без внедрения зависимостей. См. раздел DataProtectionProvider.
    • Методы расширения для ограничения времени существования защищенных полезных данных. См. раздел ITimeLimitedDataProtector.
  • Microsoft.AspNetCore.DataProtection.SystemWeb можно установить в существующее приложение ASP.NET 4.x для перенаправления <machineKey> операций для использования нового стека защиты данных ASP.NET Core. Дополнительные сведения см. в разделе "Замена ASP.NET machineKey" в ASP.NET Core.

  • Microsoft.AspNetCore.Cryptography.KeyDerivation предоставляет реализацию процедуры хэширования паролей PBKDF2 и может использоваться системами, которые должны безопасно обрабатывать пароли пользователей. Дополнительные сведения см. в разделе Хэш-пароли в ASP.NET Core.

Дополнительные ресурсы

ASP.NET Core предоставляет криптографический API для защиты данных, включая управление ключами и смену ключей.

Веб-приложения часто должны хранить конфиденциальные данные. API защиты данных Windows (DPAPI) не предназначен для использования в веб-приложениях.

Стек защиты основных данных ASP.NET был разработан для следующих способов:

  • Предоставьте встроенное решение для большинства веб-сценариев.
  • Устранение многих недостатков предыдущей системы шифрования.
  • В качестве замены элемента <machineKey> в ASP.NET 1.x — 4.x.

формулировка проблемы;

Мне нужно сохранить доверенные сведения для последующего извлечения, но я не доверяю механизму сохраняемости. В веб-терминах это может быть записано, так как мне нужно выполнить круговую поездку доверенного состояния через ненадежный клиент.

Проверка подлинности, целостность и проверка подлинности — это требование. Канонический пример этого является маркером проверки подлинности cookie или носителя. Сервер создает маркер разрешений Xyz и отправляет его клиенту. Клиент представляет этот маркер обратно на сервер, но серверу требуется некоторое подтверждение того, что клиент не загнул маркер.

Конфиденциальность — это требование. Так как сохраненное состояние является доверенным сервером, это состояние может содержать сведения, которые не должны быть раскрыты ненадежным клиентом. Например:

  • Путь к файлу.
  • Разрешение.
  • Дескриптор или другая непрямая ссылка.
  • Некоторые данные, относящиеся к серверу.

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

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

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

Философия проектирования

ASP.NET Защита основных данных — это простой стек защиты данных. Это связано со следующими аспектами.

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

API защиты данных не предназначены в первую очередь для неограниченного сохранения конфиденциальных полезных данных. Другие технологии, такие как Windows CNG DPAPI и Azure Rights Management , более подходят для сценария неограниченного хранения. Они имеют соответствующие возможности управления ключами. Тем не более чем ASP.NET API-интерфейсы защиты данных Core можно использовать для долгосрочной защиты конфиденциальных данных.

Аудитория

Система защиты данных предоставляет API, предназначенные для трех основных аудиторий:

  1. API-интерфейсы потребителей предназначены для разработчиков приложений и платформ.

    Я не хочу узнать, как работает стек или как он настроен. Я просто хочу выполнить некоторую операцию с высокой вероятностью успешного использования API.

  2. API конфигурации предназначены для разработчиков приложений и системных администраторов.

    Мне нужно сообщить системе защиты данных, что для моей среды требуются пути или параметры, отличные от по умолчанию.

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

    Мне нужно заменить весь компонент в системе, потому что у меня есть действительно уникальные требования к поведению. Я готов узнать редко используемые части поверхности API, чтобы создать подключаемый модуль, который соответствует моим требованиям.

Макет пакета

Стек защиты данных состоит из пяти пакетов:

  • Microsoft.AspNetCore.DataProtection.Abstractions содержит следующее:

    Если система защиты данных создается в другом месте, и вы используете API, обратитесь по ссылке Microsoft.AspNetCore.DataProtection.Abstractions.

  • Microsoft.AspNetCore.DataProtection содержит основную реализацию системы защиты данных, в том числе:

    • Основные криптографические операции.
    • Управление ключами.
    • Конфигурация и расширяемость.

    Чтобы создать экземпляр системы защиты данных, перейдите по ссылке Microsoft.AspNetCore.DataProtection. Возможно, вам потребуется ссылаться на систему защиты данных, если:

    • Добавление его в IServiceCollectionобъект .
    • Изменение или расширение его поведения.
  • Microsoft.AspNetCore.DataProtection.Extensions содержит дополнительные API, которые разработчики могут найти полезными, но которые не принадлежат в основном пакете. Например, этот пакет содержит следующее:

    • Методы фабрики для создания экземпляра системы защиты данных для хранения ключей в расположении файловой системы без внедрения зависимостей. См. раздел DataProtectionProvider.
    • Методы расширения для ограничения времени существования защищенных полезных данных. См. раздел ITimeLimitedDataProtector.
  • Microsoft.AspNetCore.DataProtection.SystemWeb можно установить в существующее приложение ASP.NET 4.x для перенаправления <machineKey> операций для использования нового стека защиты данных ASP.NET Core. Дополнительные сведения см. в разделе "Замена ASP.NET machineKey" в ASP.NET Core.

  • Microsoft.AspNetCore.Cryptography.KeyDerivation предоставляет реализацию процедуры хэширования паролей PBKDF2 и может использоваться системами, которые должны безопасно обрабатывать пароли пользователей. Дополнительные сведения см. в разделе Хэш-пароли в ASP.NET Core.

Дополнительные ресурсы