|
|
게시됨 2023. 8. 15. 오전 10:21:16
|
|
|
|

요구사항: 개발 과정에서 암호화 및 복호화 상황을 자주 접할 수 있습니다. 예를 들어, 이메일 인증은 암호화된 문자열을 포함할 수 있고, 사용자가 링크를 클릭해 인터페이스로 이동하면 시스템이 정상적으로 문자열 내용을 복호화하여 이메일 인증 기능을 구현할 수 있습니다.
ASP.NET Core는 데이터 보호 기능을 제공합니다:하이퍼링크 로그인이 보입니다.
메인 패키지
데이터 보호에 관련된 주요 패키지는 다음과 같으며, 필요에 따라 참고됩니다:
- Microsoft.AspNetCore.DataProtection.Abstractions 표준. NET CORE 추상화 계층 컴포넌트 패키지 명명. IDataProtectionProvider와 IDataProtector와 같은 주요 인터페이스 서비스를 포함하고 있습니다.
- Microsoft.AspNetCore.DataProtection, 핵심 암호 작업, 키 관리, 구성 및 확장성을 포함합니다.
- Microsoft.AspNetCore.DataProtection.Extensions 확장 기능. 인스턴스 생성을 위한 공장 방식과 키에 대한 저장 확장 메서드를 제공합니다. 이 패키지는 비-DI 모드에서 사용됩니다.
- Microsoft.AspNetCore.DataProtection.SystemWeb은 <machineKey>ASP.NET 4.x의 암호화 및 복호화 메커니즘과의 호환성을 구현합니다.
- Microsoft.AspNetCore.Cryptography.KeyDerivation은 PBKDF2 비밀번호 해싱 루틴의 구현을 제공합니다. 해시 암호화가 필요할 때 사용하세요.
IDataProtectionProvider 대 IDataProtector
IDataProtectionProvider는 Microsoft의 Provider 모델을 기반으로 하며, 인스턴스 생성을 위한 정책을 제공하는 데 사용됩니다. IDataProtector(목적) 메서드를 호출하여 IDataProtector 객체를 생성합니다. IDataProtector는 암호화 및 복호화를 담당하는 서비스로, 주로 보호와 해제 두 가지 방법을 제공합니다(각 유형마다 많은 오버로드 및 확장 메서드가 있습니다). 간단히 이해하면, protect는 암호화에 사용되고 unprotect는 복호화에 사용됩니다. IDataProtectionProvider의 Create 메서드 매개변수는 격리 기능을 제공하는 문자열입니다. 통과 불가능한 문자열로 생성된 IDataProtector는 같은 객체를 암호화하더라도 서로 다른 암호화 결과를 얻습니다. IDataProtector 자체도 암묵적인 IDataProtectionProvider이며, CreateProtector(purpose) 메서드도 제공합니다. 즉, 쉽게 구현할 수 있다는 뜻입니다다중 테넌트 애플리케이션 모드。
다음은 기억해야 할 몇 가지 사항입니다:
IDataProtectionProvider와 IDataProtector 인스턴스나사산 안전과녁. 언프로텍트 방법은 복호화 실패를 예외를 던져 호출자에게 알리는 것입니다. 예외 클래스는 CryptographicException입니다.
ASP.NET Core는 사용하기 간단한 데이터 보호입니다
데이터를 암호화 및 복호화하는 새로운 인터페이스가 추가되었으며, 코드는 다음과 같습니다:
시험 내용은 다음과 같습니다:
IDataProtectionProvider는 다음과 같은 코드를 가진 단일 패턴입니다:하이퍼링크 로그인이 보입니다.
키 관리
사용자 프로필이 제공된다면, 키는 다음%LOCALAPPDATA%\ASP.NET\DataProtection-Keys폴더. 운영체제가 Windows라면, 키는 DPAPI를 사용해 정지 상태에서 암호화됩니다. 아래에 나와 있습니다:
키 생애
기본적으로 키수명 주기는 90일입니다。 키가 만료되면 애플리케이션은 자동으로 새 키를 생성하고 그 키를 활성 키로 설정합니다. 비활성화된 키가 시스템에 남아 있는 한, 애플리케이션은 키로 보호되는 모든 데이터를 복호화할 수 있습니다. 자세한 내용은 키 관리 문서를 참조하세요.하이퍼링크 로그인이 보입니다.
기본 알고리즘
기본 부하 보호 알고리즘은 AES-256-CBC(기밀 유지용)와 HMACSHA256(진위 확인용)입니다. 90일마다 변경되는 512비트 마스터 키는 각 페이로드를 기반으로 이 알고리즘들의 두 개의 서브키를 도출하는 데 사용됩니다.
ASP.NET 코어의 키 저장 제공자
파일 시스템: PersistKeysToFileSystem Azure Storage: PersistKeysToAzureBlobStorage, this needs reference: Azure.Extensions.AspNetCore.DataProtection.Blobs Redis 저장소: PersistKeysToStackExchangeRedis, 참조 필요: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
참조:하이퍼링크 로그인이 보입니다.
클러스터 및 분산
서버 키가 일관되지 않으면, 예를 들어 서버 A 암호화와 서버 B 복호화가 동일할 경우, 예외가 던져지며(아래 그림에 나타난 것처럼), 동일한 키를 배포해야 합니다.
동일한 키를 다음과 같이 구성하세요:
프로그램이 실행되면 publish_itsvse 폴더 아래에 자동으로 키-*.xml 키 파일을 생성합니다이 파일을 여러 서버에서 일관되게 유지하세요! 아래에 나와 있습니다:
ASP.NET 코어 보호 구성
ASP.NET CORE는 풍부한 API 지원, 비밀번호 지속성, 구성 및 맞춤화 기능을 제공합니다.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure 클라우드 스토리지 시나리오.
- PersistKeysToFileSystem. 암호화 알고리즘, 키, 의존성을 기록하는 로컬 파일 시스템 저장 방식.
- ProtectKeysWith*. 암호화는 이 명명 방식의 확장을 통해 제공됩니다. 예를 들어, ProtectKeysWithCertificate가 있습니다
- SetDefaultKeyLifetime. 기본 키의 수명을 90일로 설정하세요.
- SetApplicationName. 앱 이름을 설정하세요. 기본적으로 데이터 보호 메커니즘은 각 애플리케이션과 완전히 격리되어 있습니다. 앱 간 키 공유는 동일한 앱 이름을 설정함으로써 가능합니다.
- DisableAutomaticKeyGeneration. 키가 자동으로 롤백되는 것을 방지하세요. 많은 경우 비밀번호가 변경되거나 클러스터 서비스에 들어가길 원하지 않습니다. 키 업데이트 롤백을 담당하는 전용 서비스가 있고, 다른 페이로드는 공유 공간에서 비밀번호를 가져오면 됩니다.
- UseCryptographicAlgorithms. 맞춤형 암호화 및 복호화 알고리즘을 사용하세요
참조:하이퍼링크 로그인이 보입니다.
|
이전의:PowerShell을 사용해 <machineKey> 요소를 생성하세요다음:지오네트워킹 솔루션으로 Tailscale, ZeroTier, WireGuard, OmniEdge, Ngrok을 비교해 보세요
|