x.509 인증서와pki · 2015-01-22 · x.509인증서의형식 인증기관고유식별자:...

33
X.509 인증서와 PKI 1 공개키 배포의 문제점 공개키 배포의 문제점 2

Upload: others

Post on 18-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

X.509 인증서와 PKI

1

공개키 배포의 문제점공개키 배포의 문제점

2

인증서의 구성인증서의 구성

Arami’s IDArami’s Public Key유효기간유효기간발급기관 Certificate Authority의 디지털 서명(CA의 비밀키로 서명됨)

3

표준 및 용도표준 및 용도

•표준표준– ITU-T X.509 v3

IETF PKIX– IETF PKIX

•용도–전자메일전자메일

–SSL전자지불–전자지불

–소프트웨어 코드서명– IPSec

4

인증서의 종류

• 사용자 인증서

인증서의 종류

• 루트 인증서

5

인증서 기반의 공개키 암호화 전송절차(1)인증서 기반의 공개키 암호화 전송절차( )

6

인증서 기반의 공개키 암호화 전송절차(2)인증서 기반의 공개키 암호화 전송절차(2)

7

X.509인증서의 형식X.509인증서의 형식

8

X.509인증서의 형식X.509인증서의 형식

• 버전 : X.509 인증서 형식의 버전으로, 현재 v1-v3까지 있음• 일련번호 : CA에서 인증서를 발행할 때 마다 할당되는 유일한 번호• 알고리즘 식별자 : CA가 사용한 서명 알고리즘의 OID.

sha1withRSAEncryption의 OID는 1 2 840 113549 1 1 5sha1withRSAEncryption의 OID는 1.2.840.113549.1.1.5• 발행자 : 인증서를 발행한 CA의 이름• 유효 개시 기간(Validity from) : 인증서가 유효한 최초 시간• 유효 만기 시간(Validity to) : 인증서가 유효한 마지막 시간• 주체 : 인증서의 증명대상의 DN(Distinguished Name). 사람뿐만 아니라 서버도 해당만 아니라 서버도 해당

• 주체 공개키 정보 : 암호용 또는 서명용 공개키, 키가 사용될 알고리즘의 종류, 키 길이 등 정보로 구성

• 알고리즘 : 공개키 알고리즘의 OID• 공개키 : 주체의 공개키 값서명 CA의 서명 값• 서명 : CA의 서명 값

9

X.509인증서의 형식X.509인증서의 형식

<버전 2에서 추가된 영역>인증 기관 고유 식별자 : 한 주체에 대해 둘 이상의 인증기관으로부터 인증서가 발급된 경우, 인증기관 구분주체 고유 식별자 : 주체를 식별하는 값 예를 들어 같은 회사에 동명주체 고유 식별자 : 주체를 식별하는 값, 예를 들어 같은 회사에 동명이인이 있는 경우 구분하기 위해 사용

<버전 3에서 추가된 영역>인증기관 키 식별자 : 하나의 인증기관이 여러 개의 비밀키로 인증서를 발급한 경우, 서명 검증용 공개키를 식별하기 위해 사용. SHA-1 를 발급한 경우, 서명 검증용 공개키를 식별하기 위해 사용. SHA 1 해시 값인 KeyIdentifier, 발행기관 이름, 일련 번호로 구성주체 키 식별자 : 한 주체가 여러 키 쌍에 대해 발급받은 인증서를 가지고 있을 때 인증서에 포함된 공개키를 구별하는데 사용지고 있을 때, 인증서에 포함된 공개키를 구별하는데 사용키 용도 : 해당 공개키가 암호용인지 서명용인지를 해당 비트로 표시

10

X.509인증서의 형식X.509인증서의 형식

• 비밀키 사용기간 : 인증서의 유효기간과 서명용 비밀키의 사용시간이 다를 때 사용이 다를 때 사용

