Schannel.dll에서 특정 암호화 알고리즘 및 프로토콜의 사용을 제한

이 문서에서는 Schannel.dll 파일에서 특정 암호화 알고리즘 및 프로토콜의 사용을 제한하는 방법을 설명합니다. 이 정보는 Microsoft CAPI(Cryptographic API)용으로 작성된 ISV(독립 소프트웨어 공급업체) 애플리케이션에도 적용됩니다.

적용 대상: Windows Server 2003
원본 KB 번호: 245030

참고

이 문서는 Windows Server 2003 및 이전 버전의 Windows에 적용됩니다. Windows Server 2008 이상 버전의 Windows에 적용되는 레지스트리 키는 TLS 레지스트리 설정을 참조하세요.

요약

Windows NT 4.0 서비스 팩 6에 포함된 다음 CSP(암호화 서비스 공급자)에는 FIPS-140-1 암호화 유효성 검사용 인증서가 수여되었습니다.

  • Microsoft 기본 암호화 공급자(Rsabase.dll)
  • Microsoft 고급 암호화 공급자(Rsaenh.dll)(내보내기 이외의 버전)

Schannel.dll 파일인 Microsoft TLS/SSL 보안 공급자는 여기에 나열된 CSP를 사용하여 Internet Explorer 및 IIS(인터넷 정보 서비스)에 대한 지원에서 SSL 또는 TLS를 통해 보안 통신을 수행합니다.

암호 그룹 1 및 2를 지원하도록 Schannel.dll 파일을 변경할 수 있습니다. 그러나 프로그램은 암호 그룹 1 및 2도 지원해야 합니다. 암호 그룹 1 및 2는 IIS 4.0 및 5.0에서 지원되지 않습니다.

이 문서에는 Windows NT 4.0 서비스 팩 6 이상 버전에 대한 TLS/SSL 보안 공급자를 구성하는 데 필요한 정보가 포함되어 있습니다. Windows 레지스트리를 사용하여 기본 암호화 공급자 또는 향상된 암호화 공급자에서 지원하는 암호화 알고리즘과 관련하여 특정 SSL 3.0 또는 TLS 1.0 암호화 도구 모음의 사용을 제어할 수 있습니다.

참고

Windows NT 4.0 서비스 팩 6에서 Schannel.dll 파일은 Microsoft 기본 DSS 암호화 공급자(Dssbase.dll) 또는 Microsoft DS/Diffie-Hellman 고급 암호화 공급자(Dssenh.dll)를 사용하지 않습니다.

암호 그룹

INTERNET-DRAFT TLS용 56비트 내보내기 암호 그룹 draft-ietf-tls-56-bit-ciphersuites-00.txt를 사용하는 SSL 3.0 및 TLS 1.0(RFC2246)은 서로 다른 암호 그룹을 사용하는 옵션을 제공니다. 각 암호 그룹은 SSL/TLS 세션에서 사용되는 키 교환, 인증, 암호화 및 MAC 알고리즘을 결정합니다. RSA를 키 교환 및 인증 알고리즘으로 사용하는 경우 RSA라는 용어는 해당 암호 그룹 정의에 한 번만 나타납니다.

Windows NT 4.0 서비스 팩 6 Microsoft TLS/SSL 보안 공급자는 기본 암호화 공급자 또는 향상된 암호화 공급자를 사용할 때 다음 SSL 3.0 정의 CipherSuite를 지원합니다.

SSL 3.0 암호 그룹
SSL_RSA_EXPORT_WITH_RC4_40_MD5 { 0x00,0x03 }
SSL_RSA_WITH_RC4_128_MD5 { 0x00,0x04 }
SSL_RSA_WITH_RC4_128_SHA { 0x00,0x05 }
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 { 0x00,0x06 }
SSL_RSA_WITH_DES_CBC_SHA { 0x00,0x09 }
SSL_RSA_WITH_3DES_EDE_CBC_SHA { 0x00,0x0A }
SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA { 0x00,0x62 }
SSL_RSA_EXPORT1024_WITH_RC4_56_SHA { 0x00,0x64 }

참고

SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA 또는 SSL_RSA_EXPORT1024_WITH_RC4_56_SHA 모두 SSL 3.0 텍스트에 정의되지 않습니다. 그러나 여러 SSL 3.0 공급업체가 이를 지원합니다. 여기에는 Microsoft 가 포함됩니다.

