Кіріспе
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 байт кездейсоқ деректер.
Data Protection Application Programming Interface (DPAPI) is a simple cryptographic application programming interface available as a built in component in Windows 2000 and later versions of Microsoft Windows operating systems. In theory, the Data Protection API can enable symmetric encryption of any kind of data; in practice, its primary use in the Windows operating system is to perform symmetric encryption of asymmetric private keys, using a user or system secret as a significant contribution of entropy. A detailed analysis of DPAPI inner workings was published in 2011 by Bursztein et al. For nearly all cryptosystems, one of the most difficult challenges is "key management" in part, how to securely store the decryption key. If the key is stored in plain text, then any user that can access the key can access the encrypted data. If the key is to be encrypted, another key is needed, and so on. DPAPI allows developers to encrypt keys using a symmetric key derived from the user's logon secrets, or in the case of system encryption, using the system's domain authentication secrets. The DPAPI keys used for encrypting the user's RSA keys are stored under %APPDATA%\Microsoft\Protect\{SID} directory, where {SID} is the Security Identifier of that user. The DPAPI key is stored in the same file as the master key that protects the users private keys. It usually is 64 bytes of random data.
Қауіпсіздік қасиеттері
DPAPI өзі үшін тұрақты деректерді сақтамайды; оның орнына жай мәтінді қабылдайды және шифрланған мәтінді қайтарады (немесе керісінше). DPAPI қауіпсіздігі Windows операциялық жүйесінің бас кілтті және RSA жеке кілттерін қауіптен қорғау қабілетіне негізделеді, бұл шабуыл сценарийлерінің көпшілігінде соңғы пайдаланушының сенімхаттарының қауіпсіздігіне аса тәуелді. Негізгі шифрлау/шифрлау кілті пайдаланушының паролімен PBKDF2 функциясы арқылы алынады. Кейбір бинарлық үлкен деректер объектілері тұз қосылған және/немесе сыртқы пайдаланушы шақырған пароль (яғни "Қуатты кілт қорғанысы") қажет болатын түрде шифрлануы мүмкін. Тұзды пайдалану - бұл іске асыру бойынша нұсқа, яғни қолданба жасаушының бақылауында және соңғы пайдаланушы немесе жүйе әкімшісімен бақылана алмайды. Кілттерге COM+ объектісін пайдалану арқылы делегаттық қол жеткізуге болады. Бұл IIS веб-серверлеріне DPAPI-ді пайдалануға мүмкіндік береді.
Active Directory резервтік кілттері
Компьютер доменге мүше болған кезде, DPAPI пайдаланушының паролі жоғалған жағдайда деректерді қорғауды қамтамасыз ететін резервтік тетікке ие, ол "Credential Roaming" деп аталады. Доменді контроллерде жаңа доменді орнату кезінде DPAPI-мен байланысты ашық және жеке кілт жұбы құрылады. Клиенттік жұмыс станциясында бас кілт пайда болған кезде клиент доменнің ашық кілтінің көшірмесін алу үшін домен контроллерімен аутентификацияланған RPC шақыру арқылы байланысады. Клиент бас кілтті доменді басқарушының ашық кілтімен шифрлайды. Соңында, ол осы жаңа резервтік бас кілтті AppData каталогында дәстүрлі бас кілтті сақтау сияқты сақтайды.