[정보보안] SSL/TLS

ssoxong·2024년 6월 29일

CS

목록 보기
6/13

SSL/TLS 프로토콜

클라이언트와 서버의 통신에 메세지 인증, 기밀성, 가용성을 제공한다.
HTTPS = HTTP + SSL/TLS + TCP
Application data를 보호하는 기술이다 (헤더 제외)

구성

Layer: Application - TLS - Transport(TCP)
Protocol: Handshake, ChangeCipherSpec, Aler, Record

HandShake

  • 어떤 암호기법을 사용할 것인지 통신
  • 암호화 키 생성

Phase 1

Server <-> Client

각종 버전/알고리즘과 키교환

  • Client Hello, Server Hello
  • SSL 버전, 키 교환 / 인증 / 암호화 / 압축 알고리즘 등 교환
  • 서로의 랜덤값을 교환하여 후의 키생성에 사용

Phase 2

서버 -> Client

client의 서버 인증
client는 서버의 공개키를 알게됨

  • Certificate
    서버의 인증서 체인 목록
  • ServerKeyExchange
    서버의 공개키
  • CertificateRequest
    필요시 클라이언트의 인증서 요청
  • ServerHelloDone
    Phase 2 종료

Certificate / KeyExchange Option

  1. RSA
    Certificate: RSA Enc-cert
    ServerKeyExchange: x
    RSA 인증서에 자신의 공개키를 넣어서 보내므로 공개키 교환과정 필요 없음
  1. Anonymous DH
    Certificate: x
    ServerKeyExchange: g, p, gsg^s
    대부분 사용하지 않는 방식이지만, 이미 Client가 인증된 상태에서 사용한다.

  2. Ephemeral DH
    Certificate: RSA or DSS Sig-cert
    ServerKeyExchange: Sigs1Sig_{s1}(g,p,gs2g^{s2})

    인증서에 서버의 서명용 공개키가 포함되어 있음. client는 상위기관의 개인키로 풀어서 키교환에 쓰인 서명 검증 가능

    g: 랜덤값
    p: 소수
    s1: 서버의 공개키
    s2: 디피헬만 키교환에 사용할 서버의 랜덤값

  3. Fixed DH
    Certificate: DH cert
    ServerKeyExchange: x

    인증서 안에 서버 공개키가 박혀있는 형태
    인증서를 변경하지 않는 한 영원히 Fixed된 공개키와 개인키 쌍

Phase 3

Client -> Server

서버로부터 Certificate Request 수신시, Client의 인증서 전송하여 서버가 클라이언트 인증
디피헬만 키교환 특성을 통해 pre-master secret(PM) 공유

  • PM = gscg^{sc}
  1. RSA
    Certificate: x
    ServerKeyExchange: 서버의 공개키로 암호화된 PM 전송

  2. Anonymous DH
    Certificate: x
    ServerKeyExchange: g, p, gcg^c

  3. Ephemeral DH
    Certificate: RSA or DSS Certificate
    ServerKeyExchange: Sigc1Sig_{c1}(g,p,gc2g^{c2})

    gc2g^{c2}를 받은 서버는 PM 생성 가능

    g: 서버가 사용한 랜덤값
    c1: 클라이언트의 서명
    c2: 서버의 랜덤값

  4. Fixed DH
    Certificate: DH cert
    ServerKeyExchange: x

Phase 4

Client <-> Server
암호 알고리즘과 보안 파라미터 변경하는 메세지 주고받은 후 HanShake END

이제 서로 공유한 PM으로 데이터 교환 가능

키 생성 과정

  1. index + PM + CR + SR
    SHA1, MD5.. 이용하여 48bit Master Secret(48bit) 생성 가능
    -> 고정된 index 개수

  2. index + M + CR + SR
    동일한 방식으로 Key Material 생성 가능
    -> index 개수 늘려나갈 수 있기 때문에 여러 key를 생성할 수 있다.

  3. key matreial로 목적 / 개체에 따라 분류된 여러가지의 키(IV) 생성

ChangeCipherSpec

  • 각자 생성한 암호가 잘 만들어졌는지, 서로 일치하는지 확인하는 과정 (인증서, 서명)

Alert

  • SSL/TLS 비정상 동작시 에러처리

Record

Application Layer으로부터 온 데이터 암호화
1. 데이터 압축 (복원가능한 압축)
2. Hash해서 MAC값 생성
3. 압축한 데이터 + MAC을 암호화
4. 암호화된 Application data

  • 헤더까지 암호화 X -> 송수신시 필요
  • MAC: 데이터에 대한 인증값을 생성해 메세지 인증 제공
  • 암호화: 데이터 + MAC을 암호화함으로써 기밀성 제공

Abstraction version of TLS

  • handshake
  1. hello (TLS버전, 알고리즘, 랜덤값)
  2. 인증서 요청 및 자신의 인증서, 공개키, 키교환 값(키, 서명된 키)
  • changecipherspec
  1. PM으로 MS 생성 후 EK, AK, IV 만든 후 서로 확인
  • record
  1. 데이터에 대한 MAC 생성 후, 데이터+MAC 암호화하여 송수신
profile
배운 것을 기록하는 습관

0개의 댓글