View Source

h1. SSL (TLS)

h2. 보안서버의 이해
h4. 보안서버란
* 인터넷상에서 사용자PC와 웹서버 사이에 송수신되는 개인정보를 암호화하여 전송하는 서버를 의미합니다.
* 보안서버(SSL)는 전자거래업체 또는 공공기관의 실존을 증명하여 고객과 웹서버간의 신뢰를 형성합니다.
* 웹브라우저와 웹서버간에 전송되는 데이터의 암/복호화를 통한 보안채널을 형성하여 안전한 전자거래를 보장합니다.
* 보안서버를 구축하면, 위조사이트(phising) 방지가 가능하며, 개인정보가 암호화되어 노출되지 않습니다

h4. 보안서버 구축 필요성
* 정보유출 방지(sniffing:서버로 전송되는 고객의 정보해킹)
* 위조사이트 방지(phising:기업을 사칭하여 고객의 정보를 빼내 불법적으로 이용하는 사기수법)
* 피싱사이트 및 개인정보 유출등 개인정보관련 해킹 피해사고를 통해 인터넷 사용자들의 개인정보 보호에 대한 인식변화

|| <그림> 보안서버의 이해, [출처:나누미넷|http://www.nanuminet.com/add/sub01.html]||
|!01.png|alt=보안서버의 이해!|


h2. SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)

h4. SSL 이란
* 웹 표준 암호화 통신으로서 웹서버와 웹브라우저 사이에 모든 정보를 암호화 해주는 방식이다.
* SSL 통신은 http가 아닌 https라는 통신채널을 사용하며, 모든 웹서버와 웹브라우저가 SSL을 지원한다.
* SSL은 서버인증(Server Authentication), 클라이언트 인증(Client Authentication) 그리고 데이터 암호화(Data Encryption) 기능을 제공한다.


h4. SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)
* 네스케이프에 의해서 SSL이 발명되었고, 이것이 점차 폭넓게 사용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었다.
* TLS 1.0은 SSL 3.0을 계승한다. 하지만 TLS라는 이름보다 SSL이라는 이름이 훨씬 많이 사용되고 있다.
* SSL(Secure Sockets Layer)
** 배경 : 1993년 웹서버와 브라우저간의 안전한 통신을 위해 Netscape사에 의해 개발됨
** 특징 : 세션 계층에서 적용되며, 응용 계층의 FTP, Telnet, Http 등의 프로토콜의 안전성 보장
** 지원 프로토콜 : HTTP(HTTPS:443), TELNET(TELNETS:992), POP3(POPS:995), FTP, NNTP, etc.
** 주요 기능 : 서버 인증, 클라이언트 인증, 기밀성 보장
* TLS(Transport Layer Security)
** 배경 : SSL 3.0이 표준화된 이후 IETF는 1996년 6월부터 TLS 프로토콜에 대한 표준화(SSL v3.1)
** 특징 : SSL 3.0을 기반으로 한 업그레이드 프로토콜

h4. SSL/TLS 주요기능
* 신원확인
** SSL 서버 인증서는 회사에 대한 방문조사 후 발급되기 때문에 고객들은 서버 인증서를 확인하여 회사의 웹 사이트가 실제로 존재하고, 회사의 소유임을 확인할 수 있다. 이것을 통해 고객은 안심하고 자신의 개인정보를 입력할 수 있다.
* 메시지의 비밀보장
** SSL로 회상의 웹 서버와 고객과 교환된 정보(신용카드 번호 등)를 하나의 Session 키로 암호화한다.
** 이 Session 키를 안전하게 고객에게 전달하기 위해서는 회사의 공개키로 암호화하여 보낸다. 하나의 Session 키는 한번만 사용된다.
** 그리고 각 Session에 한 고객에게 하나의 키가 사용된다. 따라서 권한이 없는 제3자는 전송되는 과정에서 정보를 가로채어 볼 수 없다.
* 메시지의 무결성
** 메시지가 전송될 때, 메시지의 내용에 따라 수신자와 발신자의 컴퓨터에서 암호 방식을 생성한다.
** 한 글자라도 전송 중에 수정되어지면 수신받은 컴퓨터에서 다른 암호방식을 생성하여 수신자에게 경고 메시지가 보내집니다.
** 메시지의 무결성으로 두 당사자가 서로에게 보내주는 메시지가 그대로 전달되었음을 알 수 있다.

