PKCS(Public-Key Cryptography Standard, 공개키 암호화 표준)는 공개키 암호화 표준을 위한 메시지 문법을 추상적이고, 해당 알고리즘을 자세히 설명함.
이는 디지털서명(Digital Signature) 등에서 사용되며 RFC 문서에 자세히 설명되어 있으며,
이 정리글에는 PKCS #1, #2, ..., #15에 대한 개요만 정리.
이는 후속글의 ASN.1과 Certificate를 정리하고,
Apple에서 공개한 swift-asn1과 swift-certificate 라이브러리를 정리하기 위함.
PKCS | 내용 | 참고 |
#1 | RSA의 공개키와 비밀키(ASN.1으로 인코딩됨)에 대해 수학적 성질과 규격을 정의. RSA 암호화, 복호화, 서명 검증을 구현하는데에 필요한 알고리즘과 인코딩, 패딩 등의 규격을 정의. |
RFC: https://datatracker.ietf.org/doc/html/rfc8017 |
(#2) | PKCS #1에 통합되어 철회됨. | |
#3 | 디피헬만 키교환 표준(Diffie-Helman Key-Agreement Standard)을 이용한 통신에 대한 정의. | RFC: https://datatracker.ietf.org/doc/rfc2786/ |
(#4) | PKCS #1에 통합되어 철회됨. | |
#5 | 비밀번호 기반 암호화 표준. 데이터 암복호화에 대한 스펙을 기술. |
RFC: https://datatracker.ietf.org/doc/html/rfc8018 |
(#6) | 확장된 인증서 문법 표준. X.509 인증서 규격 v1을 확장. 현재는 X.509 v3가 있어 사용되지 않음. |
X.509 v3에 대한 RFC 문서: https://datatracker.ietf.org/doc/html/rfc2459 TBS인증서 및 표준인증서 확장 및 알고리즘(단방향 해시, 서명, Subject 공개키 알고리즘) 등에 대한 설명. |
#7 | 암호 메시지 문법 표준. 암호화한 데이터를 표현하는 방식에 대한 표준. PEM과 호환. Digital Signature 및 Digital Envelopes 등 암호화가 적용될 수있는 데이터에 대한 일반적인 구문을 설명. 이 구문은 재귀를 허용. 하나의 Envelope이 다른 Envelope에 중첩되거나, 기존 Enveloped Digital Data에 서명할 수 있음. 그리고 서명 시간과 같은 임의의 Attribute를 메시지 내용과 함께 인증할 수 있음. |
RFC: https://datatracker.ietf.org/doc/html/rfc2315 |
#8 | 개인키 정보 문법 표준. 공개키 암호에서 사용되는 개인키 값 구조 대한 문법을 정의. 개인키 정보에는 일부 공개키 알고리즘을 위한 개인키 및 Attribute Set가 포함됨. 'PKCS #5'에 설명된 알고리즘을 사용해서 개인키 정보를 암호화 할 수 있음. Attribute Set는 사용자가 'distinguished name'이나 최상위 인증 기관의 공개키와 같은 정보에 trust를 구축하는 방법을 제공하기 위함. Trust는 Digital Signature로도 구축할 수 있지만, 사용자만 알고 있는 비밀키를 사용한 암호화도 효과적으로 구현할 수 있음. Attribute 리스트들은 PKCS #9에 설명됨. |
RFC: https://datatracker.ietf.org/doc/html/rfc5208 |
#9 | 다른 PKCS에서 사용하는 Attribute들에 대한 정의. | RFC: https://datatracker.ietf.org/doc/html/rfc2985 |
#10 | 인증서 요청 표준. 사용자가 CA(인증기관)에 인증서 발급을 요청할 때 사용하는 프로토콜을 정의. 인증 요청은 distinguished name, 공개키, optional하게 인증을 요청하는 Entity가 집합적으로 서명하는 Attrubute 세트로 구성. 인증 요청은 인증기관으로 전송되고, 인증기관은 해당 요청을 X.509 공개키 인증서로 변환함. Attribute Set는 2가지 의도로 포함될 수 있는데, 1. 주어진 Entity에 대한 다른 정보나 Entity가 나중에 인증서 해지를 요청할 수 있는 'Challenge Password'를 제공하기 위함. 2. X.509 인증서에 포함될 속성을 제공하기 위함. |
RFC: https://datatracker.ietf.org/doc/html/rfc2986 |
#11 | 암호 토큰 인터페이스. 암호 토큰(하드웨어)에 대한 범용인터페이스를 정의. | RFC: https://datatracker.ietf.org/doc/html/rfc7512 |
#12 | 개인키, 인증서, 기타 비밀 및 extension을 포함한 개인신원정보의 교환 문법 표준. 여러 개인정보 보호 및 무결성 모드에서 개인정보의 전송을 지원. 가장 안전한 개인정보 보호 및 무결성 모드는 소스 및 Destination 플랫폼 각각에서 Digital Signature 및 암호화에 사용할 수 있는 신뢰할 수 있는 개인키, 공개키 쌍이 있어야 함. |
RFC: https://datatracker.ietf.org/doc/html/rfc7292 |
(#13) | 타원곡선암호 표준(Elliptic Curve Cryptography Standard) (..인데 폐기됨) |
(PKCS#13은 아니고)타원곡선암호표준 RFC: https://datatracker.ietf.org/doc/html/rfc6090 이전에 정리했던 타원곡선 암호화 정리: https://swifty-cody.tistory.com/136 |
(#14) | 유사난수생성 표준(Pseudo-random Number Generation) (..인데 폐기됨) |
|
#15 | 암호 토큰 정보 형식 표준. | RFC: https://datatracker.ietf.org/doc/html/draft-gutmann-pkcs15-01 (업데이트 문서) |
PKCS(Public-Key Cryptography Standard, 공개키 암호화 표준)는 공개키 암호화 표준을 위한 메시지 문법을 추상적이고, 해당 알고리즘을 자세히 설명함.
이는 디지털서명(Digital Signature) 등에서 사용되며 RFC 문서에 자세히 설명되어 있으며,
이 정리글에는 PKCS #1, #2, ..., #15에 대한 개요만 정리.
이는 후속글의 ASN.1과 Certificate를 정리하고,
Apple에서 공개한 swift-asn1과 swift-certificate 라이브러리를 정리하기 위함.
PKCS | 내용 | 참고 |
#1 | RSA의 공개키와 비밀키(ASN.1으로 인코딩됨)에 대해 수학적 성질과 규격을 정의. RSA 암호화, 복호화, 서명 검증을 구현하는데에 필요한 알고리즘과 인코딩, 패딩 등의 규격을 정의. |
RFC: https://datatracker.ietf.org/doc/html/rfc8017 |
(#2) | PKCS #1에 통합되어 철회됨. | |
#3 | 디피헬만 키교환 표준(Diffie-Helman Key-Agreement Standard)을 이용한 통신에 대한 정의. | RFC: https://datatracker.ietf.org/doc/rfc2786/ |
(#4) | PKCS #1에 통합되어 철회됨. | |
#5 | 비밀번호 기반 암호화 표준. 데이터 암복호화에 대한 스펙을 기술. |
RFC: https://datatracker.ietf.org/doc/html/rfc8018 |
(#6) | 확장된 인증서 문법 표준. X.509 인증서 규격 v1을 확장. 현재는 X.509 v3가 있어 사용되지 않음. |
X.509 v3에 대한 RFC 문서: https://datatracker.ietf.org/doc/html/rfc2459 TBS인증서 및 표준인증서 확장 및 알고리즘(단방향 해시, 서명, Subject 공개키 알고리즘) 등에 대한 설명. |
#7 | 암호 메시지 문법 표준. 암호화한 데이터를 표현하는 방식에 대한 표준. PEM과 호환. Digital Signature 및 Digital Envelopes 등 암호화가 적용될 수있는 데이터에 대한 일반적인 구문을 설명. 이 구문은 재귀를 허용. 하나의 Envelope이 다른 Envelope에 중첩되거나, 기존 Enveloped Digital Data에 서명할 수 있음. 그리고 서명 시간과 같은 임의의 Attribute를 메시지 내용과 함께 인증할 수 있음. |
RFC: https://datatracker.ietf.org/doc/html/rfc2315 |
#8 | 개인키 정보 문법 표준. 공개키 암호에서 사용되는 개인키 값 구조 대한 문법을 정의. 개인키 정보에는 일부 공개키 알고리즘을 위한 개인키 및 Attribute Set가 포함됨. 'PKCS #5'에 설명된 알고리즘을 사용해서 개인키 정보를 암호화 할 수 있음. Attribute Set는 사용자가 'distinguished name'이나 최상위 인증 기관의 공개키와 같은 정보에 trust를 구축하는 방법을 제공하기 위함. Trust는 Digital Signature로도 구축할 수 있지만, 사용자만 알고 있는 비밀키를 사용한 암호화도 효과적으로 구현할 수 있음. Attribute 리스트들은 PKCS #9에 설명됨. |
RFC: https://datatracker.ietf.org/doc/html/rfc5208 |
#9 | 다른 PKCS에서 사용하는 Attribute들에 대한 정의. | RFC: https://datatracker.ietf.org/doc/html/rfc2985 |
#10 | 인증서 요청 표준. 사용자가 CA(인증기관)에 인증서 발급을 요청할 때 사용하는 프로토콜을 정의. 인증 요청은 distinguished name, 공개키, optional하게 인증을 요청하는 Entity가 집합적으로 서명하는 Attrubute 세트로 구성. 인증 요청은 인증기관으로 전송되고, 인증기관은 해당 요청을 X.509 공개키 인증서로 변환함. Attribute Set는 2가지 의도로 포함될 수 있는데, 1. 주어진 Entity에 대한 다른 정보나 Entity가 나중에 인증서 해지를 요청할 수 있는 'Challenge Password'를 제공하기 위함. 2. X.509 인증서에 포함될 속성을 제공하기 위함. |
RFC: https://datatracker.ietf.org/doc/html/rfc2986 |
#11 | 암호 토큰 인터페이스. 암호 토큰(하드웨어)에 대한 범용인터페이스를 정의. | RFC: https://datatracker.ietf.org/doc/html/rfc7512 |
#12 | 개인키, 인증서, 기타 비밀 및 extension을 포함한 개인신원정보의 교환 문법 표준. 여러 개인정보 보호 및 무결성 모드에서 개인정보의 전송을 지원. 가장 안전한 개인정보 보호 및 무결성 모드는 소스 및 Destination 플랫폼 각각에서 Digital Signature 및 암호화에 사용할 수 있는 신뢰할 수 있는 개인키, 공개키 쌍이 있어야 함. |
RFC: https://datatracker.ietf.org/doc/html/rfc7292 |
(#13) | 타원곡선암호 표준(Elliptic Curve Cryptography Standard) (..인데 폐기됨) |
(PKCS#13은 아니고)타원곡선암호표준 RFC: https://datatracker.ietf.org/doc/html/rfc6090 이전에 정리했던 타원곡선 암호화 정리: https://swifty-cody.tistory.com/136 |
(#14) | 유사난수생성 표준(Pseudo-random Number Generation) (..인데 폐기됨) |
|
#15 | 암호 토큰 정보 형식 표준. | RFC: https://datatracker.ietf.org/doc/html/draft-gutmann-pkcs15-01 (업데이트 문서) |