• 확장 키 사용 : Key usage 항목으로 표시할 수 없는 세부적인 추가용도를 OID 형태로 표시. TLS 웹 서버 인증용, TLS 웹 클라이언가용 형태 시 웹 서버 증용, 웹 클라이트 인증용, 코드 서명용, 전자 우편용, IPSec 용 등을 지시

• CRL 배포 지점 : 폐기한 인증서의 리스트가 저장되어있는 곳의URLURL

• 주체 대체 이름 : DNS 이름, IP 주소, 메일 주소, 커버로스 이름 등주체 이름에 대한 또 다른 이름

• 발행자 대체 이름 : CA의 또 다른 이름• 기본 제한 : {CA 플래그, pathLenConstraint로 구성}기관 정보 액세스 인증기관이 제공하는 인증서 관련 서비스에 접근• 기관 정보 액세스 : 인증기관이 제공하는 인증서 관련 서비스에 접근할 수 있는 URL이나 프로토콜 관련 정보

• 주체 정보 액세스 : 인증서 주체가 제공할 수 있는 정보와 서비스에접근하는 방법 제공, 주로 CA의 루트 인증서에 사용

11

인증기관 키 식별자의 예인증기관 키 식별자의 예

해당 CA로 부터 입수한해당 CA로 부터 입수한루트인증서가 여러 개 일때,이들 중에서 신속하게이들 중에서 신속하게찾을 수 있도록 함

12

키 용도키 용도

해당 공개키가 암호용인지 서명용인지 표시함

13

키 용도키 용도

• digitalSignature : keyCertSign, cRLSign을 제외한 서명용도의 공개키도의 공개키

• nonRepudiation : 부인방지를 위한 서명용 공개키• keyEncipherment : 공유 비밀키를 암호화할 때 사용하는 공개• keyEncipherment : 공유 비밀키를 암호화할 때 사용하는 공개키

• dataEncipherment : 데이터 암호용 공개키• keyAgreement : 키 분배 프로토콜에 사용할 공개키• keyCertSign : 루트 인증서의 서명용 공개키• cRLSign : CRL 서명용 공개키• cRLSign : CRL 서명용 공개키• encipheronly : keyAgreement 비트가 1일 때, 암호 전용 공개키 임을 지시

• dncipheronly : keyAgreement 비트가 1일 때, 복호 전용 공개키 임을 지시

14

확장 키 사용의 예확장 키 사용의 예

공개키의 추가용도 표시기능(예: 코드서명용,IPSec용…)

15

CRL배포지점의 예CRL배포지점의 예

CRL(Certification Revocation List)

폐기되는 인증서의 보관장소 지시

16

주체 대체 이름의 예주체 대체 이름의 예

17

기본 제한영역의 예기본 제한영역의 예

사용자 용사용자 용

CA flag : 인증서가 CA용인지 최종 사용자용인지 표시

18

pathLenConstraint : 이 인증서로부터 확대 가능한 인증 경로의 길이

signKorea CA용 인증서의 기본제한영역 내용signKorea CA용 인증서의 기본제한영역 내용

Subject Type = CAflagj yp g

19

signKorea CA용 인증서의 인증경로signKorea CA용 인증서의 인증경로

20

KISA인증서(최상위 인증기관)KISA인증서(최상위 인증기관)

21

KISA인증서의 기본제한영역 내용KISA인증서의 기본제한영역 내용

22

기본 제한 영역의 예(최종 사용자용)기본 제한 영역의 예(최종 사용자용)

23

기관 정보 액세스 (Authority Information Access)기관 정 액세 ( y )

24

인증서의 예인증서의 예

인증서 확인창 / 루트 인증서의 예인증서 확인창 / 루트 인증서의 예

25

개인 인증서의 예개인 인증서의 예

26

개인 인증서의 예(계속)개인 인증서의 예(계속)

손도장: 서명을 포함한 인증서 전체에 대한 해시값

27

손도장의 활용손도장의 활용

CA_B CA_A

B A인증서 CA B서명B A인증서 CA_B서명

손도장값계산손도장값계산손도장값계산

확인요청 -> 일치되면 변조되지 않았음을 인증함

