TLS 안전한 암호화 라이브러리 사용
< Guidelines for the Selection, Configuration, and Use of Transport Layer Security(TLS) Implementations>
- NIST SP 800-52 Revision 2
(번역)
필요하지 않은 경우 TLS 1.0 또는 1.1을 사용하도록 설정하면 시스템과 사용자가 공격(예: 비스트 공격 및 클림마 공격)에 취약해질 수 있습니다. 그러나 필요할 때 이전 버전의 TLS를 사용하지 않도록 설정하면 TLS 1.3 또는 1.2가 가능한 클라이언트를 설치하거나 업그레이드할 수 없는 사용자에 대한 액세스가 거부될 수 있습니다.
시스템 관리자는 서버에서 지원하는 응용 프로그램의 맥락에서 TLS 1.0 또는 1.1을 사용할 경우의 이점과 위험을 고려하고 TLS 1.0 또는 1.1을 사용할 때의 이점이 위험을 능가하는지 여부를 결정해야 합니다. 이 결정은 서버에서 실행 중인 서비스와 서버에 액세스하는 클라이언트가 지원하는 버전에 의해 이루어져야 합니다. 높은 가치의 정보(개인 식별 가능 정보 또는 재무 데이터 등)에 액세스하지 않는 서비스는 거의 위험을 증가시키지 않고 접근성을 높임으로써 TLS 1.0의 이점을 얻을 수 있습니다. 반면, 가치가 높은 데이터에 액세스하는 서비스는 접근성 측면에서 상대적으로 적은 이득을 얻기 위해 침해 가능성을 증가시킬 수 있습니다. TLS 1.0 또는 1.1을 지원하는 결정은 기술적으로 사례별로 평가되어야 한다. 이는 이전 TLS 버전을 지원하는 것이 절대적으로 필요하고 관련 위험 및 비즈니스 의미를 이해하고 수용하기 위한 것입니다.
이러한 지침은 이 결정을 내리기 위해 취할 수 있는 단계에 대한 구체적인 권고 사항을 제공하지 않는다. TLS 1.2 이전의 TLS 버전을 지원하거나 지원하지 않을 경우 영향을 평가하는 데 사용할 수 있는 정보를 시스템 관리자에게 제공할 수 있는 도구(예: Data Analytics Program)가 있습니다. 예를 들어 방문자 OS 및 브라우저 버전에 대한 DAP 데이터는 관리자가 에이전시 웹 사이트에 대한 방문자 중 기본적으로 권장 TLS 버전을 협상할 수 없는 방문자 비율을 결정하는 데 도움이 됩니다.
TLS 1.1을 구현하는 대부분의 제품도 TLS 1.2를 구현합니다. 이 때문에 서버가 TLS 1.1을 지원하지 않아도 될 수 있습니다. 관리자는 TLS 1.1이 사용 가능한 가장 높은 버전인 클라이언트와의 연결을 지원해야 하는지 여부를 평가하여 TLS 1.1이 필요한지 여부를 결정할 수 있습니다.
<전자정부 SW 개발·운영자를 위한 소프트웨어 개발 보안 가이드> p. 104
- 행정안전부, 한국인터넷진흥원(KISA) / 2019. 11.
② 네트워크를 통해 패스워드를 전송하는 경우 반드시 패스워드를 암호화하거나 암호화된 통신 채널을 이용해야 한다.
웹브라우저와 같은 클라이언트와 웹서버 간의 통신이나 서버와 서버간의 통신 등 인터넷과 같은 공중망 환경에서는 패스워드와 같은 중요정보를 송·수신하는 경우 보호대책이 필요하다. 이러한 보호대책으로 TLS, VPN 등과 같은 다양한 통신 암호기술을 적용할 수 있다.
시스템관리자 및 보안관리자는 TLS를 적용하거나 관련 솔루션을 도입할 때 제품이 표준에 맞게 구현되었는지와 상호 호환성을 보장하는지 및 검증된 제품인지, 오픈소스를 이용하는지 등을 확인해야 한다.
[표3-14]는 NIST에서 제정한 TLS버전별로 안전하게 이용할 수 있는 암호화알고리즘 구성이다.
[표3-14] TLS 버전별 안전한 암호화 알고리즘
개발환경 | 암호화 방식 (TLS_키교환알고리즘_WITH_암호알고리즘_메시지인증알고리즘) |
서명 알고리즘 |
TLS 서버 |
· TLS_RSA_WITH_AES_256_CBC_SHA | DSA, ECDSA |
· TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA | ||
· TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA | ||
· TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | ||
· TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | ||
TLS 1.2 서버 |
· TLS_RSA_WITH_AES_256_GCM_SHA384 |
|
· TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | ||
· TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ||
· TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ||
· TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ||
· TLS_EGCDHE_RSA_WITH_AES_128_GCM_SHA256 |
<2019년 권장 알고리즘 및 TLS 1.2 설정 가이드>
- 개인정보보호협회(OPA) / 2019.
1. Apache 프로토콜 및 Cipher 설정 (p. 7)
1.1 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
2. IHS 프로토콜 및 Cipher 설정 (p. 16)
2.1. 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
3. IIS 프로토콜 및 Cipher 설정 (p. 25)
3.1. 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
※ (참고) IIS버전별 프로토콜 지원 리스트
Protocol | IIS 6 | IIS 7 | IIS 7.5 | IIS 8 이상 |
SSLv2 | 지원 | 지원 | 지원 | 지원 |
SSLv3 | 지원 | 지원 | 지원 | 지원 |
TLS 1.0 | 지원 | 지원 | 지원 | 지원 |
TLS 1.1 | 미지원 | 미지원 | 지원 | 지원 |
TLS 1.2 | 미지원 | 미지원 | 지원 | 지원 |
4. Nginx 프로토콜 및 Cipher 설정 (p. 41)
4.1. 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하 게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판 단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
5. OHS 프로토콜 및 Cipher 설정 (p. 51)
5.1. 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하 게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판 단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
6. Tomcat 프로토콜 및 Cipher 설정 (p. 61)
6.1. 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하 게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판 단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
7. WebtoB 프로토콜 및 Cipher 설정 (p. 69)
7.1. 프로토콜 알고리즘 정책
[사용이 제외된 알고리즘]
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_ECDHE_RSA_WITH_RC4_128_SHA
[취약한 알고리즘]
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
[사용을 권장하는 알고리즘]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
[DHE 알고리즘 사용 권고]
DHE 알고리즘은 웹서버 환경인 Openssl 및 Java 버전에 따라 취약한 bit를 사용하 게 됩니다. 1024bit는 취약한 알고리즘이며, 2048bit이상이 안전한 알고리즘으로 판 단 할 수 있습니다.
OPENSSL | Java |
OpenSSL 1.0.2 : openssl 1.0.2b 이상 OpenSSL 1.0.1 : openssl 1.0.1n 이상 |
JDK 1.8 이상 |
※ SSL/TLS 주요 공격이슈 및 해결방안 (p. 78)
1.1. HEIST(HTTP Encrypted Information can be Stolen through TCP-Windows) 공격
1.2. DROWN(Decrypting RSA with Obsolete and Weakened eNcrypti on) 공격
1.3. FREAK(Factoring attack on RSA-EXPORT Keys) 공격
1.4. POODLE(Padding Oracle On Downgraded Legacy Encryption) 공격
1.5. Heartbleed 공격
'IT & Security > 취약점 진단' 카테고리의 다른 글
[한국인터넷진흥원(KISA)] 주요정보통신기반시설 기술적 취약점 분석·평가 가이드 (2017.12) (0) | 2019.07.19 |
---|
댓글