73ead73821c4c2e2c8c04841494d19ee.ppt
- Количество слайдов: 80
전자상거래 보안 (암호학과 네트워크보안) 2017. 6. 7 Chul Ho Rhee richman 3@naver. com
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 지불프로토콜 2
Information Security, Chul Ho Rhee 1 st Sem 2017 SET (Secure Electronic Transaction) q SET 개요 ¦ VISA 및 Master. Card 카드사가 인터넷상의 안전한 지불 목적으로 만든 신용카드 기반의 전자지불 프로토콜이다 ¦ SET의 구성요소 고객(Card Holder) : 신용카드 소지자 상점(Merchant) : 인터넷상에서 상품이나 정보서비스 제공자 지불 중계기관(Payment Gateway) : 판매자가 요청한 고객의 지불정보 (카드번호)로 금융기관에 승인 및 결재를 요청하는 자 발급사(Issuer) : 고객카드를 발급하고 고객계좌가 개설된 금융기관 매입사(Acquirer) : 상점을 가맹점으로 승인하고 상점계좌가 개설된 금융기관 3
Information Security, Chul Ho Rhee 1 st Sem 2017 SET (Secure Electronic Transaction) q 전자상거래의 개념도 금융망 (8) 정산 고객 Bank/Card사 지불중계기관 (Payment Gateway) 금융망 상인 Bank/Card사 (7) 지불정보 (4) 인터넷 승인요청 (지불정보) (5)승인결과 (1) 구매요구(주문정보) (2) 지불요구 (3) 지불정보 고객 (6) 상품( 영수증) 상점 4
Information Security, Chul Ho Rhee 1 st Sem 2017 SET (Secure Electronic Transaction) q SET 구성도 Customer (Card holder) Merchant Internet (open network) Existing financial network (closed network) Payment gateway Financial Institute CA (인증기관) 5
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 상세처리 흐름도 (2) 응 답 (3) (5) 등 인 록 증 양 요 식 청 (6) 인 증 응 답 1 Cardholder signature certificate CA signature certificates CA signature certificate 대칭키#1 & 계좌정보 * Encrypt : Challenge, Request. Type, Language (DER equivalent format) * Extra. Encrypt : SHA-1 hash of PAN and PAN Secret (1) (2) 등 록 양 요 식 청 (3) 인 증 요 청 Purchase Initiate Request Purchase Initiate Response Shopping, Item selection 주문, 지불수단선정 11 Purchase Response 요 청 Merchant signature certificates Merchant key-exchange certificate CA signature certificates 10 (2) (3) 등 록 양 식 (4) 인 인 증 증 요 응 청 답 승인 요청 승인 응답 Payment Gateway signature certificate & Capture Token 대칭키#4 & account number; Gateway PB exchange key envelope ( Trans. ID, Merchant signature certificate & Payment gateway key-exchange certificate ) Order Information (dual signature) Cardholder signature certificates 대칭키#1으로 암호화한 Payment Instruction 대칭키#1& account 정보(Gateway PB key envelope) (1) 지불 정보 (대칭키#1, 계좌정보; Gateway PB key envelope) (Cardholder signature certificate, Merchant signature certificate & Merchant key exchange certificate ) 4 Purchase Request Cardholder Signature & Key-exchange PB key Account data & 대칭키 #1 인 증 응 답 ( Define Payment Brand, Request key exchange) 3 1 CA signature certificates CA key-exchange certificate (4) 5 2 Payment Gateway CA Merchant Certificate Authority Initiate 요 청 (4) * 암호화 메시지 - 완성된 등록 양식 - 고객 Public signature key - 대칭키 #2 * 전자봉투(Digital envelope) - 대칭키#3 - 계좌정보 ( 계좌번호, 만기일, Card Secret) Initiate 등 록 양 식 요 청 CA signature & exchange certificate (암호화 또는 서명 안됨, Payment Brand 정의, Key Exchange 요청, Thumbprints 생성) (1) Initiate 1 Card. Holder Certificate Authority 12 지불 요청 Capture Token (대칭키#4 & account 정보; Gateway PB exchange key enveloped) Merchant signature & key-exchange certificates Merchant 17 ( Merchant signature certificates ) 지불 응답 Payment Gateway signature certificates 승인 취소 지불 취소 Credit/Credit Reversal Inquiry Request & Response Shipping Payment Gateway 13 16 9 6 Authorization Capture 7 Authorization 8 14 Capture 15 Issuer Payment card brand’s Financial Network Payment Card Brand Acquirer 6
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 트랜잭션 q 트랜잭션 종류 ¦ Initiate Request 고객, 상점, 지불 게이트웨이는 인증기관으로 인증서 발급요청 ¦ Initiate Response 고객, 상점, 지불 게이트웨이는 인증기관에서 인증서 발급 받음 ¦ Purchase Initiate Request 고객은 상점과 지불 게이트웨이의 인증서를 요구함 ¦ Purchase Initiate Response 고객은 상점과 지불 게이트웨이의 인증서를 받음 7
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 트랜잭션 q 트랜잭션 종류 ¦ Purchase Request 고객은 상점으로 구매요구(주문정보 및 지불정보 전송)를 함 ¦ Purchase Response 상점이 고객에게 구매확인(주문처리 여부)을 함 ¦ Authorization Request 상점이 P/G를 통하여 발급사(Issuer)에게 고객 카드에 대한 지불승인 요청 8
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 트랜잭션 q 트랜잭션 종류 ¦ Authorization Response 상점이 P/G를 통하여 발급사(Issuer)로부터 고객카드에 대한 지불승인 결과를 받음 ¦ Capture Request 상점이 P/G를 통하여 발급사(Issuer)에게 지불요청(정산) 함 ¦ Capture Response 상점이 P/G를 통하여 발급사(Issuer)로부터 지불요청(정산)에 대한 결과를 받음 9
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 인증서 확인 q 인증서 확인절차(Trust Chain) SET 구성요소는 Root 인증 기관의 서명용 공개 키를 미 리 보유 1 1 Card. Holder CA 5 Root 공개키 Root Cert. 인증기관 인증서 고객 인증서 CA 2 Root R 4 R 3 인증기관의 개인키로 Root 인증기관의 개인키로 전자서명 되어 있음(Self sign) 10
Information Security, Chul Ho Rhee 1 st Sem 2017 인증서 종류와 형식 Certificate: Data: Version: 3 (0 x 2) Serial Number: 382 (0 x 17 e) Signature Algorithm: sha 1 With RSAEncryption Issuer: C=KR, O=KICA, OU=licensed. CA, CN=sign. GATE 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=licensed. CA, OU=RA 01, OU=SDS 01, OU=Main, CN=Kil. Dong Hong+SN=000/Email=kdhong 1@korea. com Subject Public Key Info: Public Key Algorithm: rsa. Encryption RSA Public Key: (2048 bit) Modulus (1024 bit): 00: b 9: 6 e: b 0: 8 d: 1 a: 4 a: df: 1 d: 69: a 6: 0 f: c 0: 57: da: f 4: 75: 06: 3 c: 74: 64: 16: 1 e: a 5: 34: 8 e: f 8: df: b 6: 3 b: e 6: 05: ab: 34: 0 f: 3 f: 50: d 5: d 6: ad: 85: 63: d 8: 3 c: a 5: e 5: a 5: b 0: 22: 26: 09: ee: f 3: c 8: 9 e: 6 f: 60: 65: a 0: 86: 77: 01: 56: 3 f: 3 e: f 3: 4 d: 5 c: 5 f: cb: 00: 44: 64: 23: 65: b 7: 44: eb: 91: 93: 14: 01: 7 f: e 2: de: ad: a 5: 8 f: c 6: 15: 8 e: d 3: 07: 3 c: b 1: fe: 05: 97: 0 c: d 9: 14: 4 f: 17: 3 a: b 6: 4 d: 53: d 3: 71: 33: 45: 31: b 6: 00: c 4: f 5: be: cd: bc: e 4: d 2: 82: eb: f 8: d 5: b 2: 40: 7 f Exponent: 65537 (0 x 10001) 버전 일련번호 서명 알고리즘 인증서 발급자 유효기간 사용자 식별명 (DN) 가입자 공개 키 11
Information Security, Chul Ho Rhee 1 st Sem 2017 인증서 종류와 형식 X 509 v 3 extensions: Authority Key Id: b 0: 62: e 1: 74: 6 d: ec: 7 d: b 9: e 6: c 0: d 7: 12: d 1: ee: c 1: c 9: b 1: 1 d: b 9: 17 Dir. Name: /C=KR/O=KICA/OU=licensed. CA/CN=sign. GATE Encryption CA serial: 27: 13 Subject Key Id: c 7: 0 f: af: f 6: 73: b 9: 57: 89: e 0: 13: 36: 96: 32: 2 d: e 9: a 6: ec: 6 b: 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: Dir. Name: /C=KR/O=한국정보인증(KICA)/OU=공인인증기관(licensed. CA)/ q 확장영역 키의 용도, 인증서 정책 OU=등록기관1(RA 01)/OU=삼성SDS(SDS 01)/OU=본점(Main)/ CN=홍길동(Kil. Dong Hong)+SN=000/Email=kdhong 1@korea. com Issuer Alternative Name: email: kica@signgate. com Basic Constraint: CA: FALSE X 509 v 3 CRL Distribution Points: Distribution Point: Dir. Name: ldap: //ldap. sogngate. com/ C=KR/O=KICA/OU=licensed. CA/CN=sign. GATE Class 1 CA Signature Algorithm: sha 1 With. RSAEncryption ad: 3 d: 68: 9 a: 75: 18: 67: 01: ea: b 6: 12: e 5: a 2: 49: be: 56: 81: 35: f 6: 78: 69: d 9: 02: c 0: 4 b: f 2: eb: 53: 2 e: 18: 75: 18: bc: 95: e 3: 7 c: b 6: 62: 88: 52: 0 b: 89: 83: 52: 6 b: 35: 5 d: d 0: 6 d: 2 c: 38: 27: 37: a 4: 98: b 2: f 6: de: b 5: a 6: b 3: f 7: 1 c: 81: 88: 8 e: ba: 29: 77: e 0: a 0: 29: d 4: 81: b 9: 77: 28: d 6: ac: c 6: 16: 5 d: 62: 93: d 7: d 9: f 9: 35: 36: 00: a 7: 5 b: 2 b: f 5: 01: 48: 6 c: b 1: 10: 27: 55: 3 b: 82: e 1: e 4: fd: ed: 42: a 2: 14: bb: 00: 36: d 0: d 4: 97: 32: b 0: 1 f: 19: 4 a: 15: c CRL배포방법 q 인증기관서명 상기 인증서 내용의 sha 1해쉬결과를 인 증기관 개인키로 RSA 암호화 12
Information Security, Chul Ho Rhee 1 st Sem 2017 공인인증기관 Root 인증기관 CA 인증서(Root . 공인인증기관 인증서 발급. 인증관리체계 운용 인증서(인증기관) 전자서명생성키 (사용자 A 개인키) 정지목록 Ⅹ 폐지목록 정지목록 Ⅹ . 신분확인 후 인증서 발급 공인인증기관 CA . 인증서 발급/관리업무 폐지목록 인증서 유효성 검증 전자서명 검증키 인증서 전자문서 전자서명 전자문서+전자서명+인증서 해쉬함수 전자서명생성 전자서명 bc 12726 da 43 54 a 65 b 7 cd 6 b c 7 d 98 a 9 c 8 bc 8 정보통신망 해쉬함수 전자서명 서명자 및 변조 여부 확인 검증 bc 12726 da 43 54 a 65 b 7 cd 6 b c 7 d 98 a 9 c 8 bc 8 13
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 인증서 확인 q 인증서 확인절차 (Trust Chain) ¦ 송신자의 인증서 확인 송신자의 인증서가 실제로 인증기관에서 발행되었는지 확인해야 한다 송신자 인증서는 해당 인증서를 발급한 인증기관의 서명용 개인키로 전자서명 되어 있다. ¦ 인증기관의 인증서 확인 송신자의 인증서에 서명 된 인증기관의 전자서명을 검증하기 위해 인증기관의 서명용 공개 키가 필요하다. 인증기관의 인증서는 Root 인증기관의 서명용 개인 키로 전자서명 되어 있다. 14
Information Security, Chul Ho Rhee 1 st Sem 2017 SET 인증서 확인 q 인증서 확인절차 (Trust Chain) ¦ Root 인증기관의 인증서 확인 Root 인증기관의 인증서는 Root 인증기관의 자체 사인(Self Sign) 으로 전자서명 되어 있다 Root 인증기관의 전자서명 공개 키로 Root 인증기관의 전자서명을 검증한 후, 인증기관의 전자서명을 검증한다. ☞ Root 인증기관의 전자서명 공개 키는 상점의 S/W에 탑재되어 있다. 인증기관의 인증서에서 전자서명 공개 키를 추출하여 송신자 인증서 를 검증하여 송신자의 공인인증서의 이상여부를 확인한다. 15
Information Security, Chul Ho Rhee 1 st Sem 2017 SET(Secure Electronic Transaction) q SET 에 사용되는 기술 ¦ 전자봉투 (Digital Envelope) 송신자의 전자문서를 암호화할 때, 사용한 비밀 키를 수신자만 이 볼 수 있도록 수신자의 키 교환용 공개 키로 암호화 한 결과물 이다. (키 분배 해결) 16
Information Security, Chul Ho Rhee 1 st Sem 2017 SET (Secure Electronic Transaction) q 이중서명 ¦ 지불정보(PI)와 주문정보(OI) 각각에 대하여 메시지 다이제스트를 만든 후, 이 둘의 메시지 다이제스트를 연접시킨 후, 다시 해쉬함수 를 통하여 만들어진 메시지 다이제스트에 전자서명 한 결과물이다. q 이중서명 흐름도 해쉬 M 1 주문정보 지불정보 연접 해쉬 M 1 M 2 해쉬 이중서명 M M 2 전자서명 17
Information Security, Chul Ho Rhee 1 st Sem 2017 SET (Secure Electronic Transaction) q 이중서명 처리절차 ¦ 주문정보(Order Information)를 해쉬함수로 160 비트의 메세지 다이제스트(Message Digest) M 1을 생성한다 ¦ 지불정보(Price Information)를 해쉬함수로 160 비트의 메시지 다이제스트 M 2를 생성한다 ¦ 생성된 M 1과 M 2를 연접(Concatenation) 한다 ¦ 연접한 결과에 대하여 해쉬함수로 메시지 다이제스트 M을 구한다 ¦ 메시지다이제스트 M에 고객의 전자서명용 개인키로 전자서명한다 해쉬 M 1 주문정보 지불정보 연접 해쉬 M 1 M 2 해쉬 이중서명 M M 2 전자서명 18
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL 보안프로토콜 19
Information Security, Chul Ho Rhee 1 st Sem 2017 웹 보안 q 네트워크 계층에서의 구현방법 ¦ 네트워크 계층에 보안기능을 둠 IP Sec ¦ 응용계층의 모든 응용서비스에 보안성 제공 ¦ VPN (Virtual Private Network)에 적합 IP Sec Application Transport IP Sec Internet Network Interface 20
Information Security, Chul Ho Rhee 1 st Sem 2017 웹 보안 q 트랜스포트 계층에서의 구현방법 ¦ Transport 계층 위에 SSL에 의해 구현 ¦ 응용계층의 모든 응용서비스에 보안성 제공 ¦ 종단간(End-to-End) 보안성 제공 ¦ 잘 정의된 보안 프로토콜 ¦ 부인방지 기능이 없음 SSL Application SSL Transport Internet Network 21
Information Security, Chul Ho Rhee 1 st Sem 2017 웹 보안 q 응용 계층에서의 구현방법 : SET 등 ¦ 응용계층의 응용서비스 프로토콜에서 보안성 구현 ¦ 특정 응용서비스에 한정된 보안 요구사항을 수용 ¦ 부인방지 기능 등 다양한 보안 서비스 제공 응용계층 SET PGP S/MIME Application Transport Network Physical 22
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 개요 ¦ 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 Lower layer TCP 23
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 기능 ¦ Client 및 Server 시스템간 논리적인 안전한 채널(Secure Channel) 형성 ¦ 종단간(End-to-End) 보안 서비스 제공 ¦ Client 및 Server 시스템간 인증(Authentication) 기능 제공 공개키 알고리즘(RSA, Diffie-Hellman) SSL 인증서 ¦ 기밀성 제공 : only you and I can see it Handshake Protocol 에 의한 비밀키(세션키) 공유 DES, RC 2, RC 4, 3 -DES 등 ¦ 무결성 제공 : no one else can change it Hashed MAC (Message Authentication Code) SHA-1(160비트), MD 5(128비트) 24
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 구조 ¦ 4 개의 서브 프로토콜 구성 Handshake Protocol Change Cipher - Spec Protocol Alert Protocol Record Protocol 25
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q Handshake 프로토콜 ¦ Client 및 Server 간 데이터를 통신하기 위한 Session 설정 기능을 함 ¦ Client 및 Server 간 Session 설정을 위하여 많은 메시지를 주고 받음 SSL Protocol Version Session ID 사용할 암호화 알고리즘 , 해쉬 알고리즘 결정 SSL 인증서(인증기능) 초기 마스터 비밀 값(pre-master-secret) 정보공유 26
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 처리절차 27
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 처리절차 Client Server Client_hello Server Certificate Server_key_exchange Client Certificate_request server_hello_done Phase 1. Establish security capabilities Phase 2. Server Authentication and Key Exchange Client Certificate Client_key_exchange Certificate_verify Phase 3. Client authentication and Key Exchange Change_cipher_spec finished Phase 4. Finish 28
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q Change Cipher Spec ¦ Handshake 프로토콜 동작과정에서 Client와 Server 간 서로 약속하여 정한 암호화 알고리즘(Encryption)을 상대방에게 알리는 기능을 함 ¦ Change Cipher Spec 메시지를 받으면 pending read 상태를 Active read 상태로 바꿈(Cipher Spec 변경함) Sender pending write state active write state Receiver CCS pending read state active read state 29
Information Security, Chul Ho Rhee 1 st Sem 2017 Change Cipher Spec 30
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q Alert 프로토콜 ¦ Handshake 프로토콜 동작과정 중 Client와 Server 간 문제 발생시 에러 메시지 전달 ¦ Client와 Server는 fatal level 의 alert 메시지를 받으면 즉시 Connection 중단하고, Session을 재 설정하여야 함 Value 1 byte Level Alert # Alert Protocol Payload 0 Name 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)
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q Record Layer Protocol ¦ Client와 Server 사이에 사용자의 실제 데이터를 블록 단위로 주고 받는 기능을 함 14 ¦ 한번에 주고 받을 수 있는 최대 블록 크기는 2 (16, 384 바이트) ¦ MAC(Message Authentication Code)를 이용하여 무결성 기능 제공 ¦ Client와 Server간 데이터를 암호화 하여 전달할 수 있도록 기밀성 기능 제공 ¦ 합의된 압축 알고리즘을 이용한 메시지 압축(Compression) 기능 제공 32
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q Record Layer Protocol Application Data Fragment Compress Add MAC Encrypted Append SSL record header 33
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q Record Layer Protocol Handshake Change Cipher Spec Alert App. Data Change Cipher Spec Handshake Alert App. Data SSL Plaintext Reassembly Fragment … Compressed MAC Calculation Compressed Fragment Compressed MAC Verification Compressed MAC Encryption MAC Decryption Ciphertext Header 제거 Header 추가 SSL Header … decompression Compression Security Parameters Fragment Ciphertext 34
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake Protocol 처리절차 Client 전송 Server 전송 Connection 설정요청을 알림 Client Hello Server authenticate Server Certificate Server Key Exchange Client Certificate Request Server Hello done Client Certificate Client authenticate Server 준비 완료 상태를 알림 Server 의 인증서를 전송함 Client 가 암호화 된 pre_master 값을 전 송하도록 Public Key 를 보냄 Client의 인증서를 요청함. Server의 전송 작업 완료를 알림 Client의 인증서를 전송함. Client가 Pre_master 값을 Server의 Key Exchange 에서 보낸 Public Key 로 암호 화하여 전송함. Client Key Exchange Certificate Verify Client 인증서 유효성 검증 Change Cipher Spec Data 암호에 사용될 알고리즘 관한 정보 받 음 Change Cipher Spec Application DATA 전송 내용 설명 Application DATA Data 암호에 사용될 알고리즘 관한 정보 보냄 응용계층의 정보를 암호화 하여 전달 함 35
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q 메시지 형식 ¦ Client가 Server 에게 SSL 세션을 맺게 하는 메시지 집합 ¦ Message Type(1 바이트), message Length(3바이트) SSL Record Layer 필드 Prot : 22 Vers : 3 Length Message Type 0 Length Message Length . . . Length Handshake Protocol 필드 Handshake Message 36
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q 메시지 형식 Value Parameters Handshake Message Type 0 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. 509 v 3 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
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Phase 1 Establish Security Capabilities 38
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q 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) 리스트 길이 16 Cipher Suites (2~2 - 1 바이트) : Client가 지원하는 Cipher Suite 의 리스트 내용 Comp Method Length(1 바이트) : 압축방법 리스트 길이 Compression Methods : Client 가 지원하는 압축방법 리스트 39
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Client Hello 메시지 형식 Client Server Client_hello Protocol: 22 …Length Version: 3. 0 Length… Type: 1 …Length… Version: 3. 0 Client. Random. Value(32 bytes) ID len Session ID Cipher. Suite length Cipher. Suite 2 Cipher. Suite 1 … Compress len Compress 1 … Cipher. Suite n ……… Compress n 40
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Phase 1. Establish Security Capabilities Value Cipher Suite 0, 0 SSL_NULL_WITH_NULL 0, 1 SSL_RSA_WITH_NULL_MD 5 0, 2 SSL_RSA_WITH_NULL_SHA 0, 3 SSL_RSA_EXPORT_WITH_RC 4_40_MD 5 0, 4 SSL_RSA_WITH_RC 4_128_MD 5 ……. . 0, 27 SSL_DH_anon_WITH_3 DES_EDE_CBC_SHA 0, 28 SSL_FORTEZZA_DMS_WITH_NULL_SHA 0, 29 SSL_FORTEZZA_DM 5_WITH_FORTEZZA_CBC_SHA 0, 30 SSL_FORTEZZA_DMS_WITH_RC 4_128_SHA 41
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Phase 1 Establish Security Capabilities 42
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q 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
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Hello 메시지 형식 Client Server_hello Client_hello Protocol: 22 Server_hello …Length Version: 3. 0 Type: 2 Length… Version: 3. 0 Server. Random. Value(32 bytes) ID len Session ID(option) Cipher. Suite Compress 44
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Phase 2 Sever Authentication Key Exchange 45
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Certificate ¦ Server는 서버 인증서를 Client로 전송하여 인증을 받음 ¦ 서버 인증서에는 서버 공개키가 내장 ¦ 메시지 구성요소 Certificate Chain Length (3바이트) : 인증서 체인의 길이 Certificate Length (3바이트) : 각 인증서의 길이 24 Certificate (1~ 2 - 1 바이트) : 인증서의 내용(상위인증서 순으로) 46
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Certificate Client Server_Certificate Protocol: 22 …Length Version: 3. 0 Type: 11 Length… Certificate Chain Length Certificate 1 ……… Certificate n Length Certificate n 47
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Key Exchange ¦ Server hello에서 Server가 선택하여 Client 로 전송한 암호 알고리즘의 실제 공개 키를 전송 RSA 경우, 모듈 값(Modulus), 공개키 값(Exponent) 이 공개 키의 사용용도는 Client가 세션 키(암호 키)를 만들기 위해 필요한 정보를 암호화하여 Server로 보낼 때 사용 ¦ Server는 자신을 인증하기 위하여 서명하여 Client로 전송 RSA(md 5_hash || sha_hash) : RSA 에 의한 암호화 md 5_hash = MD 5 (Client_Hello. random||Server_Hello. random || Server_Key_Params) sha_hash = SHA(Client_Hello. random||Server_Hello. random || Server_Key_Params) 48
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Key Exchange ¦ 메시지 구성요소 RSA mod length (2바이트) : RSA 알고리즘의 모듈 길이 16 RSA mod 값 (1~ 2 -1 바이트) : RSA 모듈(법)의 값 Exponent length(2 바이트) : RSA 공개키 값 길이 16 RSA Exponent 값(1~ 2 -1 바이트) : RSA 공개키 값 Signature( n 바이트) : 서명 값 49
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Key Exchange Client Server_Certificate Server_Key_Exchange Protocol: 22 …Length Version: 3. 0 Length… Type: 12 …Length mod value Length… RSA mod length RSA… RSA exp length RSA exp value Signed MD 5 hash(if RSA signing) (16 bytes) Signed SHA hash(if RSA signing)(20 bytes) 50
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Client Certificate Request ¦ Server가 Client 의 인증서를 요구하는 과정(인증과정) ¦ Server 가 받아들일 수 있는 인증기관과 인증서의 리스트를 Client 로 전송 ¦ 메시지 구성요소 Certificate Type Length(1바이트) : Server가 받아들일 수 있는 인증서 타입 길이 8 Certificate Type (1~ 2 -1 바이트) : Server가 받아들일 수 있는 인증서 타입 CA length(2 바이트) : Server가 받아들일 수 있는 인증기관 목록 길이 16 DN of CA (3~ 2 -1 바이트) : 인증기관의 이름(DN 값) 51
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Client Certificate Request Client Server_Certificate Server_key_exchange Certificate_request Client_Certificaqte_Request Prot : 22 Vers : 3 Length Type : 13 Length CT Length …. 0 Length CT 1 CT n CT 2 CAs length CA 1 length DN of CA 1 ……… 52
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q 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
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Server Hello Done ¦ Server가 Client 에게 세션을 연결하기 위한 초기작업을 끝냈음을 알리는 과정 Client Server_Certificate Server_key_exchange Certificate_request server_hello_done Server_hello_done Prot : 22 Length Vers : 3 Type : 14 0 Len : 0 Length 0 0 54
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Phase 3 Client authentication and Key Exchange 55
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Client Certificate ¦ Client가 자신의 인증서를 Server로 전송하는 과정 ¦ 메시지 구성요소 Certificate Chain Length (3바이트) : 인증서 체인 길이 Certificate Length (3바이트) : 각 인증서의 길이 24 Certificate (1~ 2 - 1 바이트) : 인증서의 내용(상위 인증서순 으로) 56
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Client Certificate Client Server Client_Certificate Client_key_exchange Certificate_verify Prot : 22 Length Vers : 3 Type : 11 Length 0 Length Certificate Chain Length Certificate 1 ……… Certificate n Length Certificate n 57
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q 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
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Client Key Exchange Client Server Client_Certificate Client_key_exchange Certificate_verify Client_Key_Exchange Prot : 22 Vers : 3 Length Type : 16 0 Length Encrypted Premaster Secret(48 byte) 59
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Certificate Verify ¦ Client는 자신의 인증서에 있는 공개키와 대응하는 개인키를 가지 고 있음을 Server에게 알리는 과정 ¦ Client는 master_secret(마스터 비밀값) 를 생성하고, Client의 개인키로 암호하여 Server로 전송함 master_secret = MD 5(pre_master_secret +SHA(‘A’ + pre_master_secret + Client_Hello. random + Server_Hello. random)) + MD 5(pre_master_secret +SHA(‘BB’ + pre_master_secret + Client_Hello. random + Server_Hello. random)) + MD 5(pre_master_secret +SHA(‘CCC’ + pre_master_secret + Client_Hello. random + Server_Hello. random)) 60
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Certificate Verify 61
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Certificate Verify ¦ 서명 과정 RSA(MD 5_hash || SHA_hash) MD 5_has = MD 5(master_secret || pad_2(48)||MD 5(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 : 0 X 36 ; 00110110(MD 5는 48번 반복, SHA는 40번 반복) ¦ pad_2 : 0 X 5 C ; 01011100(MD 5는 48번 반복, SHA는 40번 반복) 62
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Certificate Verify 63
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Certificate Verify Client Server Certiciate_verify Client_Certificate Client_key_exchange Certificate_verify Prot : 22 Length Vers : 3 0 Type : 15 Length …… … Length Signed MD 5 hash(if RSA signing)(16 Bytes) Signed SHA hash (20 bytes) 64
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Phase 4 Finished 65
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Finished ¦ 암호 알고리즘 설정, 인증 등이 성공적으로 이루어졌음을 나타냄 ¦ Finished = (MD 5_hash || SHA_hash) MD 5_hash= MD 5( master_secret ||pad_2(48)||MD 5(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 : 434 C 4 E 54(Client), 53525652(Server) ¦ pad_1 : 0 X 36 ; 00110110(MD 5는 48번 반복, SHA는 40번 반복) ¦ pad_2 : 0 X 5 C ; 01011100(MD 5는 48번 반복, SHA는 40번 반복) 66
Information Security, Chul Ho Rhee Handshake 프로토콜 q Finished 1 st Sem 2017
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake 프로토콜 q Finished Client Server Change_cipher_spec finished Finish Prot : 22 56 Vers : 3 0 Type : 20 Length : 0 36 MD 5 hash Length 0 Handshake Message (16 bytes) ` Encrypted SHA hash (20 bytes) MD 5 Message Authentication Code MAC (16 bytes) 68
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ 레코드계층의 암호화 과정 SSL 프로토콜은 응용계층의 자료를 안전하게 전송할 수 있도록 암호 알고리즘, MAC 코드 , 압축방법 사용 HTTP SSL Handshake Protocol Change Cipher Spec Alert protocol Application Record Layer TCP 69
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 Application Data Fragment Compress Add MAC Encrypted Append SSL record header 70
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ MAC 생성 Port : 23 Vers : 3 0 Length Record Layer Length Application Data `` MD 5 Message Authentication Code (16 bytes) MAC 71
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ MAC (Message Authentication Code) 생성 사용 알고리즘 : MD 5, SHA (Secure Hash Algorithm) MD 5 : 16 Byte(128 bit) 해쉬 값, SHA : 20 Byte(160 bit) 해쉬 값 MAC 48 bytes Write Secret of 00110110 Seq. Comp. type num Mess. leng Message Data 0 X 36 MAC Write Secret : MAC 생성 위한 키 MD 5 0 X Seq. Num(64 bit) : 5 C Change cipher Spec 이후 Client, Ser er 주고 Write 48 bytes of 01011100 Secret hash 받은 Message 갯수 MD 5 MAC 72
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ Encryption Application Data 와 MAC 을 Client와 Server가 정한 암호 키로 암호화 함 Port : 23 Vers : 3 0 Length Record Layer Length Application Data `` Encrypted MD 5 Message Authentication Code (16 bytes) MAC 73
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ 공개키 알고리즘 응용 클라이언트, 서버의 인증(Authentication) 클라이언트 서버간 pre_master_Secret (초기 마스터 비밀 값)교환 클라이언트 서버간 master_Secret(마스터 비밀 값) 교환 ¦ 비밀키 알고리즘 응용 응용계층의 실제 데이터를 암호화 74
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer ) q 메시지 암호화 과정 ¦ 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
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ Key 생성방법 Key Material = MD 5( Master_secret + SHA(‘A’ + Master_secret + Server. Hello. random + Clieant. Hello. random) ) + MD 5( Master_secret + SHA(‘BB’ + Master_secret + Server. Hello. random + Clieant. Hello. random) ) + MD 5( Master_secret + SHA(‘CCC’ + Master_secret + Server. Hello. random + Clieant. Hello. random) ) + ………. . 76
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ Key Material 생성방법 ‘A’ Master Secret ‘BB’ 16 바이 트 MD 5 Hash Client Random Server Random SHA Hash 114 바이트 Client Random SHA Master Secret Hash Master Secret 16 바이 트 Hash Server Random 113 바이트 …. . Master Secret MD 5 Master Secret ‘CCC’ Master Secret SHA 16 바이 트 Server Random Client Random MD 5 Hash ……. Key Material 77
Information Security, Chul Ho Rhee 1 st Sem 2017 SSL (Secure Socket Layer) q 메시지 암호화 과정 ¦ 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 Client MAC Hash ……. Server MAC Client write Key Server write Key Client IV Server IV 78
Information Security, Chul Ho Rhee 1 st Sem 2017 Handshake Protocol 처리절차 Client 전송 Server 전송 Connection 설정요청을 알림 Client Hello Server authenticate Server Certificate Server Key Exchange Client Certificate Request Server Hello done Client Certificate Client authenticate Server 준비 완료 상태를 알림 Server 의 인증서를 전송함 Client 가 암호화 된 pre_master 값을 전 송하도록 Public Key 를 보냄 Client의 인증서를 요청함. Server의 전송 작업 완료를 알림 Client의 인증서를 전송함. Client가 Pre_master 값을 Server의 Key Exchange 에서 보낸 Public Key 로 암호 화하여 전송함. Client Key Exchange Certificate Verify Client 인증서 유효성 검증 Change Cipher Spec Data 암호에 사용될 알고리즘 관한 정보 받 음 Change Cipher Spec Application DATA 전송 내용 설명 Application DATA Data 암호에 사용될 알고리즘 관한 정보 보냄 응용계층의 정보를 암호화 하여 전달 함 79
Information Security, Chul Ho Rhee 1 st Sem 2017 Thanks Chul Ho Rhee richman 3@naver. com 80
73ead73821c4c2e2c8c04841494d19ee.ppt