logo

한국어

PKCS

관리자 2010.04.17 23:31 조회 수 : 57

1. 개요 최근 급속한 전자상거래의 활성화는 인터넷과 같은 컴퓨터 네트워크의 기술을 한 단계 높이는 계기를 마련함과 동시에 보안 서비스를 위한 여러 가지 메커니즘들을 개발케 하는 원동력이 되었다.
전 자상거래시 발생할 수 있는 수많은 역기능들을 줄일 수 있는 가장 강력한 방법은 암호 응용 기술을 전자상거래 시스템 구축에 사용함으로써, 기밀성(confidentiality), 무결성(inegrity), 인증(authentication) 등의 보안 서비스를 제공하는 것이다.
그러나, 이러한 보안 서비스 구현은 전자상거래 시스템 구현자들에게 또 하나의 커다란 짐이 될 수 있다.
즉, 시스템 구현자들은 광범위하고 복잡한 암호 이론을 습득해야만 하고, 이러한 암호 이론을 기반으로 자신들이 사용할 보안 서비스 기능에 대한 프로그래밍을 직접 수행해야만 하는 것이다. 이러한 작업은 결국 향후 수많은 전자상거래 시스템들이 개발될 것이라는 점을 고려해 볼 때 상당히 큰 문제점이 아닐 수 없다.
그러나, 상기에서 언급한 문제점은 보안 서비스 API(Application Program Interface)라는 개념으로 쉽게 해결될 수 있다.
즉, 시스템 구현자들은 이미 구현되어 있는 암호 라이브러리, CAPI(Cryptographic API)를 이용함으로써 단지 함수(function)나 메쏘드(method)에 대한 입출력 파라메터, 정의되어 있는 형 선언(type definition), 그리고 전역변수(global variable) 등에 대한 지식만으로 보안 서비스 기능을 구축할 수 있다.
이러한 CAPI들은 1990년대 초반부터 많은 기관들에 의해 개발되기 시작했다.


2. PKCS 구성 및 현황
PKCS는 1991년 3월 NIST/OSI Implementator´s Workshop에서 문서 SEC­SIG­91­16으로 발표된 이후, 1993년 11월 1일 여러 부분의 편집 과정을 거쳐 일관성 있는 문서 방식으로 개선되어 발표되었으며, 이후 수많은 갱신과정을 거쳐 현재는 <표 1>와 같은 현황을 보이고 있다.

<표 1> PKCS 구성 및 현황

구 분  제 목 버 전 일 시
PKCS#1  RSA Encryption Standard(PKCS­2/PKCS­4포함) 1.5 1993. 11
PKCS# 3 Diffie­Hellman Key­Agreement Standard 1.4 1993. 11
PKCS# 5 Password­Based Encryption Standard 1.5 1993. 11
PKCS# 6 Extended­Certificate Syntax Standard 1.5 1993. 11
PKCS# 7 Cryptographic Message Syntax Standard 1.5 1993. 11
PKCS# 8 Private­Key Information Syntax Standard 1.2 1993. 11
PKCS# 9 Selected Attribute Types 1.1 1993. 11
PKCS#10 Certification Request Syntax Standard 1.0 1993. 11
PKCS#11 Cryptographic Token Interface Standard 2.01 1997. 12
PKCS#12 Personal Information Exchange Syntax Standard 1.0(Draft) 1997. 4
PKCS#13 Elliptic Curve Cryptography Standard Project 진행중
PKCS#14 Pseudorandom Generator Standard Project 진행중


3. PKCS 각 표준에 대한 요약 ·

