[용어 정리] Http와 Https의 차이점

[용어 정리] Http와 Https의 차이점


들어가기전에) 웹 브라우저는 http를 사용하지 않고 그냥 입력해도 http://를 넣어준다.

HTTP

  • HTML같은 문서를 웹 브라우저가 웹 서버에 요청하는 프로토콜(통신 규약)
  • 그냥 텍스트 교환이다. 
  • HypterText Tranfer Protocol(WWW 상에서 정보를 주고 받는 프로토콜)
  • 복잡한 Binary 데이터가 아니라 그냥 텍스트 메시지를 주고 받는다.
  • 물론 그 텍스트 메시지 안에 HTML페이지도 들어가 있다.
  • 텍스트이기 때문에 만약 네트워크 안에서 누가 그 신호를 가로채어 본다면 내용이 그대로 보이게 된다. 
    • ex) 메일을 읽고 있는데 그 신호를 가로챈다면 메일 내용을 읽을수 있다.



HTTPS

  • HTTP와 거의 같지만 모든 통신 내용을 암호화하는 것이 다르다.
  • HTTPS의 S는 secure socket, 즉, 안전한 통신망을 뜻한다.
  • HTTP가 SSL을 사용하면 HTTPS가 됨
  • HTTPS의 암호화 원리의 핵심은 공개키 암호화 방식




SSL(secure socket layer)

  • 네트워크 내에서 메시지 전송의 안전을 관리하기 위해 만들어진 프로그램 계층
  • SSL인증서 : 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서
  • KEY를 가지고 있어야 암호화와 복호화가 가능
  • 대칭키 : 암호화 하는쪽과 복호화 하는쪽이 같은 키를 가지고 있어야 함
    • 단점 : 너무 위험하다... Client쪽에 KEY를 보내다가 중간에 가로침당하면.. 망함
  • 공개키, 개인키 : A, B라는 2개의 KEY가 있어서 A key로 암호화하면 B key로 복호화를 해야하고 B key로 암호화를 하면 A key로 복호화를 해야 함
    • 장점 : KEY를 배달하는 사고가 발생하지 않음
      공개키로는 암호화는 할 수 있지만 복호화는 할 수 없음
  • -encrypt  옵션은 암호화 -decrypt 옵션은 복호화
  • 인증의 원리(암호화의 반대로 보면 됨)
    • A가 가지고 있는 개인키로 암호화 한 후에 상대방에게 보내면 상대방이 가지고 있는 공개키로 복호화가 되면 이것은 A가 보낸것을 확신 할 수 있음


암호를 다 대입해보면 되지 않나?

  • 사실 시간이 주어지면 암호를 풀 수도 있다
  • ex) 1024비트 암호화를 사용한다면 암호 키가 1024비트, 즉 2의 1024승이다.
  • 암호를 계산해서 푸는 방법은 없다.(있다면 그런 암호화는 폐기된다.)
  • 키를 모르고 암호화를 푼다는 것은 모든 키를 하나씩 다 대입해서 푸는것
  • 그러면 평균적으로 2의 512승 번을 해봐야 한다......
  • 슈퍼컴퓨터로....몇천년...


결론
  • 그러면 다 안전한 https쓰면 되는거 아닌가?
    • https 암호화를 하려면 웹 서버에 부하가 생김
    • 서버의 인증서를 사려면 Verisign같은 업체에서 비싼 돈을 주고 사야함
    • 하지만 외국 금융 사이트에서는 https가 필수
  • 아무나 봐도 상관없다 -> http
  • 남에게 보이면 안 되는 금융 정보나 메일 등 중요한 것 -> https



참고


댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?