HTTPS SSL/TLS 암호화와 인증서? 쉽게 설명해주세요.
인터넷 보안 중 우리가 가장 많이 접하는 방식이 바로 HTTPS 입니다. 우선 HTTP와 HTTPS의 차이를 최대한 간단하게 설명하고 넘어가자면 아래와 같습니다.
- HTTP : 누구나 열어 볼 수 있는 쪽지라 민감하거나 소중한 정보를 적어서 전달하기 무서워요.
- HTTPS : 쪽지 내용을 ‘암호화’해서 중간에 누가 가로채서 열어봐도 안전해요.
S(Secure) 하나 붙었을 뿐인데 큰 차이를 가져옵니다. 인터넷 세상에서 엄청나게 넓은 영역에서 보안을 담당하는이 S를 TLS/SSL이 담당합니다.
SSL/TLS이 뭐예요? 꼭 알아야 하나요?
SSL TLS 암호화에 대해 짧고 간단하게 알아봐요. 복잡한 기술적인 부분은 저도 초보라 잘 모르니 제외하고 설명해볼게요.
우선 둘의 공통적인 목적은 인터넷을 안전하게 할 수 있게 하기 위함입니다. 우리가 로그인 할 때, 이메일을 보내거나 영상통화를 하는데 누군가 중간에서 끼어들어 읽고, 본다거나하면 너무 소름끼치죠? 이런 부분을 보호해주기 위해 보안 프로토콜이 생기게 되었습니다.(VPN 프로토콜 처럼요)
SSL(Secure Sockets Layer)이 뭐예요?
이 글의 제목처럼 TLS랑 항상 같이 샴쌍둥이처럼 붙어다니는 것이 SSL입니다. TLS/SSL 아니면 SSL/TLS로(순서 의미없음) 표기되어 둘이 세트인가?라고 생각되기도 하는데 이어지는 역사이긴 하지만 엄밀히 따지면 둘은 다릅니다.
우선 SSL은 웹브라우저의 조상님인 넷스케이프(Netscape)가 안전한 통신을 위해 고안하고 만들었습니다. SSL v1.0 버전이 무려 1994년에 만들어졌고 2.0 버전이 1995년 2월에 릴리즈되었어요.
TLS(Transport Layer Security) 인증서? 암호화? 뭐죠
TLS(Transport Layer Security)는 문자 그대로 전송 계층 보안으로 무려 1999년에 태어났어요. 글을 작성중인 현재 시점에서 가장 최신버전은 TLS 1.3 입니다. TLS가 SSL v3.0을 토대로 만들어졌어요.
TLS 관련 표준 문서 : TLS 1.0-RFC 2246, TLS 1.1-RFC 4346, TLS 1.2-RFC 5246, TLS1.3-RFC 8446
HTTPS를 HTTP over TLS라고 부르기도 합니다. 앞서 말씀드렸듯 TLS를 통해서 HTTPS가 가능해지기 때문입니다. 사실상 SSL의 자리는 TLS로 바뀌었습니다. 발표년도를 보면 좀 더 명확히 알 수 있어요. SSL 3.0이 1996년이고 그 이후 TLS 1.0(1999), TLS 1.1(2006), TLS 1.2(2008), TLS 1.3(2018) 입니다. TLS 1.4는 현 버전의 큰 문제가 생겨야 나오겠죠?
SSL 프로토콜은 사용이 중단되었지만 여전히 ‘SSL’이라고 더 많이 불리며 통용되고 있습니다. 구글 검색량으로 보면 ‘SSL 인증서’ 882,000건, ‘TLS 인증서’ 222,000건으로 4배나 차이납니다.
여튼 SSL/TLS는 TCP(Transmission Control Protocol)와 우리가 접하는 HTTP, FTP 등과 결합해서 HTTPS, FTPS(*SFTP는 FTP over SSH입니다.)로 변해서 보안을 책임져 줍니다. 그리고 DNS과 결합해 DoT가 되기도하죠!
보안 통신의 순서를 아주 단순하게 표현하면
- Handshake(핸드셰이크:악수)로 서로를 파악하고
- Key 교환
- OK 안전! 확인 Finished!
- 자~ 내 Key로 암호화해서 보낸다!
- 오케이 잘 받았고, 내가 가진 Key 복호화해서 봤어~
OpenSSL을 이용해서 공개키 생성과 인증서 발급도 가능하고, 저 처럼 워드프레스 블로그 운영이나 그누보드, 라이믹스 등으로 사이트 운영하시는 분들은 LetsEncrypt가 매우 익숙하실거예요.(설립자 Peter Eckersley. RIP.. 이 훌륭한 LetsEncrypt를 무료로 누구나 사용할 수 있게 해줘서 전세계 인터넷 보안에 지대한 역할을 하셨습니다.)
그래서 결론이 뭐다?
핵심은 내 컴퓨터(스마트폰)에서 내가 접속한 사이트나 앱으로 주고 받는 것들을 중간에서 누군가가 훔쳐보거나, 가로채기, 위조 등 나쁜 짓을 할 수 없게 지켜주는 역할입니다.
이와 관련해 암호화 기법, 데이터 무결성 체크, 대칭키, 비대칭키, Diffie-Hellman, 핸드쉐이크, 완전 순방향 기밀성, 키 합의 프로토콜, 복호화, RSA, 해시 함수 등의 것들에 대한 자세한 지식은 전문가와 전공자들에게 맡겨둡시다.. 우리 같은 초보들에게는 외계어 입니다. 모르고 살아도 노 쁘라블럼.
그 외 잡다한 정보들
- LetsEncrypt는 DV(Domain Validation) 인증서 점유율이 무려 80%에 육박합니다.
- 발급 쉽고, 무료지만 초보자들에게 조금 어려울 수 있는 것은 3개월마다 갱신해줘야 한다는 것인데, 자동 갱신 스크립트는 검색하면 매우 쉽고 자세한 글들이 많으니 걱정없습니다.
- 한때 HTTPS를 적용시킨 사이트는 구글 검색 순위에서 이점을 얻는다는 썰도 돌았는데 그건 아닌것으로 밝혀졌습니다.(#) John Mueller가 직접 이야기 했으니 팩트겠죠. but! 요즘 시대에 아직도 HTTPS 주소로 접속되지 않는 사이트는 신뢰도가 팍 떨어지는 것 또한 팩트죠.
- MAC 어드레스 이야기도 한번 읽어보세요. 재미있습니다.