전자상거래 보안 (암호학과 네트워크보안) 2017.6. 7 Chul Ho Rhee richman3@naver.com.

Slides:



Advertisements
Similar presentations
기술분야에너지 관리 연구과제명 Advanced Energy Mgmt. Algorithm 개발 필요성신재생 발전기기, 에너지 저장장치, 에너지 소비장치가 공존하는 Smart Grid Home 환경에서 사용자의 불편을 최소화하면서 효율적으로 에너지를 절감할 수 있는 새로운.
Advertisements

SSL (Secure Socket Layer) 중부대학교 정보보호학과 이병천 교수. 웹 보안 구현방법  네트워크 계층에서의 구현방법  특징  IP 계층에 보안 기능을 둠  IP Sec  응용계층의 모든 응용서비스에 보안성 제공  VPN(Virtual Private.
인터넷 쇼핑몰 구축 제안서.
표준 SSL Server Identification
WAP 보안 솔루션 분석 류재철 충남대학교 정보통신공학부.
2012 년 2 학기 중부대학교 정보보호학과 이병천 교수.  공중망 (Public Network) ◦ 가격이 저렴 ◦ 네트워크를 공동으로 이용. 보안에 취약  사설망 (Private Network) ◦ 공중망보다 가격이 비쌈 ◦ 네트워크를 독립적으로 이용. 보안성이.
LHC Grid Computing School
Building Enterprise VPNs
금융 보안 정보통신대학원 양승화 양승화( ).
10. 전자상거래 보안 e-commerce security
Web Service XML Security
Cryptography and Network Security
암호화 기술(SSL, IPSec) 손재성 권기읍 안복선 최준혁
암호화 기술(IPsec,SSL) 배문주 송정미 황유진.
22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜
IPsec 석진선.
16. FTP grandmarnier.
(c) Byoungcheon Lee, Joongbu Univ.
10장. 웹 서비스 공격 (Attacking Web Service)
Chapter 17 전송층 보안: SSL과 TLS
RIP 2 IBGP가 다수일 경우 IGP(rip, OSPF,….)가 가까운 곳(목적지까지 비용이 적은 곳)이 최적경로로 선정
공개키 기반구조 (Public Key Infrastructure)
제 10장 인증서 공개 키를 이용한 디지털 서명.
Chapter 3. Architecture AI & HCI Lab 김 주 영.
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Internet 및 EC 관련 기술들.
무선 LAN 보안.
Chapter 09. 암호를 이용한 전자상거래 : 상거래를 사이버 세계로 끌어들인 암호
Chapter 10 네트워크 보안.
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Chapter 2 OSI 모델과 TCP/IP 프로토콜.
Web Security 모든 HTTP 패킷은 엽서와 같음 SSL/TLS
(Next Generation Internet Protocol)
키 관리 및 인증, 전자서명 4조: 최선욱 조성호 Kangwon National University Samcheok Campus Information & Communication Eng.
Chapter 15 키 관리 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
08장 암호의 이해: 숨기고자 하는 이들의 싸움.
Chapter 3 3 모바일인터넷 구성 기술.
SSL 보안 WEB Security.
Network Socket Programming
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
S N M P (Simple Network Management System).
Embeded 기초 다지기 2015년 10월 26일 intern Sally
Key and Certificate Management Using Keystores
Chap 10. 인증응용.
제2부 전자무역 기초 3장 정보기술의 변화 4장 전자상거래의 개관.
IPSec (Internet Protocol Security protocol)
침입탐지시스템과 정보보안 안
CHAPTER 6 CERTIFICATES CAI & SIMULATION LAB. 한기준 (박사3) 강선모 (박사2)
Network Management 김대환 김태훈 김숙흔 이근민.
네트워크 관리 개요 및 SNMP Protocol 동작 과정
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
목 차 PGP S/MIME. 전자우편 보안 Security 목 차 PGP S/MIME.
TCP/IP 통신망 특론 2장 Link Layer 컴퓨터 네트워크 실험실 이희규.
네트워크 보안 3 오 세 종.
인터넷 전자지불 시스템 구축 제안서 4biz 는 본 제안서에 대한 저작권은 전혀 없습니다.
? SMB (Server Message Block)
An Example for Use of Public Key -인증서요청과발급
IPv 이 동 주 HONGIK UNIVERSITY.
AP3 매뉴얼.
전자상거래보안 전자우편보안 ( Security) 중부대학교 정보보호학과 이병천 교수
전자지불서비스 개요 및 현황 * 국내 적용 사례를 중심으로 *
TimeStamp를 활용한 전자문서 진본성 확보
2. CONCEPTS 컴퓨터 네트워크 실험실 석사 1학기 강 동 호.
자바 암호 프로그래밍 Java Cryptography Programming
Internet & WWW Protocols
김 형 진 전북대학교 IT응용시스템공학과 네트워크의 기본 Chapter 김 형 진 전북대학교 IT응용시스템공학과.
이번 시간에는... 지난 시간까지 제 1장을 통해 모바일의 정의와 개념, 시작과 발전, 기술과 서비스 및 그 전략을 살펴봄으로써 모바일 산업에 대한 전반적인 이해를 쌓았습니다. 이번시간 부터는 제 2장 모바일 기술을 통해, 무선 인터넷을 위한 컨텐츠 제작 기술, 네트워크.
Chapter 3. Public Key Infrastructure
정보보호 개론 Chapter 04 암호화 기술.
Data Compression 데이터 압축:음성, 비디오, 팩시밀리 전송등과 같은 경우에 중요
Presentation transcript:

전자상거래 보안 (암호학과 네트워크보안) 2017.6. 7 Chul Ho Rhee richman3@naver.com

SET 지불프로토콜 2

SET (Secure Electronic Transaction) VISA 및 MasterCard 카드사가 인터넷상의 안전한 지불 목적으로 만든 신용카드 기반의 전자지불 프로토콜이다 SET의 구성요소  고객(Card Holder) : 신용카드 소지자  상점(Merchant) : 인터넷상에서 상품이나 정보서비스 제공자  지불 중계기관(Payment Gateway) : 판매자가 요청한 고객의 지불정보 (카드번호)로 금융기관에 승인 및 결재를 요청하는 자  발급사(Issuer) : 고객카드를 발급하고 고객계좌가 개설된 금융기관  매입사(Acquirer) : 상점을 가맹점으로 승인하고 상점계좌가 개설된 금융기관 3

SET (Secure Electronic Transaction) 전자상거래의 개념도 지불중계기관 (Payment Gateway) 금융망 금융망 (8) 정산 상인 Bank/Card사 (7) 지불정보 고객 Bank/Card사 승인요청 (지불정보) (4) (5)승인결과 인터넷 (1) 구매요구(주문정보) (2) 지불요구 (3) 지불정보 고객 (6) 상품( 영수증) 상점 4

SET (Secure Electronic Transaction) Customer Merchant (Card holder) Internet (open network) Existing financial network (closed network) Payment gateway Financial Institute CA (인증기관) 5

Authorization Capture SET 상세처리 흐름도 CardHolder Certificate Authority Merchant Certificate Authority * 암호화 메시지 - 완성된 등록 양식 - 고객 Public signature key - 대칭키 #2 * 전자봉투(Digital envelope) - 대칭키#3 - 계좌정보 ( 계좌번호, 만기일, Card Secret) Payment Gateway CA Initiate 요청 응답 인증응답 인증 요청 1 (1) (2) (3) 등록 양식 요청 (4) 등록 양식 (5) (6) 1 (3) (2) 인증 요청 (4) CA signature certificates CA key-exchange certificate 1 (2) (3) (4) (1) (1) Initiate 요청 등록 양식 인증 요청 인증 응답 Initiate 요청 인증 응답 등록 양식 Cardholder signature certificate CA signature certificates Signature & Key-exchange PB key Account data & 대칭키 #1 (암호화 또는 서명 안됨, Payment Brand 정의, Key Exchange 요청, Thumbprints 생성) * Encrypt : Challenge, RequestType, Language (DER equivalent format) * ExtraEncrypt : SHA-1 hash of PAN and PAN Secret Merchant signature certificates Merchant key-exchange certificate CA signature certificates CA signature & exchange certificate CA signature certificate 승인 요청 대칭키#1 & 계좌정보 5 ( Define Payment Brand, Request key exchange) (대칭키#1, 계좌정보; Gateway PB key envelope) 지불 정보 (Cardholder signature certificate, Merchant signature certificate & 2 Purchase Initiate Request Merchant key exchange certificate ) Purchase Initiate Response 승인 응답 10 3 ( TransID, Merchant signature certificate & Payment Gateway signature certificate & Capture Token Payment gateway key-exchange certificate ) 대칭키#4 & account number; Gateway PB exchange key envelope Purchase Request 4 지불 요청 12 Order Information (dual signature) Capture Token (대칭키#4 & account 정보; Gateway PB exchange key enveloped) Cardholder Cardholder signature certificates 대칭키#1으로 암호화한 Payment Instruction Merchant signature & key-exchange certificates 대칭키#1& account 정보(Gateway PB key envelope) Merchant 지불 응답 17 Payment Gateway Shopping, Item selection 주문, 지불수단선정 Purchase Response 11 Payment Gateway signature certificates ( Merchant signature certificates ) 승인 취소 Inquiry Request & Response 지불 취소 Shipping Credit/Credit Reversal Authorization Capture 9 13 16 7 8 Authorization Capture 6 14 15 Payment card brand’s Financial Network Issuer Acquirer Payment Card Brand 6

SET 트랜잭션 트랜잭션 종류 Initiate Request  고객, 상점, 지불 게이트웨이는 인증기관으로 인증서 발급요청 Initiate Response  고객, 상점, 지불 게이트웨이는 인증기관에서 인증서 발급 받음 Purchase Initiate Request  고객은 상점과 지불 게이트웨이의 인증서를 요구함 Purchase Initiate Response  고객은 상점과 지불 게이트웨이의 인증서를 받음 7

SET 트랜잭션 트랜잭션 종류 Purchase Request  고객은 상점으로 구매요구(주문정보 및 지불정보 전송)를 함 Purchase Response  상점이 고객에게 구매확인(주문처리 여부)을 함 Authorization Request  상점이 P/G를 통하여 발급사(Issuer)에게 고객 카드에 대한 지불승인 요청 8

SET 트랜잭션 트랜잭션 종류 Authorization Response  상점이 P/G를 통하여 발급사(Issuer)로부터 고객카드에 대한 지불승인 결과를 받음 Capture Request  상점이 P/G를 통하여 발급사(Issuer)에게 지불요청(정산) 함 Capture Response  상점이 P/G를 통하여 발급사(Issuer)로부터 지불요청(정산)에 대한 결과를 받음 9

SET 구성요소는 Root 인증 기관의 서명용 공개 키를 미리 보유 인증서 확인절차(Trust Chain) SET 구성요소는 Root 인증 기관의 서명용 공개 키를 미리 보유 1 2 Root 공개키 고객 인증서 인증기관 인증서 Root Cert.  1    CardHolder CA Root R R CA 3 5 4 인증기관의 개인키로 전자서명 되어 있음 Root 인증기관의 개인키로 전자서명 되어 있음 Root 인증기관의 개인키로 전자서명 되어 있음(Self sign) 10

인증서 종류와 형식 버전 일련번호 서명 알고리즘 인증서 발급자 유효기간 사용자 식별명 (DN) 가입자 공개키 11 Data: Certificate: Data: Version: 3 (0x2) Serial Number: 382 (0x17e) Signature Algorithm: sha1 With RSAEncryption Issuer: C=KR, O=KICA, OU=licensedCA, CN=signGATE Class 1 CA Validity Not Before: January 23 10:45:52 2013 GMT Not After : January 23 10:45:52 2014 GMT Subject: C=KR, O=KICA, OU=licensedCA, OU=RA01, OU=SDS01, OU=Main, CN=KilDong Hong+SN=000/Email=kdhong1@korea.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (1024 bit): 00:b9:6e:b0:8d:1a:4a:df:1d:69:a6:0f:c0:57:da: f4:75:06:3c:74:64:16:1e:a5:34:8e:f8:df:b6:3b: e6:05:ab:34:0f:3f:50:d5:d6:ad:85:63:d8:3c:a5: e5:a5:b0:22:26:09:ee:f3:c8:9e:6f:60:65:a0:86: 77:01:56:3f:3e:f3:4d:5c:5f:cb:00:44:64:23:65: b7:44:eb:91:93:14:01:7f:e2:de:ad:a5:8f:c6:15: 8e:d3:d3:07:3c:b1:fe:05:97:0c:d9:14:4f:17:3a: b6:4d:53:d3:71:33:45:31:b6:00:c4:f5:be:cd:bc: e4:d2:82:eb:f8:d5:b2:40:7f Exponent: 65537 (0x10001) 버전 일련번호 서명 알고리즘 인증서 발급자 유효기간 사용자 식별명 (DN) 가입자 공개키 11

인증서 종류와 형식 확장영역 인증기관서명 키의 용도, 인증서 정책 CRL배포방법 X509v3 extensions: Authority Key Id: b0:62:e1:74:6d:ec:7d:b9:e6:c0:d7:12:d1:ee:c1:c9:b1:1d:b9:17 DirName:/C=KR/O=KICA/OU=licensedCA/CN=signGATE Encryption CA serial:27:13 Subject Key Id: c7:0f:af:f6:73:b9:57:89:e0:13:36:96:32:2d:e9:a6:ec:6b:12:be Key Usage: Digital Signature Certificate Policies: Policy : 1.2.410.20004.5.2.1.1 CPS: http://www.signgate.com/cps.html Subject Alternative Name: DirName:/C=KR/O=한국정보인증(KICA)/OU=공인인증기관(licensedCA)/ OU=등록기관1(RA01)/OU=삼성SDS(SDS01)/OU=본점(Main)/ CN=홍길동(KilDong Hong)+SN=000/Email=kdhong1@korea.com Issuer Alternative Name: email:kica@signgate.com Basic Constraint: CA:FALSE X509v3 CRL Distribution Points: Distribution Point: DirName: ldap://ldap.sogngate.com/ C=KR/O=KICA/OU=licensedCA/CN=signGATE Class 1 CA 확장영역 키의 용도, 인증서 정책 CRL배포방법 Signature Algorithm: sha1WithRSAEncryption ad:3d:68:9a:75:18:67:01:ea:b6:12:e5:a2:49:be:56:81:35: f6:76:78:69:d9:02:c0:4b:f2:eb:53:2e:18:75:18:bc:95:e3: 7c:b6:62:88:52:0b:89:83:52:6b:35:5d:d0:6d:2c:38:27:37: a4:98:b2:f6:de:b5:a6:b3:f7:1c:81:88:8e:ba:29:77:e0:a0: 29:d4:81:b9:77:28:d6:ac:c6:16:5d:62:93:d7:d9:f9:35:36: 00:a7:5b:2b:f5:01:48:6c:b1:10:27:55:3b:82:e1:e4:fd:ed: 42:a2:14:bb:00:36:d0:d4:97:32:b0:1f:19:4a:4a:15:c 인증기관서명 상기 인증서 내용의 sha1해쉬결과를 인증기관 개인키로 RSA 암호화 12

공인인증기관 Ⅹ Ⅹ 정보통신망 전자서명 검증 전자서명생성 Root 인증기관 CA 인증서(Root 폐지목록 정지목록 . 공인인증기관 인증서 발급 . 인증관리체계 운용 인증서(인증기관) 폐지목록 정지목록 Ⅹ . 신분확인 후 인증서 발급 . 인증서 발급/관리업무 공인인증기관 CA 인증서 유효성 검증 전자서명생성키 (사용자 A 개인키) 전자서명 검증키 인증서 인증서 전자문서 전자문서 전자문서 전자서명 검증 해쉬함수 서명자 및 변조 여부 확인 전자문서+전자서명+인증서 전자서명생성 전자서명 해쉬함수 전자서명 bc12726da4354a65b7cd6bc7d98a9c8bc8 정보통신망 bc12726da4354a65b7cd6bc7d98a9c8bc8

SET 인증서 확인 인증서 확인절차 (Trust Chain) 송신자의 인증서 확인  송신자의 인증서가 실제로 인증기관에서 발행되었는지 확인해야 한다  송신자 인증서는 해당 인증서를 발급한 인증기관의 서명용 개인키로 전자서명 되어 있다. 인증기관의 인증서 확인  송신자의 인증서에 서명 된 인증기관의 전자서명을 검증하기 위해 인증기관의 서명용 공개 키가 필요하다.  인증기관의 인증서는 Root 인증기관의 서명용 개인 키로 전자서명 되어 있다. 14

SET 인증서 확인 인증서 확인절차 (Trust Chain) Root 인증기관의 인증서 확인  Root 인증기관의 인증서는 Root 인증기관의 자체 사인(Self Sign) 으로 전자서명 되어 있다  Root 인증기관의 전자서명 공개 키로 Root 인증기관의 전자서명을 검증한 후, 인증기관의 전자서명을 검증한다. ☞ Root 인증기관의 전자서명 공개 키는 상점의 S/W에 탑재되어 있다.  인증기관의 인증서에서 전자서명 공개 키를 추출하여 송신자 인증서 를 검증하여 송신자의 공인인증서의 이상여부를 확인한다. 15

SET(Secure Electronic Transaction) 전자봉투 (Digital Envelope)  송신자의 전자문서를 암호화할 때, 사용한 비밀 키를 수신자만이 볼 수 있도록 수신자의 키 교환용 공개 키로 암호화 한 결과물 이다. (키 분배 해결) 16

SET (Secure Electronic Transaction) 이중서명 지불정보(PI)와 주문정보(OI) 각각에 대하여 메시지 다이제스트를 만든 후, 이 둘의 메시지 다이제스트를 연접시킨 후, 다시 해쉬함수 를 통하여 만들어진 메시지 다이제스트에 전자서명 한 결과물이다. 이중서명 흐름도 해쉬 M1 이중서명 주문정보 M1 M2 M 연접 해쉬 M2 해쉬 지불정보 전자서명 17

SET (Secure Electronic Transaction) 이중서명 처리절차 주문정보(Order Information)를 해쉬함수로 160 비트의 메세지 다이제스트(Message Digest) M1을 생성한다 지불정보(Price Information)를 해쉬함수로 160 비트의 메시지 다이제스트 M2를 생성한다 생성된 M1과 M2를 연접(Concatenation) 한다 연접한 결과에 대하여 해쉬함수로 메시지 다이제스트 M을 구한다 메시지다이제스트 M에 고객의 전자서명용 개인키로 전자서명한다 M1 해쉬 이중서명 주문정보 M1 M2 M 연접 해쉬 M2 해쉬 지불정보 전자서명 18

SSL 보안프로토콜 19

웹 보안 네트워크 계층에서의 구현방법 네트워크 계층에 보안기능을 둠  IP Sec 응용계층의 모든 응용서비스에 보안성 제공 VPN (Virtual Private Network)에 적합 Application Transport IP Sec IP Sec Internet Network Interface 20

웹 보안 트랜스포트 계층에서의 구현방법 Transport 계층 위에 SSL에 의해 구현 응용계층의 모든 응용서비스에 보안성 제공 종단간(End-to-End) 보안성 제공 잘 정의된 보안 프로토콜 부인방지 기능이 없음 Application SSL SSL Transport Internet Network 21

웹 보안 응용 계층에서의 구현방법 : SET 등 응용계층의 응용서비스 프로토콜에서 보안성 구현 특정 응용서비스에 한정된 보안 요구사항을 수용 부인방지 기능 등 다양한 보안 서비스 제공 SET PGP S/MIME 응용계층 Application Transport Network Physical 22

SSL (Secure Socket Layer) 개요 Secure Socket Layer : 산업계 표준(de facto Standard) 2 개의 Layer로 구성 1994년 Netscape사가 웹 보안 프로토콜로 제안 지금까지 SSL 버전 3.0 이 발표 1999년 IETF 에서 TLS Working Group에서 TLS 로 발표 응용계층과 TCP계층 사이에 위치 HTTP SSL Higher Layer SSL SSL Lower layer TCP 23

SSL (Secure Socket Layer) 기능 Client 및 Server 시스템간 논리적인 안전한 채널(Secure Channel) 형성 종단간(End-to-End) 보안 서비스 제공 Client 및 Server 시스템간 인증(Authentication) 기능 제공  공개키 알고리즘(RSA, DSA, Diffie-Hellman)  SSL 인증서 기밀성 제공 : only you and I can see it  Handshake Protocol 에 의한 비밀키(세션키) 공유  DES, RC2, RC4, 3-DES 등 무결성 제공 : no one else can change it  Hashed MAC (Message Authentication Code)  SHA-1(160비트), MD5(128비트) 24

SSL (Secure Socket Layer) 구조 4 개의 서브 프로토콜 구성  Handshake Protocol  Change Cipher - Spec Protocol  Alert Protocol  Record Protocol 25

SSL (Secure Socket Layer) Handshake 프로토콜 Client 및 Server 간 데이터를 통신하기 위한 Session 설정 기능을 함 Client 및 Server 간 Session 설정을 위하여 많은 메시지를 주고 받음  SSL Protocol Version  Session ID  사용할 암호화 알고리즘 , 해쉬 알고리즘 결정  SSL 인증서(인증기능)  초기 마스터 비밀 값(pre-master-secret) 정보공유 26

Handshake 프로토콜 처리절차 27

Handshake 프로토콜 처리절차 Client Server Client_hello Phase 1. Establish security capabilities Server_hello Server Certificate Server_key_exchange Phase 2. Server Authentication and Key Exchange Client Certificate_request server_hello_done Client Certificate Client_key_exchange Phase 3. Client authentication and Key Exchange Certificate_verify Change_cipher_spec finished Phase 4. Finish Change_cipher_spec finished 28

SSL (Secure Socket Layer) Change Cipher Spec Handshake 프로토콜 동작과정에서 Client와 Server 간 서로 약속하여 정한 암호화 알고리즘(Encryption)을 상대방에게 알리는 기능을 함 Change Cipher Spec 메시지를 받으면 pending read 상태를 Active read 상태로 바꿈(Cipher Spec 변경함) Sender Receiver pending write state pending read state CCS active write state active read state 29

Change Cipher Spec 30

SSL (Secure Socket Layer) Alert 프로토콜 Handshake 프로토콜 동작과정 중 Client와 Server 간 문제 발생시 에러 메시지 전달 Client와 Server는 fatal level 의 alert 메시지를 받으면 즉시 Connection 중단하고, Session을 재 설정하여야 함 Value Name close_notify 42 bad_certificate 10 unexpected_message(F) 43 unsupported_certificate 20 bad_record_mac(F) 44 certificate_revoked 30 decompression_failure(F) 45 certificate_expired 40 handshake_failure(F) 46 certificate_unknown 41 no_certificate 47 illegal_parameter(F) 1 byte 1 byte Level Alert # Alert Protocol Payload 31

SSL (Secure Socket Layer) Record Layer Protocol Client와 Server 사이에 사용자의 실제 데이터를 블록 단위로 주고 받는 기능을 함 한번에 주고 받을 수 있는 최대 블록 크기는 2 (16,384 바이트) MAC(Message Authentication Code)를 이용하여 무결성 기능 제공 Client와 Server간 데이터를 암호화 하여 전달할 수 있도록 기밀성 기능 제공 합의된 압축 알고리즘을 이용한 메시지 압축(Compression) 기능 제공 14 32

SSL (Secure Socket Layer) Record Layer Protocol Application Data Fragment Compress Add MAC Encrypted Append SSL record header 33

SSL (Secure Socket Layer) Record Layer Protocol Change Cipher Spec App. Data Change Cipher Spec App. Data Handshake Alert Handshake Alert SSL Plaintext SSL Plaintext Reassembly Fragment Fragment Fragment Fragment Fragment … … decompression Compression Compressed Compressed Security Parameters MAC Calculation MAC Verification Compressed MAC Compressed MAC Decryption Encryption Ciphertext Ciphertext Header 추가 Header 제거 SSL Header Ciphertext Ciphertext 34

Handshake Protocol 처리절차 Client 전송 Server 전송 전송 내용 설명 Client Hello Connection 설정요청을 알림 Server Hello Server 준비 완료 상태를 알림 Server authenticate Server Certificate Server 의 인증서를 전송함 Client 가 암호화 된 pre_master 값을 전송하도록 Public Key 를 보냄 Server Key Exchange Client Certificate Request Client의 인증서를 요청함. Server Hello done Server의 전송 작업 완료를 알림 Client Certificate Client authenticate Client의 인증서를 전송함. Client가 Pre_master 값을 Server의 Key Exchange 에서 보낸 Public Key 로 암호화하여 전송함. Client Key Exchange Certificate Verify Client 인증서 유효성 검증 Change Cipher Spec Data 암호에 사용될 알고리즘 관한 정보 받음 Change Cipher Spec Data 암호에 사용될 알고리즘 관한 정보 보냄 Application DATA Application DATA 응용계층의 정보를 암호화 하여 전달함 35

Handshake 프로토콜 메시지 형식 Client가 Server 에게 SSL 세션을 맺게 하는 메시지 집합 Message Type(1 바이트), message Length(3바이트) SSL Record Layer 필드 Prot : 22 Vers : 3 Length Length Message Type Message Length ... Length Handshake Protocol 필드 Handshake Message 36

Handshake Message Type 메시지 형식 Value Handshake Message Type Parameters Hello_Request null 1 Client_Hello version, random, session id, cipher suite, compression method 2 Server_Hello version, random, session id, cipher suite, compression method 11 Server_Certificate chain of X.509v3 certificates 12 Server_Key_Exchange parameters, signature 13 Certificate_Request type, authorities 14 Server_Hello_Done null 15 Certificate_Verify signature 16 Client_Key_Exchange parameters, signature 20 Finished hash value 37

Handshake 프로토콜 Phase 1 Establish Security Capabilities 38

Handshake 프로토콜 Client Hello 메시지 형식 Client가 Server 에게 SSL 통신시작을 요청하는 메시지 메시지 구성요소  Version (2바이트) : Client 가 지원할 수 있는 SSL 가장 최신버전 정보  Random Number(32바이트) : 키를 만들기 위한 값  Session ID Length(1바이트) : 세션 ID 값의 길이  Session ID 값(0~32바이트) : 세션 ID 실제 값  Cipher Suite Length(2바이트) : 암호알고리즘(Cipher Suite) 리스트 길이  Cipher Suites (2~2 - 1 바이트) : Client가 지원하는 Cipher Suite 의 리스트 내용  Comp Method Length(1 바이트) : 압축방법 리스트 길이  Compression Methods : Client 가 지원하는 압축방법 리스트 16 39

ClientRandomValue(32 bytes) Handshake 프로토콜 Client Hello 메시지 형식 Client Server Client_hello Client_hello Protocol:22 Version:3.0 Length… …Length Type:1 Length… …Length ClientRandomValue(32 bytes) Version:3.0 ID len Session ID CipherSuite length CipherSuite 1 CipherSuite 2 … … CipherSuite n Compress n Compress len Compress 1 ……… 40

Handshake 프로토콜 Phase 1. Establish Security Capabilities Cipher Suite Value Cipher Suite 0,0 SSL_NULL_WITH_NULL_NULL 0,1 SSL_RSA_WITH_NULL_MD5 0,2 SSL_RSA_WITH_NULL_SHA 0,3 SSL_RSA_EXPORT_WITH_RC4_40_MD5 0,4 SSL_RSA_WITH_RC4_128_MD5 …….. …….. 0,27 SSL_DH_anon_WITH_3DES_EDE_CBC_SHA 0,28 SSL_FORTEZZA_DMS_WITH_NULL_SHA 0,29 SSL_FORTEZZA_DM5_WITH_FORTEZZA_CBC_SHA 0,30 SSL_FORTEZZA_DMS_WITH_RC4_128_SHA 41

Handshake 프로토콜 Phase 1 Establish Security Capabilities 42

Handshake 프로토콜 Server Hello 메시지 형식 Client Hello 메시지 양식과 거의 유사함 Server 는 Client 에서 보낸 Cipher Suite 리스트 및 Compression Method 리스트 중 Cipher Suite(암호 알고리즘, 키 길이)와 압축방법 (Compression Method)을 선택하여, Client 에게 알려줌 메시지 구성요소  Version (2바이트) : 세션이 연결된 동안 사용할 최신 SSL버전 정보  Random Number(32바이트) : 키를 만들기 위한 값  Session ID Length(1바이트) : 세션 ID 값의 길이  Session ID(0~32바이트) : 세션 ID 값  Cipher Suite(2 바이트) : Server가 선택한 암호 알고리즘  Compression Method(1 바이트) : Server가 선택한 압축방법 43

ServerRandomValue(32 bytes) Handshake 프로토콜 Server Hello 메시지 형식 Client Server ServerRandomValue(32 bytes) Protocol:22 Version:3.0 Length… …Length Type:2 Session ID(option) CipherSuite Compress Server_hello ID len Client_hello Server_hello 44

Handshake 프로토콜 Phase 2 Sever Authentication Key Exchange 45

Handshake 프로토콜 Server Certificate Server는 서버 인증서를 Client로 전송하여 인증을 받음 서버 인증서에는 서버 공개키가 내장 메시지 구성요소  Certificate Chain Length (3바이트) : 인증서 체인의 길이  Certificate Length (3바이트) : 각 인증서의 길이  Certificate (1~ 2 - 1 바이트) : 인증서의 내용(상위인증서 순으로) 24 46

Certificate Chain Length Handshake 프로토콜 Server Certificate Client Server Server_Certificate Server_Certificate Protocol:22 Version:3.0 Length… …Length Type:11 Length… …Length Certificate Chain Length Certificate 1 Length Certificate 1 ……… Certificate n Length Certificate n 47

Handshake 프로토콜 Server Key Exchange Server hello에서 Server가 선택하여 Client 로 전송한 암호 알고리즘의 실제 공개 키를 전송  RSA 경우, 모듈 값(Modulus), 공개키 값(Exponent)  이 공개 키의 사용용도는 Client가 세션 키(암호 키)를 만들기 위해 필요한 정보를 암호화하여 Server로 보낼 때 사용 Server는 자신을 인증하기 위하여 서명하여 Client로 전송  RSA(md5_hash || sha_hash) : RSA 에 의한 암호화  md5_hash = MD5 (Client_Hello.random||Server_Hello.random || Server_Key_Params)  sha_hash = SHA(Client_Hello.random||Server_Hello.random || 48

Handshake 프로토콜 Server Key Exchange 메시지 구성요소  RSA mod length (2바이트) : RSA 알고리즘의 모듈 길이  RSA mod 값 (1~ 2 -1 바이트) : RSA 모듈(법)의 값  Exponent length(2 바이트) : RSA 공개키 값 길이  RSA Exponent 값(1~ 2 -1 바이트) : RSA 공개키 값  Signature( n 바이트) : 서명 값 16 16 49

Handshake 프로토콜 Server Key Exchange Server_Key_Exchange Client Server Server_Certificate Protocol:22 Version:3.0 Length… Server_Key_Exchange …Length Type:12 Length… …Length RSA mod length RSA… mod value RSA exp length RSA exp value Signed MD5 hash(if RSA signing) (16 bytes) Signed SHA hash(if RSA signing)(20 bytes) 50

Handshake 프로토콜 Client Certificate Request Server가 Client 의 인증서를 요구하는 과정(인증과정) Server 가 받아들일 수 있는 인증기관과 인증서의 리스트를 Client 로 전송 메시지 구성요소  Certificate Type Length(1바이트) : Server가 받아들일 수 있는 인증서 타입 길이  Certificate Type (1~ 2 -1 바이트) : Server가 받아들일 수 있는 인증서 타입  CA length(2 바이트) : Server가 받아들일 수 있는 인증기관 목록 길이  DN of CA (3~ 2 -1 바이트) : 인증기관의 이름(DN 값) 8 16 51

Client_Certificaqte_Request Handshake 프로토콜 Client Certificate Request Client Server Client_Certificaqte_Request Server_Certificate Server_key_exchange Prot : 22 Vers : 3 Length Certificate_request Length Type : 13 Length Length CT Length CT 1 CT 2 …. CT n CAs length CA 1 length DN of CA 1 ……… 52

Client Certificate Request Handshake 프로토콜 Client Certificate Request CT Value Certificate Type 1 RSA signing and key exchange 2 DSA signing only 3 RSA signing with fixed Diffie-Hellman key exchange 4 DSA signing fixed Diffie-Hellman key exchange 5 RSA signing with ephemeral Diffie-Hellman key exchange 6 DSA signing with ephemeral Diffie-Hellman key exchange 20 Fortezza/DMS signing and key exchange 53

Handshake 프로토콜 Server Hello Done Server_hello_done Server가 Client 에게 세션을 연결하기 위한 초기작업을 끝냈음을 알리는 과정 Client Server Server_hello_done Server_Certificate Server_key_exchange Prot : 22 Vers : 3 Length Certificate_request Length Type : 14 Len : 0 server_hello_done 54

Handshake 프로토콜 Phase 3 Client authentication and Key Exchange 55

Handshake 프로토콜 Client Certificate Client가 자신의 인증서를 Server로 전송하는 과정 메시지 구성요소  Certificate Chain Length (3바이트) : 인증서 체인 길이  Certificate Length (3바이트) : 각 인증서의 길이  Certificate (1~ 2 - 1 바이트) : 인증서의 내용(상위 인증서순 으로) 24 56

Handshake 프로토콜 Client Certificate Client_Certificate Client Server Prot : 22 Vers : 3 Length Client_key_exchange Length Type : 11 Length Certificate_verify Length Certificate Chain Length Certificate 1 Length Certificate 1 ……… Certificate n Length Certificate n 57

Handshake 프로토콜 Client Key Exchange Client는 48바이트의 pre_master_secret(초기 마스터 비밀 값)을 생성한 후, Server_Key_Exchange 메시지에서 받은 공개 키를 이용하여 Server Hello 메시지에서 선택된 암호 알고리즘에 따라 이를 암호화 하여 전송 함 pre_master_secret = Client_version(2바이트)||random(46바이트) Encrypted Premaster Secret : 암호화된 pre_master secret 값 58

Handshake 프로토콜 Client Key Exchange Client_Key_Exchange Client Server Client_Certificate Client_key_exchange Prot : 22 Vers : 3 Length Length Type : 16 Length Certificate_verify Length Encrypted Premaster Secret(48byte) 59

Handshake 프로토콜 Certificate Verify Client는 자신의 인증서에 있는 공개키와 대응하는 개인키를 가지고 있음을 Server에게 알리는 과정 Client는 master_secret(마스터 비밀값) 를 생성하고, Client의 개인키로 암호하여 Server로 전송함  master_secret = MD5(pre_master_secret +SHA(‘A’ + pre_master_secret + Client_Hello.random + Server_Hello.random)) + MD5(pre_master_secret +SHA(‘BB’ + MD5(pre_master_secret +SHA(‘CCC’ + pre_master_secret + Client_Hello.random + Server_Hello.random)) 60

Handshake 프로토콜 Certificate Verify 61

Handshake 프로토콜 Certificate Verify 서명 과정  RSA(MD5_hash || SHA_hash)  MD5_has = MD5(master_secret || pad_2(48)||MD5(handshake_message || master_secret || pad_1(48)))  SHA_has = SHA(master_secret || pad_2(40)|| SHA(handshake_message || master_secret || pad_1(40))) handshake_message  Client_Hello 부터 Certificate_Verify 이전의 모든 Handshake 메시지 pad_1 : 0X36 ; 00110110(MD5는 48번 반복, SHA는 40번 반복) pad_2 : 0X5C ; 01011100(MD5는 48번 반복, SHA는 40번 반복) 62

Handshake 프로토콜 Certificate Verify 63

Handshake 프로토콜 Certificate Verify Certiciate_verify Client Server Client_Certificate Prot : 22 Vers : 3 Length Client_key_exchange Length Type : 15 Length …… Certificate_verify … Length Signed MD5 hash(if RSA signing)(16 Bytes) Signed SHA hash (20 bytes) 64

Handshake 프로토콜 Phase 4 Finished 65

Handshake 프로토콜 Finished 암호 알고리즘 설정, 인증 등이 성공적으로 이루어졌음을 나타냄 Finished = (MD5_hash || SHA_hash)  MD5_hash= MD5( master_secret ||pad_2(48)||MD5(handshake_ _message ||sender ||master_secret||pad_1(48) ) )  SHA_hash = SHA( master_secret ||pad_2(40)||SHA (handshake_ _message ||sender || master_secret||pad_1(40) ) ) sender : 434C4E54(Client), 53525652(Server) pad_1 : 0X36 ; 00110110(MD5는 48번 반복, SHA는 40번 반복) pad_2 : 0X5C ; 01011100(MD5는 48번 반복, SHA는 40번 반복) 66

Handshake 프로토콜 Finished

Handshake 프로토콜 Finished Finish Server Client Change_cipher_spec Prot : 22 Vers : 3 Length Change_cipher_spec 56 Type : 20 Length :0 finished ` 36 Handshake Message MD5 hash (16 bytes) Encrypted SHA hash (20 bytes) MD5 Message Authentication Code (16 bytes) MAC 68

SSL (Secure Socket Layer) 메시지 암호화 과정 레코드계층의 암호화 과정  SSL 프로토콜은 응용계층의 자료를 안전하게 전송할 수 있도록 암호 알고리즘, MAC 코드 , 압축방법 사용 HTTP Handshake Protocol Change Cipher Spec Alert protocol Application SSL Record Layer TCP 69

SSL (Secure Socket Layer) 메시지 암호화 과정 Application Data Fragment Compress Add MAC Encrypted Append SSL record header 70

SSL (Secure Socket Layer) 메시지 암호화 과정 MAC 생성 Port : 23 Vers : 3 Length Record Layer Length `` Application Data MD5 Message Authentication Code (16 bytes) MAC 71

SSL (Secure Socket Layer) 메시지 암호화 과정 MAC (Message Authentication Code) 생성  사용 알고리즘 : MD5, SHA (Secure Hash Algorithm)  MD5 : 16 Byte(128 bit) 해쉬 값, SHA : 20Byte(160 bit) 해쉬 값 MAC Write Secret 48 bytes of 00110110 Seq. num Comp.type Mess.leng Message Data 0X36  MAC Write Secret : MAC 생성 위한 키  Seq. Num(64bit) : Change cipher Spec 이후 Client, Server 주고 받은 Message 갯수 MD5 0X5C MAC Write Secret 48 bytes of 01011100 hash MAC MD5 72

SSL (Secure Socket Layer) 메시지 암호화 과정 Encryption  Application Data 와 MAC 을 Client와 Server가 정한 암호 키로 암호화 함 `` Port : 23 Vers : 3 Length Application Data MD5 Message Authentication Code (16 bytes) MAC Record Layer Encrypted 73

SSL (Secure Socket Layer) 메시지 암호화 과정 공개키 알고리즘 응용  클라이언트, 서버의 인증(Authentication)  클라이언트 서버간 pre_master_Secret (초기 마스터 비밀 값)교환  클라이언트 서버간 master_Secret(마스터 비밀 값) 교환 비밀키 알고리즘 응용  응용계층의 실제 데이터를 암호화 74

SSL (Secure Socket Layer ) 메시지 암호화 과정 SSL 프로토콜에서 사용하는 키 종류  Client write Key : Client 측에서 Message 암호시 사용  Server write Key : Server 측에서 Message 암호시 사용  Client write MAC secret : Client 측에서 MAC 생성시 사용  Server write MAC secret : Server 측에서 MAC 생성시 사용  Client write IV : Client 측에서 사용하는 Initialization Vector  Server write IV : Server 측에서 사용하는 Initialization Vector 75

SSL (Secure Socket Layer) 메시지 암호화 과정 Key 생성방법  Key Material = MD5( Master_secret + SHA(‘A’ + Master_secret + ServerHello.random + ClieantHello.random) ) + MD5( Master_secret + SHA(‘BB’ + Master_secret + MD5( Master_secret + SHA(‘CCC’ + Master_secret + ……….. 76

SSL (Secure Socket Layer) 메시지 암호화 과정 Key Material 생성방법 ‘A’ Master Secret Server Random Client Random 113 바이트 ‘BB’ Master Secret Server Random Client Random 114 바이트 SHA ‘CCC’ Master Secret Server Random Client Random SHA Master Secret Hash ….. SHA MD 5 Master Secret Hash 16 바이트 MD 5 Master Secret Hash 16 바이트 MD 5 16 바이트 Hash Hash Hash Hash Hash ……. Key Material 77

SSL (Secure Socket Layer) 메시지 암호화 과정 SSL 프로토콜에서 사용할 키 길이만큼 잘라서 사용  Client write MAC secret = Key_Material[0…15]  Server write MAC secret = Key_Material[16…31]  Client write Key = Key_Material[32…39] or Key_Material[32…47]  Server write Key = Key_Material[40…47]or Key_Material[48…63]  Client write IV = 8 byte  Server write IV = 8 byte Key Material Hash Hash Hash Hash Hash ……. Client MAC Server MAC Client write Key Server write Key Client IV Server IV 78

Handshake Protocol 처리절차 Client 전송 Server 전송 전송 내용 설명 Client Hello Connection 설정요청을 알림 Server Hello Server 준비 완료 상태를 알림 Server authenticate Server Certificate Server 의 인증서를 전송함 Client 가 암호화 된 pre_master 값을 전송하도록 Public Key 를 보냄 Server Key Exchange Client Certificate Request Client의 인증서를 요청함. Server Hello done Server의 전송 작업 완료를 알림 Client Certificate Client authenticate Client의 인증서를 전송함. Client가 Pre_master 값을 Server의 Key Exchange 에서 보낸 Public Key 로 암호화하여 전송함. Client Key Exchange Certificate Verify Client 인증서 유효성 검증 Change Cipher Spec Data 암호에 사용될 알고리즘 관한 정보 받음 Change Cipher Spec Data 암호에 사용될 알고리즘 관한 정보 보냄 Application DATA Application DATA 응용계층의 정보를 암호화 하여 전달함 79

Thanks Chul Ho Rhee richman3@naver.com