암호화 API: 차세대

목적

암호화 API: CNG(차세대)는 CryptoAPI를 장기적으로 대체합니다. CNG는 여러 수준에서 확장 가능하고, 동작 방식이 특정 암호화 기술에 구애받지 않도록 설계되었습니다.

개발자 대상 그룹

CNG는 사용자가 특히 인터넷과 같은 안전하지 않은 미디어를 통해 안전한 환경에서 문서 및 기타 데이터를 만들고 교환할 수 있도록 하는 애플리케이션 개발자가 사용하기 위한 것입니다. 개발자는 C 및 C++ 프로그래밍 언어 및 Windows 기반 프로그래밍 환경에 익숙해야 합니다. 필수는 아니지만 암호화 또는 보안 관련 주제에 대한 이해가 권장됩니다.

CNG 암호화 알고리즘 공급자 또는 키 스토리지 공급자를 개발하는 경우 Microsoft에서 암호화 공급자 개발 키트 다운로드해야 합니다.

런타임 요구 사항

CNG는 Windows Server 2008 및 Windows Vista부터 지원됩니다. 특정 프로그래밍 요소에 대한 런타임 요구 사항에 대한 자세한 내용은 해당 요소에 대한 참조 페이지의 요구 사항 섹션을 참조하세요.

이 섹션에서는

다음 항목에서는 CNG 및 애플리케이션에서 CNG를 사용하는 방법에 대한 정보를 제공합니다.

주제 설명
CNG 정보 CNG 기능, 암호화 기본 형식 및 키 스토리지, 검색, 가져오기 및 내보내기에 대해 설명합니다.
CNG 사용 CNG 및 일반적인 CNG 프로그래밍의 암호화 구성 기능을 사용하는 방법을 설명합니다.
CNG 참조 CNG 프로그래밍 요소에 대한 자세한 설명입니다. 이러한 페이지에는 CNG 작업을 위한 API에 대한 참조 설명이 포함되어 있습니다.

CNG를 사용하는 경우

Windows 애플리케이션에서 암호화 작업을 직접 제어해야 하는 경우 CNG를 사용합니다. 다음 지침은 적절한 API를 선택하는 데 도움이 됩니다.

Scenario 권장 API
대칭 암호화/암호 해독(AES, ChaCha20-Poly1305) CNG(BCryptEncrypt / BCryptDecrypt)
해싱(SHA-256, SHA-384, SHA-512) CNG(BCryptCreateHash)
비대칭 작업(RSA, ECDSA, ML-DSA) CNG(BCryptSignHash, BCryptVerifySignature)
미사용 사용자 데이터 보호(사용자별 또는 컴퓨터별 범위) DPAPI (더 간단하고 키 관리가 필요하지 않음)
여러 사용자 또는 컴퓨터에서 액세스할 수 있는 데이터 보호 DPAPI-NG (NCryptProtectSecret)
TLS/SSL 연결 Schannel (내부적으로 CNG 사용)
이미 CryptoAPI를 사용하는 레거시 코드 유지 관리를 위해 CryptoAPI를 계속 진행하지만 새 기능을 위해 CNG로 마이그레이션 계획

Warning

피해야 할 일반적인 암호화 문제:

  • ECB 블록 암호화 모드를 사용하지 마세요. 일반 텍스트 패턴이 누출됩니다. 임의 IV로 CBC를 사용하거나 GCM과 같은 인증 모드를 사용하는 것이 좋습니다.
  • 소스 코드에서 암호화 키를 하드 코딩하지 마세요. 키 보호를 위해 키 스토리지 공급자 또는 DPAPI를 사용합니다.
  • 무결성 또는 보안 목적으로 MD5 또는 SHA-1을 사용하지 마세요. SHA-256 이상 사용
  • 항상 CNG 함수에서 반환 코드의 유효성을 검사합니다. 자동으로 무시되는 실패한 암호화 작업으로 인해 암호화되지 않은 데이터가 저장될 수 있습니다.

암호화 공급자 개발 키트

CryptoAPI