기타지식 SSL 과 TLS 2015. 07.20
SSL(Secure Socket Layer) 과 TLS(Transport Layer Security) 개요 전자상거래가활발해지면서웹보안이매우중요해지고있으며, 최근정보통신망법의개정으로아무리소상공인이라 도홈페이지운영시개인정보를취급하고있다면아래와같은내용을조치하도록되어있습니다 이러한 보안서버 의기반이되는 SSL/TLS 프로토콜에대하여소개합니다. 웹사이트개인정보보호의무조치안내 ' 개인정보취급방침 ' 을마련하고이용자에게공개해야합니다. 개인정보수집이용에대한이용자동의를받아야합니다. 개인정보를제 3 자에게제공하거나업무위탁할경우이에대한동의를받아야합니다. 이용자의회원탈퇴권리및방법을안내하고이를이행해야합니다. 개인정보를전송하는구간에보안서버를적용해야합니다. < 위내용에서 보안서버 는 SSL 인증서를뜻함 > 1. SSL/TLS 의미와목적 SSL(Secure Sockets Layer) 은보안소켓계층이라는뜻으로인터넷을통해전달되는정보보안의안전한거래를허용하기위해 Netscape 사에서개발한인터넷통신규약프로토콜이며, TLS(Transport Layer Security) 는 SSL 3.0 을기초로해서 IETF 가만든프로토콜로이는 SSL3.0 을보다안전하게하고프로토콜의스펙을더정확하고안정성을높이는목적으로고안되었습니다. * 참고 1.0 버전은공개된적이없고, 2.0 버전이 1995 년 2 월에이르러릴리스가되지만이버전은많은보안결함때문에 3.0 버전으로곧바로이어집니다. 3.0 은 1996 년릴리스되었고, 3.0 버전은 TLS 버전 1.0 의기초가된후, IETF 에서 1999 년 1 월에 RFC 2246 표준규약으로정의하게되었습니다. 2
SSL 과 TLS 두가지프로토콜은 TCP/IP 네트워크를사용하는통신에적용되며, 통신과정에서전송계층종단간 보안과데이터무결성을확보할수있게합니다. <HTTP 프로토콜과 SSL 이가미된 HTTPS 프로토콜 > 2. SSL/TLS 통신과정 SSL/TLS 통신과정은아래의그림과같은과정으로 handshaking 이이루어집니다. 1. client 가 request 를하면 TCP lv 에서연결이맺어진이후 SSL/TLS Handshacke 을수행. ClientHello 메시지를보내면서이메시지에는클라이언트에서가능한 TLS 버전, 세션식별자, 암호설정등의 정보가포함됩니다. 3
2. server 에서암호화를위한인증서의공개키를내려주게되면 client 는이공개키가신뢰할수있는인증서의키 인지확인 (client 에등록이되어있음, 예를들어브라우저의경우신뢰할수있는인증기관 list 가등록되어있음 ) 서버는 ServerHello 메시지를클라이언트에게보냅니다. 여기에는 ClientHello 메시지의정보중서버에서사용 하기로선택한 TLS 버전, 세션식별자, 암호설정등의정보가포함됩니다. 또한 Certificate 메시지를보낸다. 여기에는서버의인증서가들어간다. 이인증서는인증기관에서발급받은 것이며, 서버가신뢰할수있는자임을인증합니다. 전송이끝나면 ServerHelloDone 메시지를보내끝났음을 알립니다. 3. clinet 단에서는해당공개키를신뢰한다면이 client 의 session key 를생성하여, 서버로부터받은공개키로암호 화하여 server 로전달. ( 사용가능 cipherspec 포함 ) 클라이언트는서버에서받은인증서를검증합니다. 유효기간이만료되지않았는지, 신뢰할수있는인증기관 에서발급되었는지, 그인증서가해당서버에게발급된인증서가맞는지등을확인합니다. 서버를신뢰할수 있다고판단하였다면다음단계로넘어갑니다. 클라이언트는임의의 pre-master secret 을생성한뒤, 서버가보낸인증서에포함된공개키를사용해암호화 합니다. 이렇게암호화된 pre-master secret 을 ClientKeyExchange 메시지에포함시켜서버에전송합니다. 4. 해당서버는서버에있는개인키를통해복호화를하여 client 의 session key 를확보하고, client 가준 cipherspec 에서서버가허용하는 chipherspec 을 client 에전달. 서버는전송받은정보를복호화하여 pre-master secret 을알아낸뒤, 이정보를사용해 master secret 을생성합니다. 그뒤 master secret 에서세션키를생성해내며, 이세션키는앞으로서버와클라이언트간의통신을암호화하는데사용할것입니다. 물론클라이언트역시자신이만들어낸 pre-master secret 을알고있으므로, 같은과정을거쳐세션키를스스로만들수있습니다. 5. 위과정을통해 server 와 client 는동일한 session key 를가지게되어이후부터는이 session key 를가지고상호 암, 복호화수행 이제서버와클라이언트는각자동일한세션키를가지고있으며, 이를사용해대칭키암호를사용하는통신을할수있습니다. 따라서우선서로에게 ChangeCipherSpec 메시지를보내앞으로의모든통신내용은세션키를사용해암호화해보낼것을알려준뒤, Finished 메시지를보내각자의 Handshacke 과정이끝났음을알립니다. 4
3. SSL/TLS 와 OpenSSL 그리고 WebtoB 의 wbssl 3.1 OpenSSL OpenSSL 은네트워크를통한데이터통신에쓰이는프로토콜인 TLS와 SSL의오픈소스구현판으로, C 언어로작성되어있는중심라이브러리안에는, 기본적인암호화기능및여러유틸리티함수들이구현되어있으며거의모든 OS 상에서사용이가능합니다. * OpenSSL 버전정보 OpenSSL 의현재최신버전은 1.0.2 - 출시일 : 2015-01-22 (2015 년 06월기준 ) OpenSSL 1.0.1 - 출시일 : 2012-03-14 // 파란색으로표기된버전은 WebtoB 에서사용중인버전들 OpenSSL 1.0.0 - 출시일 : 2010-03-29 OpenSSL 0.9.8 - 출시일 : 2005-07-05 OpenSSL 0.9.7 - 출시일 : 2002-12-31 OpenSSL 0.9.6 - 출시일 : 2000-09-24 중략 OpenSSL 0.9.2b - 출시일 : 1999-03-22 OpenSSL 0.9.1c - 최초출시일 : 1998-12-23 3.2 WebtoB 의 Wbssl Wbssl 은 openssl 라이브러리를 WebtoB 가가져와사용한 WebtoB 의 openssl 라이브러리로버전표기및라이브러리를 사용하는측면에서같은것이라고보아도무방합니다. *WebtoB 버전과 wbssl 최초빌드버전 ( 기점이되는버전만표기 ) 4.1.0.2 wbssl 0.9.7c upgrade 이후보안문제로 wbssl 0.9.8zc update ( 이전버전생략 ) 4.1.1.1 - wbssl 0.9.8e upgrade 이후보안문제로 wbssl 0.9.8zg update - TLS 1.0 지원 (SSLv2 SSLv3 포함 ) 4.1.3.2 - wbssl 1.0.0d upgrade 이후보안문제로 wbssl 1.0.0s update - TLS 1.0 지원 (SSLv2 SSLv3 포함 ) 4.1.5.3 - wbssl 1.0.1c upgrade 이후보안문제로 wbssl 1.0.1n update - TLS 1.0, TLS 1.1, TLS 1.2 지원 (SSLv2 SSLv3 포함 ) ** openssl 라이브러리의메이저, 마이너버전은지속적으로업데이트중 5
3.3 Wbssl 를통한 SSL/TLS 통신 WebtoB 는아래의설정을통해 SSL/TLS 인증서를적용시켜해당웹서버도메인으로연결시 TCP 레벨연결이후한번 더 SSL/TLS Handshacke 를수행하게됩니다. 인증서의경우어떤프로토콜의알고리즘을사용할지는 client 의 chipherspec 과 host 쪽의프로토콜, 알고리즘설정을 mapping 하여동일하게충족되는것중높은버전의프로토콜의알고리즘을선택하여통신합니다. * 설정예제 (4.1.5.3 버전 ) *SSL ssl CertificateFile = "/home/yonghyun/webtob/config/newcert.pem", ## 공개키 CertificateKeyFile = "/home/yonghyun/webtob/config/newcert.pem", ## 개인키 Protocol = -SSLv3, ## 서버에서제공하는프로토콜중특정알고리즘 disable RequiredCiphers = "ALL:!ADH:!EXPORT56:RC4+RSA:!SHA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 위와같이임의의인증서를설정상으로지정해주게되면그인증서에서제공하는프로토콜과알고리즘을 Protocol 및 RequiredCiphers 설정을통해제한할수있고, 원하는프로토콜및알고리즘을선택하여 SSL/TLS handshacke 를수행할 수있습니다. 3.4 SSL/TLS 통신확인 SSL 인증서가설치된 WebtoB 서버에연결을시도하는방법에는여러가지가있지만 wbssl/openssl 을통한연결과웹 브라우저를통한연결을확인해보겠습니다. 1) Wbssl/openssl 을통한연결방법 Wbssl/openssl 은명령어의차이없이동일하게사용하면됩니다 연결예 ) wbssl s_client connect <domain>:<port> -state debug ssl2 openssl s_client connect <domain>:<port> -state debug ssl2 ( 연결프로토콜은 -ssl2, ssl3, -tls1, -tls1_1, -tls1_2 와같이지정가능 ) 2) Wbssl/openssl 을통한연결화면 6
* 연결 Test 환경 Server: tls1.0 이하버전호환가능 client: tls1.2 이하버전호환가능 연결프로토콜을 SSL3 로지정하여정상 handshacke 가되면아래와같이 HandShacke 하는부분을모 니터링할수있습니다. a. client, server Hello b. Serverkey,ClinetKey Exchage, server Hello done, change cupherspec c. HandShacke Finished 7
d. 실제 HTTP request 보내기 연결된이후아래와같이 telnet 으로 request 를보내는것과같은동작을할수있게됩니다. GET /tmax/session.jsp HTTP/1.1 host:192.168.1.214 * 결과화면 * 연결 Test2 환경 8
Server: tls1.0 이하버전호환가능 client: tls1.2 이하버전호환가능 아래이미지는 tls1.2 프로토콜로연결요청하여정상 handshacke 실패된화면 해당 WebServer wbssl 라이브러리에서지원하지않는 tls1.2 로통신을시도하자 client hello A 메시지이후 fatal:protocol version 와같은로그가나타났고, 이후 server hello A 메시지에도 wrong version number 라는로그가보이면서 handshacke 에실패함을볼수있습니다. 위와같이 TCP 연결은성공을했지만실제 request 를보내기위해서는 SSL/TLS handshacke 가성공해야하나 이단계에서실패하게되면, 맺어진 TCP 연결도바로끊어져버리게됩니다. 9
3) 웹브라우저를통한 SSL/TLS 연결화면 웹브라우저 IE 의도구 -> 인터넷옵션 -> 고급탭의설정가능한목록을보면어떤 SSL/TLS 프로토 콜로통신을할것인지를설정할수있습니다. ( 기본 SSLv2~TLS1.2 까지옵션존재 ) 중복으로체크가되어있을경우웹브라우저와 WebServer 에존재하는프로토콜의교집합중높은버 전의프로토콜로통신을하게됩니다. ( 교집합이없을경우연결종료 ) <IE11 을보았을때기본적으로 SSL 2,3 은 disabl, TLS1.0, 1.1, 1.2 는 able 상태 > * 연결 Test3 환경 Server: tls1.0 이하버전호환가능 client: tls1.2,tls1.1,tls1.0 버전호환가능 Wbssl 라이브러리를통해연결을할경우 debug 옵션을통해자세한 handshacke 과정을 모니터링할수있었으나브라우저에서는이러한 debugging 을할수없기때문에 fiddler 를통해 request 를보낼시에어떤정보를가지고보내는지정도를모니터링하였습니다. 10
*tls1.2 가체크되어있다면다른프로토콜이중복체크되더라도가장높은버전인 tls1.2 로연결시도 *tls1.2 를 disable 시켜 tls1.1 프로토콜로통신요청을할경우 이미지에서의 major, minor 버전을확인하면어떤프로토콜로요청을하는지확인할수있습니다. Major: 2, minor: 0 -> SSLv2 프로토콜통신요청 Major: 3, minor: 0 -> SSLv3 프로토콜통신요청 Major: 3, minor: 0 -> TLS1.0 프로토콜통신요청 Major: 3, minor: 1 -> TLS1.1 프로토콜통신요청 Major: 3, minor: 2 -> TLS1.2 프로토콜통신요청 또한아래의 ciphers 목록을보면 client 단에서사용가능한통신알고리즘목록을프로토콜버전정보와함 께보내는것으로볼수있습니다. ( 각각의프로토콜마다 ciphers 목록이다름을볼수있음 ) 11
Copyright 2015 TmaxSoft Co., Ltd. All Rights Reserved. Trademarks Tmax, WebtoB, WebT, JEUS, ProFrame, SysMaster and OpenFrame are registered trademarks of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Contact Information TmaxSoft can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options. Korea TmaxSoft Co., Ltd 5, Hwangsaeul-ro 329beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do. South Korea Tel: +82-31-8018-1000 Fax: +82-31-8018-1115 Email: info@tmax.co.kr Web (Korean): http://www.tmaxsoft.com Technical Support: http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632. U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web (English): http://www.tmaxsoft.com Russia Tmax Russia L.L.C. Grand Setun Plaza, No A204 Gorbunova st.2, Moscow, 121596 Tel: +7(495)970-01-35 Email: info.rus@tmaxsoft.com Web (Russian): http://ru.tmaxsoft.com Singapore Tmax Singapore Pte. Ltd. 430 Lorong 6, Toa Payoh #10-02, OrangeTee Building. Singapore 319402 Tel: +65-6259-7223 Email: info.sg@tmaxsoft.com United Kingdom TmaxSoft UK Ltd. Surrey House, Suite 221, 34 Eden Street, Kingston-Upon- Thames, KT1 1ER United Kingdom Tel: + 44-(0)20-8481-3776 Email: info.uk@tmaxsoft.com Web (English): http:/www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info.jp@tmaxsoft.com Web (Japanese): http://www.tmaxsoft.co.jp China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2 North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027. China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn Brazil TmaxSoft Brazil Avenida Copacabana, 177-3 andar 18 do Forte Empresarial, Alphaville - Barueri, Sao Paulo, SP-Brasil CEP 06472-001 Email: contato.brasil@tmaxsoft.com TN-WBSE-E0720001 12