본문 바로가기
Network Infra 쉽게 이해하기/HTTPS 쉽게 이해하기

SSL/TLS #1, SSL / TLS protocol and Cipher suite

by 네트워크 엔지니어 환영 2020. 3. 19.
반응형

SSL / TLS (Secure Socket Layer, Transport Layer Security)

  • 단말(PC, Server 등)과 단말간의 암호화 통신을 위한 프로토콜
  • SSLv1은 최초의 버전으로서 문제가 많아 발표되지 않고 사장됨
  • SSLv2부터 공개가 되었으며 보다 더 나은 버전인 SSLv3가 나왔으며 이를 기반으로 TLSv1 생성
  • TLSv1.0, v1.1,v1.2, v1.3가 나왔지만 아직 많은 브라우저에서 TLSv3를 지원하지 않음

SSL handshake(Client Certificate 과정 제외)

  • Client Hello – Client가 Server에게 자신이 사용가능한 Random byte(대칭키 생성에 사용됨), Session ID, SSL / TLS 버전이 포함된 Cipher suite list를 전달
  • Server Hello – Server가 Client가 보낸 Cipher suite list 중 하나를 선택해 전달
  • Client Key exchange – 키교환 실시(실제 데이터 암호화에 사용할 키를 전달하며, SSL 인증서에서 추출된 공개키로 암호화)
  • Server certificate – 서버의 인증서를 클라이언트에게 전송
  • Server hello done – 서버 전달 종료
  • Change cipher Specs, Finished – 이후 보내는 메시지들은 협상된 암호화 알고리즘에 따라 보낼 것임을 통보
  • Finished, Change cipher Specs – 클라이언트가 보낸 메시지를 확인한 후, handshake를 종료하고 하나의 대칭키로 통신한다고 통보

<SSL Handshake 순서(출처 : Cloudflare)>

Cipher Suite

  • 간단히 말해, 암호화 세팅
  • (암호화프로토콜)-키교환 방식 – 인증서 검증 – WITH – 암호화 알고리즘(Cipher) – 메시지 인증방식
  • (공개키)키교환 방식
    • 인증서를 전달 받은 client가 server에게 전달할 세션키(pre-master key < -양측의 Random byte를 이용해 만든 Key)를 공개키 알고리즘에 따라  서버의 공개키로 암호화할 때 사용할 방식
  • 인증 방식
    • client는 받은 서버의 인증서가 신뢰할 수 있는지 검토 후 공개키를 추출한다.
    • 먼저 서명자는 문서의 데이터 일부를 해시 함수를 이용해 해시 값을 생성하고, 이를 개인키로 암호화한 뒤 문서에 첨부함
    • client는 이 인증서를 공개키로 복호화 한 뒤,  개인키로 암호화된 해시값 역시 공개키로 복호화
    • 인증서 내부 데이터를 같은 해시 함수를 이용해 해시 값을 얻어냄
      이 2가지를 비교하여 인증서 검증
  • (대칭키 알고리즘, 해쉬 알고리즘)암호화 알고리즘
    • Application Data를 암호화 하기 위한 알고리즘
  • MAC
    • 무결성 확인용 인증방식
    • 메시지 데이터 일부를 MAC 알고리즘으로 변환하여 메시지에 첨부한 후 수신자가 똑같은 방식으로 변환, 일치 여부 검사

<Cipher Suite 구성>

댓글