SSL(TLS) 맛보기

Client 와 Server간의 암호화 통신

SSL(TLS) 란?

SSL은 Secure Socket Layer 의 약자로, 웹서버와 웹 브라우저간의 암호화 통신을 위하여
응용계층과 TCP/IP 계층에서 동작하는 프로토콜이다. Netscape사에서 만들었으며 기존 명칭인 SSL에서 TLS (Transport Layer Security) 로 바뀌었다.
간단히 말하면 들어오고 나가는 데이터들을 암호화하하는 보안기능을 가진 '보안 인증서' 이다. 보통 우리가 호스팅/ 도메인 업체에서 SSL이라는걸 산다는 것이 TLS를 산다는 것이고, 이것을 SSL 인증서라고 부른다.

주요기능

1) 인증 : 상대 사이트에 대한 신뢰성 인증
2) 암호화 : 다양한 암호화 알고리즘을 이용하여 메시지 암호화
3) 무결성 : 송/수신 메시지에 대한 Checksum 기능, 변조 방지
4) 지원 프로토콜 : HTTPS, TELNETS, POP3S, SFTP

TELNET.. ?

인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜 . (네트워크 관리)
원격지의 호스트 컴퓨터에 접속하기 위해 사용되는 TCP/IP 기반의 인터넷 프로토콜이다. 사용자가 원거리에 위치한 컴퓨터를 사용할 수 있도록 하는 기능을 가지고 있다. 사용자는 네트워크 상의 컴퓨터에 로그인하여 원격지 컴퓨터의 기능을 사용할 수 있다. 텔넷을 사용하면 네트워크에 있는 컴퓨터를 자신의 컴퓨터처럼 파일전송, 파일생성, 디렉토리 생성 등을 자유롭게 할 수 있다.

단, 보안문제로 인해 사용률이 감소하고 원격 제어를 위해 SSH로 대체되는 추세

SSL 디지털 인증서

SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다.

SSL , SSL 디지털 인증서의 이점

  • 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단 할 수 있다.
  • 통신 내용의 악의적인 변경을 방지할 수 있다.

SSL 에서 사용하는 암호화의 종류

SSL의 핵심은 암호화다. SSL 은 보안과 성능상의 이유로 두가지 암호화 기법을 혼용한다.

대칭키

암호를 만드는 행위인 암호화를 할 때 사용하는 일종의 비밀번호를 키(KEY) 라고 한다. 이 키에 따라서 암호화된 결과가 달라지기 때문에 키를 모르면 암호를 푸는 행위인 복호화를 할 수 없다. 대칭키는 동일한 키로 암호화와 복호화를 같이 할 수 있는 방식의 암호화 기법을 의미한다. 즉 암호화를 할 때 1234 라는 값을 사용했다면 복호화를 할때도 1234 라는 값을 입력해야 한다.

echo 'this is the plain text' > plaintext.txt;
openssl enc -e -des3 -salt -in plaintext.txt -out ciphertext.bin;

이 명령을 실행하면 plaintext.txt 파일이 생성된다.
그리고 비밀번호를 요구 받을 것이다. 이 때 입력한 비밀번호가 바로 대칭키가 되는 것이다.

openssl enc -d -des3 -in ciphertext.bin -out plaintext2.txt;

위의 명령은 enc -d 옵션으로 인해 ciphertext.bin 파일을 plaintext2.txt 파일로 복호화 하겠다는 의미다.

공개키

대칭키 방식은 단점이 있다. 암호를 주고 받는 사람들 사이에 대칭키를 전달하기 어렵다.
대칭키가 유출되면 키를 획득한 공격자는 암호의 내용을 복호화 할 수 있기 때문에 암호가 무용지물이 되는 것이다. 이런 배경에서 나온 암호화 방식이 공개키 방식이다.

공개키 방식은 두개의 키를 갖는다. A키로 암호화를 하면 B 키로 복호화 할 수 있고, B 키로 암호화 하면 A 키로 복호화 할 수 있는 방식이다. 이 방식에 착안해 두개의 키 중 하나를 비공개 키로 하고 나머지 하나를 공개키라고 지정한다. 비공개키는 자신만이 가지고 있고, 공개키를 타인에게 제공한다. 공개키를 제공 받은 타인은 공개키를 이용해서 정보를 암호화 한다. 암호화 한 정보를 비공개 키를 가지고 있는 사람에게 전송한다. 비공개키의 소유자는 이 키를 이용해서 암호화된 정보를 복호화 한다. 이 과정에서 공개키가 유출된다고 하더라도 비공개키를 모르면 정보를 복호화 할 수 없기 때문에 안전하다. 공개키로는 암호화는 가능하지만 복호화는 불가능 하기 때문이다.

참고 : https://study-recording.tistory.com/11 , https://opentutorials.org/course/228/4894

좋은 웹페이지 즐겨찾기