본문 바로가기
📄Document/📝 etc

[IT 지식] SSL(SSL 개요, SSL 기능, SSL 기본 구조, SSL 세부 구조, Handshake Protocol, Change Cipher Spec. Protocol, Alert Protocol, Record Protocol)

by 후눅스 2022. 11. 2.
반응형

SSL

SSL 개요

SSL

  • 배경
    • 1993년 웹 서버와 브라우저간의 안정한 통신을 위해 Netscape 사에 의해 개발

 

  • 특징
    • 세션계층에서 적용되며, 응용계층의 FTP, TELNET, HTTP등의 프로토콜의 안전성 보장

 

  • 서버 인증, 클라이언트 인증, 기밀성 보장
  • 현황 및 전망
    • 현재 많은 전자 쇼핑 몰 업체에서 채택, 운영

 

TSL

  • 배경
    • SSL 3.0이 표준화된 이후 IETF는 1996년 6월부터 TLS 프로토콜에 대한 표준화 (SSLv3.1)

 

  • Backward compatible with SSLv3
  • 특징
    • SSL 3.0을 기반으로 한 업그레이드 프로토콜

 

  • 현황 및 전망
    • 현재 TLS 1.0이 발표, 지속적 개발 예상

 

SSL 기능

서버 인증 기능

  • 사용자는 서버의 신원을 확인
  • 서버의 certificate와 public ID가 정당 확인
  • 클라이언트의 신뢰 된 인증 기관들의 목록에 서버의 인증기관이 포함되었는지를 확인(표준 공개키 암호화 기술을 사용)

클라이언트 인증

  • 서버는 클라이언트의 신원을 확인
  • 클라이언트의 certificate와 public ID가 정당 확인
  • 서버의 신뢰 된 인증기관 들의 목록에 클라이언트의 인증 기관이 포함되었는지를 확인(표준 공개키 암호화 기술을 사용)

 

 

암호화된 SSL 연결

  • 클라이언트와 서버 사이에 송/수신 되는 모든 정보는 암호화/복호화 + 무결성

 

 

 

 

 

 

SSL 기본 구조 및 동작

SSL 기본 구조

트랜스포트 계층과 응용 계층 사이에 존재

  • Connection
    • Suitable type of service / Peer-to-peer relationship

 

  • session
    • By handshake protocol(SSL Hello)
SSL handshake
Protocol
SSL Change Cipher
Spec
SSL Alert
Protocol
HTTP Telnet ...
SSL Record Protocol
TCP
IP

 

  • HTTP (TCP -> HTTP)
  • HTTPS (TCP -> SSL -> HTTP)

 

 

  • Management of SSL
    • Handshake Protocol  *Parameters(Session key, cryptography algorithm, authentication)

 

  • Change Cipher Spec Protocol
  • Alert Protocol
  • Real security service
    • SSL Record Protocol  *Data encryption/decryption + Integrity

 

Handshake 프로토콜

  • 서버와 클라이언트간의 상호인증을 수행하고, 사용할 키 교환 방식, 대칭키 암호 방식, HMAC 방식, 압축방식 등의 보안 속성을 협상

 

Change Cipher Spec 프로토콜

  • Handshake 프로토콜에 의해 협상된 압축, MAC, 암호화 방식 등이 이후부터 적용됨을 상대방에게 알림

 

Alert 프로토콜

  • 세션의 종료 또는 오류 발생시 이를 상대방에게 알림

 

Record 프로토콜

  • 상위계층 메시지들이 보안성이 유지되며 전송될 수 있도록 하기 위하여, 메시지 분할, 압축, 메시지 인증, 암호화 등의 작업을 수행

 

 

SSL 세션과 SSL 연결

