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이 키를 다시 빌드합니다.