X.509에 대하여X.509는 ITU-T의 공개키기반(PKI) 인증서와 인증 알고리즘의 표준이다.X.509의 역사1. 1988년 6월 3일 X.500 표준안으로 시작2. 1993년 인증 기관 고유 식별자와 주체고유 식별자가 추가된 v2가 발표3. 1996년 확장 요소를 이용해 데이터를 추가할 수 있는 v3가 발표 (현재 사용됨)X.509 활용1. X.509는 PGP 처럼 상호 신뢰를 기반으로 하는 웹 모델과 달리 매우 엄격한 수직적 구조를 채택2. 하나의 인증 기관을 정점으로 트리 구조를 갖는다. 이러한 형태의 불편함을 해소하기 위해 v3는 보다 유연한 구조를 채택하여 몇개의 신용할만한 인증 기관 끼지 상호 인증, 혹은 자가 인증을 허용하고 있다.X.509 인증서X.509 시스템에서의 인증서는 X.500 규약에 따라 서로 구별되는 공개키를 가진 인증서를 발행한다.·한 조직의 루트 인증서는 PKI 시스템을 사용하는 모든 직원들에게 분배될 수 있다.·브라우저에서는 SSL 인증서라 불리는 미리 설치된 루트 인증서가 있음·인증서를 제거, 사용중지할 수도 있지만 거의 그러지 않는다.·X.509는 또한 CRL(certificate revocation list) 구현을 위한 표준도 포함·IETF에서 승인된 인증서 유효성 점검 방법은 OCSP(Online Certificate Status Protocol)이다X.509 인증서 구조CertificateVersion 인증서의 버전을 나타냄Serial Number CA가 할당한 정수로 된 고유 번호Algorithm IDIssuerValidityNot BeforeNot AfterSubjectSubject Public Key InfoPublic Key AlgorithmSubject Public KeyIssuer Unique Identifier (Optional)Subject Unique Identifier (Optional)Extensions (Optional)...*Certificate Signature AlgorithmCertif31:98:0a:c4:bc:62:c1:88:aa:dc:b0:c8:bb:33:35:19:d5:0c:64:b9:3d:41:b2:96:fc:f3:31:e1:66:36:d0:8e:56:12:44:ba:75:eb:e8:1c:9c:5b:66:70:33:52:14:c9:ec:4f:91:51:70:39:de:53:85:17:16:94:6e:ee:f4:d5:6f:d5:ca:b3:47:5e:1b:0c:7b:c5:cc:2b:6b:c1:90:c3:16:31:0d:bf:7a:c7:47:77:8f:a0:21:c7:4c:d0:16:65:00:c1:0f:d7:b8:80:e3:d2:75:6b:c1:ea:9e:5c:5c:ea:7d:c1:a1:10:bc:b8:e8:35:1c:9e:27:52:7e:41:8fExponent: 65537 (0x10001)Signature Algorithm: md5WithRSAEncryption93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:68:9fTitle : ITU-T RECOMMENDATION X.509 | ISO/IEC 9594-8: .INFORMATION TECHNOLOGY . OPEN SYSTEMS INTERCONNECTION . THE DIRECTORY: PUBLIC-KEY AND ATTRIBUTE CERTIFICATE FRAMEWORKR-encoded octets of a value of -- ToBeEnciphered } )TobeEnciphered의 값의 8진수 값이 들어간다.또한 암호화 프로지셔는 필수 키나 정의된 값이라던지 패딩규칙같은 모든 파라미터를 포함한 알고리즘 적용규칙을 그대로 사용하면 되고, 암호화 과정에서 받는사람과 보내는 사람의 데이터 동기화를 구체적으로 명시하고, 그 정보안에 있는 비트를 변환하가는 것을 포함하고 있어야 한다.암호화 과정에서 8진수 문자열을 입력으로 받아 single string의 비트 결과로 생성하는 것이 요구된다. 이 암호화 과정에서 CA나 사용자가 선택한 암호화 알고리즘의 안전성과 받는 사람과 보내는 사람의 데이터 안정성에 대해서는 인증서가 보장하지 않는다.다음은 해쉬를 이용해 서명을 단축하고 해쉬화 하는 과정을 나타냈다.The signature of some data item is formed by encrypting a shortened or "hashed" transformation of the item, and may be described by the following ASN.1:HASH {ToBeHashed} ::= SEQUENCE {algorithmIdentifier AlgorithmIdentifier,hashValue BIT STRING ( CONSTRAINED BY {-- shall be the result of applying a hashing procedure to the DER-encoded octets ---- of a value of -- ToBeHashed } ) }ENCRYPTED-HASH { ToBeSigned } ::= BIT STRING ( CONSTRAINED BY {-- shall be the result of applying a hashing procedure to the DER-encoded octets ---- of a value of -- ToBeSigned -- and then applying an e다. (인증서 위조 불가)인증서의 형식은 다음과 같다.CA = CA{V,SN,AI,CA,UCA,A,UA,Ap,TA}CA : 공인인증기관A : 유저V : 인증서 버전SN : 인증서의 시리얼넘버AI : 인증서의 서명에 사용된 알고리즘 정의UCA : CA에 부가적 기능을 건 유일한 식별자UA : A에 부가적 기능을 건 유일한 식별자TA : 인증서의 유효 기간. 2개의 날짜로 구성되어있고, 첫 번째 날짜부터 두 번째 날짜까지 사용할 수 있다. 그 시간은 CA에서 권고한다.다음은 그 예이다.Certificate ::= SIGNED { SEQUENCE {version [0] Version DEFAULT v1,serialNumber CertificateSerialNumber,signature AlgorithmIdentifier,issuer Name,validity Validity,subject Name,subjectPublicKeyInfo SubjectPublicKeyInfo,issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL,-- if present, version shall be v2 or v3subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,-- if present, version shall be v2 or v3extensions [3] Extensions OPTIONAL-- If present, version shall be v3 -- } }Version ::= INTEGER { v1(0), v2(1), v3(2) }CertificateSerialNumber ::= INTEGERAlgorithmIdentifier ::= SEQUENCE {algorithm ALGORITHM.&id ({SupportedAlgorithms}),parameters ALGORITHM.&Type ({SupportedAlgorithms}{ @algorithm}) OPTION화된 정의를 이용한다. UTC Time이나 GeneralizedTime 둘 중 하나만 선택해서 사용할 수 있다.version은 인증서에 인코드된 버전이 표시되는 것이고, 만약 extensions요소가 현재 인증서 안에 있을 경우 v3로 표시되고, issuerUniqueldentifier 나 subjectUniqueIdentifier 요소인 경우 v2나 v3로 표시된다.serialNumber는 CA가 각각 인증서에 주는 부호있는 정수이다. serialNumber는 각각 인증서마다 고유하다.signature는 CA가 인증서 서명에 사용한 해쉬알고리즘이 정의되어 있는 곳이다.issuer는 서명과 issued를 갖고있는 식별자 존재이다,validity은 CA가 권고한 인증시간기간을 나타내는 것이다.subject 는 공개키 필드에서 공개키를 결합시키는 요소이다.subjectPublicKeyInfo는 공개키를 인증된 형태로 옮기는데 사용되고, 공개키 알고리즘의 식별자이다.issuerUniqueIdentifier는 유저가 사용하거나 재사용할 때 issuer에 관한 식별자이다.subjecUniqueldentifier은 유저가 사용하거나 재사용할 때 subject에 관한 식별자이다.Extensions는 하나 이상의 확장 필드들의 집합. 확장들은 버전 3에서 추가되었고, 이절의 후반부에서 다루어진다.■ 사용자의 인증서 획득사용자의 인증서 획득은 다음의 두가지 경우를 따른다.1. 디렉토리로부터 A는 X1에 의해 서명된 X2의 인증서를 받는다. A가 X1의 공개키를 확실히 알기 때문에 A는 X2의 공개키를 인증서로부터 얻을 수 있고, 인증서에 있는 X1의 서명을 검사하여 확인 할 수 있다.2. 그런 다음 A는 디렉토리로 돌아가 X2에 의해 서명된 B의 인증서를 얻는다. 이제 A는 X2의 공개키에 대한 신뢰할만한 복사본을 가지고 있기 때문에 A는 서명을 확인하고 확실히 B의 공개키를 얻을 수 이따.A는 B의 공개키를 인증서의 연결로 얻었는데 다음과 같다X1X2B는 A의 공개키를 역방다.