CNG 기능

CNG에는 다음과 같은 기능이 있습니다.

암호화 민첩성

CNG의 주요 가치 제안 중 하나는 암호화 민첩성이며, 때로는 암호화 불가지론이라고도 합니다. 그러나 이 기능을 중요하게 만들려면 SSL(Secure Sockets Layer Protocol) 또는 TLS(전송 계층 보안), CMS(S/MIME), IPsec, Kerberos 등과 같은 프로토콜 구현을 CNG로 변환해야 했습니다. CNG 수준에서는 모든 알고리즘 형식(대칭, 비대칭, 해시 함수), 난수 생성 및 기타 유틸리티 함수에 대한 대체 및 검색 가능성을 제공해야 했습니다. 프로토콜 수준 변경은 알고리즘 선택 및 이전에 존재하지 않았던 기타 유연성 옵션을 추가하는 데 필요한 프로토콜 API가 많은 경우에 필요하기 때문에 더 중요합니다.

CNG는 Windows Vista에서 처음 사용할 수 있으며 Microsoft 소프트웨어 스택 전체에서 기존 CryptoAPI 사용을 대체할 수 있습니다. 타사 개발자는 다음을 포함하여 CNG에서 많은 새로운 기능을 찾을 수 있습니다.

  • 더 나은 암호화 민첩성을 지원하는 새로운 암호화 구성 시스템입니다.
  • 키 스토리지에 대한 세분화된 추상화(및 알고리즘 작업에서 스토리지 분리).
  • 장기 키를 사용하는 작업에 대한 프로세스 격리입니다.
  • 대체 가능한 난수 생성기입니다.
  • 내보내기 서명 제한 완화.
  • 스택 전체의 스레드 안전성.
  • 커널 모드 암호화 API.

또한 CNG에는 ECC(타원 곡선 암호화)를 비롯한 모든 필수 Suite B 알고리즘에 대한 지원이 포함되어 있습니다 . 기존 CryptoAPI 애플리케이션은 CNG를 사용할 수 있게 되면 계속 작동합니다.

인증 및 규정 준수

CNG는 FIPS(Federal Information Processing Standards) 140-2의 유효성을 검사하며 Windows Common Criteria 인증을 위한 평가 대상의 일부입니다. CNG는 FIPS 수준 2 유효성 검사 시스템의 구성 요소로 사용할 수 있도록 설계되었습니다.

CNG는 보안 프로세스에서 수명이 긴 키를 저장하고 사용하여 공통 조건 요구 사항을 준수합니다.

Suite B 지원

CNG의 중요한 기능은 Suite B 알고리즘에 대한 지원입니다. 2005년 2월, 미국 국가안보국(NSA)은 Suite B라고 불리는 향후 미국 정부 사용을 위한 대칭 암호화, 비대칭 비밀 계약(키 교환이라고도 함), 디지털 서명 및 해시 기능 세트를 발표했습니다. NSA는 인증 된 Suite B 구현이 과거에 민감하지만 분류되지 않은 것으로 묘사 된 일급 비밀, 비밀 및 개인 정보로 지정된 정보를 보호하는 데 사용될 수 있으며 사용될 것이라고 발표했습니다. 이 때문에 Suite B 지원은 Microsoft뿐만 아니라 애플리케이션 소프트웨어 공급업체 및 시스템 통합자에게 매우 중요합니다.

모든 Suite B 알고리즘은 공개적으로 알려져 있습니다. 지금까지 암호화 알고리즘 개발과 관련된 정부 비밀 범위 외부에서 개발되었습니다. 이 같은 시간 프레임에서 일부 유럽 국가 및 지역은 정보를 보호하기 위해 동일한 Suite B 요구 사항을 제안했습니다.

Suite B 암호화는 IPsec 에서 주로 사용되는 IKE(인터넷 키 교환), TLS(전송 계층 보안 ) 및 S/MIME(Secure MIME)와 같은 많은 기존 프로토콜에서 ECDH(타원 곡선 Diffie-Hellman)를 사용하는 것이 좋습니다.

CNG에는 NIST 표준 소수 곡선 P-256, P-384 및 P-512에 대한 해시 알고리즘, ECDH 및 ECDSA(타원 곡선 DSA)의 AES(모든 키 크기), SHA-2 제품군(SHA-256, SHA-384 및 SHA-512)의 모든 필수 알고리즘으로 확장되는 Suite B에 대한 지원이 포함됩니다. 이진 곡선, Koblitz 곡선, 사용자 지정 소수 곡선 및 ECMQV(타원 곡선 Menezes-Qu-Vanstone)는 Windows Vista에 포함된 Microsoft 알고리즘 공급자에서 지원되지 않습니다.

레거시 지원

CNG는 CryptoAPI 1.0의 현재 알고리즘 집합을 지원합니다. 현재 CryptoAPI 1.0에서 지원되는 모든 알고리즘은 CNG에서 계속 지원됩니다.

커널 모드 지원

