SSL
ETC./study

SSL

뉴비뉴 2018. 9. 16.

SSL


-      SSL(Secure Socket Layer)이란 무엇인가?

 

SSL은 네트워크 내에서 메시지 전송의 안전을 관리하기 위해 넷스케이프에 의해 만들어진프로그램 계층(Layer) 입니다.
넷스케이프의 생각은, 비밀이 보장되어야하는 메시지를 맡은 프로그램은 웹브라우저 또는HTTP와 같은 응용프로그램과, 인터넷의 TCP/IP 계층 사이에 들어가야 한다는 것입니다. 여기서 "소켓"이라는 용어는 데이터를 네트워크상의 클라이언트와 서버 프로그램 사이, 또는 같은 컴퓨터의 프로그램 계층끼리 주고받는 소켓 방식을 줄여서 말한 것이다. 넷스케이프
 SSL은 디지털 증명의 사용에도 포함되는 RSA의 공개/개인키 암호화 시스템을 사용하며 SSL은 넷스케이프 브라우저의 없어서는 안될 핵심 부분이고, 만약 어떤 웹사이트에 넷스케이프 서버가 설치되어 있으면, SSL을 사용하여 특정한 웹페이지가 SSL 액세스를 필요로 하는지를 식별할 수 있습니다. 다른 서버들에서는 넷스케이프의 SSLRef 프로그램 라이브러리를 사용하면 되는데, 상용이 아니라면 무료로 다운로드할 수 있지만, 상용으로
쓰려면 라이선스 비용을 내야합니다. 넷스케이프는 SSL W3C에 표준 프로토콜로서 제안했으며, IETF에는 웹브라우저와 서버를 위한 표준 보안 접근방법으로 제시하였습니다.

정보를 요약하자면 SSL은 넷스케이프에서 만들었으며 통신 시 주고받는 데이터중 보안이 필요한 데이터를 공개키/개인키 암호화 시스템을 사용하여
데이터를 암호화하고 SSL은 현재 웹표준 프로토콜로 사용되고 있다는 것 입니다.

 

 

-      SSL은 왜 필요한가?
우리가 사용하고 있는 인터넷 환경은 생각보다 안전하지 못합니다.

하지만 우리는 필요에 따라 다양하고 중요도 높은 정보를 인터넷을 통해 입력하고, 사용하고 있으며 대표적인 예로 물품구입시 결제를 위해 입력 해야 하는 신용카드 정보나 회원가입 시 입력하는 본인의 개인정보 등이 있습니다. 이러한 내용들은 네트워크를 통해 데이터(패킷)의 형태로 통신망을 이동하게 됩니다. 이때 우리의 중요한 정보를 가지고 있는 데이터가 아무런 암호화 없이 평문으로 전송되어진다면 무슨 일이 발생할까요? 누구든지 스니핑에 대해서 이론은 무시하고, 툴 사용법만 10분정도 배우면 동일 네트워크에서 평문으로 전송되는 데이터 패킷 따위는 손쉽게 스니핑 할 수 있는게 현실 입니다. 이러한 상황에서 평문으로 전송되는 데이터는 어떠한 암호화도 되어있지 않기 때문에
스니핑하는 즉시 스니퍼에게 모든 정보를 노출하게 되는것이고, 이는 개인정보유출로 이어지게 됩니다.

개인정보를 다루는 회사의 통신이나, PC방과 같은 공공장소의 네트워크를 악의적인 목적 으로 스니핑하게 된다면 이는 더큰 문제가 될 것입니다.
이러한 데이터를 사람이 일일히 확인하고, 처리 해야 한다면 아무리 많은 인력을 투자 한다고 해도 방대한 양의 데이터를 처리하는 것은 불가능한 일이 됩니다.

따라서 개인정보, 로그인 아이디, 패스워드 등을 입력하거나 결제정보를 입력 할 때 기본적으로 암호화를 하여 스니핑과 같은 악의적인 행위를 방지하고자 만들어진 것이 SSL이며 SSL을 사용한 통신은 암호화 되기 때문에 스니퍼가 스니핑에 성공한다고 해도 원본 데이터를 복호화 하는것은 어렵게 됩니다. (불가능한 일은 아닙니다.) 참고로 SSL암호화 통신은 우리가 사용하는 인터넷(HTTP)외에 FTP, Telnet 등의 통신에 적용
하여 사용 할 수 있고, 각각 HTTPS, SFTP, SSH 로 대체 할 수 있습니다.

 

 

 

 

 

 

 

 

 

-      SSL 인증절차

SSL TCP 프로토콜 기반이라서 Handshake 과정을 거칩니다.


1단계
Client
Server에게 hello 메시지를 보냅니다.
Server
Client에게 Hello 메시지로 응답을 보냅니다.
서로간의 통신을 준비하는 단계로 보면 됩니다.

2
단계
Server
Client에게 인증서, 사용할 서버 키를 교환하며, 인증요청을 보냅니다.

3
단계
Client
Server에게 인증서, 사용할 클라이언트 키를 교환하며, 인증서 확인요청을 합니다.