Windows NT 4.0 서비스 팩 6 Microsoft TLS/SSL 보안 공급자는 기본 암호화 공급자 또는 향상된 암호화 공급자를 사용할 때 다음 TLS 1.0 정의 CipherSuite도 지원합니다.

TLS 1.0 암호 그룹
TLS_RSA_EXPORT_WITH_RC4_40_MD5 { 0x00,0x03 }
TLS_RSA_WITH_RC4_128_MD5 { 0x00,0x04 }
TLS_RSA_WITH_RC4_128_SHA { 0x00,0x05 }
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 { 0x00,0x06 }
TLS_RSA_WITH_DES_CBC_SHA { 0x00,0x09 }
TLS_RSA_WITH_3DES_EDE_CBC_SHA { 0x00,0x0A }
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA { 0x00,0x62 }
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA { 0x00,0x64 }

참고

첫 번째 바이트 0x00을 사용하여 정의되는 암호 그룹은 비공개가 아니고 상호 운용 가능한 개방형 통신에 사용됩니다. 따라서 Windows NT 4.0 서비스 팩 6 Microsoft TLS/SSL 보안 공급자는 상호 운용성을 보장하기 위해 SSL 3.0 및 TLS 1.0에 지정된 대로 이러한 암호 그룹을 사용하는 절차를 따릅니다.

Schannel 관련 레지스트리 키

중요

이 절, 방법 또는 작업에는 레지스트리를 수정하는 방법에 대한 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 레지스트리를 백업 및 복원하는 방법에 대한 자세한 내용은 Windows에서 레지스트리를 백업 및 복원하는 방법을 참조하세요.

참고

암호 키 또는 해시 키의 내용에 대한 변경 내용은 시스템을 다시 시작하지 않고 즉시 적용됩니다.

SCHANNEL 키

레지스트리 편집기(Regedt32.exe)를 시작하고, 다음 레지스트리 키를 찾습니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

SCHANNEL\프로토콜 하위 키

시스템에서 기본적으로 협상되지 않는 프로토콜(예: TLS 1.1 및 TLS 1.2)을 사용하도록 설정하려면 DisabledByDefault 값의 DWORD 값 데이터를 프로토콜 키 아래의 다음 레지스트리 키에서 0x0으로 변경합니다.

  • SCHANNEL\Protocols\TLS 1.1\Client
  • SCHANNEL\Protocols\TLS 1.1\Server
  • SCHANNEL\Protocols\TLS 1.2\Client
  • SCHANNEL\Protocols\TLS 1.2\Server

경고

프로토콜 키 아래의 레지스트리 키에 있는 DisabledByDefault 값은 Schannel 자격 증명에 대한 데이터를 포함하는 SCHANNEL_CRED 구조에 정의된 grbitEnabledProtocols 값보다 우선하지 않습니다.

SCHANNEL\암호 하위 키

SCHANNEL 키 아래의 암호 레지스트리 키는 DES 및 RC4와 같은 대칭 알고리즘의 사용을 제어하는 데 사용됩니다. 다음은 암호 키 아래에 있는 유효한 레지스트리 키입니다.

다음과 같은 형식으로 SCHANNEL 암호 하위 키를 만듭니다. SCHANNEL\(VALUE)\(VALUE/VALUE)

RC4 128/128

암호 하위 키: SCHANNEL\Ciphers\RC4 128/128

이 하위 키는 128비트 RC4를 참조합니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 또는 DWORD 값 데이터를 0x0으로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다. 이 레지스트리 키는 SGC 인증서가 없는 내보낼 수 있는 서버에는 적용되지 않습니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_WITH_RC4_128_MD5
  • SSL_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_RC4_128_MD5
  • TLS_RSA_WITH_RC4_128_SHA

Triple DES 168

암호 하위 키: SCHANNEL\Ciphers\Triple DES 168

이 레지스트리 키는 ANSI X9.52 및 Draft FIPS 46-3에 지정된 168비트 Triple DES를 참조합니다. 이 레지스트리 키는 내보내기 버전에 적용되지 않습니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 또는 DWORD 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_WITH_3DES_EDE_CBC_SHA

  • SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA

  • TLS_RSA_WITH_3DES_EDE_CBC_SHA

  • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA

    참고

    Windows Vista 전에 릴리스되는 Windows 버전의 경우 키는 Triple DES 168/168이어야 합니다.

RC2 128/128

암호 하위 키: SCHANNEL\Ciphers\RC2 128/128

이 레지스트리 키는 128비트 RC2를 참조합니다. 내보내기 버전에는 적용되지 않습니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

RC4 64/128

