작성자: Rick Anderson
Windows에서 실행하는 경우 데이터 보호 시스템은 ASP.NET Core Data Protection을 사용하는 모든 앱에 대해 기본 컴퓨터 전체 정책을 설정하는 데 대한 지원이 제한됩니다. 일반적으로 관리자는 컴퓨터의 모든 앱을 수동으로 업데이트할 필요 없이 사용된 알고리즘 또는 키 수명 등의 기본 설정을 변경할 수 있습니다.
Warning
시스템 관리자는 기본 정책을 설정할 수 있지만 적용할 수는 없습니다. 앱 개발자는 항상 자신의 선택 중 하나를 사용하여 모든 값을 재정의할 수 있습니다. 기본 정책은 개발자가 설정에 대한 명시적 값을 지정하지 않은 앱에만 영향을 줍니다.
기본 정책 설정
기본 정책을 설정하기 위해 관리자는 다음 레지스트리 키 아래에 시스템 레지스트리에서 알려진 값을 설정할 수 있습니다.
HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection
64비트 운영 체제에서 32비트 앱의 동작에 영향을 주려는 경우 위 키에 해당하는 Wow6432Node를 구성해야 합니다.
지원되는 값은 다음과 같습니다.
| Value | Type | Description |
|---|---|---|
| EncryptionType | string | 데이터 보호에 사용해야 하는 알고리즘을 지정합니다. 값은 CNG-CBC, CNG-GCM 또는 관리형이어야 하며 아래에 자세히 설명되어 있습니다. |
| 기본키수명 (DefaultKeyLifetime) | DWORD | 새로 생성된 키의 수명을 지정합니다. 값은 일 단위로 지정되며 = 7이어야 >합니다. |
| KeyEscrowSinks | string | 키 에스크로에 사용되는 형식을 지정합니다. 값은 세미콜론으로 구분된 키 에스크로 싱크 목록입니다. 이 목록의 각 요소는 IKeyEscrowSink을 구현하는 형식의 어셈블리 정규화 이름입니다. |
암호화 유형
EncryptionType이 CNG-CBC인 경우 시스템은 기밀성을 위해 CBC 모드 대칭 블록 암호화를 사용하도록 구성되고 Windows CNG에서 제공하는 서비스의 신뢰성을 위해 HMAC를 사용하도록 구성됩니다(자세한 내용은 사용자 지정 Windows CNG 알고리즘 지정 참조). 지원되는 추가 값은 각각 CngCbcAuthenticatedEncryptionSettings 형식의 속성에 해당합니다.
| Value | Type | Description |
|---|---|---|
| EncryptionAlgorithm | string | CNG에서 이해하는 대칭 블록 암호 알고리즘의 이름입니다. 이 알고리즘은 CBC 모드에서 열립니다. |
| EncryptionAlgorithmProvider | string | EncryptionAlgorithm 알고리즘을 생성할 수 있는 CNG 공급자 구현의 이름입니다. |
| EncryptionAlgorithmKeySize | DWORD | 대칭 블록 암호 알고리즘에 대해 파생할 키의 길이(비트)입니다. |
| HashAlgorithm | string | CNG에서 이해하는 해시 알고리즘의 이름입니다. 이 알고리즘은 HMAC 모드에서 열립니다. |
| HashAlgorithmProvider | string | 알고리즘 HashAlgorithm을 생성할 수 있는 CNG 공급자 구현의 이름입니다. |
EncryptionType이 CNG-GCM인 경우 시스템은 Windows CNG에서 제공하는 서비스에서 기밀성과 신뢰성을 위해 Galois/카운터 모드 대칭 블록 암호화를 사용하도록 구성됩니다(자세한 내용은 사용자 지정 Windows CNG 알고리즘 지정 참조). 지원되는 추가 값은 각각 CngGcmAuthenticatedEncryptionSettings 형식의 속성에 해당합니다.
| Value | Type | Description |
|---|---|---|
| EncryptionAlgorithm | string | CNG에서 이해하는 대칭 블록 암호 알고리즘의 이름입니다. 이 알고리즘은 Galois/카운터 모드에서 열립니다. |
| EncryptionAlgorithmProvider | string | EncryptionAlgorithm 알고리즘을 생성할 수 있는 CNG 공급자 구현의 이름입니다. |
| EncryptionAlgorithmKeySize | DWORD | 대칭 블록 암호 알고리즘에 대해 파생할 키의 길이(비트)입니다. |
EncryptionType이 관리되는 경우 시스템은 기밀성을 위해 관리되는 SymmetricAlgorithm을 사용하도록 구성되고, 인증을 위해 KeyedHashAlgorithm을 사용하도록 구성됩니다(자세한 내용은 사용자 지정 관리 알고리즘 지정 참조). 지원되는 추가 값은 각각 ManagedAuthenticatedEncryptionSettings 형식의 속성에 해당합니다.
| Value | Type | Description |
|---|---|---|
| EncryptionAlgorithmType | string | SymmetricAlgorithm을 구현하는 형식의 정규화된 어셈블리 이름입니다. |
| EncryptionAlgorithmKeySize | DWORD | 대칭 암호화 알고리즘에 대해 파생할 키의 길이(비트)입니다. |
| ValidationAlgorithmType | string | KeyedHashAlgorithm을 구현하는 형식의 정규화된 어셈블리 이름입니다. |
EncryptionType에 null 또는 비어 있는 값 이외의 다른 값이 있는 경우 데이터 보호 시스템은 시작 시 예외를 throw합니다.
Warning
형식 이름(EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks)을 포함하는 기본 정책 설정을 구성하는 경우 해당 형식을 앱에서 사용할 수 있어야 합니다. ASP.NET Core 앱의 경우 이러한 형식을 포함하는 패키지를 설치해야 합니다.
ASP.NET Core