h4. SSL/TLS 주요 알고리즘
* 상호인증 : 클라이언트와 서버간의 상호 인증(RSA, DSS, X.509), 공개키
* 기밀성 : 대칭키 암호화 알고리즘을 통한 문서(데이터)의 암호화(DES, 3DES, RC4 등)
* 데이터 무결성 : MAC 기법을 이용해 데이터 변조 여부 확인(HMAC-md5, HMAC-SHA-1)


h2. SSL 대칭키와 공개키
* 대칭키로 문서(데이터) 암호화, 복호화를 하려면 키 배송 문제가 있고, 공개키로 문서 암호화, 복호화를 하려니 성능 문제가 있습니다.
* 그래서 대칭키로 전송되는 문서(데이터) 암호화를 하고, 대칭키를 공개키기법으로 암호화하여 전송하는 방법을 사용합니다.
* 대칭키 : 대칭키 암호화 알고리즘으로 웹 문서를 암호화 할 때 사용한다.
* 공개키 : 대칭키를 공개키로 암호화 하여 전송한다.


h2. SSL의 동작방법
* 1. 인터넷 사이트는 자신의 정보와 공개키를 인증기관에 제출한다.
|| <그림> SSL의 동작방법 1, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!02.png|alt=SSL의 동작방법!|

* 2. 인증기관은 검증을 거친 후 사이트 정보와 공개키를 인증기관의 개인키로 암호화 한다. -> 사이트 인증서
|| <그림> SSL의 동작방법 2, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!03.png|alt=SSL의 동작방법!|

* 3. 인증기관은 웹브라우저에게 자신의 공개키를, 인터넷 사이트에게는 암호화한 인증서를 제공한다.
|| <그림> SSL의 동작방법 3, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!04.png|alt=SSL의 동작방법!|

* 4. 사용자가 웹브라우저로 사이트에 접속하면 사이트는 자신의 인증서를 웹 브라우저에게 보낸다.
인증서에는 인증기간의 개인키로 암호화한 사이트의 정보와 공개키가 들어있음
|| <그림> SSL의 동작방법 4, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!05.png|alt=SSL의 동작방법!|

* 5. 웹브라우저는 인증기관의 공개키로 서버 인증서를 해독하여 검증합니다.
|| <그림> SSL의 동작방법 5, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!06.png|alt=SSL의 동작방법!|

* 6. 이렇게 얻은 사이트 공개키로 대칭키를 암호화해서 보냅니다.
|| <그림> SSL의 동작방법 6, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!07.png|alt=SSL의 동작방법!|

* 7. 사이트는 자신의 개인키로 암호문을 해독해서 대칭키를 얻습니다. 이제 대칭키로 암호문을 주고 받을 수 있습니다.
|| <그림> SSL의 동작방법 7, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!08.png|alt=SSL의 동작방법!|

* 과정을 한눈에
|| <그림> SSL의 동작방법, [출처:미닉스의 작은 이야기들|http://minix.tistory.com/397]||
|!09.png|alt=SSL의 동작방법!|


h2. 참고문서
* [SSL이란 무엇인가 1|http://jne-sw.tistory.com/320]
* [SSL이란 무엇인가 2|http://jne-sw.tistory.com/321]
* [HTTPS와 SSL 인증서|https://opentutorials.org/course/228/4894]
* [SSL에 대해 알아보아요|http://btsweet.blogspot.kr/2014/06/tls-ssl.html]
* [AhnLab Online Security - SSL/TLS 보안 프로토콜|http://v3.nonghyup.com/secu_info_view.asp?list=/secu_info_list.asp&seq=8749&pageno=62&v_num=443]