PKI ( Public Key Infrastructure )

PKI ( = 공개키 기반 구조 )는 디지털 증명서의 생성, 관리, 배포, 사용, 저장 및 파기, 공개키 암호화의 관리에 필요한 역할, 정책 등 일련의 절차들을 집합한 것이다.

통신에 관계된 당사자의 신원을 확인하고, 전송되는 정보의 유효성을 확인하기 위한 엄격한 증거가 필요한 활동에 대해 요구된다. 즉, 암호화와 복호화키로 구성된 공개키를 이용해 송수신 데이터를 암호화하고 디지털 인증서를 통해 사용자를 인증하는 시스템을 말한다.

공개키 암호의 사용화를 위해서는 무엇보다도 키의 생성과 인증이 필요하며 이런 것들에 대한 분배와 안전한 관리를 위한 체계가 필요하다. 이 시스템을 PKI라고 한다.

 

PKI는 일반적으로 인증기관(CA) 및 등록 대행 기관 (RA)을 구성한다. 

인증기관 (CA)는 아래와 같은 서비스를 제공한다.

- 디지털 인증서 발행

- 디지털 인증서 유효성 검증

- 디지털 인증서 폐기

- 공개 키 분배

 

RA는 디지털 인증서가 요청되면 제공된 정보를 확인한다. RA가 정보를 확인하면 CA가 디지털 인증서를 요청자에게 발행할 수 있다. 

 

[ + ] 더 많은 내용을 노션에 정리했지만 나중에 시간이 된다면 여기로 조금 더 정리해서 옮겨와야지 ! 

 

출처 : 

https://datatracker.ietf.org/doc/html/rfc5280

https://www.ibm.com/docs/ko/ibm-mq/7.5?topic=ssfksj-7-5-0-com-ibm-mq-sec-doc-q009900--htm  

728x90

2022-07-13


SSL

SSL( Secure Sockets Layer ) 프로토콜로 Nescape에 의해서 SSL이 발명되었고, 지금은 TLS라는 이름으로 바뀌었다. 그러나 TLS보다 SSL이라는 이름이 훨씬 더 많이 사용되고 있다.

 

SSL DIgital Certification

SSL 인증서는 Client와 Server간의 통신을 제3자가 보증해주는 전자화된 문서이다. Client가 Server에 접속한 직후에 서버는 클라이언트에게 이 인증서를 전달한다. Client는 Server로 부터 전달받은 인증서가 신뢰할 수 있는 인증서인지를 검증한다.

 

SSL Digital Certification을 통해서

1. Client와 Server간의 통신내용을 공격자가 엿듣는 것을 방지할 수 있다.

2. Client가 접속하고자 하는 Server가 신뢰할 수 있는 Server인지 판단할 수 있다.

3. 공격자의 악의적인 통신내용 변경을 방지할 수 있다.

 

SSL Certification Structure

아래는 Node.js 공식 홈페이지의 인증서를 X509 module을 사용해서 정보를 추출한 것이다.

X509Certificate {
  subject: 'CN=*.nodejs.org',
  subjectAltName: 'DNS:*.nodejs.org, DNS:nodejs.org',
  issuer: 'C=GB\n' +
    'ST=Greater Manchester\n' +
    'L=Salford\n' +
    'O=Sectigo Limited\n' +
    'CN=Sectigo RSA Domain Validation Secure Server CA',
  infoAccess: 'CA Issuers - URI:http://crt.sectigo.com/SectigoRSADomainValidationSecureServerCA.crt\n' +
    'OCSP - URI:http://ocsp.sectigo.com\n',
  validFrom: 'Jan 11 00:00:00 2022 GMT',
  validTo: 'Feb 11 23:59:59 2023 GMT',
  fingerprint: '3E:CB:75:F0:77:06:6A:8C:A0:4A:9F:01:6E:EC:1B:0F:98:95:8F:63',
  fingerprint256: '9D:33:45:9A:91:1A:B5:2F:D5:11:01:5F:5E:29:4B:D6:1D:C2:37:5B:4F:46:20:7C:E8:62:D0:30:50:D6:73:5E',
  fingerprint512: '7C:D0:4C:83:B8:D9:B1:7B:1B:74:83:13:D3:F1:98:92:07:EE:7B:79:E8:94:71:83:4D:7D:A3:F8:8C:E1:B4:30:47:47:84:27:AF:4F:9B:4C:41:CA:7A:8F:2B:25:BF:FB:82:94:69:88:CF:90:75:31:BF:CC:92:40:30:B4:79:E1',
  keyUsage: [ '1.3.6.1.5.5.7.3.1', '1.3.6.1.5.5.7.3.2' ],
  serialNumber: '5F6C6A819EFF2783C1DC54DD3502E901'
}
  • subject : 소유자 
    • CN ( CommonName ) : 이름
  • subjectAltName(SAN) 
    • DNS 
    • IP
    • Email
  • issuer : 발행자 
    • ST : StateOrProvinceName
    • L : Locality
    • OU : OrganizationUnit : 부서
    • O : Organization : 회사, 조직
    • C : Country : 나라
    • CN : Common Name : 이름
  • validFrom : 인증서 발행일
  • validTo : 인증서 만료일
  • fingerprint == signature 

 


2022-07-27

2022-07-28일 Demo 시연과 내용 발표를 준비하다가 블로그에 SSL 인증서 내용을 작성했던게 생각나서 PPT자료에 넣은 것을 추가하게 되었따.

728x90

+ Recent posts