HTTPS 프로토콜이란?


HTTP 프로토콜은 단순 텍스트 정보를 평문 그대로 네트워크 상에 노출시키기 때문에 보안에 취약하다. 반면, HTTPS 프로토콜은 공개 키 암호화 방식을 통해 텍스트 정보를 암호화하여 전송하기 때문에 네트워크 상에서 데이터가 탈취되더라도 해당 데이터가 뭘 의미하는지 해커는 알지 못한다.

 

 

 

공개 키 암호화 ( = 비대칭키 암호화 )


암호화와 복호화에 같은 키를 사용하는 대칭키 암호화 방식과는 달리, 암호화와 복호화에 사용하는 키가 서로 다른 비대칭키 암호화 방식이다.

지금의 디지털 서명은 대부분 이 공개 키 암호화 방식을 사용한다.

 

 

 

HTTPS 프로토콜의 통신 흐름


먼저, HTTPS를 적용하고 싶은 웹 서비스 기업(=A 기업이라고 하자)이 인증서를 획득하는 과정은 다음과 같다.

  1. A 기업은 먼저 공개 키와 개인 키를 생성한다.
  2. 신뢰할 수 있는 CA(Certificatate Authority) 기업/기관을 선정한 후, 생성한 공캐 키에 대한 관리를 위임하고 요금을 지불한다.
  3. CA 기업/기관은 A 기업에 대한 인증서를 만든 후, 이를 CA 기업/기관 자체 개인 키로 암호화한 후 A 기업으로 전송한다.
    (당연히 CA 기업/기관은 자체 공개 키와 개인 키를 가지고 있다.)

 

다음으로 클라이언트/서버간의 HTTPS 프로토콜의 통신은 다음과 같은 과정을 거친다.

  1. 클라이언트는 서버에 index.html 자원을 HTTP 프로토콜을 이용해 요청한다.
  2. 요청을 받은 서버는 HTTPS로 프로토콜을 전환하기 위해 클라이언트로 요청한 자원 대신 CA로부터 받은 인증서를 전송한다.
  3. 클라이언트는 서버로부터 받은 인증서를 CA 기업/기관의 공개 키를 이용해 복호화하여 A 기업의 공개 키를 얻는다.
    (브라우저는 신뢰할 수 있는 CA 기업/기관의 공개 키를 가지고 있다.)
  4. 클라이언트는 요청할 텍스트 정보를 A 기업의 공개 키로 암호화한 다음 서버로 전송한다.

 

 

 

HTTPS 프로토콜의 취약점


웹 사이트가 HTTPS 프로토콜을 사용한다고 무조건 안전한 것은 아니다. 인증서를 발급받은 CA 기업/기관 자체가 신뢰할 수 없다면 암호화 자체가 무의미해지기 때문이다. CA 기업/기관이 신뢰할 수 없다면 브라우저는 HTTPS지만 "주의 요함", "안전하지 않은 사이트" 등의 문구를 표시한다.

 

 

 

참고자료


[1] https://jeong-pro.tistory.com/89

[2] https://namu.wiki/공개 키 암호화

[3] https://namu.wiki/디피-헬만 키 교환

 

 

'Web > Theory' 카테고리의 다른 글

[Web/Theory] OIDC (OpenID Connect) 프로토콜  (0) 2020.08.04
[Web/Theory] OAuth 프로토콜  (0) 2020.08.04
[Web/Theory] URL과 URI의 차이점  (0) 2020.07.31
[Web/Theory] REST API  (0) 2020.07.30
[Web/Theory] CSRF (Cross-Site-Request-Forgery)  (0) 2020.07.20