구분 설명
세션 식별자
(Session Identifier)
활동 상태나 재시작할 수 있는 세션 상태를 임의의 바이트 열
대등 인증서
(Peer Certificate)
대등의 X509.v9 인증서, 이 요소의 상태는 비어(null) 있을 수 있음
압축 방법
(Compression method)
암호화 전 압축에 사용하는 알고리즘
암호 스펙
(Cipher spec)
MAC계산에 사용되는 용량이 큰 데이터에 대한 알고리즘(null, DES 등)과 해시알고리즘을 나타냄
마스터 비빌키
(Master secret)
클라이언트와 서버가 공유하는 48-byte 비밀
재시작 여부
(Is sesumable)
새 연결을 시작하기 위해서 세션을 사용할 수 있는지 아닌지를 나타내는 플래그
서버와 클라이언트 랜덤
(Server & Client random)
각 연결에 사용하려고 서버와 클라이언트가 선택하는 바이트 열
서버 기록 MAC 비밀키
(Server Write MAC secret)
서버가 보낸 데이터로 MAC을 계산할 때 사용하는 비밀키
클라이언트 기록 MAC 비밀키
(Client Write MAC secret)
클라이언트가 보낸 데이터로 MAC을 계산할 때 사용하는 비밀키
서버 기록 키
(Server Write key)
서버가 데이터를 암호화하고 클라이언트가 복호화할 때 사용하는 관용 암호키
클라이언트 기록 키
(Client Write key)
클라이언트가 데이터를 암호화하고 서버가 복호화할 때 사용하는 관용 암호키
초기화 벡터
(initialization vectors)
CBC모드로 블록 암호를 사용할 때 초기화 벡터가 각키에 대해 유지될 맨 처음에는 SSL 핸드 세이크 프로토콜이 이 필드를 초기화, 그 뒤에 각 레코드의 최종 암호문 블록을 초기화 벡터로 사용하기 위해 저장됨(이때 나오는 레코드도 저장함)
순서 번호
(Sequence numbers)
각 개체는 각 연결 때마다 전송하고 수신한 메시지에 대해 별도로 순서 번호를 보관한 개체가 암호 명세 변경메시지를 보내거나 받으면 거기에 적합한 순서번호를 0으로 설정(2^64-1초과해서는 안됨)

 

 

 

SSL 세부 구조

SSL Record protocol

  • 응용 데이터 -> 단편화 -> 압축 -> MAC 첨부 -> 암호화 -> SSL 레코드 헤더 붙이기

 

기밀성

  • 핸드 셰이크 프로토콜에 의해 정의 된 공개키와 함께 대칭 암호화 알고리즘 사용
  • AES, IDEA, RC2-40, DES-40, DES, 3DES, Fortezza, RC4-40, RC4-128
  • 메시지를 암호화하기 전에 압축

무결성

  • 공개키와 MAC를 사용
  • HMAC와 유사하지만 다른 패딩

 

SSL Change Cipher Spec. Protocol

  • SSL 레코드 프로토콜을 사용하는 3가지 SSL 시정 프로토콜 중 하나
  • 한 바이트로 구성 값 1을 갖는 한 개의 메시지로 구성

대등 개체에게 SSL - 관련 경고를 할 때 사용

  • SSL과 경고 메시지는 압축되고 암호화

메시지는 2바이트로 구성

  • 첫번째 바이트: 경고(Warning1)과 심각(fatal 1) 값을 가짐
  • 두번째 바이트: 특정 경고를 나타내는 코드가 있음

 

SSL Handshake Protocol

  • 모든 응용 데이터 전송 전에 사용
  • 서버와 클라이언트가 서로를 인증
  • 암호화 및 MAC 알고리즘을 협상
  • Handshake과정을 통해 공통으로 사용하는 암호화 프로토콜 결정
  • 동작
    • 보안 기능을 설정 / 서버 인증 및 키 교환 / 클라이언트 인증 및 키 교환 / 종료

 

 

1. Client -> WebServer (TCP/IP 연결)

2. Client <- WebServer (TCP/IP 연결, SSL 연결)

 

1. Client -> Server의 공개키(세션 요청 및 정보) -> WebServer

2. Client <- Client의 공개키(인크립트된 세션키) <- WebServer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형