
974e37a07ac673ad3f62cc82e839d86c.ppt
- Количество слайдов: 56
보안에서의 전자서명과 xmldsig 2002. 11. 26 컴퓨터 과학과 김지현 (http: //cs. sookmyung. ac. kr/~yeronica/xml/) 1
목차 1. 2. 3. 4. 5. XML XML XML 정보보호기술의 필요성 전자서명 표준화 및 응용 동향 전자서명 이해를 위한 기반 지식 전자서명의 문법 및 구문 분석 전자서명의 개요 및 생성 검증 과정 ※ • • • 참고 문서 RFC 3275 XML Security (Blake Dournaee) – RSA PRESS 한국정보보호진흥원 - 전자서명 및 인증제도 http: //www. kisa. or. kr/technology/sub 2/Signature_Auth. ppt 2
1. XML 정보보호기술의 필요성 3
• 전자거래에 필요한 전자거래 정보보호 기술 1. Password 기반, PKI 기반, SSL 기반의 보안 서비스 - 현재의 전자상거래 시스템을 지원하는 기술 2. XML 정보보호 기술 기반의 보안 서비스 1. 새롭게 출현하고 있는 XML 기반 전자상거래 프레임워크인 eb. XML, Web Service 기반 전자상거래 지원 4
• 전자상거래가 활성화되는 경우 발생할 수 있는 정보 화의 역기능을 방지하기 위해 다음과 같은 정보 보호 가 요구됨 – – 기밀성 : 전송되는 정보의 비밀 보장 무결성 : 전송되는 정보가 변경되지 않음을 보장 인 증 : 전송자의 신문을 증명 부인방지 : 사후 자신의 행위에 대한 부인 불가 암호화 시스템 : 기밀성 보장 전자서명시스템 : 무결성, 인증, 부인방지 보장 • 주요 XML 기반 보안 기술 표준화 수행 - XML 전자서명 - XML Encryption - XKMS 5
2. XML 전자서명 표준화 및 응용 동향 6
XML 전자서명 표준화 동향 • XML Signatures (xmldsig) IETF Working Group http: //www. ietf. org/html. charters/xmldsig-charter. html • IETF와 W 3 C의 공동 작업으로 XML 전자서명 표준화 작업 진행 • W 3 C http: //www. w 3. org/Signature/ 7
XML 전자서명 표준화 동향 • The mission of this working group - 웹 자원과 프로토콜 메시지 부분(ex. http 등) 등에 대 한 디지털 서명을 표현하는 XML 형식의 구문의 개발 - 서명의 계산/생성과 확인을 위한 절차의 개발 8
XML 전자서명 표준화 문서 Internet-Drafts: • Exclusive XML Canonicalization, Version 1. 0 Request For Comments: • XML-Signature Requirements (RFC 2807) • XML-Signature Syntax and Processing (RFC 3075) • Canonical XML Version 1. 0 (RFC 3076) • XML-Signature Syntax and Processing (RFC 3275) 9
XML 전자서명 응용 동향 Toolkits and SDKs • Baltimore • Entrust/Toolkit™ ; for Java™ • IAIK XML Signature Library (IXSIL) • IBM XML Security Suite • Infomosaic • Microsoft • NEC XMLDSIG • Phaos • RSA BSAFE Cert-J • Ubisecure • Verisign 10
XML 전자서명 구현 오픈 소스 • Apache XML Security for Java, Christian Geuer. Pollmann (BSD License) • Gap. Xse for Java, University of Pisa (LGPL License) • Canonical XML and Exclusive Canonical XML for Python, Joseph Reagle and Richard Salz (W 3 C and Python Licenses) • Canonical XML for Perl, T. J. Mather (Perl License) • XML Security Library, Aleksey Sanin (MIT License) 11
3. XML 전자서명 이해를 위한 기반 지식 참고 자료 : 전자서명 및 인증제도 ( 한국정보보호센터 ) 12
대칭형 암호시스템 Bob Alice 공통비밀키 암호화 복호화 대칭형 암호시스템 • 특징 • 장점 • 단점 움 • 사례 : 암호화키와 복호화키가 동일 : 암호화 및 복호화 속도가 빠름 : 키관리의 어려움. 키분배의 문제. 다양한 응용의 어려 : DES, FEAL 등 13
비대칭 암호 시스템 Alice Bob 암호화 공개키 복호화 개인키 비대칭형 암호시스템 • 특징 • 장점 • 단점 • 사례 : : 복호화키(=개인키)와 암호화키(=공개키)가 다름 키관리가 용이. 다양한 응용이 가능. 안전성이 뛰어남 암호화 및 복호화 속도가 느림 RSA 등 14
해쉬 함수 문서번호 : 1 수신 : 홍길동 참조 : 제목 : ------- 문서 X Dyejsmldmnf mdfnmd, sdd fnfnfnlkfekkfe ekfkjefjefelfee -------- 해쉬함수 문서 Y (메시지 다이제스트) • 특징 : 일방향 함수 + 메시지 다이제스트(Message Digest) • 장점 : 디지털서명에서 주로 사용 • 사례 : MD 5, SHA 등 15
메시지 다이제스트 (Message Digest) • 함수의 출력에 기반한 함수의 입력을 추론할 수 없음. • Hash 함수에서 파일의 데이터는 단방향 Hash 함수의 입력으로 사용되어서 Hash 값을 생성함 • 누군가 파일을 수정하면 Hash 값이 변경 되고, 메시지 다이제스 트의 수신자는 변경된 사실을 눈치채게 됨 • 동일한 메시지 다이제스트를 생성할 대체의 메시지를 궁리한다 는 것이 어려움. 16
전자서명의 기능 – 위조불가 : 개인키를 소유하지 않은 자는 전자서명 생성 불가 – 변경불가 (Message Authentication) : 개인키를 소유하지 않은 자는 전자문서 변경 불가 – 서명자 인증 (Signer Authentication) : 생성키를 소유한 자가 전자서명의 행위자임을 인증 – 부인불가 : 개인키의 소유자가 전자서명후에 행위에 대한 부 인 불가 17
전자서명 생성 과정 전자서명 생성 프로그램 전자문서 전자서명 개인키 해쉬함수 메시지 다이제스트 전자서명 알고리즘( 암호화) 전자서명 <전자서명 생성작업 세부 수행도> 18
전자서명 검증 과정 전자서명 검증 프로그램 전자문서 해쉬함수 메시지다 이제스트 1 맞으면 전자서명 공개키 비 교 틀리면 알고리즘 (복호화) 유효 무효 메시지다 이제스트 2 <전자서명 검증작업 세부 수행도> 19
전자서명 키생성 전자서명 키 생성 전자서명 개인키 전자서명 공개키 • 개인키(생성키)는 안전한 장치(스마트카드등)에 보관 • 공개키(검증키)는 공개되는 정보 • 개인키/공개키는 유일한 하나의 쌍 • 개인키/공개키는 안전한 키 생성 알고리즘을 통해 생성 20
4. XML 전자서명의 개요 및 생성 검증 과정 21
The XML Signature namespace • Namespace : http: //www. w 3. org/2000/09/xmldsig# 22
The XML Signature namespace and its related element http: //www. w 3. org/2000/09/xmldsig# <Transforms> <Signature. Method> <Reference> <Signed. Info> <Canonicalization. Method> <Digest. Method> <Signature. Value> <Digest. Value> 23
XML 전자서명 구조 <Signature> <Signed. Info> …. <Canonicalization. Method/> <Signature. Method/> (<Reference URI? > </Signed. Info> (<Transforms>)? <Signature. Value> (<Key. Info>)? (<Object ID? >)* </Signature> <Digest. Method> <Digest. Value> </Reference>)+ 24
XML 전자서명 형식 1. Enveloped (피포함) 형식 2. Enveloping (포함) 형식 3. Detached (분리) 형식 25
Enveloped 형식 • 서명될 data object안에 서명이 포함되어 있음. <Root. Node> <Signature>. . </Signature> </Root. Node> 서명 대상 <Root. Node> 서명 <Signature> 26
Enveloping 형식 예제 <root. Element><price>$12000</price> <Signature xmlns="http: //www. w 3. org/2000/09/xmldsig#"> <Signed. Info> <Canonicalization. Method Algorithm="http: //www. w 3. org/TR/2001/REC-xml- c 14 n-20010315"></Canonicalization. Method> <Signature. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#rsa-sha 1"> </Signature. Method> <Reference URI=""> <Transforms> <Transform Algorithm="http: //www. w 3. org/2000/09/xmldsig#envelopedsignature"></Transform> <Transform Algorithm="http: //www. w 3. org/TR/2001/REC-xml-c 14 n 20010315"></Transform> </Transforms> <Digest. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#sha 1"> </Digest. Method> <Digest. Value>gps 9 e. U 5 GIl. Azw 188 fa. Gc 2 e. Q 56 L 0=</Digest. Value> </Reference> </Signed. Info> <Signature. Value>kq. FSSPN 3 t. Nib. QT 3 d. Yn. KKR 8 FEE 3 m. Uf 7 a. Go=</Signature. Value> <Key. Info>…. </Key. Info> </Signature> 27 </root. Element>
Enveloping 형식 • 서명될 data object가 서명에 포함되어 있음. <Signature> <child. Node>. . </child. Node> </Signature> 서명 <Signature> 서명대상 <child. Node> 28
Enveloping 형식 예제 <Signature xmlns="http: //www. w 3. org/2000/09/xmldsig#"> <Signed. Info> <Canonicalization. Method Algorithm="http: //www. w 3. org/TR/2001/REC-xml-c 14 n 20010315"></Canonicalization. Method> <Signature. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#dsa-sha 1"> </Signature. Method> <Reference URI="#Object 1"> <Transforms> <Transform Algorithm="http: //www. w 3. org/TR/2001/REC-xml-c 14 n-20010315"> </Transforms> <Digest. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#sha 1"> </Digest. Method> <Digest. Value>i. USD 6 LYG 1 b 1 nr. UTUn. BHE 3 i. LL 3 LU=</Digest. Value> </Reference> </Signed. Info> <Signature. Value>Ir 4 w 44 Jiqvnp. Vx. D 5 l. QL 4 sr. JGeupyp. XGI 4 e++RL 2 Bi. LQ==</Signature. Value> <Key. Info>…. </Key. Info> <Object Id="Object 1"><list> <item>1234</item><price>$1200</price></list></Object> 29 </Signature>
Detached 형식 • 서명될 data object와 서명이 분리되어 있음 <Signature>. . </Signature> 서명대상 (http: //url. net) 서명 <Signature> 30
Detached 형식 예제 <Signature xmlns="http: //www. w 3. org/2000/09/xmldsig#"> <Signed. Info> <Canonicalization. Method Algorithm="http: //www. w 3. org/TR/2001/RECxml-c 14 n-20010315"> </Canonicalization. Method> <Signature. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#rsa-sha 1"> </Signature. Method> <Reference URI="http: //mm. sookmyung. ac. kr/~sblim"> <Digest. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#sha 1"> </Digest. Method> <Digest. Value>v+i. N 7 u. P 9 BJs. Zx. Vca. WXk. Sun. AEepo=</Digest. Value> </Reference> </Signed. Info> <Signature. Value> tpyw. Ep. Nfg. WQo. H 5 NFr 3 w. G 2 y 5 CIDrs. T 1 Kk. Tdc. Ff. ALWKd. I 8 Iiww. Mz</Signature. Value> <Key. Info>…. </Key. Info> </Signature> 31
5. XML 전자서명의 문법 및 구 문 분석 32
<Signature> • XML 전자서명의 루트원소 • DTD : <!ELEMENT Signature (Signed. Info, Signature. Value, Key. Info? , Object*) > <!ATTLIST Signature xmlns CDATA #FIXED 'http: //www. w 3. org/2000/09/xmldsig#' Id ID #IMPLIED > 33
<Signed. Info> • 실제로 서명되는 정보로 검증시의 대상이 됨 • 검증시의 두 단계 - <Signed. Info>에 대한 서명의 검증과 <Signed. Info> 안의 각 Reference의 다이제스트에 대한 검증 • DTD : <!ELEMENT Signed. Info (Canonicalization. Method, Signature. Method, Reference+) > <!ATTLIST Signed. Info Id ID #IMPLIED> 34
<Canonicalization. Method> • Signed. Info 원소를 다이제스트하기 전에 그 원소를 정규화할때 사용하 는 알고리즘을 지정 • 정규화 알고리즘 : 문서내 주석 포함 여부에 따라 두가지로 나뉨 - With Comments : http: //www. w 3. org/TR/2001/REC-xml-c 14 n-20010315 - Omit Comments : http: //www. w 3. org/TR/2001/REC-xml-c 14 n 20010314#With. Comments • DTD : <!ELEMENT Canonicalization. Method (#PCDATA %Method. ANY; )* > <!ATTLIST Canonicalization. Method Algorithm CDATA #REQUIRED > 35
정규화(Canonicalization) • 디지털 서명은 검증 계산이 서명 계산과 정확히 같은 비트들에 대해 수행될 경우에만 제대로 작동 • 서명된 데이터의 표면상의 표현이 서명과 확인 사이에서 변경 가능함 • 변화될 수 있는 부분을 표준화하기 위한 어떤 방법이 반드시 서 명과 확인 전에 사용되어야함 EX) 서명 시점과 서명 확인 시점에서 한가지 행 종료 방법에서 다 른 방법으로 변경되는 것이 가능하므로, 서명과 확인전에 행 종 료를 표준형으로 정규화 할 필요 있으며, 그렇지 않으면 검증은 실패한다. 36
<Signature. Method> • 정규화된 <Signed. Info>를 Signature. Value로 변환할 때 사용하 는 알고리즘 지정 • 서명 알고리즘 - DSA http: //www. w 3. org/2000/09/xmldsig#dsa-sha 1 - RSA http: //www. w 3. org/2000/09/xmldsig#rsa-sha 1 • DTD <!ELEMENT Signature. Method (#PCDATA|HMACOutput. Length %Method. ANY; )* > <!ATTLIST Signature. Method Algorithm CDATA #REQUIRED > 37
<Reference> • Reference의 URI 속성은 서명될 데이터 객체를 식별 • DTD : <!ELEMENT Reference (Transforms? , Digest. Method, Digest. Value) > <!ATTLIST Reference Id ID #IMPLIED URI CDATA #IMPLIED Type CDATA #IMPLIED> 38
<Reference> URI Type Data Type URI=“http: //mm. sookmyung. ac. kr/imsge. gif” Binary octets URI=“http: //mm. sookmyung. ac. kr/foo. xml” Binary octets URI=“http: //mm. sookmyung. ac. kr/foo. pdf” Binary octets URI=“file: ///c: filesfoo. doc” Binary octets URI=“#Some. Element” Node-set URI=“” Node-set 39
<Transforms> • 자원의 콘텐트가 다이제스트 되기 전에 그에 적용된 처리 단계의 순서화된 목록, 정규화, 인코딩/디코딩(압축포함), XSLT, XPath(소스 문서의 일부분을 누락한 XML 문서 변환 허용) • 변환 알고리즘 - Enveloped Signature http: //www. w 3. org/2000/09/xmldsig#enveloped-signature - XPath http: //www. w 3. org/TR/1999/REC-xpath-19991116 - XSLT http: //www. w 3. org/TR/1999/REC-xslt-19991116 • DTD : <!ELEMENT Transforms (Transform+)> <!ELEMENT Transform (#PCDATA|XPath %Transform. ANY; )* > <!ATTLIST Transform Algorithm CDATA #REQUIRED > <!ELEMENT XPath (#PCDATA) > 40
<Digest. Method> • Transforms가 적용된 이후 Digest. Value를 만들어 내기 위해 데이터에 적용되는 알고리즘 • 다이제스트 알고리즘 - SHA 1 http: //www. w 3. org/2000/09/xmldsig#sha 1 • DTD : <!ELEMENT Digest. Method (#PCDATA %Method. ANY; )* > <!ATTLIST Digest. Method Algorithm CDATA #REQUIRED > 41
<Digest. Value> • 데이터객체에 Transform들을 적용한 후 결과로부터 얻은 다이제스트 값, BASE 64로 인코드됨. • DTD : <!ELEMENT Digest. Value (#PCDATA) > 42
<Signature. Value> • <Signed. Info>에 지정된 알고리즘에 근거하여 Signed. Info 를 정규화하고 그 결과에 대해 서명된 디지털 서명의 실제 값을 가짐, BASE 64로 인코드됨 • DTD : <!ELEMENT Signature. Value (#PCDATA) > <!ATTLIST Signature. Value Id ID #IMPLIED> 43
<Key. Info> • 서명 검증에 사용될 공개키(검증키)를 포함 • DTD : <!ELEMENT Key. Info (#PCDATA|Key. Name|Key. Value|Retrieval. Method| X 509 Data|PGPData|SPKIData|Mgmt. Data %Key. Info. ANY; )* > <!ATTLIST Key. Info Id ID #IMPLIED > 44
<Object> • 서명 원소 안이나 혹은 다른 곳의 데이터 객체를 포함시키 는데 사용 • DTD : <!ELEMENT Object (#PCDATA|Signature. Properties|Manifest %Object. ANY; )* > <!ATTLIST Object Id ID #IMPLIED Mime. Type CDATA #IMPLIED Encoding CDATA #IMPLIED > 45
6. XML 전자서명 생성 및 검증 과정 46
• Core Generation - Reference 생성 과정 - Signature 생성 과정 • Core Validation - Reference 검증 - Signature 검증 47
Core Generation • 각 서명 대상 객체에 대한 Step 1의 과정의 생성 규칙을 적용한 이후에 Step 2의 생성 규칙을 적용시킴. Step 1) Reference 생성 Step 2) Signature 생성 48
<Reference>. . <Signature. Method> <Canonicalization. Method> </Reference> <Reference>. . </Reference> <Signed. Info> Canonicalizer <Signature> Key <Signed. Info> Signature . . <Signature. Value> </Signed. Info> …… <Signature. Value> </Signature. Value XML 전자서명 생성 > </Signature> 49
Reference 생성 과정 1. 데이터 객체에 어플리케이션이 정하는 바의 Transform들을 적용 2. 결과인 데이터 객체에 각각에 대해 다이제스트 값을 계산 3. 데이터 객체의 식별(옵션), 모든 변환 원소(옵션), 다 이제스트 알고리즘, Digest. Value를 포함하는 Reference 원소를 생성 50
Reference 생성 과정 예제 <Reference URI=" http: //mm. sookmyung. ac. kr "> <Transforms> <Transform Algorithm="http: //www. w 3. org/TR/2001/REC-xml-c 14 n-20010315"> </Transforms> <Digest. Method Algorithm="http: //www. w 3. org/2000/09/xmldsig#sha 1"> </Digest. Method> <Digest. Value>i. USD 6 LYG 1 b 1 nr. UTUn. BHE 3 i. LL 3 LU=</Digest. Value> </Reference> 51
Signature 생성 과정 1. <Signature. Method>, <Canonicalization. Method>, <Reference> 등을 갖는 <Signed. Info> 원소를 생성 2. <Signed. Info>의 <Canonicalization. Method>에 지정된 알고리 즘을 사용하여 Signed. Info를 정규화하고 그 결과에 대 해 <Signature. Method>에 지정된 알고리즘으로 서명 후 <Signature. Value>를 계산 3. <Signed. Info>, <Key. Info>, <Signature. Value> 등을 포함하 는 <Signature> 원소를 구성 52
Core Validation 1. Reference 검증 - Reference로 규정되어 식별되고 변환된 콘텐트의 해쉬 값이 지정된 Digest. Value와 일치하는지 검증 2. Signature 검증 - Signature. Value가 핵심 검증에 지정된 Canonicalization. Method와 Signature. Method를 사용하여 Signed. Info를 처리한 결과와 일치하는지 검증 53
Root Certificate Store <Key. Info>. . 공개키. . <Signature> </Key. Info> . . <Key. Info> </Signature> Trust Engine XML Parser <Signature>. . </Signature> Yes/No Signature Validation XML 전자서명 검증 및 신뢰 54
Reference 검증 • <Signed. Info>에 들어 있는 <Canonicalization. Method> 에 근거하여 Signed. Info 원소를 정규화 • 다이제스트될 데이터 객체를 얻음 • 결과 데이터 객체에 Reference에서 지정된 Digest. Method를 사용하여 다이제스트를 계산 • 계산된 다이제스트 값을 Signed. Info의 Reference에 들어 있는 Digest. Value와 비교. • 비교가 조금이라도 다르면 검증은 실패 55
Signature 검증 1. Key. Info로부터 외부 소스로부터 키 정보를 얻는다 2. <Canonicalization. Method>를 사용하여 <Signature. Mathod>의 정규형을 얻고 그 결과를 사용 하여 Signed. Info 원소에 대해 <Signature. Value>를 검 증한다. 56
974e37a07ac673ad3f62cc82e839d86c.ppt