HTTPS

Siwoo Pak·2021년 9월 7일
0

http/네트워크

목록 보기
7/12

1. HTTPS 프로토콜

  • Hyper Text Transfer Protocol Secure Socket layer의 약자
  • 보통 HTTP SSL(TLS), HTTP over Secure이라고도 부름
  • Http 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법

1-1. SSL,TLS

  • SSL(Secure Sockets Layer)
    • 클라이언트와 서버 간의 안전한 링크를 통해 송수신되는 모든 데이터를 안전하게 보장하는 과거의 보안 표준 기술이었으나, TLS로 대체됨.
    • 즉, HTTP만을 위한 프로토콜이 아닌 응용계층의 여러 프로토콜의 보안을 위해 발명된 프로토콜.
    • 조금 더 정확히는 TCP를 보호하는 프로토콜
    • 장점:
      • 기밀성(암호화)
      • 데이터 무결성
      • 서버인증
    • 클라이언트 또는 서버에서 메시지를 만들어 상대에게 전달할 떄, 응용계층에서 만들어진 전송계층으로 가기 전 SSL을 통해 데이터가 암호화가 됨. 그 후 전송계층을 통해 네트워크로 데이터가 상대에게 전달이 됨.
  • TLS(Transport Layer Security)
    • 클라이언트와 서버사이의 기밀성과 무결성 통신을 보장하기 위한 결정을 하도록 돕는 것이 목적
    • 네트워크로 연결된 두 개의 어플리케이션 혹은 디바이스가 비밀스럽고 강건하게 정보를 교환하도록 하는 표준
    • TLS가 제공하는 세 가지 주요 서비스
      • 인증 : 커뮤니케이션에 대한 각각의 당사자가 상대방이 주장하는 사람인지 검증하게 함.
      • 암호화 : 데이터는 사용자 에이전트와 서버 사이에 전송이 되는 동안에 허용되지 않은 쪽에 의해 데이터가 읽혀지고 가로채지는 것을 방지하기 위해서 암호화됨.
      • 무결성 : 데이터를 암호화하고 전송하고 복호화는 동안에 정보가 없어지거나 손실되거나 위변조되지 않는 것을 보장함.

1-2. 암호화 방식

  • 대칭키
    • 두 명의 사용자가 있을 때 둘 모두가 같은 암호키를 가지고 대화하는 방식. 때문에 알고리즘이 상대적으로 간단하면 동작이 빠름.
  • 공개키
    • 대칭키 방식의 단점인 두 사용자가 모두 같은 비밀번호를 알아야 한다는 단점을 보완하고자 고안된 방법. 두 사용자가 모두 같은 키를 사용하기 위해선 한 사용자가 생성한 키를 상대방에게 전달해야 하는데 이 때 암호키가 유출될 수 있기 때문
    • 공개키 방식은 2개의 키를 가지고 암호화를 진행하게 됨. 한 키는 공개가 되어 있으며(공개키), 나머지 하나는 키의 주인만이 알수 있음(개인키).
    • 우선 메시지를 전달하고자 하는 대상의 공개키로 내가 전달할 메시지를 암호화하고, 전달받은 상대방은 자신의 개인키를 이용하여 메시지를 복호화하면 됨.

1-3. SSL과 CA

  • CA: SSL 인증서를 발급하는 기관으로, 선뢰할 수 있는 기관들을 의미함.

  • SSL 통신과정:

    1)SSL 인증서가 의도한 서비스임을 보장하는 방법

    • 브라우저는 이미 CA기관 리스트를 알고 있음.
    • 브라우저를 통해 사용자가 웹서비스에 접근함.
    • 웹서비스는 CA기관을 통해 발급받은 SSL인증서(인증기관의 비밀키로 암호화되어있음)를 사용자에게 전달함.
    • 브라우저는 SSL인증서가 CA리스트에 포함되어있는지를 확인
    • 포함되어 있다면, 브라우저는 해당 SSL인증서에 대응하는 CA리스트에 존재하는 공개키를 이용해 SSL인증서를 복호화함 ==> 공개키로 복호화에 성공한다면, 이에 대응되는 비밀키로 암호화가 되었다는 의미이므로, SSL인증서에 해당하는 서비스의 응답임을 확신할수 있음. 즉 신뢰할수 있는 서버임을 알수 있음.

    2)HTTPS의 SSL 통신방법
    대칭키 주고받기

    • 클라이언트는 특정 방법을 통해 "premaster secret"이라는 키를 생성. 이키는 데이터 통신시 대칭키 암호화에 사용될 세션 키를 만들 때 사용 되므로 중간 공격자에 의해 노출되어서는 안됨 => 서버의 공개키를 이용해 "premaster secret"를 암호화하여 서버에 전달
    • 서버는 클라이언트로부터 전달받은 "암호화된 premaster secret"키를 자신의 비공개크를 이용하여 복호화
    • 서버와 클라이언트는 모두 premaster secret을 가지게 됨. 이제 서버와 클라이언트는 모두 premaster secret을 일련의 과정을 거쳐서 세션키로 만듦.
    • 서버와 클라이언트는 세션키를 이용해 대칭키 암호화하여 데이터를 주고 받음.

1-3. HTTPS의 필요성

  • 무결성과 기밀성을 지키기 위해서
    • 무결성: 메시지가 조작되지 않음
    • 기밀성
      • 메시지를 중간에 가로챌 수 없음
      • 메시지는 암호화 되어있음.

1-4. 비공개키와 대칭키 암호화 방식을 같이 사용하는 이유

  • 공개키를 이용한 통신 방식은 이를 복호화 암호화하는데 컴퓨팅 파워를 많이 소모하기 때문에 효율적이지 못함.
  • 성능상 이점이 있지만, 처음 키를 주고 받을 때, 키가 누출된 염려가 있음. 즉 키를 주고 받기 위한 방식이 필요함.
profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글