HTTPS ( Hyper Text Transfer Protocol Secure )
。HTTP에서 보안을 위해 TLS 암호화( Secure TCP )를 통한 암 & 복호화 과정을 추가한 프로토콜
▶ 클라이언트와 서버간 통신을 암호화하여 보호하여 네트워크 중간에 제 3자가 데이터를 확인 불가능
。 HTTP에 암&복호화 과정을 추가했으므로 처리속도가 느리지만 대칭키 / 비대칭키 조합으로 어느정도 개선
▶ 대칭키를 통한 빠른 연산속도 및 비대칭키를 통한 안정성을 모두 확보
비대칭키 / 대칭키 암호화
。HTTPS는 CA에 비용을 지불하여 인증서를 발급 받는 방식이므로 `유료 ▶민감한 데이터를 교환 시 HTTPS를 사용하며 단순한 데이터 교환의 개발환경에서는 HTTP를 이용 <SPAN> 。HTTPS 기본포트:443 <SPAN> 。SSL,TLS프로토콜을 활용하여Session data`를 암호화.
SSL / TLS
。클라이언트와 서버 간 트래픽 전달 시 데이터 무결성 및 기밀성을 보장하는 암호화 프로토콜
。In-Flight 상에서 전달되는 송 수신자 간 통신은 암호화되어 전달되므로 중간에 데이터가 탈취되더라도 안전
▶ 오직 송 수신자 측에서만 복호화가 가능
。HTTPS 등 다양한 프로토콜에서 활용
SSL ( Secure Sockets Layer )
。Web의 초기 보안 프로토콜로 개발되었으며 연결을 암호화하는 데 사용
▶ 현재는 TLS로 대체.
TLS ( Transport Layer Security )
。SSL에서 발전되어 연결에 대해 강력한 암호화 기능을 제공
▶ 현재의 보안 표준. ( TLS 1.2, TLS 1.3 )
。다양한 암호화 알고리즘과 Key 교환방법을 사용하여 Client와 Server간 안전한 통신을 가능하게 한다.
▶ TLS 기반 암호화를 수행하는 TLS 인증서를 통해 Hand Shaking을 수행
Cipher Suites : TLS에서 활용하는 보안 알고리즘
로드밸런싱
HTTPS의 연결과정 ( Hand Shacking )
。서버와 클라이언트 간 초기 연결 시 비대칭키 암호화 방식으로 안전하게 세션키( = 대칭키 )를 공유
。초기 연결 성립을 통해 세션키가 공유된 이후 데이터 교환 과정은 세션키를 통한 대칭키 암호화 방식으로 데이터 교환을 수행
▶ 세션키( = 대칭키 )를 통해 비대칭키 암호화 방식에 비해 빠른 데이터 교환이 가능

비대칭키 암호화 단계

클라이언트가 서버로 최초 연결 시도
서버에서 공개키를 CA에 전송 후 인증서 발급 및 암호화 후 클라이언트에게 전달
。인증서는 CA에서 발급되며 서버의 공개키를 저장 후 CA 비밀키로 암호화
▶ 인증서 = 서버 공개키

클라이언트는 수신한 인증서의 유효성 검사 후 세션키 발급
。클라이언트는 CA 공개키를 미리 가지고 있으므로 CA 비밀키로 암호화된 인증서를 복호화하여 서버 공개키 획득
클라이언트는 세션키를 보관 및 서버 공개키로 세션키를 암호화하여 서버로 전송
。세션키가 다른 서버로 잘못 전송되더라도 비대칭키 암호화 방식을 통해 서버 공개키로 암호화 되어 있으므로 오직 서버의 비밀키로만 복호화가 가능하여 안전을 보장
서버는 비밀키를 통해 서버 공개키로 암호화된 세션키를 복호화하여 세션키를 획득
클라이언트와 서버는 동일한 세션키( = 대칭키 )를 공유하므로 데이터 교환 시 세션키로 암호화 / 복호화를 수행

HTTPS의 인증서 발급 원리
。서버는 클라이언트와 세션키를 공유하기위한 인증된 기관으로부터의 인증서를 발급을 수행
▶ CA에 비용 지불 및 공개키를 전송하여 해당 공개키가 저장된 인증서를 발급
。인증서는 CA 비밀키로 암호화되어있어 안전성을 확보
▶ 브라우저에서 사전에 내장한 CA 공개키를 활용해 복호화 후 서버 공개키를 획득
。 클라이언트에서는 CA인증서를 복호화하여 획득한 서버 공개키로 세션키를 암호화하여 서버로 전송
▶ 서버는 서버 비밀키를 공유할 필요 없이 복호화만 수행하면 되므로 안전
A 기업은 HTTP 기반 어플리케이션에 HTTPS를 적용하기 위해 비대칭키 암호화를 수행하기위한 공개키/비밀키를 발급
CA 기업에 비용 지불 및 공개키를 전달하여 인증서의 발급을 요청
CA는 인증서를 생성 및 CA의 비밀키로 암호화하여 A 기업에게 전달
。CA 이름, 서버 공개키, 서버 정보를 기반으로 인증서 생성
클라이언트에서 A 서버로 연결 시 클라이언트에게 암호화된 인증서를 제공
브라우저는 사전에 내장한 인증된 CA의 공개키를 통해 인증서를 복호화하여 A 서버 공개키 획득 및 세션키를 암호화하여 서버로 공유
。브라우저에는 인증된 CA들을 사전에 등록 및 CA 공개키를 내장

▶ 인증된 CA를 사용하지 않는 HTTP에서는 다음 형태로 브라우저에서 표시됨
인증서
。신뢰할 수 있는 CA 인증기관에서 해당 서버 신원에 대한 검증 확인서
CA 인증기관 ( CA : Certificate Authority ) ex ) ComodoCA
。인증서를 발급하고 관리하는 신뢰할 수 있는 기관
▶ HTTPS를 통해 요청한 서버가 실제 서버인지 확인하는 용도
ex ) 가짜인 척 하는 서버를 구분가능
。서버의 공개키와 식별정보를 포함하는 인증서를 생성 및 CA 고유의 비밀키로 디지털서명 ( = 암호화 )
。CA는 비밀키 암호화, 서버는 공개키 암호화를 수행
공개키암호화 / 비밀키암호화
OpenSSL :
。서버에 무료로 자체 인증서를 발급
▶ 무료이나 유효기간이 짧다.