35
5.2 안전소켓계층과 전송계층보안 5. 전송레벨 보안 목포해양대 해양컴퓨터공학과 1

5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

5.2 안전소켓계층과

전송계층보안

5장. 전송레벨 보안

목포해양대 해양컴퓨터공학과 1

Page 2: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

개요

SSL

Netscape에서 최초로 작성

현재는 TLS로 전환

SSLv3.1 이 TLS이다

SSLv3와 호환 가능

목포해양대 해양컴퓨터공학과 2

Page 3: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 구조 (1)

신뢰할 수 있는 종단 간 안전한 서비스 제공을 위해 TCP 를

사용하여 설계

다양한 상위 계층 프로토콜에 기본적인 보안 서비스 제공

HTTP도 SSL(Record Protocol) 위에서 작동할 수 있음

두 계층의 프로토콜로 구성

SSL 프로토콜 스택

목포해양대 해양컴퓨터공학과 3

Page 4: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 구조 (2)

상위계층 프로토콜

핸드셰이크(Handshake) 프로토콜

경고(Alert) 프로토콜

암호명세변경(Change Cipher Spec) 프로토콜

SSL 레코드 프로토콜

목포해양대 해양컴퓨터공학과 4

Page 5: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 개념

SSL 연결(Connection):

적절한 서비스를 제공하는 전송(OSI 계층 모델의 정의)

Peer-to-peer 관계

일시적

한 개의 세션과 연관

SSL 세션(Session):

한 클라이언트와 한 서버 사이의 연관

세션 시작은 핸드셰이크 프로토콜을 이용

세션 시 암호적 보안 매개변수 정의

매 연결시 보안매개변수 협상을 새로 하지 않기 위해 세션을 사용

이론 상 개체 사이에 다수의 세션이 동시에 이루어질 수 있지만,

실제로는 적용하지 않음

목포해양대 해양컴퓨터공학과 5

Page 6: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

세션 상태

세션에 연관된 상태

읽기(수신), 쓰기(전송)에 대한 현재 동작 상태

핸드셰이크 프로토콜 도중

읽기 계류 상태, 쓰기 계류 상태

세션상태(session state) 매개변수

세션 식별자(Session identifier): 임의의 바이트 열

대등 인증서(Peer Certificate): X.509 v3 인증서 (null 가능)

압축 방법(Compression method): 압축 알고리즘

암호명세(Cipher spec): 암호 알고리즘과 해시 알고리즘

마스터 비밀(Master secret): 클라이언트-서버 사이에 공유하는

48바이트 비밀

재시작 여부(Is resumable): 새 연결을 시작하기 위해 세션을 사용할

수 있는지 여부를 나타내는 플래그

목포해양대 해양컴퓨터공학과 6

Page 7: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

연결 상태

연결 상태(connection state) 매개변수

서버와 클라이언트 랜덤(server and client random):

서버 기록 MAC 비밀(Server write MAC secret):

클라이언트 기록 MAC 비밀(Client write MAC secret):

서버 기록 키(Server write key):

클라이언트 기록 키(Client write key):

초기화 벡터(Initialization vectors):

CBC 모드로 블록 암호를 사용할 때 초기화 벡터(IV)가 각 키에 대해

유지됨

맨 처음에는 SSL 핸드셰이크 프로토콜이 이 필드를 초기화

순서 번호(Sequence numbers):

명세 변경시 0으로 설정

최대 264 -1

목포해양대 해양컴퓨터공학과 7

Page 8: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 프로토콜

SSL 연결을 위한 2가지 서비스 제공

기밀성(Confidentiality):

SSL 페이로드 암호화에 쓸 공유 비밀키 정의

메시지 무결성(Message Integrity):

메시지 인증 코드(MAC) 생성에 사용할 공유 비밀키

정의

목포해양대 해양컴퓨터공학과 8

Page 9: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 프로토콜 동작 (1)

1. 단편화(fragmentation)

2. 압축(compression)

3. 메시지 인증

코드(message

authentication code)계산

4. 대칭 암호로

