다음을 통해 공유


보호 설명자

보호 설명자 규칙 문자열에는 하나 이상의 보호기의 순차적 목록이 포함됩니다. 하나 이상의 보호기가 있어야 합니다. 둘 이상의 경우 보호기는 AND 또는 OR문자열에서 구분되어야 합니다. 이러한 값은 대문자로 표시되어야 합니다. 다음 구문은 보호 설명자의 문자열 형식을 보여줍니다.

Descriptor = [ Protector-or
              *( OR-separator Protector-or ) ]

    Protector-or = Protector-and
              *( AND-separator Protector-and )

    OR-separator = "OR"
    AND-separator = "AND"

    Protector-and = providerName EQUALS providerAttributes

    providerName = descr

    providerAttribute = string | hexstring

      ; The following characters are to be escaped when they appear
      ; in the value to be encoded: ESC, one of <escaped>, leading
      ; SHARP or SPACE, trailing SPACE, and NULL.
      string =   [ ( leadchar / pair ) [ *( stringchar / pair )
         ( trailchar / pair ) ] ]

      leadchar = LUTF1 / UTFMB
      LUTF1 = %x01-1F / %x21 / %x24-2A / %x2D-3A / %x3D / %x3F-5B / %x5D-7F

      trailchar  = TUTF1 / UTFMB
      TUTF1 = %x01-1F / %x21 / %x23-2A / %x2D-3A / %x3D / %x3F-5B / %x5D-7F

      stringchar = SUTF1 / UTFMB
      SUTF1 = %x01-21 / %x23-2A / %x2D-3A / %x3D / %x3F-5B / %x5D-7F

      pair = ESC ( ESC / special / hexpair )
      special = escaped / SPACE / SHARP / EQUALS
      escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE
      hexstring = SHARP 1*hexpair
      hexpair = HEX HEX

      descr   = leadkeychar *keychar
      leadkeychar = ALPHA
      keychar = ALPHA / DIGIT / HYPHEN
      number  = DIGIT / ( LDIGIT 1*DIGIT )

      ALPHA   = %x41-5A / %x61-7A   ; "A"-"Z" / "a"-"z"
      DIGIT   = %x30 / LDIGIT       ; "0"-"9"
      LDIGIT  = %x31-39             ; "1"-"9"
      HEX     = DIGIT / %x41-46 / %x61-66 ; "0"-"9" / "A"-"F" / "a"-"f"

      NULL    = %x00 ; null (0)
      SPACE   = %x20 ; space (" ")
      DQUOTE  = %x22 ; quote (""")
      SHARP   = %x23 ; octothorpe (or sharp sign) ("#")
      DOLLAR  = %x24 ; dollar sign ("$")
      SQUOTE  = %x27 ; single quote ("'")
      LPAREN  = %x28 ; left paren ("(")
      RPAREN  = %x29 ; right paren (")")
      PLUS    = %x2B ; plus sign ("+")
      COMMA   = %x2C ; comma (",")
      HYPHEN  = %x2D ; hyphen ("-")
      DOT     = %x2E ; period (".")
      SEMI    = %x3B ; semicolon (";")
      LANGLE  = %x3C ; left angle bracket ("<")
      EQUALS  = %x3D ; equals sign ("=")
      RANGLE  = %x3E ; right angle bracket (">")
      ESC     = %x5C ; backslash ("\")
      USCORE  = %x5F ; underscore ("_")
      LCURLY  = %x7B ; left curly brace "{"
      RCURLY  = %x7D ; right curly brace "}"

      ; Any UTF-8 [RFC3629] encoded Unicode [Unicode] character
      UTF8    = UTF1 / UTFMB
      UTFMB   = UTF2 / UTF3 / UTF4
      UTF0    = %x80-BF
      UTF1    = %x00-7F
      UTF2    = %xC2-DF UTF0
      UTF3    = %xE0 %xA0-BF UTF0 / %xE1-EC 2(UTF0) /
                %xED %x80-9F UTF0 / %xEE-EF 2(UTF0)
      UTF4    = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
                %xF4 %x80-8F 2(UTF0)

      OCTET   = %x00-FF ; Any octet (8-bit data unit)

보호 설명자는 현재 다음 유형의 권한 부여에 대해 정의할 수 있습니다.

  • Active Directory 포리스트의 그룹입니다.
  • 웹 자격 증명 집합입니다.
  • 사용자의 인증서 저장소에 있는 인증서입니다.

Active Directory 그룹에 대한 보호 설명자 규칙 문자열의 예는 다음과 같습니다.

  • "SID=S-1-5-21-4392301 및 SID=S-1-5-21-3101812"
  • "SDDL=O:S-1-5-5-0-290724G:SYD:(A;; CCDC;;; S-1-5-5-0-290724)(A;; 직류;;; WD)"
  • "LOCAL=user"
  • "LOCAL=machine"

웹 자격 증명 집합에 대한 보호 설명자 규칙 문자열의 예는 다음과 같습니다.

  • "WEBCREDENTIALS=MyPasswordName"
  • "WEBCREDENTIALS=MyPasswordName,myweb.com"

인증서에 대한 보호 설명자 규칙 문자열의 예는 다음과 같습니다.

  • "CERTIFICATE=HashID:sha1_hash_of_certificate"
  • "CERTIFICATE=CertBlob:base64String"

지정하는 보호 설명자는 사용되는 키 보호 공급자를 자동으로 결정합니다. 자세한 내용은 보호 공급자참조하세요.

등호(=)의 왼쪽은 SID , SDDL, LOCAL, WEBCREDENTIALS또는 CERTIFICATE합니다. 이러한 값은 대/소문자를 구분하지 않습니다.

NCryptCreateProtectionDescriptor 함수를 호출할 때 규칙 문자열(또는 규칙 문자열과 연결된 표시 이름)을 지정해야 합니다. 또는 보호 설명자 규칙 문자열을 사용하고 기억하기가 다소 번거롭기 때문에 표시 이름을 규칙 문자열과 연결하고 NCryptRegisterProtectionDescriptorName 함수를 사용하여 둘 다 등록할 수 있습니다. 그런 다음 NCryptCreateProtectionDescriptor표시 이름을 사용할 수 있습니다.

CNG DPAPI

보호 공급자