28

국내 공인 인증기관국내 공인 인증기관

29

인증서 발급철차인증서 발급철차

• 등록• 사용자 인증 및 발급신청

– 등록기관(은행 등)에서 대면 확인 후 CA(yessign 등)에 신청

발급정보 제공• 발급정보 제공– CA가 발급정보(참조번호+인가코드)를 등록기관에 제공, 사용자에게 전달

• 발급요청– 사용자가 직접Web에서 등록(발급정보사용)사용자 PC에서 자동적으로 개인키+공개키 쌍 생성– 사용자 PC에서 자동적으로 개인키+공개키 쌍 생성

– 개인키 보관– 공개키 전송(인증서 발급요청 양식 활용)( )

• 인증서 확보• 인증서 활용

30

X.509인증서의 폐기X.509인증서의 폐기

31

인증서의 활용 : 소프트웨어 배포 인증인증서의 활용 웨어 배 인증

32

코드서명된 프로그램의 검증 절차코드서명된 프로그램의 검증 절차

33

인증서를 활용한 상호인증의 예인증서를 활용한 상호인증의 예

34

인증서의 ASN.1 형식인증서의 ASN.1 형식

Certificate ::= SEQUENCE {tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifiersignatureAlgorithm AlgorithmIdentifier,signatureValue BIT STRING

}-- To Be Signed CertificateTBSCertificate ::= SEQUENCE {

version [0] EXPLICIT Version DEFAULT v1,[ ] ,serialNumber CertificateSerialNumber,signature AlgorithmIdentifier, --signatureAlgorithm영역과 동일한 값임issuer Name,validity Validity,subject Name,subjectPublicKeyInfo SubjectPublicKeyInfo,issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, extensions [3] EXPLICIT Extensions OPTIONAL

}i 0 2 3 2Version ::= INTEGER { v1(0), v2(1), v3(2) }

