HTTPS, SSL / TLS

이상훈·2023년 3월 27일
0

중요 개념 두가지

  1. HTTPS(https://)는 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP(http://)입니다.
  1. SSL 동작 방법

1

HTTPS(Hypertext Transfer Protocol Secure)


HTTPS는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발한 넷스케이프 웹 프로토콜이며, 전자 상거래에서 널리 쓰인다.

HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 따라서 데이터의 적절한 보호를 보장한다. HTTPS의 기본 TCP/IP 포트는 443이다.

보호의 수준은 웹 브라우저에서의 구현 정확도와 서버 소프트웨어, 지원하는 암호화 알고리즘에 달려있다.

HTTPS를 사용하는 웹페이지의 URI는 'http://'대신 'https://'로 시작한다.

HTTP (HyperText Transfer Protocol)


HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML(=HyperText) 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며, 80번 포트를 사용한다. 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었다.

HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.

HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.

SSL: 보안 소켓 계층(SECURE SOCKETS LAYER)


SSL은 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술입니다. 이 기술은 해커가 개인 데이터나 금융 데이터 등의 전송되는 정보를 보거나 훔치는 것을 방지합니다.

TLS(Transport Layer Security)


네스케이프에 의해서 SSL이 발명되었고, 이것이 점차 폭넓게 시용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었다. TLS라는 이름보다 SSL이라는 이름이 훨씬 많이 사용되고 있다.

✅ HTTPS는 왜 사용하는가?


  • http를 사용하면 상대에게 전송하거나 상대가 전송한것을 받을때 제3자의 변조, 감청이 가능하다.(예를 들어 로그인 정보, 금융정보가 노출될 수 있다.)
  • 그래서 http에 SSL 서비스를 사용하여 보안측면을 강화해야한다.
  • 운용하는 입장이나 사용하는 입장에서 https를 사용하지 않은것을 확인했다면 보안에 취약하다고 인지할 수 있어야 한다.

2

대칭키 방식


  • 암호화 복호화 할때 1개의 동일한 KEY를 사용함
  • 전송할때 데이터는 암호화를 해서 안전한데 KEY가 탈취되면 보안에 취약함
  • 암호를 주고 받는 사람들 사이에 대칭키를 전달하는것이 어려움

공개키 방식


  • 그래서 대칭키를 보완한 방식으로 나옴(보안이 강화된 대신 컴퓨팅파워를 많이 사용해서 성능은 안좋음)

  • KEY를 두개를 가짐

  • A키로 암호화를 하면 B키로 복호화 할 수 있고, B키로 암호화하면 A키로 복호화 할 수 있는 방식

    위의 특징으로 사용자와 서버는 서로를 확인할 수 있다.

  • 이 방식에 착안해 두개의 키 중 하나를 공개키(public) 나머지를 비공개키(private)로 지정한다.

    비공개키 = 비밀키 = 개인키

  • 공개키 활용방법

  1. 비공개키의 소유자는 비공개키를 이용해서 정보를 암호화 한 후에 공개키와 함께 암호화된 정보를 전송(= 인증서 활용방식)한다.

    내가 보내고자한 상대가 받았다면 전송한 공개키로 암호화된 정보를 복호화할 수 있다.

  2. 정보와 공개키를 획득한 사람은 공개키를 이용해서 암호화된 정보를 복호화한다.

    암호화된 데이터를 공개키를 가지고 복호화 할 수 있다는 것은 그 데이터가 공개키와 쌍을 이루는 비공개키에 의해서 암호화 되었다는 것을 의미한다. 즉, 공개키가 데이터를 제공한 사람의 신원을 보장해주게 되는것이다.

인증서


  • SSL 인증서의 역할
  1. 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장
  2. SSL 통신에 사용할 공개키를 클라이언트에게 제공

  • SSL 인증서의 내용

  1. 서비스의 정보(인증서를 발급한 CA, 서비스의 도메인 등등)

    비공개키로 암호화되어있음

  2. 서버 측 공개키

  • CA
    - 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장해주는 민간기 업을 CA(Certificate authority)라 한다.
    - CA는 신뢰성이 엄격하게 공인된 기업만 할 수 있음
    - SSL을 통해서 암호화된 통신을 제공하려는 서비스는 CA를 통해서 인증서를 구입해야한다.
    - CA가 제공하는 인증서를 사용하면 주소창에 마크가 표시된다.
    - 브라우저에 인증된 CA기관 리스트가 내장되어 있다.

✅ SSL 동작 방법


  1. 사용자가 웹브라우저로 사이트에 접속하면 웹서버는 인증서를 웹 브라우저에게 보냅니다. 이 인증서에는 인증기관의 개인키로 암호화된 사이트의 정보와 공개키가 들어 있습니다.

    이때 브라우저는 이 인증서를 발급한 CA가 자신이 내장한 CA의 리스트에 있는지를 확인한다. (CA기관 검증)

  2. 웹 브라우저는 이미 가지고 있는 인증기관의 공개키로 웹 서버에서 받은 인증서를 복호화 해서 확인합니다.

    2번이 가능하다면 이 인증서가 CA의 비공개키에 의해서 암호화 된것을 의미한다. (상대 검증)

  3. 웹 브라우저는 실제 데이터의 암호화에 사용될 대칭키를 생성하고, 인증서에서 꺼낸 웹 서버 측의 공개키로 암호화 해서 웹 서버로 보냅니다.

    실제 데이터 : 대칭키 사용
    대칭키의 키 : 공개키 사용

  4. 웹서버는 자신이 가지고 있는 개인키로 웹 브라우저가 보내온 대칭키를 복호화 해서 얻습니다. 이제 이 대칭키로 데이터를 암호화해서 주고 받게 됩니다.

프로젝트


  • 가비아에서 도메인을 구매해서 사용하는데 Let's Encrypt라는 CA기관에서 인증서를 관리해줌

참고


생활코딩 https, ssl
대칭키 vs 공개키(비대칭키)
SSL 동작 방식을 간단히 알아보기

0개의 댓글