-
[WEB] https의 동작원리 (+대칭키 vs 비대칭키)web 2024. 12. 15. 12:09
https의 동작원리 (+대칭키 vs 비대칭키)
대칭키 vs 비대칭키
대칭키
- 암호화와 복호화할때 같은 키를 사용한다.
문제점
- 적어도 한번은 키를 한쪽으로 전송해야하는데 그 과정에서 탈취당할 수 있음.
비대칭키(공개키)
- A키로 암호화하면 B키로만 복호화할 수 있고, B키로 암호화하면 A키로만 복호화할 수 있는 방식
비대칭키로 서버와 클라이언트가 데이터를 주고받는 방식
서버는 자신만의 개인키를 갖고, 공개키는 공개한다.
클라이언트는 공개키로 암호화해서 서버에 전송.(서버가 가진 개인키로만 복호화가능하기 때문에 서버만 볼 수 있다.)
(공개키로는 복호화할 수 없기때문에 외부에 유출되어도 안전하다.)
서버에서 온 데이터는 서버 개인키로 암호화된 것이기 때문에 공개키로만 열어볼 수 있음.
다른 피싱사이트에서 온 데이터는 서버의 공개키로 열어보려하면 오류가 생긴다.이를 통해 서버가 피싱 사이트가 아니라 원본 사이트임을 알 수 있다.
그리고 클라이언트가 서버에 보내는 데이터가 암호화되어 안전하게 전송될 수 있다.
문제점
- 비대칭키로 암호화/복호화할 경우 컴퓨터에 부담이 크다.(속도가 느리다)
CA(Certificate Authority)
- 신뢰할 수 있는 사이트에 인증서를 발급해주는 업체
- 각 브라우저에는 CA들의 리스트와 이들의 공개키가 내장되어 있다.
HTTPS
-http + secure
- hyper text transfer protocol secure
- http통신을 송수신하는과정에서 암호화해서 데이터가 유출되지 않도록 하는 것.https를 사용하는 이유
1. 클라이언트가 사이트에 보내는 정보들을 제3자가 보지 못하게 한다
2. 접속한 사이트가 믿을만한 곳인지를 알려준다실제 클라이언트와 서버 사이에서 https통신이 이루어지는 과정
1. handshake(악수, 탐색과정)
클라가 서버에 무작위 데이터 보냄.
서버는 클라에 또 다른 무작위 데이터 + 인증서를 보냄.
이때 인증서는 CA의 개인키로 암호화되어있다. 이때 인증서가 진짜라면 브라우저의 내장된 CA의 공개키로 복호화가 된다.
(각 브라우저에는 CA리스트와 공개키들이 내장되어있다.)
이 인증서가 CA에 해당되는 것이 없다면 http not secure이 뜨게된다.
복호화된 인증서에는 서버의 공개키가 포함되어 있다.(이때 비대칭키로만 암/복호화하는 것은 부담이 큰 작업이기 때문에 대칭키와 비대칭키 방식이 혼합되어 사용된다.)
서버가 클라이언트가 주고받는 데이터는 기본적으로 대칭키로 암호화를 한다. 그리고 대칭키를 공유할 때 비대칭키를 사용한다.
클라이언트는 handshake에서 주고받은 데이터들을 혼합해서 임시키를 만들고 이를 서버의 공개키로 암호화해서 서버에 보낸다.2. 데이터 주고받기
그 결과 안전한 대칭키가 서버와 클라이언트에 공유되었으므로 이제부터 서로 대칭키로만 데이터를 주고받는다.
'web' 카테고리의 다른 글
[WEB] AWS route53로 AWS CloudFront에 도메인 연결하기(+DNS ) (0) 2024.12.15 [web] IP와 Port번호 (0) 2024.12.03 [Web] Web server 와 WAS 의 차이점 (+ Web Container) (0) 2024.11.21