Validity ::= SEQUENCE {notBefore Time,notAfter Time

}SubjectPublicKeyInfo :: SEQUENCE {SubjectPublicKeyInfo ::= SEQUENCE {

algorithm AlgorithmIdentifier,subjectPublicKey BIT STRING

}Extension ::= SEQUENCE {

extnID OBJECT IDENTIFIERextnID OBJECT IDENTIFIER,critical BOOLEAN DEFAULT FALSE,extnValue OCTET STRING

}35

ASN.1ASN.1

• ASN.1(Abstract Syntax Notation One)– 구현에 관계없이 표준을 정의하는 언어– ITU-T 권고안 X.209 및 X.690에 정의되어 있음

"형식" 정의– "형식" 정의– "모듈" 정의 및 표시 방법– INTEGER 정의INTEGER 정의– BOOLEAN 정의– "구조체 형식" 정의– 특정 키워드(예: BEGIN, END, IMPORT, EXPORT,

EXTERNAL 등)의 의미특정 표준 인코딩 방법 프로그래밍 언어 또는 하드웨어 플랫폼– 특정 표준, 인코딩 방법, 프로그래밍 언어 또는 하드웨어 플랫폼에 관계없이 적용되며, 단순히 표준을 정의하는 언어

36

인증서 파일의 16진 형식의 예인증서 파일의 16진 형식의 예

0000 : 30 82 03 de 30 82 03 47 a0 03 02 01 02 02 04 01 ; 0...0..G........

*.der파일

;0010 : 73 f9 71 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 ; s.q0.....H......0020 : 05 00 30 48 31 0b 30 09 06 03 55 04 06 13 02 6b ; ..0H1.0...U....k0030 : 72 31 10 30 0e 06 03 55 04 0a 13 07 79 65 73 73 ; r1.0...U....yess0040 : 69 67 6e 31 13 30 11 06 03 55 04 0b 13 0a 4c 69 ; ign1.0...U....Lig0050 : 63 65 6e 73 65 64 43 41 31 12 30 10 06 03 55 04 ; censedCA1.0...U.0060 : 03 13 09 79 65 73 73 69 67 6e 43 41 30 1e 17 0d ; ...yessignCA0...0070 : 30 34 30 31 33 30 31 35 30 30 30 30 5a 17 0d 30 ; 040130150000Z..00080 : 34 30 35 31 36 31 34 35 39 30 30 5a 30 65 31 0b ; 40516145900Z0e1.0090 : 30 09 06 03 55 04 06 13 02 6b 72 31 10 30 0e 06 ; 0...U....kr1.0..00a0 : 03 55 04 0a 13 07 79 65 73 73 69 67 6e 31 11 30 ; .U....yessign1.000b0 : 0f 06 03 55 04 0b 13 08 70 65 72 73 6f 6e 61 6c ; ...U....personal00c0 : 31 0c 30 0a 06 03 55 04 0b 13 03 4b 4d 42 31 23 ; 1.0...U....KMB1.00d0 : 30 21 06 03 55 04 03 0c 1a ec 9b 90 ec a2 85 ed ; 0...U...........00e0 : 95 84 28 29 30 30 30 34 2d 31 39 34 31 34 38 39 ; ....0004.194148900f0 : 39 30 34 30 81 9e 30 0d 06 09 2a 86 48 86 f7 0d ; 9040..0.....H...

37

인증서 내용의 분석인증서 내용의 분석

30 82 03 de{ // Seq (Certificate)30 82 03 47{ // Seq (TBSCertificate)30 82 03 47{ // Seq (TBSCertificate)//versiona0 03 02 01 02; version[0] = Integer 2 v3//serialNumber02 04 01 73 f9 71 ; serialNumber = 0x0173 f971//Signature30 0d { //Seq06 09 2a 86 48 86 f7 0d 01 01 05; OID = 1 2 840 113549 1 1 506 09 2a 86 48 86 f7 0d 01 01 05; OID = 1.2.840.113549.1.1.5 SignatureAlgorithm = (sha1withRSAEncryption)= sha1RSA

05 00 ; NULL}//Issuer30 48 { //Seq31 0b{ …SET30 09{ Seq30 09{ …….Seq06 03 55 04 06 ; OID = 2.5.4.6 = C //Country13 02 6b 72 ; PrintableString = ‘kr’

}}…

38

인증서 관련 프로토콜인증서 관련 프로토콜

CRMF : Certificate Request Message FormatCMS : Certificate Message SyntaxCMP : Certificate Management ProtocolgCMC : Certificate Management Message over CMS

39

인증서 요청 메시지 형식인증서 요청 메시지 형식

• PKCS#10– 사용자가 새로운 인증서 발급을 요청하거나 인증서를 내려 받고자 할때 사용하는 요청 메시지 형식 정의

요청자의 distinguished name(DN) 공개키 등을 수납하고– 요청자의 distinguished name(DN), 공개키 등을 수납하고비밀키로 서명된 서명 영역을 포함

• Certificate Request Message Format(CRMF)– 인증서 요청 메시지 형식 규정

• 인증서가 수납된 응답 메시지의 형식인증서 발급 요청에 대해 C 는 CS /C S의– 인증서 발급 요청에 대해 CA는 PKCS#7/CMS의signedData 메시지 형식에 인증서를 수납하여 전송

40

인증서 요청 및 응답 절차 프로토콜인증서 요청 및 응답 절차 프로토콜

• RFC2510 Certificate Management Protocols(CMP)– CA와 사용자 또는 CA와 CA사이에서 사용될 수 있는 인증서 발급 요청 응답 절차 및 이와 관련된 메시지들을 규정급 요청, 응답 절차 및 이와 관련된 메시지들을 규정

• RFC 2797 Certificate Management Messages • RFC 2797 Certificate Management Messages over CMS(CMC)– CMP와 마찬가지로 PKCS#10과 CRMF 인증서 요청 형식을모두 수용하며, 이에 대한 응답 절차 규정

41

PKCS#10 Certificate Request Syntax (CRS)q y ( )

