6.4 무선 전송층 보안
6장. 무선네트워크 보안
목포해양대해양컴퓨터공학과
1
개요 (1)
•
WTLS 는 모바일 장비 ( 클라이언트 ) 와 WAP 게이트웨이 간의 보안 서비스를 제공
•
WTLS 는 SSL(Secure Socket Layer) 을 보완하여 표준화한 전송계층보안 (TLS: Transport Layer Security) 프로토콜에 기반
•
WTLS 는 TLS 에 비해 더 작은 수의 메시지를 사용하므로 더 효율적
목포해양대해양컴퓨터공학과
2
개요 (2)
•
종단 - 대 - 종단 보안
• WTLS 사용: 클라이언트와 게이트웨이 사이
• TLS 사용: 게이트웨이와 목적지 서버 사이
•
WAP 게이트웨이 내부에서 WTLS 와 TLS 사이의 변환을 담당
• 게이트웨이는 보안상 취약
• 외부 공격에 대한 높은 수준의 보안 필요
목포해양대해양컴퓨터공학과
3
개요 (3)
•
WTLS 기능
• 데이터 무결성(Data Integrity):
• 메시지 인증을 통하여 클라이언트와 게이트웨이 사이에 전송된 데이터 무결성을 보장
• 프라이버시(Privacy):
• 암호화를 통해 기밀성을 보장
• 인증(Authentication):
• 디지털 인증서를 통하여 상호 인증을 제공
• 서비스 거부 공격에 대한 보호(Denial-of-Service Protection):
• 재전송된 메시지나 확인할 수 없는 메시지를 탐지하고 제거
목포해양대해양컴퓨터공학과
4
WTLS 세션과 연결 (1)
•
안전 연결 (Secure Connections)
• OSI 계층 모델 정의에서 연결이란 적절한 서비스를 제공하는
전송
• SSL에서 이러한 연결은 대등-대-대등(peer-to-peer) 관계
• 연결은 일시적
• 모든 연결은 하나의 특정 세션과 연관
목포해양대해양컴퓨터공학과
5
WTLS 세션과 연결 (2)
•
안전 연결 (Secure Sessions)
• SSL 세션은 하나의 클라이언트와 하나의 서버 간의 연관
• 세션은 핸드셰이크 프로토콜로 생성
• 세션은 다수 개의 연결이 공유할 수 있는 하나의 암호 보안 매개변수 집합을 정의
• 세션을 이용하면 매번 연결을 할 때 새로운 보안 매개변수를 설정하기 위한 작업을 반복하지 않아도 됨
목포해양대해양컴퓨터공학과
6
WTLS 세션과 연결 (3)
• 세션 상태 매개변수
• 세션 식별자(Session Identifier): 서버가 부여한 임의의 바이트열
• 프로토콜 버전(Protocol Versions):
• 대등 인증서(Peer Certificates):
• 압축 방법(Compression Method): 압축 알고리즘
• 암호명세(CipherSpec): 암호화 알고리즘, MAC 계산용 해시알고리즘, 해시 크기 등
• 마스터 비밀(Master Secret): 공유하는 20바이트 비밀값
• 순서번호(Sequence Number):
• 키 갱신(Key Refresh): 연결상태변수 갱신 주기
• 재개 가능성(Is Resumable): 새로운 연결 설정시 기존 세션 사용 여부
목포해양대해양컴퓨터공학과
7
WTLS 세션과 연결 (4)
•
연결 상태 매개변수
• 연결 종단(Connection End): 서버 역할 또는 클라이언트 역할
• 대량 암호화 알고리즘(Bulk Cipher Algorithm):
• MAC 알고리즘(Mac Algorithm):
• 압축 알고리즘(Compression Algorithm):
• 마스터 비밀(Master Secret):
• 클라이언트 랜덤(Client Random): 클라이언트가 제공하는 16비트 값
• 서버 랜덤(Server Random): 서버가 제공하는 16비트 값
• 순서번호 모드(Sequence Number Mode):
• 키 갱신(Key Refresh): 연결상태변수를 얼마나 자주 갱신하는지
나타냄 (n=2key_refresh마다 새로 계산)
목포해양대해양컴퓨터공학과
8
WTLS 프로토콜 구조 (1)
•
WTLS 는 두 계층으로 구성된 프로토콜
• WTLS 레코드 프로토콜
• 상위 프로토콜
• 핸드셰이크 프로토콜
• 암호명세 변경 프로토콜
• 경고 프로토콜
목포해양대해양컴퓨터공학과
9
WTLS 프로토콜 구조 (2)
• WTLS 레코드 프로토콜
• 상위 계층(WTP, WTLS 핸드셰이크 프로토콜, WTLS경고 프로토콜, WTLS 암호 변경
프로토콜)으로부터
사용자 데이터를 받아서, 이 데이터를 PDU 안에 캡슐화
목포해양대해양컴퓨터공학과
10
WTLS 프로토콜 구조 (3)
• WTLS 레코드 프로토콜 동작 단계
• 단계 1.
• 페이로드를 비손실 압축 알고리즘으로 압축
• 단계 2.
• HMAC 알고리즘을 이용하여, 압축된 데이터의 메시지 인증
코드(MAC)를 계산
• HMAC에서는MD-5나 SHA-1과 같은 다양한 해시 알고리즘 중 하나를 사용
• 해시 코드의 길이는0, 5 혹은 10바이트
• MAC 코드를 압축된 데이터에 덧붙임
• 단계 3.
• 압축된 메시지와MAC 코드는 대칭암호 방법으로 암호화
• 암호화에 사용되는 알고리즘은 DES, 삼중 DES, RC5 혹은 IDEA
• 단계 4.
• 레코드 프로토콜은 암호화된 페이로드 앞부분에 헤더를 추가
목포해양대해양컴퓨터공학과
11
WTLS 프로토콜 구조 (4)
•
WTLS 레코드 형식
목포해양대해양컴퓨터공학과
12
WTLS 프로토콜 구조 (5)
•
레코드 프로토콜 헤더 필드
• 레코드 종류(Record Type, 8비트):
• 레코드 길이 필드 표식(Record Length Field Indicator, 1비트):
• 순서 번호 필드 표식(Sequence Number Field Indicator, 1비트):
• 암호명세 표식(CipherSpec Indicator, 1비트):
• 데이터 유형(Content Type, 4비트):
• 순서 번호(Sequence Number, 16비트):
• 현재 레코드와 연관된 순서 번호
• 안정적이지 않은 전송상에서 안정적인 연결 제공이 가능
• 레코드 길이(Record Length, 16비트):
• 평문 데이터(압축을 사용하는 경우 압축된 평문)의 바이트 단위 길이
목포해양대해양컴퓨터공학과
13
WTLS 프로토콜 구조 (6)
•
암호명세 변경 프로토콜 (Change CipherSpec Protocol)
• 상위 프로토콜 중 가장 간단한 프로토콜
• 단 하나의 메시지로 구성
• 메시지 크기는 단 한 바이트이고, 그 값은 1이다
• 목적
• 지연된 상태를 현재 상태에 복사하는 것
• 이로 인해 이 연결에서 사용할 암호세트가 업데이트 됨
• 암호명세 변경 메시지가 도착하는 시점에서 메시지 송신자는 현재 쓰기 상태를 지연된 상태에 복사하고, 수신자는 현재 읽기 상태를 지연된 상태로 복사
목포해양대해양컴퓨터공학과
14
WTLS 프로토콜 구조 (7)
•
경고 프로토콜 (Alert Protocol)
• 대등 장비에 WTLS와 연관된 경고하기 위해 사용
• WTLS를 사용하는 다른 응용과 마찬가지로 경고 메시지도
현재 상태에 따라 압축되고 암호화
• 이 프로토콜의 각 메시지는 2바이트로 구성
• 첫 번째 바이트
• 경고 메시지 의 수준에 따라 주의(Warning, 1), 중요(Critical, 2), 심각(Fatal, 3)의 값
• 두 번째 바이트
• 특정 경고 종류를 구분하는 코드
• 만약 수준이 심각이라면, WTLS는 즉시 해당 연결을 종료 목포해양대
해양컴퓨터공학과
15
WTLS 프로토콜 구조 (8)
•
경고 프로토콜 (계속)
• 같은 세션의 다른 연결은 계속 사용할 수 있지만, 새로운 연결을 만드는 것은 허용되지 않음
• 중요한 수준의 경고는 현재 안전연결의 종료를 의미
• 같은 세션의 다른 연결을 계속 사용할 수 있고 새로운 연결을 만드는 것도 가능
• 경고 메시지를 이용하여 연결종료
• 어느 쪽이든 연결 종료 메시지 교환시작 가능
• 연결 종료 메시지가 전달되면, 이후의 모든 메시지는 무시
• 연결 종료 메시지를 받은 쪽은 반드시 응답을 보내어 연결이 종료되었음을 확인
목포해양대해양컴퓨터공학과
16
WTLS 프로토콜 구조 (9)
• 심각한 경고의 예
• session_close_notify:
• unexpected_message:
• bad_record_mac:
• decompression_failure:
• handshake_failure:
• 심각하지 않은 경고의 예
• connection_close_notify:
• bad_certificate:
• unsupported_certificate:
• certificate_revoked:
• certificate_expired:
• certificate_unknown:
목포해양대해양컴퓨터공학과
17
•
경고 프로토콜 ( 계속 )
WTLS 프로토콜 구조 (10)
•
핸드셰이크 프로토콜
• 서버와 클라이언트가 상호 인증을 수행
• WTLD 레코드에 담아 보낼 데이터 보호를 위해 사용할 암호 및
MAC 알고리즘과 암호 키를 결정
• 실제 응용 데이터를 전송하기 전에 핸드셰이크 프로토콜을 사전에 반드시 설립
• 핸드셰이크 프로토콜의 중요한 기능 중의 하나는 사전-마스터 비밀을 생성
• 마스터 비밀 생성에 사용
• 마스터 비밀은 기타 암호 키를 생성할 때 비밀 값으로 사용
목포해양대해양컴퓨터공학과
18
WTLS 프로토콜 구조 (11)
•
핸드셰이크 프로토콜 ( 계속 )
목포해양대해양컴퓨터공학과
19
WTLS 프로토콜 구조 (12)
•
핸드셰이크 프로토콜 ( 계속 )
목포해양대해양컴퓨터공학과
20
WTLS 프로토콜 구조 (13)
•
핸드셰이크 프로토콜 ( 계속 )
• 클라이언트와 서버 간에 여러 차례의 메시지 교환
• 4 단계 교환
• 제 1단계: 논리적 연결을 시작하고 연관될 보호 기능을 확립
• 제 2단계: 서버 인증과 키 교환
• 제 3단계: 클라이언트 인증과 키 교환
• 제 4단계: 안전 연결 설정을 완료
목포해양대해양컴퓨터공학과
21
암호 알고리즘 (1)
•
인증 :
• 인증서 사용
•
키교환 :
• 마스터 키 생성
•
의사랜덤 함수 :
• PRF는 비밀 값, 종자, 비밀 레이블을 받은 다음 임의길이 랜덤
값을 생성
•
마스터 키 생성 :
• 현재 세션을 위해 안전한 키 교환을 통해 생성
목포해양대해양컴퓨터공학과
22
암호 알고리즘 (2)
•
인증
• 인증서 필드
• Certificate_version: 인증서 버전
• Signature_algorithm: 인증서 서명시 사용하는 알고리즘
• Issuer: 인증서에 서명한 주체, 보통은 특정 CA임
• Valid_not_before: 인증서 유효기간 시작
• Valid_not_after: 인증서 유효기간 종료
• Subject: 인증되는 공개키의 주인
• Public_key_type: 공개키의 종류(알고리즘)
• Parameter_specifier: 공개키와 유관한 파라미터를 지정
• Public key: 인증되는 공개키
• Signature: CA의 개인키로 서명
목포해양대해양컴퓨터공학과
23
암호 알고리즘 (3)
•
키 교환
• 다음 키 교환 프로토콜에서는 server_key_exchange 메시지를 반드시 사용
• DH_anon:
• 일반적인 Diffie-Hellman 계산을(인증 없이) 수행
• 결정된 값(Z)을 pre_master_secret 값으로 사용
• ECDH_anon:
• 타원곡선 Diffie-Hellman 계산을 수행
• 결정된 값(Z)을 pre_master_secret 값으로 사용
• RSA_anon:
• 인증을 하지 않는RSA 키교환
• 서버는 자신의 RSA 공개키를 전송 목포해양대
해양컴퓨터공학과
24
암호 알고리즘 (4)
•
키 교환 ( 계속 )
• 다음 키 교환 프로토콜에서는 server_key_exchange 메시지를 전송하지 않음
• ECDH_ECDSA:
• ECDSA에 기반한 인증서를 이용한 타원곡선Diffie-Hellman 키 교환
• RAS:
• RSA 키 교환에서는 RSA 기반 인증서를 사용
• 서버는 자신의 RSA 공개키가 포함된 인증서를 전송
목포해양대해양컴퓨터공학과
25
암호 알고리즘 (5)
•
의사랜덤 함수
• PRF는 비밀 값, 종자, 비밀 레이블을 받은 다음 임의길이 랜덤
값을 생성
• TLS 표준에서 PRF를 최대한 안전하게 하기 위해 두 개의 해시
알고리즘을 사용
• WTLS에서는 하나만 사용하여 구현할 수 있음
목포해양대해양컴퓨터공학과
26
암호 알고리즘 (6)
•
PRF ( 계속 )
P_hash(secret, seed) = HMAC_hash(secret, A(1)‖seed)‖
= HMAC_hash(secret, A(2)‖seed)‖
= HMAC_hash(secret, A(3)‖seed)‖…
• A(0) = seed
• A(𝑖) = HMAC_hash(secret, A(𝑖 − 1))
PRF(secret, label, seed) = P_hash(secret, label‖seed) 목포해양대해양컴퓨터공학과
27
암호 알고리즘 (7)
•
마스터 키 생성
• 생성과정 2단계
• 제1단계
• pre_master_secret 값을 교환
• 제2단계
• 서버와 클라이언트가 다음을 계산해서 master_secret 값을 독립적으로 계산
master_secret = PRF(pre_master_secret,“ master secret”, ClientHello.random
‖ ServerHello.random)
목포해양대해양컴퓨터공학과
28
암호 알고리즘 (8)
•
마스터 키 생성 ( 계속 )
• MAC과 암호화 키 생성
HMAC-hash(MAC_secret, seq_number‖
WTLSCompressed.record_type‖
WTLSCompress.length‖WTLSCompressd.fragment)
• 사용할 수 있는 암호화 알고리즘
목포해양대해양컴퓨터공학과
29