ASP.NET Core의 인증된 암호화 세부 정보

IDataProtector.Protect에 대한 호출은 인증된 암호화 작업입니다. 보호 메서드는 기밀성과 신뢰성을 모두 제공하며, 해당 루트 IDataProtectionProvider에서 특정 IDataProtector 인스턴스를 파생시키는 데 사용된 용도 체인에 연결되어 있습니다.

IDataProtector.Protect는 byte[] 일반 텍스트 매개 변수를 사용하고 아래에서 설명하는 형식에 해당하는 byte[] 보호 페이로드를 생성 합니다. (문자열 일반 텍스트 매개 변수를 사용하고 문자열로 보호된 페이로드를 반환하는 확장 메서드 오버로드도 있습니다. 이 API를 사용하는 경우 보호된 페이로드 형식의 구조는 여전히 아래와 같지만 base64url로 인코딩됩니다.)

보호 페이로드 형식

보호 페이로드 형식은 다음과 같은 세 가지 주요 구성 요소로 구성됩니다.

  • 데이터 보호 시스템의 버전을 식별하는 32비트 매직 헤더입니다.

  • 이 특정 페이로드를 보호하는 데 사용되는 키를 식별하는 128비트 키 ID입니다.

  • 보호 페이로드의 나머지 부분은 이 키로 캡슐화된 암호기와 관련이 있습니다. 아래 예제에서 키는 AES-256-CBC + HMACSHA256 암호기를 나타내며 페이로드는 다음과 같이 추가로 세분화됩니다.

    • 128비트 키 한정자입니다.
    • 128비트 초기화 벡터입니다.
    • 48바이트의 AES-256-CBC 출력입니다.
    • HMACSHA256 인증 태그입니다.

샘플 보호 페이로드는 아래에 나와 있습니다.

09 F0 C9 F0 80 9C 81 0C 19 66 19 40 95 36 53 F8
AA FF EE 57 57 2F 40 4C 3F 7F CC 9D CC D9 32 3E
84 17 99 16 EC BA 1F 4A A1 18 45 1F 2D 13 7A 28
79 6B 86 9C F8 B7 84 F9 26 31 FC B1 86 0A F1 56
61 CF 14 58 D3 51 6F CF 36 50 85 82 08 2D 3F 73
5F B0 AD 9E 1A B2 AE 13 57 90 C8 F5 7C 95 4E 6A
8A AA 06 EF 43 CA 19 62 84 7C 11 B2 C8 71 9D AA
52 19 2E 5B 4C 1E 54 F0 55 BE 88 92 12 C1 4B 5E
52 C9 74 A0

첫 번째 32비트 위의 페이로드 형식에서 4바이트는 버전을 식별하는 매직 헤더(09 F0 C9 F0)입니다.

다음 128비트 또는 16바이트는 키 식별자(80 9C 81 0C 19 66 19 40 95 36 53 F8 AA FF EE 57)입니다.

나머지는 페이로드를 포함하며 사용되는 형식에만 한정됩니다.

Warning

지정된 키로 보호되는 모든 페이로드는 동일한 20바이트(매직 값, 키 ID) 헤더로 시작합니다. 관리자는 이 팩트를 사용하여 페이로드가 생성된 시기를 대략적으로 진단할 수 있습니다. 예를 들어 위의 페이로드는 키 {0c819c80-6619-4019-9536-53f8aaffee57}에 해당합니다. 키 리포지토리를 확인한 후 이 특정 키의 활성화 날짜가 2015-01-01이고 만료 날짜가 2015-03-01인 것을 알았다면 해당 창 내에서 페이로드(변조되지 않은 경우)가 생성된 것으로 가정하여 양쪽에 작은 fudge 팩터를 주거나 받는 것이 합리적입니다.