암호화(encrypted)

5. 헤더 붙이기(header

attachment)

목포해양대 해양컴퓨터공학과 9

Page 10: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 프로토콜 동작 (2)

단편화

214바이트보다 작거나 같은 크기 블록으로

단편화

압축

알고리즘을 자유롭게 선택

1024바이트 이하로

목포해양대 해양컴퓨터공학과 10

Page 11: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

|| = 이어 붙여쓰기(concatenation)

MAC_write_secret = 공유 비밀키

hash = 암호적 해시 알고리즘, MD5나 SHA-1

pad_1 = MD5에서는 48번 반복하고, SHA-1에서는 40번(320비트) 반복하는 바이트 0x36(0011 0110)

pad_2 = MD5에서는 48번 반복하고, SHA-1에서는 40번 반복하는 바이트 0x5C(0101 1100)

seq_num = 이 메시지의 순서번호

SSLCompressed.type = 이 단편 처리에 사용되는 상위-계층 프로토콜

SSLCompressed.length = 압축된 단편의 길이

SSLCompressed.fragment = 압축된 단편(만일 압축을 안 했으면, 평문 단편)

SSL 레코드 프로토콜 동작 (3)

압축된 데이터의 메시지 인증 코드 계산

공유 비밀키 사용

계산방법

hash(MAC_write_secret || pad_2 || hash(MAC_write_secret ||

pad_1 || seq_num ||SSLCompressed.type ||

SSLCompressed.length || SSLCompressed.fragment))

목포해양대 해양컴퓨터공학과 11

Page 12: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 프로토콜 동작 (4)

압축된 메시지와 MAC을 대칭 암호로

암호화(encrypted)

암호화 시 내용의 길이가 절대로 1024바이트 이상

늘어나서는 안됨

총 길이가 214 + 2048 바이트를 초과하지 않도록 함

목포해양대 해양컴퓨터공학과 12

Page 13: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 프로토콜 동작 (5)

헤더 붙이기

헤더 구성

콘텐츠 유형(Contents Type)(8 비트):

상위 계층 프로토콜

change_cipher_spec, alert, handshake, application_data

주 버전(Major Version)(8 비트):

부 버전(Minor Version)(8 비트):

압축된 길이(Compressed Length)(16 비트):

목포해양대 해양컴퓨터공학과 13

Page 14: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 형식

목포해양대 해양컴퓨터공학과 14

Page 15: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

SSL 레코드 프로토콜 페이로드

목포해양대 해양컴퓨터공학과 15

Page 16: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

암호명세 변경 프로토콜

3가지 SSL-지정 프로토콜 중 가장 간단

한 바이트로 구성되고 값 1을 갖는 한 개의

메시지로 구성

목적: 계류상태를 현재 상태에 복사

연결에 사용할 암호도구(cipher suites)갱신

목포해양대 해양컴퓨터공학과 16

Page 17: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

경고 프로토콜 (1)

peer 개체에게 SSL-관련 경고

다른 응용처럼 현재 상태에 지정된 방식으로 압축,

암호화

각 메시지는 2바이트로 구성

첫 번째 바이트는 메시지 엄밀성 전달을 위해 2가지

값을 갖는다

경고(warning)(1)

심각(fatal)(2)

SSL은 즉시 연결을 단절

두 번째 바이트에는 특정 경고를 나타내는 코드 포함

목포해양대 해양컴퓨터공학과 17

Page 18: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

경고 프로토콜 (2)

항상 심각(always fatal) 경고

unexpected_message:

적합하지 않은 메시지 수신

bad_record_mac:

부정확한 MAC 수신

decompressed_failure:

압축풀기 함수에 적합하지 않은 입력

handshake_failure:

보안 매개변수의 집합을 송신자가 협상할 수 없음

illegal_parameter:

핸드셰이크 메시지 안의 한 필드가 범위 밖에 있거나 다른 필드와 모순

목포해양대 해양컴퓨터공학과 18

Page 19: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

경고 프로토콜 (3)

기타 경고

close_notify:

no_certificate:

