웹 클라이언트와 웹 서버간에 전송되는 사용자 데이터의 보안을 위한 인터넷 통신 프로토콜.
TCP/IP 통신에서 일반 텍스트를 이용하는 대신에 SSL이나 TSL 프로토콜을 통해 세션 데이터를 암호화한다.
TLS(Transfer Layer Security): 웹 통신을 할 때 데이터 보안을 위한 보안 프로토콜이다.
SSL(Secure Sockets Layer): TLS의 향상된 버전의 보안 프로토콜이다.
결제 페이지, 로그인, 블로그 및 정보 사이트에 이용된다.
전송 계층 보안 프로토콜(TLS)을 통한 보안 강화
- 암호화
- 교환되는 데이터를
암호화
하여 침입자로부터 데이터를 보호한다.
- 교환되는 데이터를
- 데이터 무결성
- 전송되는 동안 데이터가 손상되거나 변경되는 것을 방지한다.
- 인증
- 클라이언트가 의도된 웹 서버와 통신중임을 입증한다.
- MITM(spoofing)을 차단한다.
SSL
- Handshake protocol
- 비대칭 암호화를 통해 서버와 클라이언트간의 암호화된 연결을 수립한다.
- https 연결은 언제나 SSL shake를 통해 시작된다.
- 인증: 사용자가 웹 사이트를 시작하는 모든 세션에 대해 웹 서버와 각각 다른 SSL 인증서를 교환 및 검증한다.
- 암호화: 서버와 브라우저가 공개키를 공유하고 이를 통해 pre-master key를 생성하고 암호화한다.
- 복호화: 서버가 개인 키를 사용한 pre-master key를 복호화하고 세션 기간동안 사용되는 암호화된 보안 연결을 수립한다.
대칭키
- 데이터를 암호화할 떄 사용되는 일종의 비밀번호이다.
- 암호화된 데이터를 복호화할 때 동일한 키를 이용한다.
공개키
- 암호를 주고받는 사람들 사이에서는 대칭키 전달이 어렵다.
- 대칭키의 단점을 보안하여 공개키를 통해 암호화 하는 방법은 개인키와 공개키를 통해 공개키로 암호화하고, 개인키로 복호화 할 수 있도록 하는 방법이다.
- 클라이언트가 데이터를 공개키를 통해 암호화하여 서버로 전달하면, 서버는 개인키를 통해 복호화하고, 다시 공개키로 암호화 하여 통신할 수 있다.
SSL 인증서
- SSL 인증서가 제공된 도메인 이름 및 데이터
- 서버 측 공개 키
IP Spoofing
- 클라이언트의 IP 주소를 가로채 서버 요청을 보내 실제 클라이언트가 서버 응답을 받게 하는 공격이다.
SSL 인증서가 서비스를 보장하는 방법
- CA(Certificate Authority)가 웹 서버에 인증서를 제공한다.
- 클라이언트가 서버에 첫 요청을 보낼 떄 서버는 무조건 해당 인증서를 클라이언트에 전송한다.
- 클라이언트(브라우저)는 유효한 CA리스트와 해당 공개키들을 미리 알고 있다.
- 클라이언트가 서버로부터 전송받은 인증서를 CA리스트에 있는지 확인하고, 해당 공개키를 통해 인증서를 복호화한다. (전자서명)