티스토리 뷰

Computer Science/네트워크

TLS

berom 2023. 5. 17. 13:45

TLS(전송 계층 보안)

TLS(전송 계층 보안) 프로토콜은 컴퓨터 네트워크를 통해 통신 보안을 제공합니다.
둘 이상의 통신 응용 프로그램 간에 개인 정보 보호 및 데이터 무결성을 제공하도록 설계되었습니다.

TLS는 웹 브라우저와 웹 서버, 이메일 및 기타 데이터 전송을 보호하는 데 널리 사용됩니다.

TLS 핵심 개념

  • TLS 연결

    • 연결은 적절한 서비스를 제공하는 전송(OSI 계층 모델 정의)를 말한다
    • TLS에 있어서 이러한 연결은 대등-대-대등 관계이다.
    • 연결은 일시적이며, 모든 연결은 한 개의 세션에 연관 되어 있다.
  • TLS 세션

    • 한 클라이언트와 한 서버 사이의 연관을 말한다
    • 세션 시작은 핸드쉐이크 프로토콜을 이용한다
    • 세션 시 암호적 보안 매개변수를 정의한다
    • 매 연결시 보안 매개변수 협상을 새로 하지 않기 위해 세션을 사용한다

TLS 구조

TLS 설계 목적은 신뢰성 있는 종단 간 안전한 서비스를 제공하기 위해 TCP를 사용하였다

TCP는 단일 프로토콜이 아니고 2계층(IP와 TCP)에 걸친 프로토콜이다

TLS 레코드 프로토콜
다양한 상위-계층 프토토콜에 기본적인 보안 서비스를 제공 한다.

특히 웹 클라이언트/서버 상호 교환을 위해 전송 서비스를 제공하는 HTTP는 TLS 위에서 동작할 수 있다.

TLS 레코드 상위 프로토콜

TLS 레코드 프로토콜

TLS 레코드 프로토콜은 TLS 연결을 위해 2가지 서비스를 제공한다

  • 기밀성
    • 핸드쉐이프 프토코로은 TLS 페이로드를 대칭 암호화하는데 쓸 공유 비밀키 정의
  • 메시지 무결성
    • 핸드 쉐이크 프로토콜은 MAC을 생성하는데 사용할 공유 비밀키를 정의한다

TLS 레코드 프로토콜 동작

  1. 단편화(fragmentation)

    • 각 상위 계층 메시지를 작은 블록으로 단편화한다.
  2. 압축(compression)

    • 알고리즘을 자유롭게 선택
    • 1024 바이트 이하로 압축
  3. 메시지 인증 코드(message authentication code) 계산

    • HMAC 알고리즘 이용해서 계산
  4. 대칭 암호로 암호화(encrypted)

    • 압축된 메시지와 MAC을 대칭 암호로 암호화(encrypted)
    • 암호화 시 내용의 길이가 절대로 1024바이트 이상 늘어나서는 안됨
    • 총 길이가 214 + 2048 바이트를 초과하지 않도록 함
  5. 헤더 붙이기(header attachment)

    • 콘텐츠 유형(Contents Type)(8 비트):
    • 주 버전(Major Version)(8 비트):
    • 부 버전(Minor Version)(8 비트):
    • 압축된 길이(Compressed Length)(16 비트):

암호 명세 변경 프로토콜

  • 목적: 계류상태를 현재 상태에 복사
  • 3가지 SSL-지정 프로토콜 중 가장 간단한 바이트로 구성
  • 값 1을 갖는 한 개의 메시지로 구성
  • 연결에 사용할 암호도구(cipher suites)갱신

경고 프로토콜

  • 대등 개체에게 SSL-관련
  • 각 메시지는 2바이트로 구성(그림 5.5(b) 참조)
  • 첫 번째 바이트는 메시지 엄밀성 전달을 위해 2가지 값을 갖는다
    • 경고(warning)(1)
    • 심각(fatal)(2)
      • SSL은 즉시 연결을 단절
  • 두 번째 바이트에는 특정 경고를 나타내는 코드 포함
  • 해당 필드의 존재만 알고, 자세한 코드 내용까지는 암기하지 말자

핸드 쉐이크 프로토콜

  • 서버와 클라이언트가 상호 인증
  • 암호, MAC 알고리즘, SSL 레코드 안 데이터를 보호하는 데 사용할 암호키 협상
  • 메시지는 3개의 필드로 구성
    • 유형(Type)(1바이트)
    • 길이(Length)(3바이트)
    • 내용(Content)(≥0바이트)
      핸드 쉐이크 프로토콜 동작