bad_certificate:

unsupported_certificate:

certificate_revoked:

certificate_expired:

certificate_unknown:

목포해양대 해양컴퓨터공학과 19

Page 20: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

핸드셰이크 프로토콜 (1)

가장 복잡

서버와 클라이언트가 상호 인증하고, 암호,

MAC 알고리즘, 암호 키 협상

모든 응용 데이터를 전송하기 전에 사용

메시지 필드

유형(Type) (1바이트) : 10개 메시지 중 하나

길이(Length) (3바이트)

내용(Content)

목포해양대 해양컴퓨터공학과 20

Page 21: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

핸드셰이크 프로토콜 (2)

SSL 핸드셰이크 프로토콜 메시지 유형

목포해양대 해양컴퓨터공학과 21

Page 22: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

핸드셰이크 프로토콜 (3)

목포해양대 해양컴퓨터공학과 22

Page 23: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

핸드셰이크 프로토콜 (4)

목포해양대 해양컴퓨터공학과 23

Page 24: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 1: 보안 기능 설정 (1)

논리적 연결 시작

이 연결에 연관될 보안 기능을 설정

Client_hello 메시지 매개변수

버전(Version)

랜덤(Random): 32비트 타임스탬프 + 28비트 랜덤 넘버 (비표

역할, 재전송 공격 방지)

세션 ID(Session ID): 가변길이 세션 식별자

0이 아닌 값 : 기존 세션 기반

0: 새 세션으로 새 연결 시작

암호 도구(Cipher Suite)

선호도가 감소하는 순서로 나열

압축방법

목포해양대 해양컴퓨터공학과 24

Page 25: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 1: 보안 기능 설정 (2)

클라이언트는 Client_hello 메시지를 보낸 후 동일한

매개변수를 갖는 Server_hello를 기다림

Server_hello 메시지 규칙

버전은 클라이언트가 제시한 가장 낮은 값, 서버가

지원하는 가장 높은 값 선택

독립적으로 랜덤 필드 생성 (클라이언트 값과 무관)

클라이언트의 세션 ID가 0이 아니면 그 값 사용, 0인

경우 새 세션을 위한 값 선택

암호 도구 : 클라이언트가 제시한 것 중 하나 선택

압축 : 클라이언트가 제안한 것 중 서버가 선택한 값

목포해양대 해양컴퓨터공학과 25

Page 26: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 1: 보안 기능 설정 (3)

암호도구 매개변수

키 교환 방법

RSA, 고정된 Diffe-Hellman, 임시 Diffe-Hellman, 익명 Diffe-Hellman, Fortezza

암호 명세

Cipher Algorithm

RC4, RC2, DES, 3DES, DES40, IDEA, Fortezza 등

MAC Algorithm

MD5, SHA-1 등

Cipher Type

Block, Stream

IsExportable

HashSize

Key Material

IV Size

목포해양대 해양컴퓨터공학과 26

Page 27: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

키 교환 방법

RSA :

비밀키를 수신자의 RSA 공개키로 암호화

고정된 Diffe-Hellman

서버의 인증서에 CA가 서명한 Diffe-Hellman 공개 매개변수 포함

클라이언트는 자신의 Diffe-Hellman 공개키 매개변수 제공

임시 Diffe-Hallman

임시(일회용) 비밀키 생성

송신자의 RSA나 DSS 개인키 사용

임시의 인증 키를 생성하므로 가장 안전

익명 Diffe-Hellman

인증 기능이 없는 기본 Diffe-Hellman

Fortezza

목포해양대 해양컴퓨터공학과 27

Page 28: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 2: 서버 인증과 키 교환 (1)

서버가 자신의 인증서를 보냄

한 개 혹은 그 이상의 X.509 인증서 포함

익명 Diffe-Hellman 방식을 제외한 모든 키 교환에서 요구됨

고정 Diffe-Hellman 방식의 경우 이미 서버의 공개키 Diffe-

Hellman 매개변수가 포함되어 있음

필요한 경우 server_key_exchange 메시지 보냄

