네트워크 | HTTPS

sojung·2022년 5월 12일
0

Network

목록 보기
2/4
post-thumbnail

HTTP의 문제

HTTP(HyperText Transfer Protocol)는 말 그대로 하이퍼텍스트를 전송하기 위해 사용되는 통신 규약이다. 정보를 네트워크를 통해 텍스트로 주고 받게 되는데, 네트워크에서 전송 신호를 인터셉트하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. 따라서 이러한 문제를 해결하기 위해 HTTP에 S(Secure Socket)이 추가된 HTTPS가 도입되었다.


HTTPS

  • 데이터를 주고 받는 과정에서 '보안' 요소가 추가
  • 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 동작
  • 일반 텍스트를 사용하는 대신, 정보를 암호화하는 TLS이나 SSL 프로토콜을 사용하여 데이터를 암호화

HTTPS 장단점

당연하게도 HTTPS는 안전하다. 서버와 브라우저 사이의 통신에 인터셉트가 일어나지 않도록, 웹사이트의 무결성을 보호해준다.

HTTPS에는 단점이 없는가?

  • SSL을 사용하기 때문에, 서버와 클라이언트 모두 암복호화 처리가 필요하다. 따라서 서버에 부하를 주어 하드웨어 리소스 소비가 불가피하고, 그 때문에 HTTP보다 통신 속도가 느리다.
    -> 중요한 정보만을 암호화하여 리소스를 절약할 수 있다.
  • HTTPS를 사용한다고 무조건 안전한 것은 아니다. 신뢰할 수 었는 CA기업을 통해 인증서를 발급할 수 있다.
  • 추가 비용이 발생한다.

HTTPS 알고리즘

공개키 방식과 공개키의 느리다는 단점을 보완한 대칭키 방식을 함께 사용한다. 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

공개키 방식

공개키와 비공개키를 이용하는데, 이걸 key pair라고도 한다. 둘이 쌍이라는 이야기임. 평문을 공개키로 암호문으로 만들고, 다시 복호화하기 위해서는 비공개키가 필요하다. 반대로 평문을 비공개키를 이용해서 암호문으로 만들면, 공개키로 복호화가 가능하다.
후자도 가능하지는 몰랐네.....

그렇다면 공개키 방식을 사용하는 이유는 뭘까.

공개키 방식을 사용하는 이유는 배달사고때문이다. 평문과 암호문을 나만 보면 대칭키 방식을 사용하면 된다. 하지만 특정한 상대에게 메세지를 보내야하는 경우에, key를 보내야 하는데, 이때 key가 도난당할 수 있음.

대칭키 방식

대칭키 도난은 어떻게 당하는거지


목표는 (A가 B에게 암호문과 키를 전달하여) B가 평문을 아는 것이다.
준비물은 A의 대칭키와 평문이다. 여기서 평문은 hello라고 하였다(세상 귀찮음).

  1. 먼저 A는 평문을 대칭키를 이용하여 암호화한다.
  2. 암호문과 대칭키를 B에게 전달한다.
    3-1. B는 암호문을 대칭키를 이용하여 복호화하여 평문을 알 수 있다! 짜잔.
    3-2. 하지만 네트워크로 암호문과 대칭키를 전달하는 과정에서 Cracker가 키를 훔쳐서 복화할 수 있음 주의.

공개키는 안전하지

목표는 위와 같이 B가 평문을 아는 것!
준비물은 B의 공개키와 비밀키와 평문이다.

  1. 먼저 A는 평문을 B의 공개키를 이용하여 암호화한다.
  2. 암호문을 B에게 전달한다.
    3-1. B는 암호문을 자신의 비밀키를 이용하여 복호화하여 평문을 알 수 있다!
    3-2. Cracker가 암호문을 훔쳐서 공개키로 복호화하려하지만, 실패!!ㅠ 공개키로 암호화하였기 때문에 비밀키로만 복호화가 가능하기 때문이지.

여기서 A가 공개키로 평문을 암호화하였지만, A도 비밀키가 없기 때문에 복호화가 불가능하다.

전자서명

공개키 방식은 보안에 취약하지 않기(?)때문에 전자서명에 사용된다.

전자서명의 목표는 B가 작성한 내용이 정말로 B가 작성했는가? 인증에 있음!

  1. B가 평문을 B의 비밀키를 이용하여 암호화한다. 이 암호문이 전자서명이다.
  2. 평문과 암호문을 공개영역에 올린다.
  3. A는 B의 공개키를 이용하여 복호화한다. 복호화한 결과가 B가 작성한 평문과 일치하면 인증 성공!
  4. Cracker 본인이 만든 공개키와 비밀키가 있고, 조작된 평문이 있다. Cracker의 비밀키를 이용하여 조작된 평문을 암호화하고, 이 암호문과 조작된 평문을 공개영역에 올린다.
  5. 만약 A가 이 암호문을 가지고 와서 B의 공개키로 해독을 하면, 해독이 되지 않고, 평문도 다르다. -> 해당 내용은 B가 작성한 것이 아님!

정리

HTTP의 문제를 해결하기 위해서 HTTPS가 등장했고, 해당 알고리즘에는 공개키 방식과 대칭키 방식이 있다. 대칭키 방식에는 보안 문제가 있기 때문에 공개키 방식으로 보안 취약점을 개선!

profile
걸음마코더

0개의 댓글