API защиты данных - Data Protection API

DPAPI (интерфейс программирования приложений для защиты данных) это простой криптографический интерфейс прикладного программирования доступен как встроенный компонент в Windows 2000 и более поздние версии Майкрософт Виндоус операционные системы. Теоретически API защиты данных может обеспечить симметричное шифрование любых данных; на практике его основное использование в операционной системе Windows - симметричное шифрование асимметричных закрытых ключей с использованием секрета пользователя или системы в качестве значительного вклада энтропии. Подробный анализ внутренней работы DPAPI был опубликован в 2011 г. Бурштейн и другие.[1]

Почти для всех криптосистемы, одна из самых сложных задач - это «управление ключами» - в частности, как безопасно хранить ключ дешифрования. Если ключ хранится в простой текст, то любой пользователь, имеющий доступ к ключу, сможет получить доступ к зашифрованным данным. Если ключ должен быть зашифрован, нужен другой ключ и так далее. DPAPI позволяет разработчикам шифровать ключи, используя симметричный ключ, полученный из секретов входа пользователя в систему, или, в случае системного шифрования, используя секреты аутентификации домена системы.

Ключи DPAPI, используемые для шифрования ключей RSA пользователя, хранятся в % APPDATA% MicrosoftProtect {SID} каталог, где {SID} - это Идентификатор безопасности этого пользователя. Ключ DPAPI хранится в том же файле, что и главный ключ, который защищает личные ключи пользователей. Обычно это 64 байта случайных данных.

Свойства безопасности

DPAPI не хранит никаких постоянных данных для себя; вместо этого он просто получает простой текст и возвращается зашифрованный текст (или наоборот).

Безопасность DPAPI зависит от способности операционной системы Windows защищать главный ключ и ЮАР закрытые ключи от компрометации, которая в большинстве сценариев атак наиболее сильно зависит от безопасности учетных данных конечного пользователя. Основной ключ шифрования / дешифрования выводится из пароля пользователя PBKDF2 функция.[2] Конкретные данные бинарные большие объекты может быть зашифрован таким образом, чтобы соль добавляется и / или требуется внешний вводимый пользователем пароль (также известный как «Strong Key Protection»). Использование соли является вариантом реализации, то есть находится под контролем разработчика приложения, и не контролируется конечным пользователем или системным администратором.

Делегированный доступ к ключам может быть предоставлен с помощью COM + объект. Это позволяет IIS веб-серверы использовать DPAPI.

Использование DPAPI программным обеспечением Microsoft

Хотя DPAPI реализован не во всех продуктах Microsoft повсеместно, использование DPAPI в продуктах Microsoft увеличивалось с каждой последующей версией Windows. Однако многие приложения от Microsoft и сторонних разработчиков по-прежнему предпочитают использовать собственный подход к защите или только недавно перешли на использование DPAPI. Например, Internet Explorer версии 4.0-6.0, Outlook Express и MSN Explorer использовал старый API защищенного хранилища (PStore) для хранения сохраненных учетных данных, таких как пароли и т. д. Internet Explorer 7 теперь защищает сохраненные учетные данные пользователя с помощью DPAPI.[3]

Рекомендации

  1. ^ Бурштейн, Эли; Пикод, Жан Мишель (2010). «Восстановление секретов Windows и сертификатов EFS в автономном режиме». WoOT 2010. Usenix.
  2. ^ «Восстановление пароля Windows - анализ мастер-ключа DPAPI». Passcape.com. Получено 2013-05-06.
  3. ^ Михаэль Фелькер (8 декабря 2006 г.). «Проблемы управления паролями в IE и Firefox, часть первая». SecurityFocus.com, Symantec.com. Получено 2010-03-28.
  4. ^ «Иерархия шифрования». Msdn.microsoft.com. Получено 14 октября 2017.
  5. ^ «Что нового в системе безопасности для Windows XP Professional и Windows XP Home Edition». Technet.microsoft.com. Получено 14 октября 2017.
  6. ^ «Класс ProtectedData (System.Security.Cryptography)». Msdn2.microsoft.com. Получено 14 октября 2017.
  7. ^ «Свойство CookieAuthenticationOptions.TicketDataFormat (Microsoft.Owin.Security.Cookies)». Получено 2015-01-15.
  8. ^ «Свойство OAuthAuthorizationServerOptions.AccessTokenFormat (Microsoft.Owin.Security.OAuth)». Получено 2018-11-26.

внешняя ссылка