C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
Microsoft Software KSPの永続鍵で保護付きDACLを設定・永続化する正式な方法について
Windows 11 ARM64環境で、Microsoft Software Key Storage Providerを使用し、ユーザー単位の永続ECDSA P-256署名鍵を扱うアプリケーションを開発しています。
鍵のセキュリティ記述子について、DACLの継承を禁止した状態(SE_DACL_PROTECTED)を設定し、永続鍵に保存する方法を確認したいと考えています。
Microsoft LearnのNCryptSetPropertyの説明では、NCRYPT_SECURITY_DESCR_PROPERTYに対してDACL_SECURITY_INFORMATIONを指定できること、およびNCRYPT_PERSIST_FLAGによるプロパティの永続化が説明されています。
一方、PROTECTED_DACL_SECURITY_INFORMATIONとNCRYPT_PERSIST_FLAGは同じビット値(0x80000000)であるため、Microsoft Software KSPのNCRYPT_SECURITY_DESCR_PROPERTYで、この値がどのように解釈されるのか判断できていません。
質問:
Microsoft Software Key Storage Providerの永続鍵に対し、継承を禁止した保護付きDACL(SE_DACL_PROTECTED)を正式に設定・永続化するための、サポートされたNCryptSetPropertyの使用方法とdwFlagsの指定方法は何でしょうか。
Windows SDKまたはMicrosoftの公式ドキュメントで、この動作を確認できる資料があればご教示いただけますと幸いです。
参照資料:
NCryptSetProperty https://learn.microsoft.com/ja-jp/windows/win32/api/ncrypt/nf-ncrypt-ncryptsetproperty
キー ストレージ プロパティ識別子 https://learn.microsoft.com/ja-jp/windows/win32/seccng/key-storage-property-identifiers
関連する別の質問(アクセスマスクとGENERIC_MAPPING) https://learn.microsoft.com/ja-jp/answers/questions/6052754/microsoft-software-ksp-ecdsa-p-256-generic-mapping