Udostępnij za pośrednictwem


Deskryptory ochrony

Ciąg reguły deskryptora ochrony zawiera sekwencyjną listę co najmniej jednej funkcji ochrony. Musi istnieć co najmniej jedna funkcja ochrony. Jeśli istnieje więcej niż jeden, funkcje ochrony muszą być oddzielone w ciągu przez AND lub OR. Te wartości muszą być wielkich liter. Poniższa składnia przedstawia format ciągu deskryptora ochrony.

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)

Deskryptory ochrony można obecnie zdefiniować dla następujących typów autoryzacji:

  • Grupa w lesie usługi Active Directory.
  • Zestaw poświadczeń internetowych.
  • Certyfikat w magazynie certyfikatów użytkownika.

Przykłady ciągów reguł deskryptora ochrony dla grupy usługi Active Directory obejmują następujące elementy:

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

Przykłady ciągów reguł deskryptora ochrony dla zestawu poświadczeń internetowych obejmują następujące elementy:

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

Przykłady ciągów reguł deskryptora ochrony dla certyfikatu obejmują następujące elementy:

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

Deskryptor ochrony określony automatycznie określa, który dostawca ochrony kluczy jest używany. Aby uzyskać więcej informacji, zobacz Protection Providers.

Należy pamiętać, że lewa strona znaku równości (=) musi być SID , SDDL, LOCAL, WEBCREDENTIALSlub CERTIFICATE. Te wartości nie są uwzględniane wielkości liter.

Podczas wywoływania funkcji NCryptCreateProtectionDescript or należy określić ciąg reguły (lub nazwę wyświetlaną skojarzona z ciągiem reguły). Alternatywnie, ponieważ ciągi reguł deskryptora ochrony są nieco kłopotliwe do użycia i pamiętaj, można skojarzyć nazwę wyświetlaną z ciągiem reguły i zarejestrować je za pomocą funkcji NCryptRegisterProtectionDescriptorName. Następnie możesz użyć nazwy wyświetlanej w NCryptCreateProtectionDescriptor.

CNG DPAPI

Dostawcy ochrony