- 공개키 기반의 인프라 구조, PKI의 개요
가. PKI(Public Key Infrastructure)의 정의
1) 인증기관(CA) 에서 공개키와 개인키를 포함하는 인증서(Certificate)를 발급받아 네트워크상에서 안전하게 비밀통신을 가능하게 하는 기반구조
2) 공신력 있는 제3 인증기관에 의한 거래주체의 인증, 거래정보의 무결성과 기밀성, 거래의 부인방지 기능을 담당하는 공개키 기반의 인프라
3) 공신력 있는 인증기관에서 사용자의 키와 인증서를 발급하고 관리함으로써 공중망에서 전자거래 시 상대방을 인증하고 데이터의 안전한 교환을 위한 공개키 기반 인프라
나. PKI의 특징
특징내용
부인봉쇄 | - 상거래 당사자가 수행한 상거래 행위를 부인할 수 없도록 하는 기능 - 전자서명 기술을 사용 |
인증 | - 비대면 거래의 문제를 해결하기 위한 상거래 당사자들의 정당성 확인 - 전자인증서 기술을 사용 |
무결성 | - 정당한 권한을 가지지 못한 제3자에 의한 데이터변경 및 접근 차단 |
기밀성 | - 정당한 권한을 가진 사용자만 데이터를 볼 수 있도록 하는 기능 - 암호화 기술을 사용 |
다. PKI의 중요성
1) 개인 키 관리 및 인증하기 위한 CA의 운영을 통하여 대칭키 암호방식의 운영상 한계 극복 가능함
2) 키의 분실이나 배상의 어려움에 대한 해소 방안임
3) 웹 상의 비즈니스나 안전한 거래를 보증하기 위한 대안으로 등장함.
라. PKI의 필요성
보안관점 | 필요성 |
관리적 보안 | -개인키 관리 및 인증하기 위한 CA 운영 필요(인증서 : X.509) |
물리적 보안 | -비대면 환경에서 신분을 보장할 수 있는 증명서 필요 |
기술적 보안 | -캐인키에 대한 CA 운영을 통해 대칭키 암호방식 한계 극복 -키 분실이나 분배상 어려움을 해결할 수 있는 방안 필요 -웹 상의 비즈니스나 안전한 거래를 보증하기 위한 대안 필요 |
- PKI의 구성도 및 구성요소
가. PKI의 구성도
- 사용자가 인증서를 RA에 신청하면 RA에서 신청자의 신분을 검증하여 해당 사용자의 인증서 발급을 CA에 요청하고, CA에서는 암호하 key 쌍(Public Key, Private Key)을 생성하여 개인키인 Private Key는 사용자에, Public Key를 포함한 인증서는 인증서 저장소(Certificate Repository)에 저장함
나. PKI의 구성요소
구성요소 | 설명 |
인증기관(CA) | Certificate Authority 인증서의 등록, 발급, 조회 등 관리를 총괄하며 CRL(Certificate Revocation List)를 생성 |
등록대행기관(RA) | Registration Authority 사용자의 요청이 있을 경우, 사용자의 신원을 확인하고 CA에 인증서 발급을 요청 인증서 등록 및 사용자 신원확인을 대행 |
Certificate Repository | 인증서 및 인증서 폐기 목록(CRL)을 보관 CA, RA로부터 인증서 및 CRL을 받아 저장하고, PKI 구성요소 중 하나의 요청이 있을 경우 데이터 제공 |
디렉토리 | Certificate Repository를 포함하여 인증서 및 CRL을 저장하고 사용자에게 서비스하는 역할 주로 LDAP을 이용하여 디렉토리 서비스 제공 인증서는 서명검증의 응용을 위해 디렉토리에 저장 |
사용자 | 인증서를 신청하고 인증서를 사용하는 주체 |
다. PKI를 이용한 상호인증
1) 서버측
- 서버에서 클라이언트로 서버의 공개 키와 공개 키에 대한 CA의 전자 서명을 전송한다.
- 클라이언트에서는 전송 받은 서버의 공개 키와 공개 키에 대한 CA의 전자 서명을 CA의 public key로 복호화하여 서버인증서를 검증한다
2) 클라이언트 측
- 클라이언트에서 서버로 클라이언트의 공개 키와 공개 키에 대한 CA의 전자 서명을 전송한다.
- 서버에서는 전송 받은 클라이언트의 공개 키와 공개 키에 대한 CA의 전자 서명을 CA의 public key로 복호화하여 클라이언트인증서를 검증한다.
- PKI의 전송방식
가. PKI의 전송구조
- 사용자인증서 선택 client side에서 비밀키(대칭키) 자동생성 암호화 은행 측의 공개키로 암호화 처리 은행 전송
나. 클라이언트 상호 간 인증절차
- 클라이언트와 서버의 상호 인증을 위한 시스템 구성도
다. PKI의 기술계층 구조
-암호화 : 대칭키, 비대칭키 -해시 알고리즘 : MD5. SHA-1
- 인증서 : X.509 - 인증기관 : CA/RA
라. PKI 보안구조
- 4대 디지털 보안요소, 인증(Authentication)/기밀성(confidentiality)/ 무결성(integrity)/ 부인방지(non-repudiation)등을 충족시키기 위한 PKI, 암호화, 메시지인증코드 및 해시, 인증서 관리, 전자서명 등의 기술을 활용
- PKI의 관리대상
가. 인증서(X.509)
인증서 항목 | 설명 |
버전 | -X.509 버전 번호 |
일련 번호 | -발급하는 인증 기관이 인증서에 지정한 고유 일련 번호 -일련 번호는 특정 인증 기관에 의해 발급된 모든 인증서에 고유 |
서명 알고리즘 | -인증 기관이 인증서에 디지털 서명을 할 때 사용하는 해시 알고리즘 |
발급자 | -인증서를 발급한 인증 기관에 관한 정보 |
유효 기간 시작 | -인증서가 유효 기간의 시작 날짜 |
유효 기간 종료 | -인증서가 유효 기간의 종료 날짜 |
주체 | -인증서 소유자 -인증서 공개키 항목에 나타난 공개키를 소유한 개체 -CA에 의해 확인된 각각의 주체 명은 고유한 이름 이어야 함 |
공개 키 | -인증서에 연결된 공개 키 종류 및 길이 |
손도장알고리즘 | -디지털 서명의 데이터 다이제스트(또는 손도장)를 생성하는 해시 알고리즘 |
손도장 | -인증서 데이터의 다이제스트(또는 손도장) |
이름 | -(옵션) 주체 필드에 있는 이름의 애칭 또는 일반적인 이름 |
향상된 키 사용 | -(옵션) 이 인증서가 사용될 수 있는 용도 |
나. 인증서 취소목록(CRL)
이름 | 설명 | |
Signature | Algorithm identifier | CRL을 서명할 알고리즘 |
Parameters | 필요한 파라미터들 | |
Issuer | CRL 발행자 이름으로 X.500 명명 방식을 따름 | |
This update | UTCTime | 갱신일에 대한 타임스탬프 |
Next update | UTCTime | 다음 갱신일 |
Revoked certificates | Serial number | 취소된 인증서의 일련번호 |
Revocation date | 인증서 취소일로 UTCTime으로 표현됨 | |
CRL entry extension(선택) | 취소 이유 등 부가적인 정보를 기술함 | |
CRL extension(선택) | 부가적인 정보를 선택적으로 기술함 | |
Issuer’s signature |
- PKI인증서 검증 방식
방식 | 설명 |
CRL | Certificate Revocation List 인증서에 대한 폐지 목록 CA는 폐지된 인증서 정보를 가지고 있는 CRL리스트를 통해서 인증서의 유효성을 최신의 상태로 유지 |
OCSP | - Online Certificate Status Protocol - 실시간으로 인증서의 유효성을 검증 할 수 있는 프로토콜 - CRL을 대신하거나 보조하는 용도로 사용 - OCSP는 클라이언트-서버 방식으로 인증서의 상태에 정보를 주고 받을 수 있음. - 고액의 거래를 주로 하는 은행 업무, 클라이언트에 인증서 상태 모듈을 실행하기 어려운 이동 단말기에서의 전자 거래 등에 활용 |
SCVP | - Simple Certificate Validation Protocol - 인증서의 유효성 여부와 특정 인증서까지의 인증서 체인을 제공 - 인증서를 발행하는 인증기관, 인증서, CRL을 저장하는 저장소도 지원 |
- PKI의 유형 및 비교
가. PKI의 유형
1) 국내 공인인증체계에 의한 분류
구분 | 설명 |
NPKI | National PKI(국가 공개키 기반구조) 주로 일반국민이 이용하며 전자상거래를 목적으로 만들어진 PKI 환경 |
GPKI | Government PKI(정부 공개키 기반구조) 주로 공무원이 이용하며 정부업무 목적으로 만들어진 PKI 환경 국방부, 행정자치부, 대법원, 대검찰청, 국회, 선거관리위원회 등에서 사용 |
2) PKI인프라 구성에 의한 분류
구분 | 내용 | |
계층구조 | 설명 | - 하나의 Root-CA아래 계층적으로 CA 구성 - Root-CA의 신뢰도가 하위에 그대로 전파 - 정부와 같은 계층적 조직 체계에 적합 - 상위 인증기관이 하위 인증기관의 공개키에 대해 인증 |
장점 | - 인증 서비스 영역이 확장됨 - 추가적인 인증 서비스 영역확장이 용이 |
|
단점 | - 각 국가별 PKI가 구축될 경우 이것을 모두 통합하는 하나의 루트CA가 존재한다는 것은 현실과 맞지 않음 - PKI가 상업적인 분야에 이용될 때는 관계는 계층적일 필요가 없음 - 루트 비밀키의 노출은 끔찍한 상황을 야기하고 복구하기 위해서는 PKI내의 모든 사용자에게 새로운 공개키의 안전한 분배가 필요 |
|
적용국가 | 한국 | |
네트워크구조 | 설명 | - 상호 독립적인 CA들이 개별적으로 인증서 발행 및 관리 - CA들간에 교차 인증 수행 - 인증기관의 추가 시, 기존의 다른 인증기관과 인증서를 생성해야 함. |
장점 | - CA들간의 신뢰 고리 형성에 융통성 발휘 - 인증서비스 영역이 확장됨 |
|
단점 | - 인증 경로 탐색 전략이 계층적 구성에 비해 훨씬 복잡함. - 사용자는 PKI의 다른 사용자에게 단일 인증 경로를 제공 할 수 없음. (네트워크형에서의 두 사용자간의 인증경로는 여러 개가 존재하기 때문임) |
|
적용국가 | 일본 | |
하이브리드 구조 | 설명 | - 단위 어플리케이션, 조직별 계층구조 형성과 서로 다른 계층 도메인과 교차 인증 수행 - 계층적 교차 인증 일반 - 교차 인증, 특별 교차 인증 |
적용국가 | 미국 (FPKI : Federal Public Key Infrastructure) |
나. PKI와 무선PKI(WPKI)와의 비교
구분 | 유선 PKI | 무선 PKI |
공개키 알고리즘 | RSA | RSA, ECC 지원 |
인증서 | Long-lived 인증서 | Short-Lived 인증서 사용지원 |
인증서 검증 | CRL(Certification Revocation List) :인증서 폐기목록을 확인하여 인증서 유효성을 검증함 | -SLC(Short-Lived Certification) : 인증서의 유효기간을 기존 인증서 폐지목록 갱신주기와 비슷하게 하여 별도의 CRL을 검증하지 않음 -OCSP(Online Certificate Status Protocol): 클라이언트가 직접 검증하지 않고 제3자에게서 인증서 검증을 요구하여 그 결과만 수신 |
인증서 저장 및 전달방법 | 인증서 | 인증서, 인증서 URL |
인코딩 | ASN.1 | ASN.1(PKCS #1,5,, X.509), XDR(WTLS Certification, 전자서명, 인증서 발급 및 관리 프로토콜) |
보안프로토콜 | SSL, Enveloped Data | WTLS, SSL/TLS 1.0, WAPEnvelopedData |
PKI portal | 미존재 | 이통사별 무선 PKI portal지원 |
저장매체 | USB, Hard Disk, IC Card | NVM, WIM Card 등 모바일 단말기 내부 |
전자서명주체 | 사용자 PC | 가입자 이동단말기, SIM Card |
- X.509 인증서 구성 및 구성요소
- X.509 v1, v2, v3 인증서 구성
그림 9 X.509 인증서의 구성
-위 그림은 ITU에서 인증서의 기본형식을 정의한 Public-key and Attribute Certificate Framework 표준을 보여줌
- 구성요소
X.509 버전 | 요소 | 설명 |
V1 | 버전 | -X.509 버전 정보를 보여줌 |
일련번호 | -CA에 의해 부여되는 인증서 일련 번호 | |
서명 정보 | -인증서 발행시 서명한 CA의 서명 알고리즘 -예: RSA with MD5 |
|
발행자 이름 | -CA의 X.500 이름 (예: C=KR, O=KISA, CN=rootCA) | |
유효기간 | -not before: 유효기간 시작 일시 -not after: 유효기간 종료 일시 |
|
사용자 이름 | -공개키에 대응된 개인키를 소유한 Subject의 X.500 이름 | |
사용자 공개키 정보 |
-공개키 알고리즘: 주체 공개키가 사용되는 알고리듬 확인자 -사용자 공개키: 공개키 값 |
|
발행자 서명 | -위 정보를 DER 코딩하여 그 결과를 해쉬하여 CA의 개인키로 서명한 서명문 | |
V2 | 발행자 식별자 | -인증서 발행기관(CA)의 Unique ID |
사용자 식별자 | -인증서 사용자(인증서 발급 대상)의 Unique ID | |
V3 | 확장 필드 | -Criticality: 필수 여부를 나타내는 1 비트 플래그 -Value: 확장 필드의 실제 데이터 값 |
[전자봉투]
- 전자봉투
- 전달하고자 하는 메시지를 암호화하여 한 사람을 통해서 보내고, 암호화 키는 다른 사람에게 가져가게 하는 것을 암호학적으로 구현한 것.
- 철수는 전자봉투를 사용하기 위해 우선 전자서명을 생성하고 전자서명과 원문, 그리고 자신의 공개키가 들어있 는 인증서를 비밀키(DES 알고리즘 등에 사용되는 대칭키)를 사용하여 암호화함. 전자서명 세트와 인증서를 암호화한 비밀키를 영희의 공개키로 암호화 이것이 전자봉투가 됨.
- 철수는 최종적으로 비밀키로 암호화한 결과와 비밀키가 암호화된 전자봉투를 영희에게 보냄.
- 전자봉투는 기밀성, 무결성, 부인 방지를 모두 지원함.
[그림 9-14] 전자봉투를 이용한 암호화 전송
- 전달받은 영희는 우선 전자봉투를 자신의 사설키로 복호화하여 비밀키를 획득
- 비밀키를 이용하여 전자서명과 평문, 철수의 인증서를 복호화(해독)
- 복호화한 인증서에서 철수의 공개키를 얻어 전자서명을 복호화한 후 이를 원문 해시 결과와 비교
[그림 9-15] 전자봉투의 복호화
전자서명 (Digital Signature)
- 전자서명의 개요
- 전자서명 개념
- 전자문서를 작성한 작성자의 신원과 당해 전자문서가 그 작성자에 의해 작성되었음을 나타내는 전자형태의 서명
- 전자문서를 작성한 자의 신원과 전자문서의 변경여부를 확인할 수 있도록 공개키 암호화 방식을 이용하여 전자서명 생성키로 생성한 전자문서(일반적으로 파일 형태)에 대한 작성자의 고유한 정보
- 전자서명의 요건
요건 | 설명 |
위조불가(Unforgeable) | - 생성키를 소유하지 않은 자는 전자서명 생성 불가 - 서명자만이 서명문을 생성 가능 |
서명자 인증 (Authentication) | - 생성키를 소유한 자가 전자서명의 행위자이며 전자서명의 서명자를 불특정 다수가 검증할 수 있어야 함 - 서명문의 서명자를 확인 가능 |
부인방지(Non Repudiation) | - 서명자는 후에 서명 사실 자체를 부인할 수 없어야 함 |
변경불가(Unalterable) | - 생성키를 소유하지 않은 자는 전자서명한 문서의 내용을 변경할 수 없어야 함 |
재사용 불가(Not Reusable) | - 전자문서의 서명을 다른 전자문서의 서명으로 대치 및 사용할 수 없어야 함 |
분쟁해결가능 (Judge) | - 제3자에 의해 정당성을 검증 받을 수 있어야 함 |
- 전자서명 생성 및 검증 절차
- 전자서명 생성 절차
- 전자문서를 해쉬함수에 넣어 일정한 길이의 bit로 된 축약된 값을 생성, 이 값을 전자서명 알고리즘에 넣어 전자서명 값 생성
- 그 다음 문서를 e-mail이나 응용 프로그램을 사용하여 원본문서와 전자서명 값을 같이 보내는 것이 일반적인 방법이고, 보안성을 강화하기 위해서 최근에는 원본문서와 전자서명 값을 다시 한 번 암호화하여 전송하기도 함
- 전자서명 검증 절차
- 원본 전자문서를 해쉬함수에 넣어 결과(축약문서-Message Digest) 획득
- 상대방이 전자서명한 값을 상대방의 전자서명 검증키(공개키)를 이용하여 알고리즘에 넣어 복호화하여해쉬함수의 결과 값과 전자서명 검증 후의 값을 비교하여 맞으면 전자서명 여부 확인
- 전자서명 구현기술
요소기술 | 설명 | 종류 |
공개키 암호화 알고리즘 | - 개인키/공개키 쌍을 이용한 전자서명 및 전송 기술 - 개인키를 사용하여 전자서명 - 공개키를 사용하여 문서 검증 |
- RSA 전자서명 - KCDSA 전자서명 |
해쉬함수 | - 일방향성 성질 - 메시지 압축 기능 - 일정한 값의 압축문서 생성 |
- SHA-1 - MD5 - HAS |
메시지 다이제스트 | - 해쉬함수에 의해 생성된 압축문서 | - 해쉬함수 - 전자서명 검증 |
[용어/개념] SSO (Single Sign On) - 통합 인증 관리 서비스