익명 Diffe-Hellman: 2개의 전역 Diffe-Hellman값

임시 Diffe-Hallman: 익명 Diffe-Hellman에 사용할 3개의

매개변수와 서명

RSA 키교환(서버는 RSA를 사용하지만, 서명만 하는 RSA

값을 가짐): 서버는 임시 RSA 공개키/개인키 생성, 메시지를

통해 공개키를 보냄

목포해양대 해양컴퓨터공학과 28

Page 29: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 2: 서버 인증과 키 교환 (2)

서명

hash(ClientHello.random|| ServerHello.random || ServerParams)

DSS의 경우 SHA-1 알고리즘 사용

RSA 서명: MD5와 SHA-1으로 해시 개선, 두 개의 해시를

이어붙인 것을 서버의 개인키로 암호화

클라이언트 인증서 요구 (Certificate_request)

Certificate_type

RSA, DSS, 고정된 Diffe-Hellman에 대한 RSA|DSS, 임시 Diffe-

Hellman에 대한 RSA|DSS, Fortezza

Certificate_authorities

수용할 수 있는 CA 목록

목포해양대 해양컴퓨터공학과 29

Page 30: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 3: 클라이언트 인증과 키교환

Server_done 메시지 수신 시 서버가 확실한

인증서를 제공했는지 확인

Server_hello 매개변수가 수용 가능한 지 검사

서버가 인증서를 요구한 경우 certificate

메시지 전송

적합한 인증서가 없는 경우 no_certificate 경고

전송

Client_key_exchange 메시지

Certificate_verify 메시지

목포해양대 해양컴퓨터공학과 30

Page 31: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

단계 4: 종료

클라이언트

change_cipher_spec 메시지 전송

계류 상태 암호 명세를 현재 상태 암호 명세로

복사

finished 메시지 전송

키 교환과 인증 과정이 성공적으로 이루어졌음을 확인

두 해시값을 붙인 것

서버

자신의 change_cipher_spec 메시지 전송

자신의 finished 메시지 전송

목포해양대 해양컴퓨터공학과 31

Page 32: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

키 교환을 통한 마스터 비밀 생성 (1)

공유하는 마스터 비밀

이 세션을 위해 안전한 키 교환 방법으로

생성한 일회용 48-바이트 값

두 단계 생성

pre_master_secret 교환

양쪽이 master_secret을 계산

목포해양대 해양컴퓨터공학과 32

Page 33: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

키 교환을 통한 마스터 비밀 생성 (2)

master_secret 계산

master_secret = MD5(pre_master_secret ||

SHA( 'A' || pre_master_secret || ServerHello.random ||

ClientHello.random)) ||

MD5(pre_master_secret || SHA('BB' ||

pre_master_secret || ServerHello.random ||

ClientHello.random)) ||

MD5(pre_master_secret || SHA('CCC' ||

pre_master_secret || ServerHello.random ||

ClientHello.random))

목포해양대 해양컴퓨터공학과 33

Page 34: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

키 교환을 통한 마스터 비밀 생성 (3)

암호 매개변수 생성

마스터 비밀로부터 다음을 생성

client write MAC secret

server write MAC secret

client write key

server write key

client write IV

server write IV

목포해양대 해양컴퓨터공학과 34

Page 35: 5장 전송레벨 안 5.2 안전소켓계층과 전송계층보안 - mmu.ac.krlily.mmu.ac.kr/lecture/16is/ch05-2.pdf · 2016-10-10 · 5.2 안전소켓계층과 전송계층보안

키 교환을 통한 마스터 비밀 생성 (4)

마스터 비밀에서 키 생성

key_block =

MD5(master_secret ||

SHA('A' || master_secret || ServerHello.random ||

ClientHello.random)) ||

MD5(master_secret ||

SHA('BB' || master_secret ||

ServerHello.random ||

ClientHello.random)) ||

MD5(master_secret ||

SHA('CCC' || master_secret ||

ServerHello.random || ClientHello.random)) ||

. . .

목포해양대 해양컴퓨터공학과 35