암호 하위 키: SCHANNEL\Ciphers\RC4 64/128

이 레지스트리 키는 64비트 RC4를 참조합니다. 내보내기 버전에는 적용되지 않지만 Microsoft Money에서 사용됩니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

RC4 56/128

암호 하위 키: SCHANNEL\Ciphers\RC4 56/128

이 레지스트리 키는 56비트 RC4를 참조합니다.

이 암호화 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음 값이 허용되지 않습니다.

  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

RC2 56/128

암호 하위 키: SCHANNEL\Ciphers\RC2 56/128

이 레지스트리 키는 56비트 RC2를 참조합니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

DES 56

암호 하위 키: SCHANNEL\Ciphers\DES 56/56

이 레지스트리 키는 FIPS 46-2에 지정된 56비트 DES를 참조합니다. Rsabase.dll 파일 및 Rsaenh.dll 파일의 구현은 FIPS 140-1 암호화 모듈 유효성 검사 프로그램에서 유효성을 검사합니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA

RC4 40/128

암호 하위 키: SCHANNEL\Ciphers\RC4 40/128

이 레지스트리 키는 40비트 RC4를 참조합니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5

RC2 40/128

암호 하위 키: SCHANNEL\Ciphers\RC2 40/128

이 레지스트리 키는 40비트 RC2를 참조합니다.

이 암호 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다. 사용 값을 구성하지 않으면 기본값이 사용하도록 설정됩니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

NULL

암호 하위 키: SCHANNEL\Ciphers\NULL

이 레지스트리 키는 암호화가 없음을 의미합니다. 기본적으로 이 서비스는 해제되어 있습니다.

암호화를 해제하려면(모든 암호화 알고리즘을 허용하지 않음) 사용 값의 DWORD 값 데이터를 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다.

해시

암호 하위 키: SCHANNEL/Hashes

SCHANNEL 키 아래의 해시 레지스트리 키는 SHA-1 및 MD5와 같은 해시 알고리즘의 사용을 제어하는 데 사용됩니다. 해시 키 아래에 유효한 레지스트리 키는 다음과 같습니다.

MD5

암호 하위 키: SCHANNEL\Hashes\MD5

이 해시 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 기본값인 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_EXPORT_WITH_RC4_40_MD5
  • SSL_RSA_WITH_RC4_128_MD5
  • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_WITH_RC4_128_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

SHA

암호 하위 키: SCHANNEL\Hashes\SHA

이 레지스트리 키는 FIPS 180-1에 지정된 SHA-1(보안 해시 알고리즘)을 참조합니다. Rsabase.dll 파일 및 Rsaenh.dll 파일의 구현은 FIPS 140-1 암호화 모듈 유효성 검사 프로그램에서 유효성을 검사합니다.

이 해시 알고리즘을 허용하려면 사용 값의 DWORD 값 데이터를 기본값인 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 값 데이터를 0x0로 변경합니다.

이 알고리즘을 사용하지 않도록 설정하면 사실상 다음과 같은 값이 허용되지 않습니다.

  • SSL_RSA_WITH_RC4_128_SHA
  • SSL_RSA_WITH_DES_CBC_SHA
  • SSL_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • SSL_RSA_EXPORT1024_WITH_RC4_56_SHA
  • TLS_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA

KeyExchangeAlgorithms

암호 하위 키: SCHANNEL/KeyExchangeAlgorithms

SCHANNEL 키 아래의 KeyExchangeAlgorithms 레지스트리 키는 RSA와 같은 키 교환 알고리즘의 사용을 제어하는 데 사용됩니다. 다음은 KeyExchangeAlgorithms 키 아래에 있는 유효한 레지스트리 키입니다.

PKCS

암호 하위 키: SCHANNEL\KeyExchangeAlgorithms\PKCS

이 레지스트리 키는 RSA를 키 교환 및 인증 알고리즘으로 참조합니다.

RSA를 허용하려면 사용 값의 DWORD 값 데이터를 기본값인 0xffffffff로 변경합니다. 그렇지 않으면 DWORD 데이터를 0x0으로 변경합니다.

RSA를 사용하지 않도록 설정하면 사실상 Windows NT4 SP6 Microsoft TLS/SSL 보안 공급자에서 지원하는 모든 RSA 기반 SSL 및 TLS 암호 그룹을 허용하지 않습니다.

FIPS 140-1 암호 그룹

