❏ HTTP(80)
HyperText Transfer Protocol의 약자로, HTTP는 서로 다른 시스템 간 효과적인 통신을 할 수 있도록 하는 프로토콜입니다. 웹 브라우저와 웹 서버 간의 기본적인 통신을 담당합니다.
❍ Client - Server
HTTP는 웹에서 이루어지는 대부분의 기초 프로토콜이며, 클라이언트에서 URL을 통해 서버에 요청(Request)을하면, 서버에서는 해당 요청에 대한 결과를 응답(Response)하는 형태로 동작합니다.
❍ 무상태 프로토콜(Stateless)
HTTP는 Stateless한 특성을 가지고 있기 때문에, 서버는 클라이언트의 상태를 보관하지 않습니다. 즉, 서버와의 요청 간에 유지되는 데이터가 존재하지 않기 때문에, 서버는 클라이언트를 식별할 수 있는 능력이 없습니다.
그렇기에 로그인과 같은 사용자의 상태는 쿠키, 세션, 토큰을 이용하여 유지되어 기억할 수 있도록 합니다.
❍ 비연결성(Connectionless)
HTTP는 Connectionless한 특성을 가지고 있기 때문에, 클라이언트가 서버로부터 응답을 받게 되면 연결이 끊어지게 됩니다.
그 이유는 서버는 다수의 클라이언트와 수많은 연결이 지속될 경우, 많은 자원을 낭비하게 되기 때문입니다. 따라서, 응답을 마친 후에 연결을 끊어서 자원 낭비를 줄일 수 있도록 합니다.
HTTP/1.1 이후로 부터는 지속 연결(Persistent Connections)를 통해 모든 응답이 돌아온 후에 연결이 종료되도록 개선되었습니다.
❍ 단점
통신 중 데이터가 암호화되지 않는 문제가 있기 때문에, 중간에 유출될 가능성이 있는 보안 취약점이 있습니다.
❏ HTTPS(443)
HyperText Transper Protocol Secure의 약자로, HTTPS는 HTTP의 보안 취약점을 보완하고자 생겨난 프로토콜이다.
❍ SSL, TLS
SSL은 Secure Socket Layer의 약자로, 디지털 인증서라고도 불립니다. 클라이언트와 서버 사이의 연결 중 전송된 데이터에 대해 암호화하는 것을 담당합니다. 따라서, 중간에 유출되는 등의 보안 위험성을 방지합니다.
이러한 SSL의 발전된 버전은 TLS(Transport Layer Security)입니다.
HTTPS는 SSL/TLS 보안 프로토콜을 통하여 데이터를 암호화하여 보호하고, 사용자에게 URL이 안전한 사이트임을 표시해줍니다.
HTTPS는 사용자가 서버에게 데이터를 전송할 때, 암호화를 하여 알아볼 수 없도록 한다.
HTTPS는 사용자가 접속한 사이트가 신뢰할만한 사이트인지 검증해준다.
❏ 암호화 방식
❍ 대칭키
암호화 방식 중 대칭키를 이용하는 방식을 살펴보자면, 암호화와 복호화에 사용되는 키가 동일한 것을 의미한다.
발송자가 키를 가지고 데이터를 전달하고, 수신자가 키를 받아 자신의 키와 동일한지 확인하게 됩니다. 그러나, 중간에 유출된다면, 키가 유출될 위험이 있기 때문에, 보안적으로 문제가 발생할 수 있습니다.
❍ 비대칭키(공개키)
대칭키에서의 유출 위험을 방지하고자 암호화에 사용되는 키와 복호화에 사용되는 키가 다른 비대칭키를 이용한다.
공개키를 이용하여 암호화를 진행하고, 개인키를 가지고 복호화를 진행합니다. 따라서, 공개키는 공개되어 있으나, 개인키는 공개되어 있지 않습니다.
따라서, 공개기로 암호화된 데이터가 유출된다고 하여도, 개인키로만 복호화가 가능하기 때문에 유출의 위험을 방지할 수 있습니다.
❍ SSL는 어떤 암호화 방식을 이용하는가
SSL의 경우 전송되는 데이터에 대해 암호화를 진행하는데, SSL은 대칭키와 공개키 방식을 조합하여 안전한 통신을 제공합니다.
1. 공개키의 교환
- A와 B는 각각 공개키와 개인키를 가지고 있습니다.
- A는 B의 공개키, B는 A의 공개키를 서로 전달하여 획득합니다.
2. 대칭키 생성 및 전달
- A는 안전한 통신을 위해 사용할 대칭키를 생성합니다.
- A는 B의 공개키를 사용하여 대칭키를 암호화합니다.
- 암호화된 대칭키는 B에게 전달됩니다.
3. 대칭키 복호화
- B는 자신의 개인키를 이용하여 A가 전송한 암호화된 대칭키를 복호화합니다.
- 이제 A와 B는 안전한 통신을 위한 동일한 대칭키를 공유하게 됩니다.
이러한 과정으로 공개키는 안전한 대칭키 교환을 위해 사용되며, 대칭키는 데이터 암호화를 담당하게 됩니다.
❍ CA
Certificate Authority의 약자로 인증 기관을 의미하며, 서버가 정상적인지 검증한 후 인증서를 발급합니다.
브라우저에는 CA의 목록들이 내장되어 있기 때문에, 클라이언트가 서버로부터 인증서를 전달받으면, 클라이언트는 이 인증서들을 CA를 통해 확인합니다.
인증서는 CA의 개인키로 암호화되어 있기 때문에, 올바른 인증서라면 브라우저에 저장되어 있는 CA의 공개키로 복호화가 가능해야 합니다.