PKCS#1 : RSA Encryption Standard PKCS#1은 RSA 공개키를 이용해 데이터를 암호화시키는 rsaEncryption이란 메쏘드에 대한 내용을 다루고 있다.
이러한 RSA 암호화는 PKCS#7에서 설명될 디지털 서명(digital signature)과 디지털 봉투(digital envelope)을 위해 사용된다.
또한, PKCS#1은 RSA 공개키와 비밀키를 위한 구문(syntax)을 설명하고 있다.
공개키 구문은 인증서(certificate)에서 사용되며, 비밀키 구문은 일반적으로 암호화된 비밀키(PKCS#8)에 사용된다.
여기서 공개키 구문은 X.509 및 PEM에서의 구문과 동일하기 때문에 X.509/PEM RSA 키들은 PKCS#1에서도 사용될 수 있다.
PKCS#1 은 또한 X.509/PEM 인증서, 인증서 취소 리스트(certificate­revocation list), PKCS #6의 확장된 인증서(extended certificate)를 위한 서명이나 X.400 메시지 토큰과 같은 디지털 서명을 위해서 세 개의 서명 알고리즘(md2WithRSAEncryption, md4WithRSAEncryption, md5WithRSAEncryption)들을 정의하고 있다. ·


PKCS#3 : Diffie­Hellman Key Agreement Standard PKCS#3은 Diffie­Hellman 키 분배 구현을 위한 메쏘드를 설명한다.
 Diffie­Hellman 키 분배는 일반적으로 대칭형 암호 시스템을 사용하고자 하는 두 사용자간의 비밀키(secret key) 셋업을 위해 사용된다.
여기서는 OSI의 전송 및 네트워크 계층에서의 안전한 연결을 구축하기 위한 프로토콜에 사용되는 것을 기본 목적으로 한다. ·


PKCS#5 : Password­Based Encryption Standard PKCS#5는 패스워드로부터 파생된 비밀키(secret key)를 가지고 8진 스트링을 암호화시키는 메쏘드를 설명한다.
이것은 PKCS#8에서 설명된 것처럼 한 컴퓨터에서 다른 컴퓨터로 비밀키(secret key)들을 전송시키는 경우 그러한 키들에 대한 암호화를 응용 목적으로 한다. ·


PKCS#6 : Extended­certificate Syntax Standard PKCS#6은 확장된 인증서들에 대한 구문을 설명한다.
확장된 인증서는 X.509 공개키 인증서와 속성(attribute)들의 집합들을 포함한 서명문으로 구성된다.
이러한 확장된 인증서는 서명 검증과정을 통해 검증이 되며, PEM과 같은 응용을 위해 공개키 인증서만을 추출할 수 있다. ·


PKCS#7 : Cryptographic Mesage Syntax Standard PKCS#7은 디지털 서명이나 디지털 봉투와 같은 암호 응용에 대한 결과가 가질 수 있는 일반적인 구문 표현에 대해 설명한다.
PKCS#7은 PEM과 호환이 되며, 이것은 PKCS에서의 서명 등이 어떠한 변환 작업 없이 PEM에서도 사용될 수 있다는 것을 의미한다.
물론, 이것의 역도 가능하다. 또한, PKCS#7에 따라 생성된 값들은 전형적으로 8진 스트링을 취하는 BER(Basic Encoding Rule) 인코딩이 된다. ·


PKCS#8 : Private­Key Information Syntax Standard PKCS#8은 비밀키 정보를 위한 구문을 정의한다.
비밀키 정보는 어떤 공개키 알고리즘에 대한 비밀키와 그것에 대한 속성들로 구성된다. 또한, 본 표준은 암호화된 비밀키에 대한 구문 설명도 포함한다. ·


PKCS#9 : Selected Attribute Types PKCS#9는 PKCS#6의 확장된 인증서, PKCS#7의 디지털 서명된 메시지, 그리고 PKCS#8의 비밀키 정보에서 사용될 선택된 속성 타입들을 정의한다. ·


PKCS#10 : Certification Request Syntax Standard PKCS#10은 인증(certification) 요구서를 위한 구문을 정의한다.
인증 요구서는 식별자(distinguished name), 공개키, 그리고 선택사항인 속성들의 집합으로 이루어지며, 인증기관(certification authority)에 전송된다.

PKCS#10의 초기 목적은 PKCS#7의 암호학적 메시지 지원을 위한 것이며, 다른 응용들도 개발될 것으로 기대된다. ·


PKCS#11 : Cryptographic Token Interface Standard PKCS#11은 일반적으로 CAPI라고 불리우는 보안 서비스 API를 정의한 것이다.
이 표준은 “Cryptoki"라는 API로 불리우며, ANSI C 프로그래밍 언어를 사용함으로써 암호학적 서비스 구현에 이용 가능한 데이터 타입과 함수들을 상술한다.
본 문서에서 상술되는 “Cryptoki"의 장점은 개발할 응용서비스와 암호학적 서비스를 제공하는 장치들 간의 상호 관계를 상호 독립적으로 만들어 준다는 점이다.
즉, 개발자들은 “Cryptoki"에 명시된 데이터나 함수들만을 사용함으로써 암호학적 장치의 사용 방법이나, 장치에 대한 세부적인 지식 없이도 암호 응용 서비스를 쉽게 구현 할 수 있다.
이것은, 바꾸어 말하면, “Cryptoki"에 의해 개발된 암호 응용은 시스템들 간에 쉽게 호환 가능하다는 것이다

번호 제목 날짜 조회 수
6 [스크립트] SSL 인증서 만들기 2010.04.17 14
» PKCS 2010.04.17 57
4 Certificate Authority (인증기관) 2010.04.17 54
3 Public Key Infrastructure 2010.04.17 14
2 Symmetric Key (대칭키) 2010.04.17 45
1 암호화의 역할 2010.04.17 181