4
단계
Server, Client
모두 Change Cipher Spec Protocol을 교환하며 위 단계에서 교환한 서버/클라이언트 키, 인증서 등을 토대로 이후의 통신을 지속하겠다는 메시지를 교환하며 서로의 인증을 마칩니다.

 

 

SSL의 암호화 방식

SSL은 대칭키, 공개키 암호화 방식을 사용합니다.


-
대칭키 암호화 방식
클라이언트와 서버 모두 동일한 키를 가지고 데이터를 암,복호화 하는     방식을 말합니다. 대칭 키 암호화는 스트림암호, 블록암호로 나뉘며 스트림 암호화는 bit byte단위로 암호화 하는 것을 말하고, 블록 암호화는 암호화 방식에 따라 지정된 블록단위로 암호화 하는 것 입니다.
대칭 키의 암호화 방식에는 DES, 3DES, AES, SEED 등이 있습니다.

대칭 키 암호화 방식은 최초 통신시 암호화, 복호화에 사용할 키를 주고받으므로 통신 속도가 빠르다는 장점이 있지만 처음 키를 공유 할 때 암호화 해버리면 상대방도 키가 뭔지 알 수 없기 때문에 암호화 하지 않고 키를 전송 하는데 이때 보안상 취약점이 생기며 이를 '키 분배의 문제' 라고 합니다.

-
비 대칭키 암호화 방식
클라이언트와 서버 모두 다른 키를 가지고 데이터를 암호화, 복호화 하는 방식을
말합니다비대칭 키 암호화 방식에서는 Public Key Asymmetric Key를 사용하는데Public Key 누구에게나 공개되어도 상관없는 키를 뜻하며 이 키를 가지고 데이터를 암호화 할 때 사용하고, Asymmetric Key는 공개되어서는 안 되는 비대칭 키(사설키)를 말하며 데이터를 복호화 할 때 사용합니다.
따라서 비대칭 키 암호화 방식은 클라이언트, 서버 모두 공개키, 사설 키를 가지고 있으며 데이터를 암호화 할 때는 상대에게 공개 키를 요청하여 데이터를 암호화 하고, 복호화 할 때는 자신의 사설키로 데이터를 복호화 하는 것 입니다.
이로써 최초통신시 암호화, 복호화에 사용하는 모든 키를 평문으로 주고 받을 때 발생하는 보안상 취약점(키 분배의 문제)은 해결이 되지만 매 통신시 상대에게 공유 키를 요청하는 이유로 통신속도가 느리다는 단점이 있습니다.

대칭 키와 비대칭 키의 장/단점은 대칭 키는 속도가 빠른 반면 보안상 취약점이 존재한다는 것이고, 비대칭 키는 키 분배의 문제를 해결한 대신 속도가 느리다는 것인데 이는 키를 공유하는 과정의 차이 때문에 발생하는 것 이라고 이해하면 되겠습니다.


Private key/Public Key를 이용한 암호화는 하나의 키로 암호화하고 나머지 다른 하나로 복호화할 수 있도록 되어있다. 이해하기 어렵겠지만 필자를 믿어라. (역주:독자가 PKI(Public Key Infrastructure)에 대해서 잘 모른다면 이에 대한 간단한 문서를 읽어보기를 권한다) 앞에서 암호화한 키로만 암호화를 할 수 있는 것이 아니라 반대 방향으로 복호화한 키로도 암호화할 수도 있다.(당연히 앞에서 암호화한 키가 이번엔 복호화하는 키가 되는 것이다) 이러한 키쌍은 소수(prime number)로부터 생성되며, 그 길이(Bit 단위)는 암호화의 강도를 나타낸다.

Private Key/Public Key는 이러한 키쌍을 관리하는 방법이다. 한개의 키는 안전한 장소에 자기만 알 수 있도록 보관하고(Private Key) 다른 하나는 모든 사람에게 퍼뜨리는 것(Public Key)이다. 그렇게 하면 그 사람들이 당신에게 메일을 보낼 때 암호화해서 보낼 수 있으며, 당신만이 그 암호를 풀 수 있다. 반대로 다른 사람에게 메일을 보낼 일이 있으면 Private Key를 이용해 암호화 할 수 있다. 그러면 그 사람들은 복호화해서 볼 수 있다. 그러나 이 방법은 모든 사람이 Public Key를 가지고 있어야 하기 때문에 그리 안전한 방법이 아니다. (역주:오히려 역효과를 일으킬 수 있다. 단순하게 메시지, 파일에 암호화, 서명을 할 생각이면 PGP GnuPG를 권한다)


'ETC. > study' 카테고리의 다른 글

데이터베이스 스키마  (0) 2018.09.21
웹 서버, 웹 컨테이너, 웹 어플리케이션 서버(WAS)  (0) 2018.09.20
API  (0) 2018.09.20
컴퓨터 포트(port)  (0) 2018.09.16
컴퓨터 인터페이스 종류  (0) 2018.09.16

댓글

💲 추천 글