CertificationRequest ::= SEQUENCE {certificationRequestInfo CertificationRequestInfocertificationRequestInfo CertificationRequestInfo,signatureAlgorithm SignatureAlgorithmIdentifier,signature Signature

}}

CertificationRequestInfo ::= SEQUENCE {version Versionversion Version,subject Name,subjectPublicKeyInfo SubjectPublicKeyInfo,attributes [0] IMPLICIT Attributes

전송 메시지 형식 : HTTP나 SMTP의 MIME 형식으로 인코딩되어 CA에

attributes [0] IMPLICIT Attributes } //PKCS#10 인증서 요청 형식의 ASN.1 형식

전송 메시지 형식 : HTTP나 SMTP의 MIME 형식 인 딩되어 CA에전송MIME 헤더 정보– Content-Type: application/pkcs10; name=smime.p10

C t t T f E di b 64– Content-Transfer-Encoding: base64– Content-Disposition: attachment; filename=smime.p10

42

PKCS#10 인증서발급요청메시지의 활용PKCS#10 인증서발급요청메시지의 활용

43

PKCS#7과 CMSPKCS#7과 CMS

• CA가 인증서를 처리할 때, 어떻게 처리되었는지 명시하고, 필요한 경우 암호화 방식이나 키 정보 등을 수납하기위한 공통의 메시지 형식 필요

• PKCS#7전송할 내용에 대한 암호화 는 디지털 서명에 사용할 수 있는– 전송할 내용에 대한 암호화 또는 디지털 서명에 사용할 수 있는메시지 encapsulation 형식 정의

– RFC 2315를 개선하여 RFC 2630 CMS(Cryptographic RFC 2315를 개선하여 RFC 2630 CMS(Cryptographic Syntax Notation) 발표

– 최근 다시 개선된 RFC 3369, RFC 3370 발표

44

PKCS#7과 CMSPKCS#7과 CMS

45

[ContentInfo의 기본구성과 content type의 종류]

Content 형식의 종류Content 형식의 종류

content– data : 평문 데이터 수납– signed-data : 본문과 이에 대한 서명값 수납

enveloped data : Content Encryption Key(CEK)로 암호화– enveloped-data : Content-Encryption Key(CEK)로 암호화된 데이터와 이 데이터를 암호화할 때 사용된 CEK를 RSA 공개키 방식으로 암호화하여 수납

– digested-data : 데이터와 메시지 다이제스트 값을 수납하여, 데이터 무결성 제공

– encrypted-data : 대칭키로 암호화된 데이터 수납. Enveoped-encrypted data : 대칭키로 암호화된 데이터 수납. Enveopeddata 형식과 달리, CEK가 수납되지 않기 때문에 이 키는 다른방법, 즉, 공유 패스워드 등에서 추출

th ti t d d t 평문 데이터와 이에 대한 무결성 용– authenticated-data :평문 데이터와 이에 대한 무결성 용MAC코드, 이 MAC코드 생성시 사용된 키의 암호화된 값을 수납. 즉, {data || MAC || encrypted authencation key}로 구성

46

Signed-data형식의 구성Signed data형식의 구성

평문과 디지털서명으로 구성됨(서명용 인증서도 포함됨)(서명용 인증서도 포함됨)

47

SignedData형식SignedData형식

ContentInfo ::= SEQUENCE {contentType ContentType (signedData형식의 경우 OID 1 2 840 113549 1 7 2)contentType ContentType, (signedData형식의 경우 OID=1.2.840.113549.1.7.2)

content [0] EXPLICIT ANY DEFINED BY contentType }

SignedData ::= SEQUENCE {version CMSVersion -- 1digestAlgorithms DigestAlgorithmIdentifiers,g g g g ,encapContentInfo EncapsulatedContentInfo,-- 필요한 데이터 수납 공간

certificates [0] IMPLICIT CertificateSet OPTIONAL,-- 인증서crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,--인증서취소목록[ ]signerInfos SignerInfos – 서명자 정보

}

EncapsulatedContentInfo ::= SEQUENCE {eContentType ContentType,eContent [0] EXPLICIT OCTET STRING OPTIONAL

}}

