Data Protection API
Data Protection API (DPAPI) — криптографический интерфейс программирования приложений в ОС семейства Windows, обеспечивающий защиту (конфиденциальность) данных путём их шифрования.
Почти для всех криптосистем одной из самых сложных задач является управление ключами. В частности, безопасного хранения ключей. Если ключ хранится в виде обычного текста, то любой пользователь, имеющий доступ к ключу, может получить доступ и к зашифрованным данным. DPAPI позволяет разработчикам шифровать приватные данные или ключи шифрования, используя симметричный ключ, полученный на основе пароля на вход владельца, или, в случае системного шифрования, на основе секрета аутентификации домена.
История
[править | править код]В 2005 году Passcape Software выпустила первое коммерческое приложение, полностью эмулирующее работу DPAPI в офлайн режиме, т.е. без входа пользователя в учетную запись.
В 2010 на Black Hat DC 2010 году Elie Bursztein и Jean-Michel Picod представили анализ DPAPI под названием Reversing DPAPI and Stealing Windows Secrets Offline. В дополнение к их брифингу, Bursztein и Picod выпустили DPAPIck (недоступная ссылка) - утилиту с открытым исходным кодом, которая также расшифровывает данные DPAPI в офлайн режиме.
В Windows 8 Microsoft изменила способ работы логики DPAPI. Теперь несколько пользовательских ключей можно использовать для расшифровки мастер ключа DPAPI.
В 2012 году Passcape Software опубликовала в своем блоге подробную статью[1] о внутренней логике DPAPI и представила набор инструментов для полной автономной расшифровки и анализа DPAPI. Набор утилит эксплуатирует старые ошибки и уязвимости и полностью совместим с Windows 8.
В Windows 10 Microsoft добавила поддержку облачных ключей шифрования для учетных записей Microsoft.
Архитектура
[править | править код]DPAPI включает в себя функции: шифрования и расшифровки данных (CryptProtectData и CryptUnprotectData), а также шифрования и расшифровки памяти. Например, для предотвращения просмотра хранимых в памяти паролей при нахождении их в файле подкачки. Функции DPAPI выполняют локальный RPC-вызов сервера проверки подлинности локальной системы безопасности, который в свою очередь вызывает библиотеку CryptoAPI для выполнения операции в своём контексте безопасности. Для защиты данных может использоваться пароль пользователя для входа в систему или запрашиваться другой пароль.
Уязвимости
[править | править код]Первая реализация DPAPI содержала критическую ошибку в логике, с помощью которой можно было расшифровать все зашифрованные объекты DPAPI без знания пароля владельца.
Windows 10 имеет критический недостаток в реализации DPAPI[2], который позволяет расшифровывать dpapi-зашифрованные данные последней активной учетной записи пользователя.
Применение
[править | править код]DPAPI получил очень широкое распространение и применяется во многих приложениях и подсистемах Windows: в системе шифрования файлов, для хранения беспроводных паролей сети, в диспетчере учетных записей, Internet Explorer, Google Chrome, Microsoft Outlook, Skype, Windows Vault, для защиты RSA ключей и т.д.
Примечания
[править | править код]- ↑ Секреты DPAPI . Дата обращения: 26 июля 2019. Архивировано 26 апреля 2022 года.
- ↑ Уязвимость в системе безопасности DPAPI Windows 10 .
Ссылки
[править | править код]Windows Data Protection (англ.). MSDN Library. Microsoft (октябрь 2001). Дата обращения: 27 июля 2012. Архивировано из оригинала 30 сентября 2012 года.