ASP.NET Core 데이터 보호 개요
ASP.NET Core는 키 관리 및 회전을 포함하여 데이터를 보호하는 암호화 API를 제공합니다.
웹앱은 중요한 데이터를 저장해야 하는 경우가 많습니다. Windows DPAPI(데이터 보호 API)는 웹앱에서 사용하기 위한 것이 아닙니다.
ASP.NET Core 데이터 보호 스택은 다음을 위해 설계되었습니다.
- 대부분의 웹 시나리오에 대한 기본 제공 솔루션을 제공합니다.
- 이전 암호화 시스템의 많은 결함을 해결합니다.
- ASP.NET 1.x - 4.x에서 요소의
<machineKey>
대체 역할을 합니다.
문제 설명
나중에 검색하기 위해 신뢰할 수 있는 정보를 유지해야 하지만 지속성 메커니즘을 신뢰하지는 않습니다. 웹 용어로 신뢰할 수 없는 클라이언트를 통해 신뢰할 수 있는 상태를 왕복해야 하므로 이 항목이 작성 될 수 있습니다.
신뢰성, 무결성 및 변조 방지는 요구 사항입니다. 이에 대한 정식 예는 인증 cookie 또는 전달자 토큰입니다. 서버는 I am Groot를 생성하고 xyz 권한 토큰을 가지고 클라이언트에 보냅니다. 클라이언트는 해당 토큰을 서버에 다시 제공하지만 서버는 클라이언트가 토큰을 위조하지 않았음을 보증해야 합니다.
기밀성은 요구 사항입니다. 지속형 상태는 서버에서 신뢰할 수 있으므로 이 상태에는 신뢰할 수 없는 클라이언트에 공개되지 않아야 하는 정보가 포함될 수 있습니다. 예시:
- 파일 경로입니다.
- 사용 권한입니다.
- 핸들 또는 기타 간접 참조입니다.
- 일부 서버별 데이터입니다.
격리는 요구 사항입니다. 최신 앱은 구성 요소화되므로 개별 구성 요소는 시스템의 다른 구성 요소와 관계없이 이 시스템을 활용하려고 합니다. 예를 들어 이 스택을 사용하는 전달자 토큰 구성 요소를 고려합니다. 예를 들어 동일한 스택을 사용하는 CSRF 방지 메커니즘에서 간섭 없이 작동해야 합니다.
몇 가지 일반적인 가정은 요구 사항의 범위를 좁힐 수 있습니다.
- 암호화 시스템 내에서 작동하는 모든 서비스는 동일하게 신뢰할 수 있습니다.
- 직접 제어하는 서비스 외부에서 데이터를 생성하거나 사용할 필요가 없습니다.
- 웹 서비스에 대한 각 요청이 암호화 시스템을 한 번 이상 통과할 수 있기 때문에 작업이 빨라야 합니다. 속도 요구 사항은 대칭 암호화를 이상적으로 만듭니다. 비대칭 암호화는 필요할 때까지 사용되지 않습니다.
디자인 원칙
ASP.NET Core 데이터 보호는 사용하기 쉬운 데이터 보호 스택입니다. 다음 원칙을 기반으로 합니다.
- 구성 용이성. 시스템은 0 구성을 위해 노력합니다. 개발자가 키 리포지토리와 같은 특정 측면을 구성해야 하는 상황에서는 이러한 특정 구성이 어렵지 않습니다.
- 기본 소비자 지향 API를 제공합니다. API는 올바르고 잘못 사용하기 어려운 바로 앞으로 사용됩니다.
- 개발자는 주요 관리 원칙을 배울 필요가 없습니다. 시스템은 개발자를 대신하여 알고리즘 선택 및 키 수명을 처리합니다. 개발자는 원시 키 자료에 액세스할 수 없습니다.
- 키는 최대한 보호됩니다 rest . 시스템은 적절한 기본 보호 메커니즘을 파악하고 자동으로 적용합니다.
데이터 보호 API는 주로 기밀 페이로드의 무기한 지속성을 위한 것이 아닙니다. Windows CNG DPAPI 및 Azure Rights Management와 같은 다른 기술은 무기한 스토리지 시나리오에 더 적합합니다. 강력한 키 관리 기능이 있습니다. 즉, ASP.NET Core 데이터 보호 API는 기밀 데이터의 장기 보호에 사용할 수 있습니다.
대상
데이터 보호 시스템은 세 가지 주요 대상 그룹을 대상으로 하는 API를 제공합니다.
소비자 API는 애플리케이션 및 프레임워크 개발자를 대상으로 합니다.
스택이 작동하는 방식이나 스택이 어떻게 구성되었는지에 대해 알아보고 싶지 않습니다. API를 성공적으로 사용할 확률이 높은 작업을 수행하려고 합니다.
구성 API는 앱 개발자 및 시스템 관리자를 대상으로 합니다.
데이터 보호 시스템에 내 환경에 기본이 아닌 경로 또는 설정이 필요하다는 것을 알려야 합니다.
확장성 API는 사용자 지정 정책을 구현을 담당하는 개발자를 대상으로 합니다. 이러한 API의 사용은 드문 상황 및 보안 환경이 있는 개발자로 제한됩니다.
나는 진정으로 독특한 행동 요구 사항을 가지고 있기 때문에 시스템 내에서 전체 구성 요소를 교체해야합니다. 요구 사항을 충족하는 플러그 인을 빌드하기 위해 API 표면의 자주 사용되지 않는 부분을 배우려고 합니다.
패키지 레이아웃
데이터 보호 스택은 5개의 패키지로 구성됩니다.
Microsoft.AspNetCore.DataProtection.Abstractions 에는 다음이 포함됩니다.
- IDataProtectionProvider 및 IDataProtector 인터페이스를 사용하여 데이터 보호 서비스를 만듭니다.
- 이러한 형식을 사용하는 데 유용한 확장 메서드입니다. 예: IDataProtector.Protect
데이터 보호 시스템이 다른 곳에서 인스턴스화되고 API를 사용하는 경우
Microsoft.AspNetCore.DataProtection.Abstractions
를 참조합니다.Microsoft.AspNetCore.DataProtection 에는 다음을 비롯한 데이터 보호 시스템의 핵심 구현이 포함되어 있습니다.
- 핵심 암호화 작업.
- 키 관리.
- 구성 및 확장성.
데이터 보호 시스템을
Microsoft.AspNetCore.DataProtection
인스턴스화하려면 참조합니다. 다음과 같은 경우 데이터 보호 시스템을 참조해야 할 수 있습니다.- 에 추가합니다 IServiceCollection.
- 동작을 수정하거나 확장합니다.
Microsoft.AspNetCore.DataProtection.Extensions에는 개발자에게 유용할 수 있지만 핵심 패키지에 속하지 않는 추가 API가 포함되어 있습니다. 예를 들어 이 패키지에는 다음이 포함됩니다.
- 종속성 주입 없이 파일 시스템의 위치에 키를 저장하도록 데이터 보호 시스템을 인스턴스화하는 팩터리 메서드입니다. DataProtectionProvider을 참조하세요.
- 보호된 페이로드의 수명을 제한하는 확장 메서드입니다. ITimeLimitedDataProtector을 참조하세요.
Microsoft.AspNetCore.DataProtection.SystemWeb은 기존 ASP.NET 4.x 앱에 설치하여 새 ASP.NET Core 데이터 보호 스택을 사용하도록
<machineKey>
작업을 리디렉션할 수 있습니다. 자세한 내용은 ASP.NET Core의 ASP.NET machineKey 바꾸기를 참조하세요.Microsoft.AspNetCore.Cryptography.KeyDerivation은 PBKDF2 암호 해시 루틴의 구현을 제공하며, 사용자 암호를 안전하게 처리해야 하는 시스템에서 사용할 수 있습니다. 자세한 내용은 ASP.NET Core의 해시 암호를 참조하세요.
추가 리소스
ASP.NET Core는 키 관리 및 회전을 포함하여 데이터를 보호하는 암호화 API를 제공합니다.
웹앱은 중요한 데이터를 저장해야 하는 경우가 많습니다. Windows DPAPI(데이터 보호 API)는 웹앱에서 사용하기 위한 것이 아닙니다.
ASP.NET Core 데이터 보호 스택은 다음을 위해 설계되었습니다.
- 대부분의 웹 시나리오에 대한 기본 제공 솔루션을 제공합니다.
- 이전 암호화 시스템의 많은 결함을 해결합니다.
- ASP.NET 1.x - 4.x에서 요소의
<machineKey>
대체 역할을 합니다.
문제 설명
나중에 검색하기 위해 신뢰할 수 있는 정보를 유지해야 하지만 지속성 메커니즘을 신뢰하지는 않습니다. 웹 용어로 신뢰할 수 없는 클라이언트를 통해 신뢰할 수 있는 상태를 왕복해야 하므로 이 항목이 작성 될 수 있습니다.
신뢰성, 무결성 및 변조 방지는 요구 사항입니다. 이에 대한 정식 예는 인증 cookie 또는 전달자 토큰입니다. 서버는 I am Groot를 생성하고 xyz 권한 토큰을 가지고 클라이언트에 보냅니다. 클라이언트는 해당 토큰을 서버에 다시 제공하지만 서버는 클라이언트가 토큰을 위조하지 않았음을 보증해야 합니다.
기밀성은 요구 사항입니다. 지속형 상태는 서버에서 신뢰할 수 있으므로 이 상태에는 신뢰할 수 없는 클라이언트에 공개되지 않아야 하는 정보가 포함될 수 있습니다. 예시:
- 파일 경로입니다.
- 사용 권한입니다.
- 핸들 또는 기타 간접 참조입니다.
- 일부 서버별 데이터입니다.
격리는 요구 사항입니다. 최신 앱은 구성 요소화되므로 개별 구성 요소는 시스템의 다른 구성 요소와 관계없이 이 시스템을 활용하려고 합니다. 예를 들어 이 스택을 사용하는 전달자 토큰 구성 요소를 고려합니다. 예를 들어 동일한 스택을 사용하는 CSRF 방지 메커니즘에서 간섭 없이 작동해야 합니다.
몇 가지 일반적인 가정은 요구 사항의 범위를 좁힐 수 있습니다.
- 암호화 시스템 내에서 작동하는 모든 서비스는 동일하게 신뢰할 수 있습니다.
- 직접 제어하는 서비스 외부에서 데이터를 생성하거나 사용할 필요가 없습니다.
- 웹 서비스에 대한 각 요청이 암호화 시스템을 한 번 이상 통과할 수 있기 때문에 작업이 빨라야 합니다. 속도 요구 사항은 대칭 암호화를 이상적으로 만듭니다. 비대칭 암호화는 필요할 때까지 사용되지 않습니다.
디자인 원칙
ASP.NET Core 데이터 보호는 사용하기 쉬운 데이터 보호 스택입니다. 다음 원칙을 기반으로 합니다.
- 구성 용이성. 시스템은 0 구성을 위해 노력합니다. 개발자가 키 리포지토리와 같은 특정 측면을 구성해야 하는 상황에서는 이러한 특정 구성이 어렵지 않습니다.
- 기본 소비자 지향 API를 제공합니다. API는 올바르고 잘못 사용하기 어려운 바로 앞으로 사용됩니다.
- 개발자는 주요 관리 원칙을 배울 필요가 없습니다. 시스템은 개발자를 대신하여 알고리즘 선택 및 키 수명을 처리합니다. 개발자는 원시 키 자료에 액세스할 수 없습니다.
- 키는 최대한 보호됩니다 rest . 시스템은 적절한 기본 보호 메커니즘을 파악하고 자동으로 적용합니다.
데이터 보호 API는 주로 기밀 페이로드의 무기한 지속성을 위한 것이 아닙니다. Windows CNG DPAPI 및 Azure Rights Management와 같은 다른 기술은 무기한 스토리지 시나리오에 더 적합합니다. 강력한 키 관리 기능이 있습니다. 즉, ASP.NET Core 데이터 보호 API는 기밀 데이터의 장기 보호에 사용할 수 있습니다.
대상
데이터 보호 시스템은 세 가지 주요 대상 그룹을 대상으로 하는 API를 제공합니다.
소비자 API는 애플리케이션 및 프레임워크 개발자를 대상으로 합니다.
스택이 작동하는 방식이나 스택이 어떻게 구성되었는지에 대해 알아보고 싶지 않습니다. API를 성공적으로 사용할 확률이 높은 작업을 수행하려고 합니다.
구성 API는 앱 개발자 및 시스템 관리자를 대상으로 합니다.
데이터 보호 시스템에 내 환경에 기본이 아닌 경로 또는 설정이 필요하다는 것을 알려야 합니다.
확장성 API는 사용자 지정 정책을 구현을 담당하는 개발자를 대상으로 합니다. 이러한 API의 사용은 드문 상황 및 보안 환경이 있는 개발자로 제한됩니다.
나는 진정으로 독특한 행동 요구 사항을 가지고 있기 때문에 시스템 내에서 전체 구성 요소를 교체해야합니다. 요구 사항을 충족하는 플러그 인을 빌드하기 위해 API 표면의 자주 사용되지 않는 부분을 배우려고 합니다.
패키지 레이아웃
데이터 보호 스택은 5개의 패키지로 구성됩니다.
Microsoft.AspNetCore.DataProtection.Abstractions 에는 다음이 포함됩니다.
- IDataProtectionProvider 및 IDataProtector 인터페이스를 사용하여 데이터 보호 서비스를 만듭니다.
- 이러한 형식을 사용하는 데 유용한 확장 메서드입니다. 예: IDataProtector.Protect
데이터 보호 시스템이 다른 곳에서 인스턴스화되고 API를 사용하는 경우
Microsoft.AspNetCore.DataProtection.Abstractions
를 참조합니다.Microsoft.AspNetCore.DataProtection 에는 다음을 비롯한 데이터 보호 시스템의 핵심 구현이 포함되어 있습니다.
- 핵심 암호화 작업.
- 키 관리.
- 구성 및 확장성.
데이터 보호 시스템을
Microsoft.AspNetCore.DataProtection
인스턴스화하려면 참조합니다. 다음과 같은 경우 데이터 보호 시스템을 참조해야 할 수 있습니다.- 에 추가합니다 IServiceCollection.
- 동작을 수정하거나 확장합니다.
Microsoft.AspNetCore.DataProtection.Extensions에는 개발자에게 유용할 수 있지만 핵심 패키지에 속하지 않는 추가 API가 포함되어 있습니다. 예를 들어 이 패키지에는 다음이 포함됩니다.
- 종속성 주입 없이 파일 시스템의 위치에 키를 저장하도록 데이터 보호 시스템을 인스턴스화하는 팩터리 메서드입니다. DataProtectionProvider을 참조하세요.
- 보호된 페이로드의 수명을 제한하는 확장 메서드입니다. ITimeLimitedDataProtector을 참조하세요.
Microsoft.AspNetCore.DataProtection.SystemWeb은 기존 ASP.NET 4.x 앱에 설치하여 새 ASP.NET Core 데이터 보호 스택을 사용하도록
<machineKey>
작업을 리디렉션할 수 있습니다. 자세한 내용은 ASP.NET Core의 ASP.NET machineKey 바꾸기를 참조하세요.Microsoft.AspNetCore.Cryptography.KeyDerivation은 PBKDF2 암호 해시 루틴의 구현을 제공하며, 사용자 암호를 안전하게 처리해야 하는 시스템에서 사용할 수 있습니다. 자세한 내용은 ASP.NET Core의 해시 암호를 참조하세요.
추가 리소스
ASP.NET Core