본문 바로가기

CS

2.5 HTTP (2)

2.5.4 HTTPS

  • HTTP/2는 HTTPS 위에서 동작한다. HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말한다.
  • 이를 통해 통신을 암호화 한다.
  • SSL/TLS
    • SSL은 SSL 1.0부터 시작해서 TLS 1.3까지 버전이 올라가며 마지막으로 TLS로 명칭이 변경되었으나 이를 합쳐 SSL/TLS라고 불린다.
    • SSL/TLS는 전송 계층에서 보안을 제공하는 프로토콜이다.
    • 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다.
    • 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
    • 보안세션
      • 보안이 시작되고 끝나는 동안 유지되는 세션
      • SSL/TLS는 핸드쉐이크를 통해 세션을 생성하고 이를 기반으로 상태 정보 등을 공유한다.
      • 클라이언트와 서버와 키를 공유하고 인증, 인증확인 등의 작업이 일어나면 단 한 번의 1-RTT가 생긴 후 데이터를 송수신한다.
      • 클라이언트에서 사이퍼 슈트를 서버에 전달하면 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는지 확인한다. (사이퍼슈트는 프로토콜, AEAD 사이퍼모드, 해싱 알고리즘이 나열된 규약이다)
      • 제공할 수 있으면 인증메커니즘이 시작되고 이후 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작됨

  • AEAD 사이퍼모드
    • AEAD는 데이터 암호화 알고리즘이며 AES_128_GCM 등이 있다.
  • 인증메커니즘
    • CA에서 발급한 인증서를 기반으로 이루어진다.
    • CA에서 발급한 인증서는 안전한 연결을 시작하는 데 있어 필요한 공개키를 클라이언트에 제공하고 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장한다.
    • 인증서는 서비스 정보, 공개키, 지문, 디지털 서명 등으로 이루어져있다.
  • CA 발급과정
    • 자신의 사이트 정보와 공개키를 CA에 제출
    • CA는 공개키를 해시한 값인 지문을 사용하는 CA의 비밀키 등을 기반으로 CA 인증서를 발급
  • 암호화 알고리즘
    • 키 교환 암호화 알고리즘으로는 대수곡선 기반의 ECDHE 또는 모듈식 기반인 DHE를 사용
    • 둘 다 디피-헬만 방식을 근간으로 만들어짐
  • 디피-헬만 키 교환 암호화 알고리즘
    • 암호키를 교환하는 하나의 방법이다.

  • a와 b와 y만 아는 상태라면 x값을 구하기가 어렵다.

  • 클라이언트와 서버 모두 개인키와 공개키를 생성하여 공개키를 서로에게 보내고 공개키와 개인키를 결합하여 PSK가 생성된다면 악의적인 공격자는 개인키 or 공개키를 가지고도 PSK가 없어 아무것도 할 수 없다.
  • 해싱 알고리즘
    • 데이터를 추정하기 힘든 더 작고 섞여 있는 조각으로 만드는 알고리즘
    • SHA-256알고리즘과 SHA-384 알고리즘이 있다.
    • SHA-256
      • 함수의 결과값이 256비트인 알고리즘이며 많은 블록체인 시스템에서 사용한다.
      • 해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시를 반환한다.
  • SEO에도 도움이 되는 HTTPS
    • 구글은 SSL 인증서를 강조해왔고 사이트 내 모든 요소가 동일하다면 HTTPS 서비스를 하는 사이트가 그렇지 않은 사이트보다 SEO 순위가 높을 것이라고 공식적으로 밝혔다.
    • SEO는 검색엔진 최적화를 뜻하며 사용자들이 구글, 네이버 같은 검색엔진으로 웹 사이트를 검색했을 때 그 결과를 페이지 상단에 노출시켜 많은 사람이 볼 수 있도록 최적화 하는 방법을 의미한다.
    • SEO 관리 방법으로 캐노니컬 설정, 메타 설정, 페이지 속도 개선, 사이트맵 관리 등이 있다.
  • 캐노니컬 설정
<link rel="canonical" href="#" />
  • 메타 설정
    • html 파일의 가장 윗부분인 메타를 잘 설정해야한다.
  • 페이지 속도 개선
  • 사이트맵 관리

HTTPS 구축 방법

  • CA에서 구매한 인증키를 기반으로 서비스 구축
  • HTTPS를 제공하는 로드밸런서 두기
  • 서버 앞단에 HTTPS를 제공하는 CDN을 두기

2.5.5 HTTP/3

  • HTTP/3은 www에서 정보를 교환하는데 사용되는 HTTP의 3번째 버전
  • TCP 위에서 돌아가는 HTTP/2와는 달리 HTTP/3은 QUIC이라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반으로 돌아간다.
  • 또한 HTTP/2에서 장점이었던 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점이 있다.
  • 초기 연결 설정시 지연 시간 감소
    • QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거러운 3-way handshake과정을 거치지않아도 된다.
    • QUIC은 첫 연결설정에 1-RTT만 소요된다.
    • 클라이언트가 서버에 어떤 신호를 한 번 주고, 서버도 응답하기만 하면 통신을 바로 시작한다.

 

'CS' 카테고리의 다른 글

3.2 메모리  (0) 2022.09.02
3.1 운영체제와 컴퓨터  (0) 2022.08.31
2.5 HTTP (1)  (0) 2022.08.28
2.4 IP 주소  (0) 2022.08.27
2.3 네트워크 기기  (0) 2022.08.26