Кіріспе

Windows API for cryptography Data Protection Application Programming Interface (DPAPI) - Windows 2000 және Microsoft Windows операциялық жүйелерінің кейінгі нұсқаларында құрастырылған компонент ретінде қол жетімді қарапайым криптографиялық қолданба бағдарламалау интерфейсі. Теориялық тұрғыдан алғанда, Деректерді қорғау API кез келген деректерді симметриялық шифрлауға мүмкіндік береді; іс жүзінде оның Windows операциялық жүйесіндегі негізгі мақсаты - энтропияның маңызды үлесі ретінде пайдаланушы немесе жүйе құпиясын пайдалана отырып, асимметриялық жеке кілттерді симметриялық шифрлау. 2011 жылы Bursztein және басқалар DPAPI ішкі жұмысының егжей-тегжейлі талдауын жариялады. Барлық крипто жүйелер үшін ең қиын мәселелердің бірі - "кілт басқару", яғни шифрлау кілтін қалай қауіпсіз сақтауға болады. Егер кілт жай мәтінде сақталса, онда кілтті пайдаланатын кез келген пайдаланушы шифрланған деректерге қол жеткізе алады. Егер кілт шифрланса, онда тағы бір кілт қажет болады және т.б. DPAPI әзірлеушілерге кілттерді пайдаланушының кіру құпиясынан алынған симметриялық кілтті немесе жүйелік шифрлау жағдайында жүйенің домендік аутентификациялық құпияларын пайдалана отырып шифрлауға мүмкіндік береді. Пайдаланушының RSA кілттерін шифрлауға қолданылатын DPAPI кілттері %APPDATA%\Microsoft\Protect\{SID} каталогында сақталады, мұнда {SID} - осы пайдаланушының қауіпсіздік идентификаторы. DPAPI кілті пайдаланушылардың жеке кілттерін қорғайтын бас кілтпен бірдей файлда сақталады. Әдетте 64 байт кездейсоқ деректер.

Қауіпсіздік қасиеттері

DPAPI өзі үшін тұрақты деректерді сақтамайды; оның орнына жай мәтінді қабылдайды және шифрланған мәтінді қайтарады (немесе керісінше). DPAPI қауіпсіздігі Windows операциялық жүйесінің бас кілтті және RSA жеке кілттерін қауіптен қорғау қабілетіне негізделеді, бұл шабуыл сценарийлерінің көпшілігінде соңғы пайдаланушының сенімхаттарының қауіпсіздігіне аса тәуелді. Негізгі шифрлау/шифрлау кілті пайдаланушының паролімен PBKDF2 функциясы арқылы алынады. Кейбір бинарлық үлкен деректер объектілері тұз қосылған және/немесе сыртқы пайдаланушы шақырған пароль (яғни "Қуатты кілт қорғанысы") қажет болатын түрде шифрлануы мүмкін. Тұзды пайдалану - бұл іске асыру бойынша нұсқа, яғни қолданба жасаушының бақылауында және соңғы пайдаланушы немесе жүйе әкімшісімен бақылана алмайды. Кілттерге COM+ объектісін пайдалану арқылы делегаттық қол жеткізуге болады. Бұл IIS веб-серверлеріне DPAPI-ді пайдалануға мүмкіндік береді.

Active Directory резервтік кілттері

Компьютер доменге мүше болған кезде, DPAPI пайдаланушының паролі жоғалған жағдайда деректерді қорғауды қамтамасыз ететін резервтік тетікке ие, ол "Credential Roaming" деп аталады. Доменді контроллерде жаңа доменді орнату кезінде DPAPI-мен байланысты ашық және жеке кілт жұбы құрылады. Клиенттік жұмыс станциясында бас кілт пайда болған кезде клиент доменнің ашық кілтінің көшірмесін алу үшін домен контроллерімен аутентификацияланған RPC шақыру арқылы байланысады. Клиент бас кілтті доменді басқарушының ашық кілтімен шифрлайды. Соңында, ол осы жаңа резервтік бас кілтті AppData каталогында дәстүрлі бас кілтті сақтау сияқты сақтайды.