Hyper Text Transfer Protocol Secure Socket layer의 약자
보통 HTTP SSL(TLS), HTTP over Secure이라고도 부름
Http 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법
1-1. SSL,TLS
SSL(Secure Sockets Layer)
클라이언트와 서버 간의 안전한 링크를 통해 송수신되는 모든 데이터를 안전하게 보장하는 과거의 보안 표준 기술이었으나, TLS로 대체됨.
즉, HTTP만을 위한 프로토콜이 아닌 응용계층의 여러 프로토콜의 보안을 위해 발명된 프로토콜.
조금 더 정확히는 TCP를 보호하는 프로토콜
장점:
기밀성(암호화)
데이터 무결성
서버인증
클라이언트 또는 서버에서 메시지를 만들어 상대에게 전달할 떄, 응용계층에서 만들어진 전송계층으로 가기 전 SSL을 통해 데이터가 암호화가 됨. 그 후 전송계층을 통해 네트워크로 데이터가 상대에게 전달이 됨.
TLS(Transport Layer Security)
클라이언트와 서버사이의 기밀성과 무결성 통신을 보장하기 위한 결정을 하도록 돕는 것이 목적
네트워크로 연결된 두 개의 어플리케이션 혹은 디바이스가 비밀스럽고 강건하게 정보를 교환하도록 하는 표준
TLS가 제공하는 세 가지 주요 서비스
인증 : 커뮤니케이션에 대한 각각의 당사자가 상대방이 주장하는 사람인지 검증하게 함.
암호화 : 데이터는 사용자 에이전트와 서버 사이에 전송이 되는 동안에 허용되지 않은 쪽에 의해 데이터가 읽혀지고 가로채지는 것을 방지하기 위해서 암호화됨.
무결성 : 데이터를 암호화하고 전송하고 복호화는 동안에 정보가 없어지거나 손실되거나 위변조되지 않는 것을 보장함.
1-2. 암호화 방식
대칭키
두 명의 사용자가 있을 때 둘 모두가 같은 암호키를 가지고 대화하는 방식. 때문에 알고리즘이 상대적으로 간단하면 동작이 빠름.
공개키
대칭키 방식의 단점인 두 사용자가 모두 같은 비밀번호를 알아야 한다는 단점을 보완하고자 고안된 방법. 두 사용자가 모두 같은 키를 사용하기 위해선 한 사용자가 생성한 키를 상대방에게 전달해야 하는데 이 때 암호키가 유출될 수 있기 때문
공개키 방식은 2개의 키를 가지고 암호화를 진행하게 됨. 한 키는 공개가 되어 있으며(공개키), 나머지 하나는 키의 주인만이 알수 있음(개인키).
우선 메시지를 전달하고자 하는 대상의 공개키로 내가 전달할 메시지를 암호화하고, 전달받은 상대방은 자신의 개인키를 이용하여 메시지를 복호화하면 됨.
1-3. SSL과 CA
CA: SSL 인증서를 발급하는 기관으로, 선뢰할 수 있는 기관들을 의미함.
SSL 통신과정:
1)SSL 인증서가 의도한 서비스임을 보장하는 방법
브라우저는 이미 CA기관 리스트를 알고 있음.
브라우저를 통해 사용자가 웹서비스에 접근함.
웹서비스는 CA기관을 통해 발급받은 SSL인증서(인증기관의 비밀키로 암호화되어있음)를 사용자에게 전달함.
브라우저는 SSL인증서가 CA리스트에 포함되어있는지를 확인
포함되어 있다면, 브라우저는 해당 SSL인증서에 대응하는 CA리스트에 존재하는 공개키를 이용해 SSL인증서를 복호화함 ==> 공개키로 복호화에 성공한다면, 이에 대응되는 비밀키로 암호화가 되었다는 의미이므로, SSL인증서에 해당하는 서비스의 응답임을 확신할수 있음. 즉 신뢰할수 있는 서버임을 알수 있음.
2)HTTPS의 SSL 통신방법
대칭키 주고받기
클라이언트는 특정 방법을 통해 "premaster secret"이라는 키를 생성. 이키는 데이터 통신시 대칭키 암호화에 사용될 세션 키를 만들 때 사용 되므로 중간 공격자에 의해 노출되어서는 안됨 => 서버의 공개키를 이용해 "premaster secret"를 암호화하여 서버에 전달
서버는 클라이언트로부터 전달받은 "암호화된 premaster secret"키를 자신의 비공개크를 이용하여 복호화
서버와 클라이언트는 모두 premaster secret을 가지게 됨. 이제 서버와 클라이언트는 모두 premaster secret을 일련의 과정을 거쳐서 세션키로 만듦.
서버와 클라이언트는 세션키를 이용해 대칭키 암호화하여 데이터를 주고 받음.
1-3. HTTPS의 필요성
무결성과 기밀성을 지키기 위해서
무결성: 메시지가 조작되지 않음
기밀성
메시지를 중간에 가로챌 수 없음
메시지는 암호화 되어있음.
1-4. 비공개키와 대칭키 암호화 방식을 같이 사용하는 이유
공개키를 이용한 통신 방식은 이를 복호화 암호화하는데 컴퓨팅 파워를 많이 소모하기 때문에 효율적이지 못함.
성능상 이점이 있지만, 처음 키를 주고 받을 때, 키가 누출된 염려가 있음. 즉 키를 주고 받기 위한 방식이 필요함.