-
HTTPSBackground 2022. 3. 14. 00:12
HTTP프로토콜에 보안성을 더한 HTTPS에 대해 정리하였습니다.
< HTTPS 프로토콜 >
HTTPS는 Hyper Text Transfer Protocol over Secure Socket layer의 약자입니다. HTTP over SSL(TLS), HTTP over Secure라고 부르기도 합니다.
- HTTP프로토콜은 인터넷상에서 데이터를 주고받을 때 사용하는 프로토콜입니다. HTTP프로토콜은 정보를 텍스트로 주고받기 때문에 인터넷상에서 전송데이터를 인터셉트 하는 경우 의도치 않는 데이터 유출이 발생할 수 있습니다.
- 이를 방지하기 위해 HTTPS프로토콜을 사용하는데 이를 사용하면 주고받는 통신 내용이 암호화되기 때문에 데이터를 인터셉트 하더라도 알아볼 수 없어 HTTP보다 보안성이 뛰어납니다.
< SSL 동작 방식 >
HTTPS를 HTTP over SSL(TLS)라고 부르는 만큼, HTTPS은 SSL위에서 작동하고, HTTPS의 보안성도 SSL에서 왔습니다.
SSL은 Secure Sockets Layer의 약자이고, 암호화 기반 인터넷 보안 프로토콜입니다.+. TLS (Transport Layer Security)
: 과거 SSL에서 발전하며 이름이 변경 된 것입니다. 하지만 아직도 SSL이란 단어를 많이 사용합니다.
< 동작 방식 >
: 공개키 암호화 방식과 공캐키의 단점을 보완한 대칭키 암호화 방식을 사용합니다.(공캐키 방식은 느림)
=> 공개키 방식으로 대칭키를 전달하고, 대칭키를 이용해 서버와 클라이언트가 통신합니다.
< 공개키 방식 >
- A키로 암호화를 하면 B키로만 복호화를 할 수 있다.
- B키로 암호화를 하면 A키로만 복호화를 할 수 있다.
- 둘 중 하나를 비공개키(Private Key) 혹은 개인키라 부르며, 이는 자신만 가지고 있고 공개되지 않는다.
- 나머지 하나를 공개키(Public Key)라고 부르며 타인에게 제공한다. 공개키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전하다.
< 대칭키 방식 >
- 공개키와 다르게 동일한 키로 암호화, 복호화가 가능하다.
- 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음번에 사용할 때에는 다른 키가 사용되기 때문에 안전하다.
- 공개키보다 빠르게 통신할 수 있다.
- 이러한 SSL 인증방식을 적용하려면 인증서를 발급받아 서버에 적용시켜야 합니다.
: 인증서는 사용자가 접속한 서버가 우리가 의도한 서버가 맞는지 보장하는 역할을 합니다.
- 인증서를 발급하는 기관을 CA(Certificate Authority)라고 부릅니다. 공인인증기관의 경우 웹 브라우저는 미리 CA리스트와 각 CA의 공개키를 알고 있습니다.
< 동작 과정 >
: 사이트 = 서버, 웹브라우저 = 클라이언트
출처 : https://devdy.tistory.com/14 1. 사이트(서버)는 자신의 정보와 공개키를 인증기관에 제출합니다.
2. 인증기관은 제출된 데이터 검증절차를 걸쳐 개인키로 사이트(서버)에서 제출한 정보를 암호화합니다.
3. 암호화 된 인증서를 사이트(서버)로 전달합니다.
4. 웹 브라우저는 공인인증된 기관의 리스트와 각각의 공개키를 미리 알고 있습니다.
출처 : https://devdy.tistory.com/14 1. 사용자가 웹브라우저(클라이언트)에 접속할 경우 서버(사이트)에서 인증서를 전송합니다.
2. 웹브라우저(클라이언트)는 미리 알고있는 인증기관의 공개키로 인증서를 해독하여 검증합니다.
그러면 사이트의 정보와 사이트의 공개키를 알 수 있게 됩니다.3. 얻은 사이트의 공개키로 대칭키를 암호화해 사이트(서버)에 보냅니다.
4. 사이트는 개인키로 대칭키를 복호화하고, 얻은 대칭키로 클라이언트와 데이터를 주고받습니다.
출처 : https://devdy.tistory.com/14 1. 대칭키로 통신을 하다가, 세션이 종료되면 사용하던 대칭키를 폐기합니다.
< 인증서 >
브라우저(클라이언트)가 서버로부터 전달받은 인증서 정보를 확인 후 인증된 CA에서 발급한 인증서가 아니라면 화면에 경고창을 띄워 서버와 연결이 안전하지 않다는 화면을 보여줍니다.
: 브라우저는 인증서의 도메인과 데이터를 제공한 제공자의 도메인을 비교할 수 있기 때문에 인증서의 도메인 정보와 데이터 제공자의 도메인 정보가 다른 '중간자 공격'을 감지하여 보안 위협으로부터 사용자 및 사용자의 데이터를 보호할 수 있습니다.
: 경고를 직접 보여줌으로써 브라우저들은 인증된 CA가 발급한 인증서를 이용하여 데이터를 제공하는 안전한 서버를 사용할 수 있게 사용자를 유도합니다.
Reference:
[네트워크]HTTP와 HTTPS의 차이점 그리고 동작 방식: https://devdy.tistory.com/14[네트워크]HTTP와 HTTPS의 차이점 그리고 동작 방식
HTTP와 HTTPS의 차이점이 뭔가요? 음...HTTPS가 더 보안에 강하다는 점? 그럼 왜 보안에 강할까, 대체 어떤 차이 점이 있을까 이 글을 다 마쳤을 때 적어도 저 질문에 대해 단답으로 끝내는 일이 없도
devdy.tistory.com
Http와 Https 이해와 차이점 그리고 오해(?): https://jeong-pro.tistory.com/89
Http와 Https 이해와 차이점 그리고 오해(?)
HTTPS (feat. http) HTTPS에 대해 알아보기 전에 HTTP를 간단하게 설명할 수 있으면 좋다. HTTP는 HyperText Tranfer Protocol로 WWW상에서 정보를 주고 받는 프로토콜이다. 클라이언트인 웹브라우저가 서버에 HTT..
jeong-pro.tistory.com
'Background' 카테고리의 다른 글
Node.js란? (0) 2022.05.14 let, var, const의 차이점 & 호이스팅(Hoisting) (0) 2022.04.29 Project Workflow (1) 2022.02.22 HTTP (0) 2022.02.10 Server-Side API Calls to External APIs (0) 2022.01.10