HTTPS를 사용하는 이유
- Hyper-Text Transfer Protocol Secure
- 기존의 HTTP 사이트보다 안전하다.
- 웹 사이트에 보내는 정보를 누군가 보지 못한다.
- 암호화된 텍스트로 전송
- 신뢰할 수 있는 사이트의 지표
- 피싱 사이트 판별
- 기관으로부터 검증된 사이트만 주소에 사용 가능
HTTP
- Hyper-Text Transfer Protocol
- 서버와 클라이언트(브라우저)가 주고받는 메시지의 형식
- 인터넷 상에 커뮤니케이션에 사용되는 형식
- 우편
- 주소창에 일일이 명시
기술적 접근
내가 사이트에 보내는 정보들을 제 3자가 못 보게 한다.
접속한 사이트가 믿을만한 곳인지를 알려준다.
두 보안 기능이 어떤 원리로 구현되는지 알아보자
대칭키와 비대칭키
- 대칭키: 메시지를 보내는 쪽과 메시지를 받는 쪽이 메시지를 암호화하고 이를 다시 메시지로 바꾸는 복호화하는 같은 방식을 공유
- 메시지를 키와 함께 알고리즘에 돌리면 전혀 알 수 없는 암호문이 만들어진다.
- 복호화를 할 때도 키값이 필요하다.
- 서버와 클라이언트에 같은 키를 공유
- 한 쪽에서 다른 한 쪽으로 전송할 때 유출될 가능성
- 비대칭키(공개키)
- 두 가지의 키가 사용된다.
- A키로 암호화를하면 B키로 복호화
- B키로 암호화를하면 A키로 복호화
- 서버는 하나를 비밀로 보관(개인키)
- 다른 하나는 대중들에게 공개(공개키)
- 누군가가 가로채도 풀어낼 수 없다.
- 공인된 사이트인 것은 어떻게 증명하는가?
- 서버에서 클라이언트에게 보내는 정보는 일부가 서버의 개인키로 암호화가 되어있다.
- 공개키로 풀어서 알아볼 수 있다.
- 공인된 사이트가 아닌 곳의 정보는 공개키로 풀리지 않는다.
- 신뢰할 수 있는 기관에서 공개키 검증
실제 구현
공개키
- 공개키를 검증하는 기관: CA(Certificate Authority)
- 엄격한 인증과정
- 브라우저에 CA들의 목록이 내장
클라이언트와 서버가 연결되는 과정
- 클라이언트는 서버를 신뢰하기 전에 탐색과정(Handshake)를 거친다.
- 클라이언트는 어떤 랜덤 데이터를 생성해서 서버에 전송
- 서버는 답변으로 무작위로 생성한 데이터와 서버의 인증서를 보낸다.
- 클라이언트는 인증서를 브라우저에 내장된 CA들의 정보를 통해 확인한다.(비대칭키 시스템)
- CA의 인증을 받은 인증서들은 해당 CA의 개인키로 암호화되어 있다.
- 브라우저에 저장된 CA의 공개키로 복호화할 수 있다.
- 인증서가 해당하지 않으면 브라우저 주소창에 표시된다.
- 복호화된 인증서에는 서버의 공개키가 포함되어 있다.
- 그 이후 주고 받는 데이터는 대칭키, 비대칭키가 혼합되어 사용
- 비대칭키는 컴퓨터에 큰 부담을 주기 때문
- 대칭키를 공유할 때 비대칭키를 사용
- Handshake 과정에 생성된 서버와 클라이언트의 두 무작위 데이터를 클라이언트가 혼합해서 임시키로 만든다.
- 임시키는 서버의 공개키로 암호화되어서 서버로 보내진다.
- 양쪽에서 대칭키로 만들어진다.
Reference
'programming study > web' 카테고리의 다른 글
브라우저 렌더링 (0) | 2021.07.11 |
---|---|
REST API (2021.3.14) (0) | 2021.03.14 |
HTTP (2021.3.7) (0) | 2021.03.07 |
[스파르타코딩] 웹개발 종합반 항해 1기 5주차 (2)(2021.2.5 ~ 6) (0) | 2021.02.06 |
[스파르타코딩] 웹개발 종합반 항해 1기 5주차 (1)(2021.2.5) (0) | 2021.02.05 |