이 문서에서는 WinUI 앱에서 사용할 수 있는 암호화 기능에 대한 개요를 제공합니다. 특정 작업에 대한 자세한 내용은 이 문서의 끝에 있는 표를 참조하세요.
메모
네임스페이 Windows.Security.Cryptography 스는 Windows 앱에 대한 관리형 암호화 작업을 제공합니다. 암호화 기본 형식에 직접 액세스해야 하는 Win32 또는 데스크톱 시나리오의 경우 Windows 권장되는 네이티브 암호화 API인 CNG(Cryptography Next Generation)를 사용하는 것이 좋습니다.
Important
알고리즘을 선택할 때는 대칭 암호화에 AES(128비트 키 이상)를 사용하고, 비대칭 작업에는 RSA(2048비트 이상) 또는 ECDSA를 사용합니다. DES, 3DES 또는 RC4와 같은 더 이상 사용되지 않는 알고리즘을 사용하지 마세요. 해시의 경우 SHA-256 또는 더 강력한 보안 컨텍스트에서 MD5 또는 SHA-1을 사용하지 마세요.
용어
다음 용어는 일반적으로 PKI(암호화 및 공개 키 인프라)에서 사용됩니다.
| 기간 | 설명 |
|---|---|
| Encryption | 암호화 알고리즘 및 키를 사용하여 데이터를 변환하는 프로세스입니다. 변환된 데이터는 동일한 알고리즘과 동일한(대칭) 또는 관련(공개) 키를 사용해야만 복구할 수 있습니다. |
| 암호 해독 | 암호화된 데이터를 원래 형식으로 반환하는 프로세스입니다. |
| 일반 텍스트 | 원래 암호화되지 않은 문자 메시지를 참조했습니다. 현재 암호화되지 않은 모든 데이터를 참조합니다. |
| 암호문 | 원래 암호화되었으므로 읽을 수 없는 문자 메시지라고 합니다. 현재 어떤 암호화된 데이터라도 참조합니다. |
| 해싱 | 가변 길이 데이터를 고정 길이(일반적으로 더 작은 값)로 변환하는 프로세스입니다. 해시를 비교하면 둘 이상의 데이터가 동일하다는 합리적인 보증을 얻을 수 있습니다. |
| Signature | 일반적으로 데이터 발신자를 인증하거나 전송 중에 데이터가 변조되지 않았는지 확인하는 데 사용되는 디지털 데이터의 암호화된 해시입니다. |
| 알고리즘 | 데이터를 암호화하기 위한 단계별 절차입니다. |
| 암호키 | 데이터를 암호화하고 해독하기 위해 암호화 알고리즘에 대한 입력으로 사용되는 임의 또는 의사 난수입니다. |
| 대칭 키 암호화 | 암호화 및 암호 해독이 동일한 키를 사용하는 암호화입니다. 이를 비밀 키 암호화라고도 합니다. |
| 비대칭 키 암호화 | 암호화 및 암호 해독이 서로 다르지만 수학적으로 관련된 키를 사용하는 암호화입니다. 이를 공개 키 암호화라고도 합니다. |
| 인코딩 | 네트워크를 통해 전송하기 위해 인증서를 포함한 디지털 메시지를 인코딩하는 프로세스입니다. |
| 알고리즘 공급자 | 암호화 알고리즘을 구현하는 DLL입니다. |
| 키 스토리지 공급자 | 키 자료를 저장하기 위한 컨테이너입니다. 현재 키는 소프트웨어, 스마트 카드 또는 TPM(신뢰할 수 있는 플랫폼 모듈)에 저장할 수 있습니다. |
| X.509 인증서 | 일반적으로 인증 기관에서 발행한 디지털 문서는 다른 이해 관계자에게 개인, 시스템 또는 엔터티의 ID를 확인합니다. |
네임스페이스
앱에서 사용할 수 있는 네임스페이스는 다음과 같습니다.
Windows.Security.Cryptography
다음을 수행할 수 있는 CryptographicBuffer 클래스 및 정적 메서드를 포함합니다.
- 문자열로 및 문자열에서 데이터 변환
- 바이트 배열로 및 바이트 배열에서 데이터 변환
- 네트워크 전송을 위한 메시지 인코딩
- 전송 후 메시지 디코딩
Windows.Security.Cryptography.Certificates
다음을 수행할 수 있는 클래스, 인터페이스 및 열거형 형식을 포함합니다.
- 인증서 요청 만들기
- 인증서 응답 설치
- PFX 파일에서 인증서 가져오기
- 인증서 요청 속성 지정 및 검색
Windows.Security.Cryptography.Core
다음을 수행할 수 있는 클래스 및 열거형 형식을 포함합니다.
- 데이터 암호화 및 암호 해독
- 해시 데이터
- 데이터 서명 및 서명 확인
- 키 만들기, 가져오기 및 내보내기
- 비대칭 키 알고리즘 공급자와 협력하기
- 대칭 키 알고리즘 공급자와 함께 작업하기
- 해시 알고리즘 공급자와 협력하다
- MAC(머신 인증 코드) 알고리즘 공급자와 함께 작업하기
- 주요 키 파생 알고리즘 공급자와 협력하다
Windows.Security.Cryptography.DataProtection
다음을 수행할 수 있는 클래스를 포함합니다.
- 정적 데이터를 비동기적으로 암호화 및 암호 해독
- 데이터 스트림을 비동기적으로 암호화 및 암호 해독
암호화 및 PKI 애플리케이션 기능
앱에 사용할 수 있는 간소화된 애플리케이션 프로그래밍 인터페이스를 사용하면 다음과 같은 PKI(암호화 및 공개 키 인프라) 기능을 사용할 수 있습니다.
암호화 지원
다음 암호화 작업을 수행할 수 있습니다. 자세한 내용은 Windows.Security.Cryptography.Core 네임스페이스를 참조하세요.
- 대칭 키 만들기
- 대칭 암호화 수행
- 비대칭 키 만들기
- 비대칭 암호화 수행
- 암호 기반 키 파생
- MAC(메시지 인증 코드) 만들기
- 해시 콘텐츠
- 콘텐츠 디지털 서명
또한 SDK는 암호 기반 데이터 보호를 위한 간소화된 인터페이스를 제공합니다. 이 작업을 사용하여 다음 작업을 수행할 수 있습니다. 자세한 내용은 Windows.Security.Cryptography.DataProtection 네임스페이스를 참조하세요.
- 정적 데이터의 비동기 보호
- 데이터 스트림의 비동기 보호
인코딩 지원
앱은 네트워크를 통해 전송하기 위해 암호화 데이터를 인코딩하고 네트워크 원본에서 받은 데이터를 디코딩할 수 있습니다. 자세한 내용은 Windows.Security.Cryptography 네임스페이스에서 사용할 수 있는 정적 메서드를 참조하세요.
PKI 지원
앱은 다음 PKI 작업을 수행할 수 있습니다. 자세한 내용은 Windows.Security.Cryptography.Certificates 네임스페이스를 참조하세요.
- 인증서 만들기
- 자체 서명된 인증서 만들기
- 인증서 응답 설치
- PFX 형식으로 인증서 가져오기
- 스마트 카드 인증서 및 키 사용(sharedUserCertificates 기능 집합)
- 사용자 MY 저장소의 인증서 사용(sharedUserCertificates 기능 집합)
또한 매니페스트를 사용하여 다음 작업을 수행할 수 있습니다.
- 애플리케이션별 신뢰할 수 있는 루트 인증서 지정
- 애플리케이션별 피어가 신뢰하는 인증서 지정
- 시스템 신뢰로부터의 상속을 명시적으로 비활성화하시기 바랍니다.
- 인증서 선택 조건 지정
- 하드웨어 인증서만
- 지정된 발급자 집합을 통해 연결된 인증서
- 애플리케이션 저장소에서 인증서 자동 선택
자세한 문서
다음 문서에서는 보안 시나리오에 대한 자세한 내용을 제공합니다.
| 주제 | 설명 |
|---|---|
| Certificates | 이 문서에서는 WinUI 앱에서 인증서의 사용에 대해 설명합니다. 디지털 인증서는 공개 키 암호화에서 개인, 컴퓨터 또는 조직에 공개 키를 바인딩하는 데 사용됩니다. 바인딩된 ID는 한 엔터티를 다른 엔터티에 인증하는 데 가장 자주 사용됩니다. 예를 들어, 인증서는 웹 서버가 사용자에게, 사용자가 웹 서버에게 상호 인증하는 데 자주 사용됩니다. 인증서 요청을 만들고 발급된 인증서를 설치하거나 가져올 수 있습니다. 인증서 계층 구조에 인증서를 등록할 수도 있습니다. |
| 암호화 키 | 이 문서에서는 표준 키 파생 함수를 사용하여 키를 파생하는 방법과 대칭 및 비대칭 키를 사용하여 콘텐츠를 암호화하는 방법을 보여 줍니다. |
| 데이터 보호 | 이 문서에서는 Windows.Security.Cryptography.DataProtection 네임스페이스의 DataProtectionProvider 클래스를 사용하여 WinUI 앱에서 디지털 데이터를 암호화하고 암호 해독하는 방법을 설명합니다. |
| MAC, 해시 및 서명 | 이 문서에서는 WinUI 앱에서 메시지 인증 코드(MAC), 해시 및 서명을 사용하여 메시지 변조를 검색하는 방법을 설명합니다. |
| 암호화에 대한 내보내기 제한 사항 | 이 정보를 사용하여 앱이 Microsoft Store에 나열되지 않을 수 있는 방식으로 암호화를 사용하는지 확인합니다. |
| 일반적인 암호화 작업 | 이러한 문서에서는 난수 만들기, 버퍼 비교, 문자열과 이진 데이터 간 변환, 바이트 배열 간 복사, 데이터 인코딩 및 디코딩과 같은 일반적인 WinUI 암호화 작업에 대한 예제 코드를 제공합니다. |
Windows developer