암호 계산

마스터 비밀 생성
공유하는 마스터 비밀은 이 세션을 위해 안전한 키 교환의 방법으로 생성한 일회용 48-바이트 값이다

마스터 비밀 생성은 2단계를 거쳐서 생성한다

  1. pre_master_secret 교환
  2. master_secret을 양쪽에서 각각 계산

pre_master_secret 교환 할 때는 2가지 방법이 가능하다

클라이언트와 서버 양쪽은 master_secret을 다음과 같이 계산한다

암호화 알고리즘은 48 바이트 길이의 의사 난수가 생성될 때까지 수행한다.
키 블록 내용 계산은 다음과 같이 정의 된다.

key_block = 
				PRF(SecurityParameters.mastter_secret, "key explain"),
				SecurityParameters.server_random 
				|| SecurityParameters.client_randeom

암호 매개 변수 생성
암호 명세(CipherSpec)은 마스터 비밀로부터 차례대로 생성되는 많은 매개 변수들을 필요로 한다

위의 매개 변수는 마스터 비밀을 해시하여 필요한 모든 매개 변수로 사용할 충분히 긴 안전한 바이트열로 만든다

마스터 비밀에서 키를 생성하기 위해 pre_master secret에서 마스터 비밀을 생성하는 형식과 동일한 방법을 사용한다

위의 계산 또한 출력이 충분히 길 때까지 수행한다.
이 알고리즘 구조의 결과는 PRF라는 의사 랜덤 함수를 사용해서 비밀을 확장하여 데이터 블록을 생성한다.

의사 랜덤 함수 (PRF)
TLS에서는 PRF라고 하는 의사랜덤 함수를 사용해서 비밀을 확장하여 데이터 블록을 생성한다.
이 방식으로 키를 생성하고 점검한다
이렇게 하는 이유는 공유한 비밀 값이 작지만, 긴 데이터 블록을 만들고자 하는데 있다.

  • A(0) = seed
  • A(i) = HMAC_hash(secret, A(i-1))

아래는 TLS 함수 p_hash(secret, seed) 개요도이다.

데이터 확장 함수에서는 HMAC 알고리즘을 사용하는데 MD5나 SHA-1을 기본 해시 함수로 이용한다.
보면 알겠지만, 원하는 길이의 데이터를 생성하기 위해 p_hash는 필요한 만큼 반복해서 적용한다.

또한, PRF는 가능한 안전하게 만들기 위해 2개의 해시 알고리즘을 사용한다

PRF(secret, label, seed) = P_<hash>(secret, label∥seed))

하트 비트 프로토콜

In 컴퓨터 네트워크, 하트 비트의 의미
시스템이 정상적으로 동작한다는 걸 나타내기 위한, 또는 시스템의 다른 부분과 동기화를 하기 위해 하드웨어나 소프트웨어가 생성하는 주기적인 신호를 말한다

즉 일반적으로 하트비트 프로토콜은 프로토콜 개체의 가용성을 모니터링 할 때 사용하는 프로토콜이다.

하트 비트 프로토콜은 TLS Record Protocol 위에서 구동 되면, 2개의 메시지 유형으로 구성된다

  • heartbeat_request
    • 핸드 쉐이크 프로토콜 1단계에서 사용된다
    • 각 대등은 자신이 하트비트 지원 여부를 표명한다
    • 또는 단순히 heartbeat_reequest 메시지만 보낸다고 표명
  • 대등은 요청에 대한 응답으로 heartbeat_response 메세지로 응답 할지말지를 표명

하트 비트의 목적

  • 송신자는 수신자가 아직 작동하고 있는지 확인할 수 있다.
    • 설사 해당 호스트가 기본 TCP 연결 상태에서 잠시동안이나마 동작하고 있는지를 확인 할 수 있다.
  • 휴지(idle) 상태의 연결에서 하트비트는 활성화 상태를 유지한다
    • 그래서 휴지 연결 상태를 허용하지 않는 IPS가 차단하지 못하게 한다

SSL/TLS 공격

  • 핸드셰이크 프로토콜에 대한 공격
  • 레코드와 응용 데이터 프로토콜에 대한 공격
  • PKI에 대한 공격
  • 기타 공격

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

728x90

'Computer Science > 네트워크' 카테고리의 다른 글

SSH  (0) 2023.05.22
HTTPS  (0) 2023.05.22
핸드 쉐이크 프로토콜  (0) 2023.05.17
TLS 세션  (0) 2023.05.15
HTTP  (0) 2023.05.13