Skip to content

Latest commit

 

History

History
74 lines (42 loc) · 3.62 KB

https-principle-of-operation.md

File metadata and controls

74 lines (42 loc) · 3.62 KB

HTTPS의 동작 원리

HTTPS란 무엇인가

사실 HTTPS는 HTTP에서 보안 기능만 추가된 것입니다.

보안이 필요한 이유, TLS/SSL의 동작방식, 제3자인증이 무엇인지 정도를 안다면 HTTPS의 동작 원리에 대해서 알게되지 않을까 싶습니다.

보안이 필요한 이유

  1. 개인 정보 보호를 위해서
  2. 데이터의 무결성을 보장하기 위해서
  3. 식별하기 위해서

개인 정보 보호

만약, HTTP 통신을 하면 이 패킷은 암호화 되어있지 않아 그 내용을 손쉽게 볼 수 있습니다.

개인 정보 보호는 이러한 내용을 원하는 대상 외에는 확인할 수 없도록 하는 것입니다.

무결성

우리의 내용을 손쉽게 볼 수 있다는 것은, 그 내용을 수정해서 바꿔도 모른다는 의미입니다.

이렇게 수정해서 바꾸는 것을 중간자 공격이라고 합니다.

무결성은 이 메시지가 전송되는 도중에 변경되거나 조작되지 않고 원래 상태로 전달되었음을 보장합니다.

식별

HTTPS는 디지털 인증서를 활용합니다. 그로 인해 클라이언트는 서버를 신뢰하고 민감한 정보를 보낼 수 있습니다.

HTTPS가 보안을 보장하기 위해 사용하는 방법

암호화

HTTPS는 두 종류의 암호화를 사용합니다.

  • 대칭키 알고리즘
  • 비대칭키 알고리즘(공개키 암호화)

대칭키 알고리즘은 같은 키를 가지고 서로 그 키로 암호화하고, 복호화합니다. 비교적 빠른 속도를 가지며, 키를 공유하는 것에 많은 신경을 써야합니다.

비대칭키 알고리즘은 하나의 공개키를 오픈해두고, 비밀키를 가지고 있는것을 의미합니다. 이 방법은 상대적으로 속도가 느리며, 대신 비밀키만 잘 가지고 있으면 됩니다.

공개키 암호화는 공개된 키로 정보를 암호화해서 비공개 키로 복호화 하는 방법을 사용합니다.

제3자 인증

HTTPS에서 사용하는 비대칭키 알고리즘의 안정성을 위해서 제3자 인증을 합니다. 그 중 주요한 키워드는 CA(인증 기관)입니다.

인증 기관은 3가지 목적을 가진 조직입니다.

  1. 인증서 발급
  2. 인증서 소유자의 신원 확인
  3. 인증서의 유효성을 증명

CA는 보안 요구사항과 감사를 거친 신뢰할 수 있는 곳만 지정됩니다.

인증서의 검증은 신뢰 체인을 기반으로 합니다. 인증서가 인증된 기관을 따라가다 보면 루트 인증서가 나오는데, 여기까지 인증과정에 문제가 없다면 전체 인증서가 문제가 없다는 것을 기반으로 합니다.

서버는 이 인증서에 공개키를 담아서 인증 기관에 전달하고, 인증 기관은 서버를 검증한 후 인증서에 공개키를 담아 인증서를 발급해줍니다.

따라서 인증서에는 공개키가 담겨있게 됩니다.

TLS hand shake

TLS 핸드 셰이크는 TCP three-way hand shake 이후 실행됩니다.

  1. 클라이언트에서 SSL/TLS 버전 및 암호화 알고리즘 목록을 서버로 보냅니다.
  2. 클라이언트에서 보낸 정보를 바탕으로 가장 선호하는 알고리즘을 선택해 클라이언트로 보냅니다. 이 때 공개키가 담긴 인증서를 보내줍니다.
  3. 클라이언트는 서버의 인증서를 CA를 거쳐서 검증하고, pre-master key를 생성합니다. 그리고 이를 서버의 공개키로 암호화해서 보냅니다.
  4. 서버는 받은 키를 가지고 pre-master key를 획득합니다.
  5. 이제 연결이 확립되고 서로의 통신은 대칭키 알고리즘으로 통신합니다.