DPAPI (Программирование приложений защиты данных Интерфейс) - это простой криптографический интерфейс прикладного программирования, доступный как встроенный компонент в Windows 2000 и более поздних версиях Microsoft Windows операционные системы. Теоретически API защиты данных может обеспечить симметричное шифрование любых данных; на практике его основное использование в операционной системе Windows - симметричное шифрование асимметричных закрытых ключей с использованием секрета пользователя или системы в качестве значительного вклада энтропии. Подробный анализ внутренней работы DPAPI был опубликован в 2011 году Бурштейн и др.
Практически для всех криптосистем одной из самых сложных проблем является «управление ключами». «- в частности, как надежно хранить ключ дешифрования. Если ключ хранится в виде обычного текста, то любой пользователь, имеющий доступ к ключу, может получить доступ к зашифрованным данным. Если ключ должен быть зашифрован, нужен другой ключ и так далее. DPAPI позволяет разработчикам шифровать ключи, используя симметричный ключ, полученный из секретов входа пользователя в систему, или, в случае системного шифрования, используя секреты аутентификации домена системы.
Ключи DPAPI, используемые для шифрования ключей RSA пользователя, хранятся в каталоге % APPDATA% \ Microsoft \ Protect \ {SID}
, где {SID} - это идентификатор безопасности этого пользователя. Ключ DPAPI хранится в том же файле, что и главный ключ, который защищает личные ключи пользователей. Обычно это 64 байта случайных данных.
DPAPI не хранит никаких постоянных данных для себя; вместо этого он просто получает открытый текст и возвращает зашифрованный текст (или наоборот).
Безопасность DPAPI зависит от способности операционной системы Windows защитить главный ключ и закрытые ключи RSA от компрометации, что в большинстве сценариев атак в наибольшей степени зависит от безопасности учетных данных конечного пользователя.. Основной ключ шифрования / дешифрования получается из пароля пользователя с помощью функции PBKDF2. Конкретные данные больших двоичных объектов могут быть зашифрованы таким образом, что добавляется salt и / или требуется внешний пароль, запрашиваемый пользователем (он же «Надежная защита ключа»). Использование соли является вариантом реализации, т. Е. Под контролем разработчика приложения, и не контролируется конечным пользователем или системным администратором.
Делегированный доступ к ключам может быть предоставлен с помощью объекта COM +. Это позволяет IIS веб-серверам использовать DPAPI.
Хотя он не реализован повсеместно во всех продуктах Microsoft, использование DPAPI в продуктах Microsoft увеличивалось с каждой последующей версией Windows. Однако многие приложения от Microsoft и сторонних разработчиков по-прежнему предпочитают использовать собственный подход к защите или только недавно перешли на использование DPAPI. Например, Internet Explorer версий 4.0-6.0, Outlook Express и MSN Explorer использовали старый API защищенного хранилища (PStore) для хранения сохраненных учетных данных, таких как пароли и т. Д.. Internet Explorer 7 теперь защищает сохраненные учетные данные пользователя с помощью DPAPI.