48

Enveloped-data 형식Enveloped data 형식

암호화되는 contentInfo영역과암호화시 사용된 Key(CEK)정보 수납암호화시 사용된 Key(CEK)정보 수납

4가지의 CEK 암호화 방법49

Enveloped-data 형식Enveloped data 형식

1. 송신자는 content-encryption key(CEK)를 임의로 생성2. 다음 중 한가지로 CEK 암호화① Key TransRecepientInfo : CEK를 수신자 RSA 공개키로 암호화② Key AgreeRecepientInfo : D-H 방식에 의해 설정된 공유키로 CEK를 암y g p

호화

③ KEKRecepientInfo : 사전에 약속된 대칭키인 KEK로 CEK를 암호화④ PasswordRecepientInfo :공유 패스워드로부터 생성된 KEK로 CEK를 암

호화

3. 암호화된 CEK와 수신자 정보를 RecepientInfo로 설정4 전송할 content를 CEK로 암호화4. 전송할 content를 CEK로 암호화5. RecepientInfo 값과 암호화된 content 영역 등을

EnvelopdedData 형식에 수납하여 전송

50

Digested-data형식Digested data형식

평문 + 해시값

51

Encrypted-data형식의 구성Encrypted data형식의 구성

암호문 수납용(단, CEK는 없음)

52

Authenticated-data형식의 구성Authenticated data형식의 구성

HMAC 데이터 인증용

53

Certificate Management Messages over CMS(CMC)g g ( )

54

Certificate Management Messages over CMS(CMC)g g ( )

55

CMC의 Nested 암호화 방법CMC의 Nested 암호화 방법

56

On-line certificate status checkingOn line certificate status checking

※(OCSP RFC 2560)

57

※(OCSP, RFC 2560)

인증서의 import/export형식인증서의 import/export형식

58

인증서의 import/export형식인증서의 import/export형식

• Personal Information Exchange(PKCS#12) – 인증서와 대응하는 비밀키를 다른 컴퓨터나 플래시 메모리에 옮길때 사용하는 방식으로, 인증서 파일의 확장자는 “*.pfx”나“* p12”.p12

• PKCS#7/CMS– 인증서를 다른 컴퓨터나 플래시 메모리에 옮길때 사용하는 방식인증서를 다른 컴퓨터나 플래시 메 리에 옮길때 사용하는 방식으로, 인증서 파일의 확장자는 “*.p7b”

• DER Encoded Binary X.509– DER 형식으로 인코딩된 인증ㅇ서 파일로 *.cer 확장자를 가짐

• Base 64 Encoded X.509인 서 용 인 딩한 형식– DER 인증서를 MIME 용 Base 64 인코딩한 형식으로 *.cer

확장자를 가짐

59

DER Encoded Binary X.509형식DER Encoded Binary X.509형식

DER로 인코딩 된 인증서 파일 생성 방법의 예생성파일명은 *.cer임.생성파일명은 .cer임.

60

MIME (Base 64)으로 인증서를 인코딩하여 파일로 저장하는 방법

•Base 64로 인코딩되어 HTTP나 e-mail로 전송 가능

61

Signed-data PKCS#7형식으로 인증서를 저장하는 방법g 형식 인증서를 저장하는 방법

62

인증서 불러오는 방법의 예인증서 불러오는 방법의 예

63

Public Key Infrastructure (PKI)Public Key Infrastructure (PKI)

64

윈도우 2000의 인증서 서비스윈도우 2000의 인증서 서비스

•지원하는 CA의 종류지원하는 CA의 종류–엔터프라이즈 CA

• Active Directory필요• Active Directory필요•윈도우 도메인내에서 동작

St d l CA–Stand-alone CA• Active Directory 불필요•윈도우 도메인과 별개로 동작 가능

•인증서 보관소–Active Directory

65