[네트워크] HTTPS / TLS

DEV_HOYA·2023년 12월 8일
0

CS

목록 보기
33/55
post-thumbnail
post-custom-banner

HTTPS : HTTP + TLS

📌 암호화

  • 승인된 당사자만 정보를 이해할 수 있도록 데이터를 스크램블한 방법
  • 이를 복호화하려면 송신자와 수신자가 서로 동의한 가 필요

✅ 스크램블

  • 각 단어나 문자를 패턴에 따라 암호화하는 것이 아니라 무작위 방식으로 개별 데이터 비트를 섞는 것
  • AES의 경우, 10회 스크램블된다. -> 키없이 해독하려면 아주 오랜시간이 소요
  • 비트가 높아질수록 스크램블을 많이 하게됨

⭐ 대칭 암호화

  • 키를 하나만 사용하는 암호화 방법
  • DES, AES

⭐ 비대칭 암호화

  • 공개키 암호화라고도 불림
  • 서로 다른 두개의 키(공개키, 개인키)로 데이터를 암호화
  • 공개키로 암호화된 데이터는 개인키로만 복호화가 가능
  • RSA, DH(디피-헬만)
  • TLS는 부분적인 비대칭 암호화를 사용(TLS 1.3)
  • TLS 핸드셰이크과정에서 비대칭암호화로 인증을 한 후, 세션키를 기반으로 대칭 암호화로 보안적 통신을 시작
  • 대칭암호화보다 비용이 많이 듬

⭐ 암호화의 필요성

  • 의도된 수신자 또는 송신자를 제외하고는 통신을 하이재킹하여 읽을 수 없게 하기 위함
  • 민감한 데이터의 유출을 방지하고 데이터의 무결성을 보장

✅ 데이터 무결성

  • 데이터의 정확성과 일관성

📌 TLS 핸드셰이크

  • SSL이 TLS로 명칭이 변경됨(SSL = TLS)
  • 사용할 TLS버전을 정하고, 서버의 공개키, SSL인증서를 기반으로 인증작업을 수행
  • 이후 대칭암호화를 위해 세션키를 생성
  • 제일 최신이 TLS 1.3버전

✅ TLS(TransportLayer Security Protocol)

  • 전송계층에서 보안을 제공하는 프로토콜
  • 클라이언트와 서버가 통신할 때 TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 함

⭐ 순서

✅ 1~9과정이 1-RTT 소요

  1. Client Hello
  • TLS버전
  • 사이퍼슈트
  • 클라이언트 랜덤값
  • 임시 DH 매개변수를 서버에 보냄
  1. Server Hello
  • 서버는 클라이언트로부터 받은 옵션을 확인
  • 서버와 클라이언트 모두에서 지원하는 가장 높은 TLS버전을 식별하여 결정
  • 사이퍼슈트 리스트 중 지원가능한 것들을 확인
  • 공개키가 포함된 SSL인증서
  • 서버 랜덤값
  • 임시 DH매개변수를 보냄
  • 클라이언트와 서버가 서로 교환한 DH매개변수를 사용하여 임시 암호키(세션키)를 생성
  1. Finished
  • 클라이언트, 서버, 세션키를 기반으로 대칭 암호화 통신을 시작

⭐ DH 매개변수

  • Diffie-Hellman
  • 공개값 공유, 각자의 비밀값과 혼합, 혼합값 공유, 각자의 비밀값과 혼합하여 공통의 암호키를 만드는 알고리즘

✅ 타원곡선 암호화 방법(ECDHE)

  • 개인키 보유자만 알 수 있는 타원곡선을 그림
  • 교차점의 수를 기반으로 암호를 설정하는 방법

✅ RSA의 취약점

  • RSA의 경우 클라이언트가 생성한 임시 암호값을 서버로 전송하지만, DH의 경우 클라이언트와 서버가 서로 교환한 DH 매개변수를 사용해 개인키를 만듬
  • RSA는 클라이언트에서 생성한 임시암호값이 탈취당한 경우 해킹의 위험이 존재 => 반면 DH의 경우 탈취당해도 공통의 암호키를 생성하지 못함

⭐ 사이퍼슈트

  • 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약을 말하며 암호제품군이라고도 불림
TLS_AES_128_GCM_SHA256

TLS : 프로토콜
AES_128_GCM : AEAD 사이퍼모드
SHA256 : 해싱 알고리즘

✅ AEAD 사이퍼모드

  • Authenticated Encryption with Associated Data
  • 데이터 암호화 알고리즘

✅ 해싱 알고리즘

  • 데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘

  • SHA256이 많이 쓰임

  • 인증서가 올바른 인증서인지 확인할 때 전자서명을 이용하는데 이때 해싱알고리즘이 사용됨

  1. 인증 생성 : 전자서명을 만드는데 필요한 메시지를 해싱
  2. 인증 확인 : 메시지를 복호화해서 해시를 서로 비교하여 올바른지 확인

✅ 전자서명

  • 송신자가 자신의 신원을 증명하는 절차 또는 정보

⭐ 인증서

  • 주체(클라이언트가 접속한 의도한 서버가 맞는지 확인) + 공개키(첫 인증작업 수행)를 포함하는 단순한 데이터 파일
  • CA에서 발급한 SSL인증서를 기반으로 인증작업을 수행
  • 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할
  • 종류 : 단일 도메인(하나의 도메인에만 적용), 와일드카드(도메인의 하위 도메인도 포함), 멀티도메인(다수의 도메인에 적용)

✅ CA(Certificate Authority)

  • 인증서를 발급하는 기업들

✅ 0 - RTT(TLS의 장점)

  • 세션키가 생성된 이후 다시 그 사이트에 방문한다면 미리 만들어 놓은 세션키를 기반으로 연결을 생성하기 때문에 인증에 드는 비용이 없음(재인증 필요 없음)
post-custom-banner

0개의 댓글