Microsoft 베이스 또는 Enhanced Cryptographic Provider에서 제공하는 FIPS 46-3 또는 FIPS 46-2 및 FIPS 180-1 알고리즘에 해당하는 SSL 3.0 또는 TLS 1.0 암호 그룹만 사용할 수 있습니다.

이 문서에서는 이를 FIPS 140-1 암호 그룹이라고 합니다. 구체적으로는 다음과 같습니다.

  • SSL_RSA_WITH_DES_CBC_SHA
  • SSL_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA

여기에서 정의되고 Windows NT 4.0 Service Pack 6 Microsoft TLS/SSL 보안 공급자에서 Base Cryptographic Provider 또는 Enhanced Cryptographic Provider와 함께 지원되는 FIPS 140-1 암호 그룹만 사용하려면 다음 레지스트리 키에서 사용 값의 DWORD 값 데이터를 0x0으로 구성합니다.

  • SCHANNEL\Ciphers\RC4 128/128
  • SCHANNEL\Ciphers\RC2 128/128
  • SCHANNEL\Ciphers\RC4 64/128
  • SCHANNEL\Ciphers\RC4 56/128
  • SCHANNEL\Ciphers\RC2 56/128
  • SCHANNEL\Ciphers\RC4 40/128
  • SCHANNEL\Ciphers\RC2 40/128
  • SCHANNEL\Ciphers\NULL
  • SCHANNEL\Hashes\MD5

그리고 다음 레지스트리 키에서 사용 값의 DWORD 값 데이터를 0xffffffff로 구성합니다.

  • SCHANNEL\Ciphers\DES 56/56
  • SCHANNEL\Ciphers\Triple DES 168/168(내보내기 버전에는 적용되지 않음)
  • SCHANNEL\Hashes\SHA
  • SCHANNEL\KeyExchangeAlgorithms\PKCS

FIPS 140-1 암호 그룹을 사용하여 마스터 비밀 계산

SSL 3.0에서 FIPS 140-1 암호 그룹을 사용하는 절차는 TLS 1.0에서 FIPS 140-1 암호 그룹을 사용하는 절차와 다릅니다.

SSL 3.0에서 다음은 master_secret 계산 정의입니다.

TLS 1.0에서 다음은 master_secret 계산 정의입니다.

여기서 각 부분이 나타내는 의미는 다음과 같습니다.

TLS 1.0에서 FIPS 140-1 암호 그룹만 사용하는 옵션을 선택합니다.

이러한 차이로 인해 허용된 암호 그룹 집합이 FIPS 140-1 암호 그룹의 하위 집합으로만 제한되더라도 고객은 SSL 3.0 사용을 금지해야 할 수 있습니다. 이 경우 사용 값의 DWORD 값 데이터를 프로토콜 키 아래의 다음 레지스트리 키의 0x0으로 변경합니다.

  • SCHANNEL\Protocols\SSL 3.0\Client
  • SCHANNEL\Protocols\SSL 3.0\Server

경고

프로토콜 키 아래에 있는 이러한 레지스트리 키의 사용 값 데이터가 Schannel 자격 증명에 대한 데이터를 포함하는 SCHANNEL_CRED 구조에 정의된 grbitEnabledProtocols 값보다 우선합니다. 기본 사용 값 데이터는 0xffffffff입니다.

레지스트리 파일의 예

구성에 대한 레지스트리 파일 콘텐츠의 두 가지 예가 문서의 이 섹션에 제공됩니다. Export.reg 및 Non-export.reg입니다.

내보낼 수 있는 Rasbase.dll 및 Schannel.dll 파일이 있는 Windows NT 4.0 Service Pack 6을 실행하는 컴퓨터에서 Export.reg를 실행하여 컴퓨터에서 TLS 1.0 FIPS 암호 그룹만 사용되는지 확인합니다.

내보낼 수 없는 Rasenh.dll 및 Schannel.dll 파일을 포함하는 Windows NT 4.0 Service Pack 6을 실행하는 컴퓨터에서 Non-export.reg를 실행하여 컴퓨터에서 TLS 1.0 FIPS 암호 그룹만 사용되는지 확인합니다.

Schannel.dll 파일에서 SCHANNEL 레지스트리 키의 변경 내용을 인식하려면 컴퓨터를 다시 시작해야 합니다.

레지스트리 설정을 기본값으로 반환하려면 SCHANNEL 레지스트리 키와 그 아래에 있는 모든 항목을 삭제합니다. 이러한 레지스트리 키가 없는 경우 컴퓨터를 다시 시작할 때 Schannel.dll이 키를 다시 빌드합니다.