PKI(Public Key Infrastructure)는 공개키 알고리즘을 위한 키 관리 구조라고 볼 수 있다.
RFC 2822는 PKI를 공개키 암호시스템에 기초하여 디지털 인증서를 생성하고, 관리하고, 저장하며 분배하고 취소하는데 필요한 하드웨어, 소프트웨어, 사람, 정책 및 절차라고 정의하였다.
PKI는 인증서의 발급, 사용 및 취소와 관련 서비스를 통하여 기밀성, 무결성, 접근제어, 인증, 부인방지의 보안서비스를 제공하며 인증기관, 등로긱관, 사용자, 신뢰 당사자, 저장소 등의 요소로 구성된다.
PKI의 구성요소
- 인증기관(CA, Certification Authority)
인증정책을 수립하고, 인증서 및 인증서 효력정지 및 폐기목록을 관리하며 다른 CA와 상호 인증을 제공한다.
인증기관도 크게 3가지로 나누어진다.
1) 정책 승인기관(PAA, Policy Approving Authority)
공개키 기반 구조 전반에 사용되는 정책을 수립하고, 공개키 기반 구조의 루트 인증기관으로서의 역할을 한다. 또, 하위 기관들의 정책 준수 상태 및 적정성을 감사한다.
2) 정책 인증기관(PCA, Policy Certification Authority)
PAA 아래 계층으로 자신의 도메인 내의 사용자와 인증기관(CA)이 따라야 할 정책을 수립하고 인증기관의 공개키를 인증하고 인증서, 인증서 폐지 목록 등을 관리한다.
3) 인증기관(CA, Certification Authority)
PCA 아래 계층으로 다음의 기능을 수행한다.
사용자의 공개키 인증서를 발행하고 필요에 따라 폐지한다.
사용자에게 자신의 공개키와 상위 기관의 공개키를 전달한다.
등록 기관의 요청에 의해 인증서를 발행한다.
인증서 소유자를 대신하여 공개키와 개인키 쌍을 생성할 수 있고 안전한 방법으로 소유자에게 전달한다.
- 검증기관(VA, Vaildation Authority)
인증서와 관련된 거래의 유효성을 확인하고, 여기에 사용되는 인증서의 유효성 여부와 인증서가 적절한 개체로 발급되었다는 것을 신뢰 당사자에게 확인시켜 준다.
검증기관 없이 인증기관만 존재할 수 있으나, 적절한 인증서 검증 기능이 없다면 인증서 기반 응용은 보안측면에서 불완전하다고 간주될 수 있다.
검증기관은 외주로 운영되거나 CA가 직접 운영할 수 있다.
- 사용자와 최종 개체(subjets and end entities)
공개키 기반 구조 내의 사용자는 사람뿐만 아니라 사람이 이용하는 시스템 모두를 의미하고, 아래 기능을 수행할 수 있어야 한다.
·자신의 비밀키/공개키 쌍을 생성할 수 있어야 한다.
·공개키 인증서를 요청하고 획득할 수 있어야 한다.
·전자 서명을 생성 및 검증할 수 있어야 한다.
·비밀키가 분실 또는 손상되거나 자신의 정보가 변했을 때 인증서 폐지를 요청할 수 있어야 한다.
- 등록 기관(RA, Registration Authority)
사용자와 CA가 서로 원거리에 위치해 있는 경우, 인증기관과 사용자 사이에 등록 기관을 두어 사용자의 인증서 신청 시 인증기관 대신 그들의 신분과 소속을 확인하는 기능을 수행한다.
등록 기관은 사용자의 신분을 확인하고 인증서 요청에 서명을 한 후 인증기관에게 제출한다. 인증기관은 등록기관의 서명을 확인한 후 사용자의 인증서를 발행하여 등록 기관에게 되돌려주거나 사용자에게 직접 전달한다.
- 저장소(Repository, Directory)
사용자의 인증서를 저장하는 일종의 DB다. CA는 발급한 인증서를 발급과 동시에 디렉터리에 저장하며 사용자는 자신이 원하는 상대방의 인증서를 이곳에서 검색할 수 있다.
PKI의 형태
- 계층 구조
최상위의 루트 CA가 존재하고 그 아래에 하위 CA가 계층적으로 존재하는 트리형태로 상위 인증기관이 하위 인증기관에 CA 인증서를 발행하며 하위 인증기관은 상위 인증기관의 인증정책에 영향을 받는다.
최상위 CA의 인증서는 모든 사용자에게 알려져야 하며 모든 사용자의 인증서는 최상위 CA로 이어지는 인증서의 경로 확인에 의해 검증된다.
최상위 인증기관 간의 상호인증은 허용하지만 하위 인증기관 간의 상호인증은 원칙적으로 배제한다.
최상위 CA로 이어지기 때문에 집중되는 오버헤드가 발생될 수 있고 최상위 CA의 비밀키 노출 시 피해 규모가 막대하다.
- 네트워크 구조
상위 인증기관의 영향 없이 인증기관 각각이 자신의 인증정책에 따라 독립적으로 존재하는 형태이다.
CA 간에 인증을 위해 상호인증서를 발행하여 인증서비스를 한다.
모든 상호인증이 허용되면 상호인증 수가 대폭 증가하는 단점이 있고 인증정책 수립 및 적용이 어려운 단점이 있다.
PKI의 주요 관리 대상
- 인증서(PKC, Public-Key Certificate)
한 쌍의 공개키/개인키와 특정 사람/기관을 연결시켜 주는 것을 보증해주는 것으로 전자서명에 사용된 개인키와 상응하는 공개키를 제공하여 그 공개키가 특정인의 것이라는 것을 확신할 수 있는 증거로서의 기능을 수행한다.
인증서는 표준화된 양식에 의거하여 믿을 수 있는 제3자(CA)가 발행하며 PKI의 근간을 이룬다.
공개키 인증서에는 이름이나 소속 등의 개인정보 및 그 사람의 공개키가 기재되고, CA의 개인키로 전자서명 되어있다.
- 인증서 표준 규격 X.509
인증서의 형식이 다르면 불편해지기 때문에 표준 규격에 맞춰 사용한다. 가장 널리 사용되는 것이 X.509 규격이다.
X.509 공개 키 인증서 - Win32 apps
공개 키 암호화는 퍼블릭 및 프라이빗 키 쌍을 사용하여 콘텐츠를 암호화하고 암호를 해독합니다.
learn.microsoft.com
위의 인증서 프로파일을 참고하면 좋다.
마지막에 인증서에 대한 서명값이 들어가는데 이 필드는 인증서의 나머지 필드 전체를 보호한다. 다른 필드 전체, 다른 필드 전체에 해시함수를 적용해서 얻어진 해시코드, 그리고 해시코드를 서명한 값이 서명 필드에 포함된다. (CA 개인키로 암호화)
X.509v3 인증서의 확장 영역은 사용자의 공개키 정보와 연관된 추가적인 정보를 제공하며 인증서 계층 구조를 관리할 수 있는 방법을 제공한다.
①키와 정책 정보 : 인증서와 관련된 키와 키의 용도 및 인증서 정책에 관한 부가적인 정보를 포함한다.
·기관키 식별자: 인증서를 서명하기 위해서 사용되는 개인키에 대응하는 공개키를 구분할 수 있는 수단을 제공한다.
·사용자키 식별자: 최종 개체가 여러 인증서를 획득한 경우 사용자키 식별자는 특정 공개키를 포함하는 인증서의 집합을 빠르게 구분할 수 있는 수단을 제공한다.
·키 사용: 인증서에 포함된 키의 용도(암호화, 서명, 인증서 서명)를 정의한다.
·인증서 정책: 인증기관은 자신이 발행한 인증서에 대한 정책을 인증서 내에 명기할 수 있다.
②사용자와 발행자 속성: 인증서 주체나 인증서 발행자에 대헤 여러 형식의 여러 대체 이름을 지원한다.
·사용자 대체 이름: 추가적인 신분이 인증서의 사용자와 결합할 수 있도록 한다. 정의된 선택 사항에는 인터넷 전자 우편 주소, DNS 이름, IP 주소, URI가 포함된다.
·발급자 대체 이름: 다양한 형식으로 된 하나 이상의 다른 대체 이름을 포함한다.
③인증 경로 제약조건: 다른 CA가 발행한 CA 인증서에 포함될 제한사항을 제공한다.
·기본 제한: 인증서의 사용자가 인증기관인지 여부를 구분한다.
·이름 제한: 사용자 DN이나 사용자 대체 이름에 제약을 가할 수 있다.
·정책 제한: 인증기관에게 발급된 인증서 내에 정책 제한 확장을 적용할 수 있다.
X.509 인증서 폐지 목록 프로파일
어떤 경우에 인증서의 유효기간이 끝나기 전에 폐지를 해야 한다.
·사용자(주체)의 개인키가 침해를 당했을 경우
·CA가 더 이상 사용자를 인증하지 않을 때
·인증서를 검증하는데 필요한 CA의 개인키가 침해를 받았을 경우. 이 경우에 CA는 유효기간이 남아 있는 모든 인증서를 폐지해야 한다.
- CRL(Certificate Revocation List)
폐지된 인증서들에 대한 목록을 인증서 폐지 목록(CRL)이라고 하며 인증기관의 저장소 또는 디렉터리 시스템 등에 등재하여 신뢰 당사자가 언제든지 이 목록을 검색할 수 있어야 한다.
인증서 폐지 목록에는 인증서 폐지 목록의 버전, 서명 알고리즘 및 발급 기관의 이름, 인증서 발급일, 다음 번 갱신일, 취소된 인증서에 대한 정보 등이 포함되어 있다.
CRL 내의 각각의 폐기된 인증서는 인증서 일련번호에 의해서 확인할 수 있다.
온라인 인증서 상태 검증 프로토콜(OCSP, Online Certificate Status Protocol)
OCSP가 구현되면 작업은 백그라운드에서 자동으로 수행된다. OCSP는 CA에 의해 관리되고 있는 CRL을 검사한다. 인증서 검증 과정에서 CRL을 확인할 수 있는 프로토콜
실시간으로 인증서 상태를 확인할 수 있는 효율적인 방법이다.
OCSP 클라이언트, OCSP 서버, 인증 서버로 구성된다.