GDSC Sookmyung 활동/10 min Seminar

http와 https

smjan27 2022. 2. 21. 20:35

목차

  1. HTTP와 HTTPS의 개념
  2. HTTPS의 특징 - ① 보안성
  3. HTTPS의 특징 - ② 암호화 기술
  4. HTTPS의 동작 과정

HTTP와 HTTPS의 개념

HTTP (Hypertext Transfer Protocol)

우리가 잘 알고 있는 http는 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜입니다. 이 때 패킷을 통해 클라이언트가 요청한 리소스나 유입 경로 같은 각종 정보를 확인할 수 있습니다.

HTTPS(Hypertext Transfer Protocol Secure)

HTTP에 SSL과 TLS 프로토콜을 더해 보안을 강화한 프로토콜입니다. HTTPS로 접속하면 패킷이 암호화되기 때문에 내용을 확인할 수 없습니다

HTTPS의 장점으로는 웹사이트에 전송되는 정보가 암호화된다는 점, 위조된 사이트가 아니라 믿을 만한 사이트라는 것을 보장한다는 점이 있습니다.

 

HTTPS의 특징 - ① 보안성

SSL(Secure Socket Layer)

일명 '디지털 인증서'라고 불리는 SSL은 웹 서버와 브라우저 간에 통신되는 모든 데이터를 안전하게 보장하는 보안 표준 기술입니다.

TLS(Transport Layer Security)

SSL에서 발전된 프로토콜입니다. 하지만 일반적으로는 SSL이라는 용어가 많이 사용되기 때문에 SSL과 TLS 두 용어를 혼용하기도 합니다.

 

HTTPS의 특징 - ② 암호화 기술

HTTPS는 암호화 기술을 구현하기 위해 대칭키 방식과 비대칭키 방식을 모두 활용합니다.

대칭키 방식

같은 키로 암호화와 복호화를 모두 하는 방식입니다. 컴퓨터에 부담이 가지 않는 장점이 있는 반면, 중간에 키를 탈취당할 위험이 있습니다.

비대칭키 방식 (공개키-개인키)

대칭키 방식의 한계점을 해결한 방식입니다. 공개키는 누구에게나 공개되어있으며, 개인키는 개인만 소장하는 키입니다. 공개키로 암호화한다면 개인키로만 복호화할 수 있습니다.

HTTPS의 동작 과정

사이트가 믿을 만한지 검증하고 HTTPS가 동작하는 과정은 다음과 같습니다.

클라이언트(사용자), 서버(사이트), 그리고 공신력 있는 인증기관 이렇게 세 곳이 있다고 가정합니다.

  1. 사이트는 인증기관에 사이트의 정보와 사이트의 공개키를 전달합니다.
  2. 인증기관은 전달받은 정보를 검증하고 나서 인증기관의 개인키로 암호화하고 사이트 인증서를 생성합니다.
  3. 인증기관은 생성된 사이트 인증서를 사이트에 전달합니다.
  4. 인증기관은 사용자에게 인증기관의 공개키를 전달합니다. 이는 사용자의 브라우저에 자동으로 내장됩니다.
  5. 이제 사용자가 사이트에 접속을 요청합니다. 그러면 사이트는 신뢰할 수 있는 사이트임을 증명하기 위해 사용자에게 사이트 인증서를 전송합니다.
  6. 사용자는 사이트 인증서를 검증합니다. 2번에서 인증서를 인증기관의 개인키로 암호화했기 때문에 이 인증서가 진짜이면 인증기관의 공개키로 복호화할 수 있습니다.
  7. 복호화하면 사이트 정보와 사이트의 공개 키를 확인할 수 있습니다.

이제 서버와 클라이언트 간에 통신을 할 때는 대칭키 방식을 활용합니다. 이 때 대칭키를 공유할 때 비대칭키 방식을 활용함으로써 대칭키가 탈취당할 위험을 방지합니다. 따라서 HTTPS는 대칭키와 비대칭키 방식을 모두 활용합니다.

8. 사용자는 대칭키를 사이트 공개키를 활용해서 암호화하고 사이트에 전달합니다.
9. 사이트는 자신의 개인키를 통해 복호화해서 대칭키를 얻습니다.
10. 이제 서버와 클라이언트 모두 대칭키가 있기 때문에 이 대칭키로 암호화와 복호화를 해서 정보를 주고받습니다.

 

참고자료

'GDSC Sookmyung 활동 > 10 min Seminar' 카테고리의 다른 글

Promise와 async/await  (0) 2022.02.28
#야나도#쿠버네티스#들어봤어  (0) 2022.02.28
Microservice Architecture  (0) 2022.02.07
CS를 공부하는 이유  (0) 2021.06.28
The Go Programming Language  (0) 2021.06.21