1. SSL/TLS 이란?
SSL (Secure Socket Layer) / TLS (Transport Layer Security) 는 애플리케이션을 암호화하는 프로토콜이다.
📌 TLS 는 SSL 의 버전을 업데이트한 것이다. SSL 은 1990년대 중반 미국 넷스케이프에의해 개발되었다. 후에 넷스케이프는 IETF (Internet Engineering Task Force)에 SSL 프로토콜을 제어권을 넘겼고, 이때 SSL 3.0의 다음버전으로 이름이 TLS로 변경되어 발표된 것이다. 즉, 이때 발표된 TLS 는 SSL 3.1이나 다름없다. 정확히는 TLS 라는 명칭이지만, SSL이라는 명칭이 이미 통상적으로 사용되고 있었기 때문에 특정 버전등을 명시하여 지칭하지 않는이상 「SSL/TLS」, 「TLS/SSL」 등과 같이 병기하거나 「TLS」 을 SSL 이라 부르는 경향이 있다.
본 포스트에서도 간단히 SSL 로 표기한다.
웹사이트의 URL 이 'http://~' 가 아니라 'https://~' 으로 되어있고, 주소에 자물쇠 마크가 표시되는 것을 본 적이 있을 것이다. 이것이 통신이 SSL 로 암호화되어 데이터가 보호되고 있음을 나타내는 것이다.
즉, HTTPS (HyperText Transfer Protocol Secure) 는 HTTP 를 SSL 로 암호화한 것이다.
구글 뿐만아니라 다음, 네이버, 티스토리 등의 웹사이트들은 http 로 연결해도 https 사이트로 리다이렉트 된다. 점점 SSL 로 암호화되는 시대가 되고 있다.
◾ HTTP 와 HTTPS 비교
HTTP | HTTPS | |
명칭 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
의미 | 웹서버과 웹브라우저 사이에서 정보를 주고받기 위한 프로토콜 | HTTP 암호화 통신 |
URL | http:// | https:// |
포트 번호 | 80 | 443 |
필요한 것 | 웹브라우저 | 웹브라우저, SSL 서버 증명서 |
예 | 웹사이트 | EC사이트 이용, 개인정보 등록 및 편집 |
2. SSL 이 이용하는 기술
SSL 은 암호화, 해시화, 디지털 인증서 라는 3가지 기술을 조합해 보안 위협에 대항한다.
2.1. 암호화를 통한 도청 방지
2.1.1. 공통키 (대칭키) 암호화 방식
암호화키와 복호화키로 동일한 키(공통키) 를 사용하는 암호화 방식이다. 같은 키를 대칭적으로 사용하므로 '대칭키 암호화 방식'이라 부르기도 한다.
클라이언트와 서버는 미리 같은 키를 공유하고, 암호화키로 암호화한 뒤 암호화키와 동일한 키로 복호화한다.
장점은 구조 자체가 단순하기 때문에 암호화 처리 및 복호화 처리 속도가 빠르며, 큰 처리 부하가 걸리지 않는다.
단점은 키 전송 문제에 있다. "미리 같은 키를 공유하는 것" 이 간단해 보이지만, '어떻게 안전하게 상대에게 키를 전송해야하는 가?' 하는 문제가 남는다.
2.1.2. 공개키 암호화 방식
암호화키와 복호화키로 다른 키를 사용하는 암호화 방식이다. 서로 다른 키를 사용하므로 '비대칭키 암호화 방식' 이라 부르기도 한다. 누구에게나 공개해도 괜찮은 공개키와 모두에게는 비밀로 하는 비밀키의 한 키 페어 (key pair) 가 쌍으로 존재한다.
키 페어는 쌍으로 한쪽 키에서 다른 한쪽 키를 도출할 수 없는 구조로 되어 있다. 또한 한쪽 키에서 암호화한 데이터는 다른 한쪽키로만 복호화할 수 있다.
장점은 키를 전송할 필요가 없기 때문에 키 전송에 의한 문제가 발생하지 않는다는 것이다.
단점은 처리가 복잡하기 때문에 그만큼 암호화 처리와 부호화 처리에 시간이 소요되며 처리 부하가 걸린다는 것이다.
◾공통키 암호화 방식과 공개키 암호화 방식의 비교
암호화 방식 | 공통키 암호화 방식 | 공개키 암호화 방식 |
키 관리 | 통신 상대별로 관리 | 공개키와 비밀키로 관리 |
처리 속도 | 빠름 | 느림 |
처리 부하 | 가벼움 | 무거움 |
키 전송 문제 | 있음 | 없음 |
대표적인 암호화 종류 | ASE, 3DES, Camellia | RSA, DH/DHE, ECDHE |
2.1.3. 하이브리드 암호화 방식
SSL 은 공통키 암호화 방시과 공개키 암호화 방식을 조합하여 사용함으로써 처리 효율을 높인다.
공개키 암호화 방식을 사용해서 서로 공유해야만 하는 공통키의 재료를 교환한다. 그 후, 각각 공통키의 재료에서 공통키를 만들고, 그 키를 사용해서 공통키 암호화 방식으로 데이터를 암호화한다.
즉, 공개키 암호화 방식으로 키 전송문제를 해결하고, 공통키 암호화 방식으로 처리 부하 문제를 해결한다.
① 웹서버는 공개키와 비밀키를 만든다. (키페어)
② 웹서버는 공개키를 모두에게 공개/배포하고 비밀키만 보관한다.
③ 웹브라우저는 공통키 (공통키 암호화 방식에서 사용하는 키) 의 재료를 공개키로 암호화해서 보낸다.
④ 웹서버는 공통키의 재료를 비밀키로 복호화한다.
⑤ 웹서버와 웹브라우저는 공통키의 재료로부터 공개키를 생성한다.
⑥ 웹브라우저는 애플리케이션 데이터를 공통키로 암호화한다.
⑦ 웹서버는 애플리케이션 데이터를 공통키로 복호화한다.
2.2. 해시화를 통한 변조 방지
해시화란 애플리케이션 데이터를 해시 포테이토(hashed potato) 처럼 잘게 쪼개서 같은 크기의 데이터로 모으는 기술이다.
데이터가 변조되지 않았는가(완전성, 진정성)를 확인하고 싶을 때는 데이터 그 자체를 비교하는 것이 가장 간단하고 빠르지만, 데이터 크기가 커지면 시간이 소요되고, 처리 부하도 커지게 되버린다. 그래서 데이터를 해시화해서 비교하기 쉽게 한다.
해시화는 단방향 해시 함수라는 계산을 통해 데이터를 쪼개고, 같은 크기의 해시값으로 모은다.
◾단방향 해시 함수와 해시값의 성질
- 데이터가 다르면 해시값도 다르다.
- 데이터가 같으면 해시값도 같다.
- 해시값에서 원 데이터를 복원할 수 없다.
- 데이터 크기가 같아도, 해시값 크기는 고정된다.
SSL 에서는 이 해시화를 "애플리케이션 데이터 검증" 과 "디지털 인증서 검증"에 사용한다.
2.2.1. 애플리케이션 데이터 검증
SSL 는 단방향 해시 함수를 발전시킨 메시지 인증 코드 (MAC, Message Authentication Code) 라는 기술을 사용한다. 메시지 인증 코드는 애플리케이션 데이터와 MAC키(공통키)를 뒤집어 MAC값(해시값)를 계산하는 기술이다. 변조 감지뿐만 아니라 상대를 인증할 수 있다.
2.3. 디지털 인증서를 통한 신분 위조 방지
SSL 에서는 디지털 인증서의 검증에도 해시화를 사용한다. 제3자 인증이라는 구조를 사용한다. 제3자 인증 기관(CA, Certification Authority) 에 상대를 신뢰할 수 있도록 'A가 A인 것'을 디지털 서명이라는 형태로 승인받는다. 그 디지털 서명에 해시화를 사용한다.
2.3.1. 디지털 인증서 검증
디지털 인증서는 서명 전 인증서, 디지털 서명 알고리즘, 디지털 서명으로 구성된다.
인증 기관 (CA) 이 비밀키로 암호화한 디지털 인증서를 공개키로 복호화하여 서명전 인증서의 해시값과 비교한다. 이때 해시값이 일치하지 않으면 가짜라고 판단한다.
2.3.2. 정리
단계 | 기술 | 역할 | 최근 사용되고 있는 종류 |
사전준비 | 공개키 암호화방식 | 공통키 재료를 전송 | RSA, DG/DHE, ECDH/ECDHE |
디지털 서명 | 제3자로부터 인증 받는다 | RSA, DSA, ECDSA, DSS | |
암호화 데이터 통신 | 공통키 암호화 방식 | 애플리케이션 데이터를 암호화 | 3DES,AES,AES-GCM,Camellia |
메시지 인증 코드 | 애플리케이션 데이터에 공통키를 붙여 해시화 | SHA-256, SHA-384 |