관리 메뉴

JUNGKIMHOON

HTTP와 HTTPS 본문

개발

HTTP와 HTTPS

JUNGKIMHOON 2020. 10. 19. 15:06

HTTP vs. HTTPS

 

HTTP (Hypertext Transfer Protocol)

인터넷에서 데이터를 주고 받기 위한 (주로 HTML 문서) 프로토콜이다. OSI 7계층 중 application layer에 위치한다.

HTTP의 패킷은 암호화되지 않은 데이터를 전송한다. 때문에, 서버와 클라이언트가 주고 받는 데이터가 그대로 노출될 위험이 존재한다.

 

HTTPS (Hypertext Transfer Protocol Over Secure Sockey Layer)

HTTP 프로토콜에 보안이 강화된 통신 규약이다.

SSL(보안 소켓 계층)을 사용하여 데이터를 암호화해 보안문제를 해결한다.

SSL 인증서는 클라이언트가 서버에 제공하는 정보를 암호화한다. 때문에 중간에 데이터를 훔치더라도 암호화된 데이터를 해독할 수 없다.

 

암호화 방식

  • 대칭키(Symmetric Key) : 하나의 키로 암호화 복호화를 모두 처리하는 암호화 방식. AES(Advanced Encrytion        Standard)가 대표적인 대칭키 암호화 방식이다.
  • 비대칭키(Asymmetric Key) : 두 개의 키로 암호화와 복호화를 처리하는 암호화 방식. A로 암호화 하면 B로 복호화 하고, B로 암호화하면 A로 복호화 한다. 하나는 자신이 갖고 (개인키), 다른 하나를 상대방에게 공개하여 (공개키) 공개키 암호화 방식 암호화 라고도 한다. 대표적으로 RSA암호 방식이 있다.

 

인증기관(Certification Authority CA)

HTTPS 통신은 제3자 인증을 사용한다. 인증기관(CA)로 부터 공인인증서를 발급받아서 서버에 설치해야 경고 없이 HTTPS 통신을 할 수 있다. CA는 민간기업이지만 신뢰가 검증된 기업이 CA를 운영한다.

 

SSL 동작 방식

  1. A서버측은 HTTPS를 적용하기 위해서 공개키와 개인키를 만든다.
  2. CA를 통해 공개키 관리를 받는다.
  3. CA는 CA만의 공개키와 개인키가 있다.
  4. CA는 A서버의 공개키, 공개키 암호화 방식 등의 인증서를 만들고 CA의 개인키로 인증서를 암호화하여 A서버에 제공한다.
  5. A서버는 Request가 오면 클라이언트에게 암호화된 인증서를 제공한다.
  6. 클라이언트는 html 페이지를 요청하지만 HTTPS가 아니기때문에 CA에서 A서버의 암호화된 인증서를 받게된다.
  7. 클라이언트는 브라우저를 통해 CA의 공개키를 얻어 인증서를 해독한 후 A서버의 공개키를 얻는다
  8. 클라이언트는 A서버의 공개키를 기반으로 암호화된 request를 보낸다

어렵다..

'개발' 카테고리의 다른 글

객체 지향 프로그래밍 OOP  (0) 2020.10.19
Comments