CNG는 커널 모드에서 암호화를 지원합니다. 동일한 API는 커널 및 사용자 모드 모두에서 암호화 기능을 완벽하게 지원하는 데 사용됩니다. SSL/TLS 및 IPsec은 모두 CNG를 사용하는 부팅 프로세스 외에도 커널 모드에서 작동합니다. 커널 모드에서 모든 CNG 함수를 호출할 수 있는 것은 아닙니다. 커널 모드에서 호출할 수 없는 함수에 대한 참조 항목은 커널 모드에서 함수를 호출할 수 없음을 명시적으로 설명합니다. 그렇지 않으면 호출자가 PASSIVE_LEVEL IRQL에서 실행되는 경우 커널 모드에서 모든 CNG 함수를 호출할 수 있습니다. 또한 일부 커널 모드 CNG 함수는 공급자의 기능에 따라 DISPATCH_LEVEL IRQL에서 호출할 수 있습니다.

Microsoft 커널 보안 지원 공급자 인터페이스(Ksecdd.sys)는 Windows의 커널 모드 수준에 있는 범용 소프트웨어 기반 암호화 모듈입니다. Ksecdd.sys 커널 모드 내보내기 드라이버로 실행되며, 문서화된 인터페이스를 통해 커널 구성 요소에 암호화 서비스를 제공합니다. Ksecdd.sys 지원되지 않는 유일한 기본 제공 Microsoft 공급자 알고리즘은 DSA입니다.

Windows Server 2008 및 Windows Vista: CNG는 커널 모드에서 플러그형 알고리즘 및 공급자를 지원하지 않습니다. 커널 모드에서 사용할 수 있는 유일한 지원되는 암호화 알고리즘은 커널 모드 CNG API를 통해 Microsoft에서 제공하는 구현입니다.

감사

포괄적인 보안을 제공하는 것 외에도 몇 가지 공통 조건 요구 사항을 준수하기 위해 CNG 계층에서 발생하는 많은 작업은 Microsoft KSP(소프트웨어 키 스토리지 공급자)에서 감사됩니다. Microsoft KSP는 다음 지침을 준수하여 보안 로그에 감사 레코드를 만듭니다.

  • 자체 테스트 실패를 포함하여 키 및 키 쌍 생성 실패를 감사해야 합니다.
  • 키 가져오기 및 내보내기가 감사되어야 합니다.
  • 키 소멸 실패를 감사해야 합니다.
  • 영구 키는 파일에 기록되고 파일에서 읽을 때 감사해야 합니다.
  • 쌍별 일관성 검사 실패를 감사해야 합니다.
  • 비밀 키 유효성 검사 오류(있는 경우)를 감사해야 합니다(예: 3DES 키에 대한 패리티 검사).
  • 암호화, 암호 해독, 해시, 서명, 확인, 키 교환 및 난수 생성의 오류를 감사해야 합니다.
  • 암호화 자체 테스트를 감사해야 합니다.

일반적으로 키에 이름이 없으면 임시 키입니다. 임시 키가 유지되지 않으며 Microsoft KSP는 임시 키에 대한 감사 레코드를 생성하지 않습니다. Microsoft KSP는 LSA 프로세스에서만 사용자 모드로 감사 레코드를 생성합니다. 커널 모드 CNG에 의해 감사 레코드가 생성되지 않습니다. 관리자는 보안 로그에서 모든 KSP 감사 로그를 가져오도록 감사 정책을 구성해야 합니다. 관리자는 다음 명령줄을 실행하여 KSP에서 생성된 추가 감사를 구성해야 합니다.

auditpol /set /subcategory:"기타 시스템 이벤트" /success:enable /failure:enable

대체 가능한 난수 생성기

CNG가 제공하는 또 다른 개선 사항은 기본 RNG(난수 생성기)를 대체하는 기능입니다. CryptoAPI에서는 CSP(암호화 서비스 공급자)의 일부로 대체 RNG를 제공할 수 있지만 다른 RNG를 사용하도록 Microsoft 기본 CSP를 리디렉션할 수는 없습니다. CNG를 사용하면 특정 호출 내에서 사용할 특정 RNG를 명시적으로 지정할 수 있습니다.

스레드 보안

별도의 스레드에서 호출될 때 동일한 메모리 영역(중요한 섹션)을 동시에 수정하는 함수는 스레드로부터 안전하지 않습니다.

작업 모드

CNG는 암호화 API를 통해 대칭 블록 암호화와 함께 사용할 수 있는 5가지 작업 모드를 지원합니다. 이러한 모드 및 해당 지원 가능성은 다음 표에 나와 있습니다. BCryptSetProperty 함수를 사용하여 알고리즘 공급자에 대한 BCRYPT_CHAINING_MODE 속성을 설정하여 작업 모드를 변경할 수 있습니다.

작업 모드 BCRYPT_CHAINING_MODE 값 알고리즘 Standard
ECB(전자 코드북) BCRYPT_CHAIN_MODE_ECB 대칭 블록 암호화 SP800-38A
CBC(암호화 블록 체인) BCRYPT_CHAIN_MODE_CBC 대칭 블록 암호화 SP800-38A
CFB(암호화 피드백) BCRYPT_CHAIN_MODE_CFB 대칭 블록 암호화 SP800-38A
CCM(CBC를 사용하는 카운터) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM(Galois/카운터 모드) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

참고 항목

ECB, CBC 및 CFB 작업 모드만 Windows Vista에 정의되어 있습니다. GCM 및 CCM에는 SP1(서비스 팩 1) 또는 Windows Server 2008이 있는 Windows Vista가 필요합니다.