HTTPS, TLS

jaegeunsong97·2023년 1월 18일
0

2023_1_18_TIL

암호화

  • 승인된 사람만 정보를 이해할 수 있도록 데이터를 '스크렘블'한 방법
  • 복호화(역으로 가는 것)할려면 송수신자가 동의한 'key'가 필요
    • 해당 'key'를 만들기 위해 또 다른 키 사용

스크렘블

  • 일정한 패턴으로 암호화 X | 무작위로 암호화
  • 공통 128비트 고급 암호화 표준 -> 10회의 스크렘블

대칭암호화

  • 키를 하나만 사용하는 암호화 -> 복호화할 때도 키가 필요함
  • 대칭 암호화 알고리즘 -> DES, AES

비대칭암호화

  • 두 개의 다른 키(공개키, 개인키)를 사용하는 암호화
  • 비대칭 암호화 알고리즘 -> RSA, DH(디피 헬만)
  • TLS핸드쉐이크 과정에서 처음 인증할 때 비대칭암호화, 이후 클라이언트와 서버는 '세션키'러눈 키로 대칭 암호화를 함 -> 대칭 암호화로 암호화된 통신

암호화의 필요성

  • 하이재킹 못하게
    • hijacking -> 공격자가 가로채는 것

TLS 핸드쉐이크

  • SSL(Secure Socket Layer) -> ... -> TLS(TransportLayer Security Protocol), 같은 의미
  • TLS -> 전송 계층에서 보안을 제공하는 프로토콜, 제3자가 클리이언트와 서버 통신시 하이재킹 못하게 하는 것
  • 어떻게 암호화된 통신을 할거야?라는 것에 대한 뼈대 -> TLS 핸드쉐이크(1-RTT로 가능)
  • 순서
    • client hello
      • 클라이언트가 TLS버전, 사이퍼슈트, 클라이언트랜덤값, 임시 DH매개변수 서버에게 보냄
    • server hello, encryptedExtensions, certification, certificateverify
      • 서버가 받은 옵션 확인
      • 서버와 클라이언트 모두에서 지원하는 가장 높은 TLS식별, 사이퍼슈트 지원 여부 확인(사이퍼슈트 받으면 리스트 중에서 가능한 것만 골라 다시 보냄)
      • 공개키가 포함된 SSL인증서, 서버 랜덤값, 임시 DH매개변수 보냄
      • 클라이언트와 서버 각각 서로 교환한 DH 매개변수 바탕으로 '세션키' 생성
        • 키교환 알고리즘 -> DH, RSA
      • '세션키'를 기반으로 대칭 암호화
    • finished
      • 클라이언트와 서버간 세션키를 기반으로 대칭 암호화된 통신이 시작

DH 매개변수

  • Diffie Hellman
  • 서로 공개값 공유, 비밀값과 혼합, 혼합값과 공유, 각자의 비밀값과 혼합해서 공통의 암호키 만드는 알고리즘
  • 보틍은 타원곡선암호화 방법과 DH를 섞은 ECDHE를 사용

사이퍼슈트

  • 프로토콜, AEAD 사이퍼모드, 해싱알고리즘이 나열된 규약
    • AEAD -> 데이터 암호화 알고리즘
  • 취약점 전부 제거 됨
  • TLS 1.3 -> 보통 5개
    • TLS_AES_128_GCM_SHA256
    • TLS_AES_256_GCM_SHA384
    • TLS_CHACHA20_POLY1305_SHA256
    • TLS_AES_128_CCM_SHA256
    • TLS_AES_128_CCM_8_SHA256

해싱 알고리즘

  • 데이터를 추정하기 힘든 더 작고 섞여 있는 조각으로 만드는 알고리즘
  • TLS에 사용되는 해싱 알고리즘
    • 인증서가 올바른 인증서인지 확인할 떄 전자서명이용(이때 사용)

인증서

  • 주체 + 공개키 를 포함한 단순한 데이터 파일
    • 주체 -> 인증서 발급한 CA, 도메인, 웹사이트 소유자, 인증서 소유자
      • 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지 확인할 때 사용
    • 공개키 -> 처음 인증작업을 수행할 때 사용
  • 자신의 웹사이트 안에서 SSL인증서를 만들 수 있음 -> 보통은 인증기관인 CA에서 발급한 SSL인증서를 기반으로 인증작업 수행

CA

  • 인증서의 역할 -> 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할
  • 인증서를 발급하는 기업 -> Certificate Authority

RSA의 취약점

  • 클라이언트가 생성한 임시 암호값을 서버로 전송
  • But DH는 클랑언트와 서버가 서로 교환한 DH매개변수를 바탕으로 개인키를 또 만듬 -> 훨씬 안전

0-RTT

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글