This is a mirror of official site: http://jasper-net.blogspot.com/

DPAPI на пальцах

| Tuesday, July 31, 2012
В далеком декабре прошлого года я впервые столкнулся с Data Protection Application Programming Interface (сокращенно DPAPI). Тогда я изучал способ хранения логинов/паролей в браузере Chrome. Я обещал, что распишу эту систему подробно и на пальцах. Негоже врать, поэтому добро пожаловать под кат!

Начну всё с азов, что же такое DPAPI, зачем он создавался и кому он нужен. И затем уже расскажу, как это работает.

Коротко о главном

Проблемы информационной безопасности уже давно коснулись всех, и Microsoft был не исключением, офисные ПК, домашние системы, сервера — все в той, или иной степени, требовали защиты от чужих рук. 
Хранение данных в открытом виде было уже, как минимум, не солидно. Поэтому с выходом Windows 2000 свет увидел зарождающуюся и сырую версию DPAPI. Её основная цель — защита хранимых паролей и конфиденциальной информации на компьютере. Причем таким способом, чтобы владелец этих данных (пользователь) даже не догадывался о существовании защиты, а взломщику эти данные были недоступны. Идеология системы с той поры не изменилась. Менялись алгоритмы, закрывались дыры, но суть была всё та же.
В итоге появилась полноценная система безопасности, в которой секретные данные были доступны исключительно пользователю-владельцу и никому другому.

Принцип работы
Inline image 1

Так выглядит тривиальная схема работы с DPAPI. 

Приложение обращается к ОС задавая параметры Mysecret(строка/байты, которые нужно засекретить) и Entropy(энтропия, о ней чуть позже. Данный параметр не обязательный).

На выходе получаем BLOB. 

BLOB – Binary Large OBject. Расшифровка является бэкронимом. По сути, это массив двоичных данных. «Большое и бесформенное».
Этот BLOB — своего рода контейнер, в котором содержаться в открытом виде данные, необходимые для расшифровки, а так же сам шифр. Приложение сохраняет его (для примера всё тот же Chrome, который записывал этот BLOB в виде массива байт в одно из полей SQLITE базы данных), а в дальнейшем, при необходимости, расшифровывает(вторая половина схемы).

Read more: Habrahabr.ru
QR: Inline image 2

Posted via email from Jasper-net

0 comments: