원래 웹에서의 데이터는 가로채면 누구나 읽을 수 있는 일반 텍스트 형태로 전송되었음
SSL (Secure Scokets Layer)
- 암호화 기반 인터넷 보안 프로토콜
- 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 1995년에 개발
- 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격도 차단
- TLS(Transport Layer Security) 암호화의 전신이기도 함
SSl/TLS 를 사용하는 웹사이트 URL은 HTTP 대신 HTTPS을 사용
SSL은 1996년 SSL 3.0 이후 업데이트되지 않았으며,
알려진 취약성이 여러가지가 있어 보안 전문가들은 SSL 사용 중단을 권장
SSL의 대안으로는 TLS가 있음
TLS
- 최신 암호화 프로토콜
- SSL 암호화로 혼용해서 부르는 경우도 많음
(SSL의 최종버전인 3.0과 TLS의 최초버전의 차이는 크지않음
TLS는 SSL의 업데이트 버전이며 명칭만 다르다고 볼 수 있음 )
SSL/TLS 의 작동 방식
- 클라이언트와 서버간에 핸드셰이크를 통해 인증이 이루어짐
- 데이터 무결성을 위해 데이터에 디지털 서명을 하여 데이터가 의도적으로 도착하기 전에 조작된 여부를 확인
SSL/TLS 핸드셰이크
- 클라이언트와 서버간의 메세지 교환
- HTTPS 웹에 처음 커넥션할 때 진행
- 일반적으로는 RSA 키 교환 알고리즘을 사용
RSA 키 교환 알고리즘 순서
-
클라이언트 -> 서버 메세지 전송
- 핸드셰이크 시작
(이 메세지에는 TLS 버전, 암호화 알고리즘, 무작위 바이트 문자열이 포함되어 있음)
-
서버 -> 클라이언트 메세지 전송
- 클라이언트의 메세지에 응답으로 서버의 SSL인증서, 선택한 암호화 알고리즘, 서버에서 생성한 무작위 바이트 문자열을 포함한 메세지를 전송
-
인증
- 클라이언트가 서버의 SSL인증서를 인증 발행 기관에 검증
-
예비 마스터 암호
- 클라이언트는 premater secret 키(공개키로 암호화한 무작위 바이트 문자열)를 서버로 전송
-
개인 키 사용
- 서버가 개인 키로 premaster secret 키를 복호화
(개인 키로만 복호화 가능)
-
세션 키 생성
- 클라이언트와 서버는 클라이언트가 생성한 무작위 키, 서버가 생성한 무작위 키, premaster secret 키를 통해 세션 키를 생성
(양쪽은 같은 키가 생성되어야 함)
-
클라이언트 완료 전송
- 클라이언트는 세션 키로 암호화된 완료 메세지를 전송
-
서버 완료 전송
- 서버도 세션 키로 암호화된 완료 메세지를 전송
-
핸드셰이크 완료
- 핸드셰이크가 완료되고, 세션 키를 이용해 통신을 진행
SSL/TLS 인증서
- SSL은 SSL인증서(=TLS인증서)가 있는 웹사이트만 실행할 수 있음
- SSL인증서에는 공개 키가 포함됨
- 공개키: 클라이언트의 요청 (암호화) -> 서버
개인키: 서버의 개인키를 이용해 복호화
CA(certificate authority)
인증서를 발급하는 기관
참고사이트
SSL이란?, SSL과 TLS 정의 및 차이 - Burger 메모장