[보안/네트워크] HTTP와 HTTPS

HenryHong·2022년 7월 19일
0
post-custom-banner

HTTP의 보안 취약점을 해결하기 위한 프로토콜이 HTTPS이고 SSL을 이용해 보안 취약점을 해결한다. HTTP의 문제점과 HTTPS가 사용하는 SSL의 암호화 방식에 대해서도 알아보자.

HTTP

개념

  • HyperText Transfer Protocol
  • 웹 서버와 사용자 컴퓨터에 설치된 웹 브라우저 사이에 문서(HyperText)를 전송(Transfer)하기 위해 사용되는 통신규약(Protocol)이다.
  • HTTP 서버는 기본 포트인 80번 포트에서 서비스 대기 중이며, 클라이언트(웹 브라우저)가 TCP 80 포트를 사용해 연결하면 서버는 요청에 응답하며 정보를 전송한다.
  • HTTP는 정보를 텍스트 기반의 평문으로 주고 받기 때문에 네트워크에서 정보를 탈취하거나 변조할 수 있는 보안적 위험이 있다.
    아래의 HTTP의 보안 취약점을 해결하기 위한 프로토콜이 HTTPS이다.

HTTP의 문제점

  • 평문 통신이기에 도청이 가능하다. -> 암호화
  • 완전성을 증명할 수 없기 떄문에 변조가 가능하다. -> 암호화
  • 통신 상대를 확인하지 않기 때문에 위장이 가능하다. -> 인증
  • 의미없는 리퀘스트도 수신하기 때문에 DoS 공격을 당할 수 있다.
  • 통신하고 있는 상대방이 허가된 상대인지 확인할 수 없다.

HTTPS

개념

  • HyperText Transfer Protocol + Secure Socket Layer
  • 기본적인 사항은 HTTP와 거의 동일하지만, HTTP 메세지에 포함되는 콘텐츠 정보에 보안요소(암호화)가 추가되는 것이 가장 큰 차이점이다.
  • 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 SSL계층을 통해 암호화 된다.
  • HTTPS는 HTTP 하부에 SSL 또는 TLS의 보안 계층이 추가된다.

그렇다면 SSL 계층에서는 정보를 어떻게 암호화 할까? 아래 SSL 인증서에서 알아보자.

HTTPS 보안 작동 방식

HTTP vs. HTTPS

HTTPS에는 보안(암호화) 기능이 추가된 만큼 HTTP에 비해 CPU나 메모리 등 리소스를 사용하기 떄문에 처리 속도가 느리다.
요즈음에는 서버와 네트워크 발전으로 속도 차이가 거의 없다.
HTTPS는 사용자 정보가 포함된 민감 정보 또는 결제 관련 정보 등과 같이 정보 보호가 꼭 필요한 네트워크 통신 시 사용할 수 있다.
HTTP는 커머스의 특정 상품 정보나 날씨 정보 등과 같이 정보가 유출되어도 상관없는 경우에 사용 할 수 있다.

SSL 인증서

개념과 역할

  • 클라이언트와 서버간의 통신을 공인된 제 3자(CA) 업체가 보증해주는 전자화된 문서이다.
  • 통신 내용이 노출, 변경되는 것을 방지한다.
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지 확인한다.
  • SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

대칭키 암호화(비밀키)

  • 비밀키는 개인키(private key)와 동일하다.

  • 암호화와 복호화를 하나의 비밀키로 사용하는 방식이다.

  • 하나의 비밀키로 클라이언트와 서버가 같이 사용하기 때문에 양측 모두 비밀키를 가지고 있어야 한다. 즉, 비밀키를 교환하는 과정이 필요하다.

  • 비밀키를 전달하는 과정에서 키가 탈취되면 암호화 내용이 모두 유출될 수 있다는 치명적인 단점이 있다.

  • 하지만 비대칭키 알고리즘 방식에 비해 속도가 빠르다는 장점이 있다.

  • 대표적인 대칭키 알고리즘으로 DES, SEED, ARIA 등이 있다.

비대칭키 암호화(공개키 + 비밀키)

  • 공개키(public key)와 비밀키(private key)를 사용한다.

  • 공개키로 암호화 한 문서는 비밀키로만 복호화 할 수 있고, 비밀키로 암호화하면 공개키로만 복호화 할 수 있다.

  • 공개키는 공개키 저장소에 등록되어 있으며 수신자의 공개키를 얻을 수 있다.

  • 비대칭키의 암호화 방식에는 공개키를 이용한 암호화 방식과 비밀키를 이용한 전자서명 두 가지 방식이 있다.

  • 공개키를 이용한 암호화 방식은 비밀키의 소유자만 복호화 할 수 있기 때문에 보안적으로 안전하다.

  • 비밀키를 이용한 전자서명 방식은 정보 제공자의 신원을 확인할 수 있는 장점이 있다.

// 공개키 암호화를 이용한 공개키 암호화 방식
1. A는 A-공개키와 A-비밀키를 갖고있다.
2. B는 B-공개키와 B-비밀키를 갖고있다.
3. A와 B의 공개키는 공개키 저장소에 등록되어 있고, 비밀키는 각자 가지고 있다.
4. A-공개키로 암호화된 내용은 A-비밀키로만 복호화 할 수 있다. (B도 동일)
5. A는 B만 볼 수 있도록 공개키 저장소에서 B의 공개키를 얻고 정보를 B-공개키로 암호화하여 전송한다.
6. B는 자신의 B-비밀키로 정보를 복호화하여 확인한다.
7. 중간에 정보가 탈취되어도 B-비밀키로만 복호화 할 수 있기 때문에 탈취자는 아무것도 확인 할 수 없다.
// 비밀키 암호화를 이용한 전자서명 방식
1. A는 A-공개키와 A-비밀키를 갖고있다.
2. A는 정보를 A-비밀키로 암호화하여 B에게 전송한다.
3. B는 공개키 저장소에서 A-공개키를 얻어 복호화하여 A의 신원을 확인한다.
4. 이를 통해 B는 정보 제공자인 A의 신원을 보장받을 수 있다.

비대칭키 알고리즘은 대칭키 알고리즘에 비해 느린 단점이 있어서, 긴 문서의 암호화보다는 대칭키 알고리즘의 키값에 대해 암호화를 사용한다.

대표적인 비대칭키 알고리즘으로 RSA, Elgamal가 있다.

참고

https://post.naver.com/viewer/postView.nhn?volumeNo=16561296&memberNo=1834
https://wayhome25.github.io/cs/2018/03/11/ssl-https/
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#http와-https

profile
주니어 백엔드 개발자
post-custom-banner

0개의 댓글