[Web/Theory] HTTPS 프로토콜
HTTPS 프로토콜이란?
HTTP 프로토콜은 단순 텍스트 정보를 평문 그대로 네트워크 상에 노출시키기 때문에 보안에 취약하다. 반면, HTTPS 프로토콜은 공개 키 암호화 방식을 통해 텍스트 정보를 암호화하여 전송하기 때문에 네트워크 상에서 데이터가 탈취되더라도 해당 데이터가 뭘 의미하는지 해커는 알지 못한다.
공개 키 암호화 ( = 비대칭키 암호화 )
암호화와 복호화에 같은 키를 사용하는 대칭키 암호화 방식과는 달리, 암호화와 복호화에 사용하는 키가 서로 다른 비대칭키 암호화 방식이다.
지금의 디지털 서명은 대부분 이 공개 키 암호화 방식을 사용한다.
HTTPS 프로토콜의 통신 흐름
먼저, HTTPS를 적용하고 싶은 웹 서비스 기업(=A 기업이라고 하자)이 인증서를 획득하는 과정은 다음과 같다.
- A 기업은 먼저 공개 키와 개인 키를 생성한다.
- 신뢰할 수 있는 CA(Certificatate Authority) 기업/기관을 선정한 후, 생성한 공캐 키에 대한 관리를 위임하고 요금을 지불한다.
- CA 기업/기관은 A 기업에 대한 인증서를 만든 후, 이를 CA 기업/기관 자체 개인 키로 암호화한 후 A 기업으로 전송한다.
(당연히 CA 기업/기관은 자체 공개 키와 개인 키를 가지고 있다.)
다음으로 클라이언트/서버간의 HTTPS 프로토콜의 통신은 다음과 같은 과정을 거친다.
- 클라이언트는 서버에 index.html 자원을 HTTP 프로토콜을 이용해 요청한다.
- 요청을 받은 서버는 HTTPS로 프로토콜을 전환하기 위해 클라이언트로 요청한 자원 대신 CA로부터 받은 인증서를 전송한다.
- 클라이언트는 서버로부터 받은 인증서를 CA 기업/기관의 공개 키를 이용해 복호화하여 A 기업의 공개 키를 얻는다.
(브라우저는 신뢰할 수 있는 CA 기업/기관의 공개 키를 가지고 있다.) - 클라이언트는 요청할 텍스트 정보를 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 |
댓글
이 글 공유하기
다른 글
-
[Web/Theory] OIDC (OpenID Connect) 프로토콜
[Web/Theory] OIDC (OpenID Connect) 프로토콜
2020.08.04 -
[Web/Theory] OAuth 프로토콜
[Web/Theory] OAuth 프로토콜
2020.08.04 -
[Web/Theory] URL과 URI의 차이점
[Web/Theory] URL과 URI의 차이점
2020.07.31 -
[Web/Theory] REST API
[Web/Theory] REST API
2020.07.30