PKCS 1

PKCS 1

암호학에서 PKCS #1RSA 연구소가 발표한 PKCS(Public-Key Cryptography Standards)라는 표준 제품군 중 첫 번째다.공개키 암호화를 위한 RSA 알고리즘 구현을 위한 의 기본 정의 및 권장사항을 제공한다.공용 및 개인 키의 수학적 속성, 암호화와 서명을 위한 원시 연산, 보안 암호 체계, 관련 ASN.1 구문 표현 등을 정의한다.

현재 버전은 2.2(2012-10-27)이다.RFC 3447로 재게시된 2.1(2002-06-14)과 비교하여 버전 2.2는 허용 해싱 알고리즘 목록을 FIPS 180-4와 일치하도록 업데이트하여 SHA-224, SHA-512/224 및 SHA-512/256을 추가한다.

열쇠들.

PKCS #1 표준은 RSA 공용 및 개인 키가 가져야 하는 수학적 정의와 속성을 정의한다.인 키 쌍은 두 개의 뚜렷한 큰 소수인 의 곱인n으로 한다

버전 2.1부터, 이 정의는 구별되는 소수점 수가 2개 이상일 수 있는 다중 프라임 키를 허용하도록 일반화되었다.멀티프라임 키를 처리할 때 주요 요인은 일반적으로 다음과 같이 일부 i 대해 r 로 라벨이 지정된다.

cd 2 {\displaystyle

공칭 편의상 = 1 =

RSA 공용 키는 tuple ) 으)로 표시되며, 정수 e {\(는) 공용 지수다.

RSA 개인 키에는 두 가지 표현이 있을 수 있다.첫 번째 컴팩트 형식은 튜플 , ) 스타일이며 서 d 스타일 (는) 개인 지수다.두 번째 형태는 멀티프라임 키에 대해 최소 5개 이상의 용어(p, q, dp, dq, chinv)를 가지고 있다.비록 콤팩트한 형태에 수학적으로 중복되지만, 추가 용어들은 키를 사용할 때 특정한 계산적 최적화를 허용한다.특히 두 번째 형식에서는 공개키를 도출할 수 있다.[1]

원시성

이 표준은 몇 가지 기본적인 원형을 정의하고 있다.원시 연산에서는 원시 수학 공식을 계산 가능한 알고리즘으로 변환하기 위한 기본 지침을 제공한다.

  • I2OSP - 정수를 옥텟 문자열 원시 값으로 - (잠재적으로 매우 큰) 음이 아닌 정수를 바이트 시퀀스(옥텟 문자열)로 변환한다.
  • OS2IP - Octet String to 정수 원시 - 바이트 시퀀스를 음이 아닌 정수로 해석
  • RSAEP - RSA Encryption Previous - 공용 키를 사용하여 메시지 암호화
  • RSADP - RSA 암호 해독 원시 - 개인 키를 사용하여 암호 해독
  • RSASP1 - RSA 시그니처 Previous 1 - 개인 키를 사용하여 메시지 위에 서명 만들기
  • RSAVP1 - RSA Verification Previous 1 - 공개 키를 사용하여 메시지에 대한 서명 확인

구성표

그 자체로 원시적 작전이 반드시 보안을 제공하는 것은 아니다.암호 체계의 개념은 원시 요소들의 상위 수준의 알고리즘이나 사용을 정의하여 특정 보안 목표를 달성하는 것이다.

암호화 및 암호 해독에는 두 가지 방법이 있다.

참고: PKCS #1 버전 2.1에서 RSAES-OAEP가 약간 변경되어 PKCS #1 버전 2.0의 RSAES-OAEP가 PKCS #1 버전 2.1 및 버전 2.2의 RSA-OAEP와 완전히 호환되지 않게 되었다.

서명을 처리하는 방법에는 다음과 같은 두 가지가 있다.

  • RSASSA-PSS: 부록으로 개선된 확률론적 서명 체계; Bellare와 Rogaway에 의해 원래 발명된 확률론적 서명 체계에 기초한다.
  • RSASSA-PKCS1-v1_5: PKCS #1 버전 1.5에서 처음 표준화된 부록이 있는 이전 서명 체계.

두 개의 서명 체계는 별도로 정의된 인코딩 방법을 사용한다.

  • EMSA-PSS: 서명 부록에 대한 인코딩 방법, 확률론적 서명 방식.
  • EMSA-PKCS1-v1_5: PKCS #1 버전 1.5에서 처음 표준화된 서명 부록에 대한 인코딩 방법.

서명 체계는 실제로 부록으로 서명하는 것으로, 일부 입력 데이터를 직접 서명하기보다는 먼저 해시함수를 사용하여 데이터의 중간표시를 만든 다음 해시의 결과를 서명하는 것을 의미한다.직접 서명할 수 있는 데이터의 양은 키의 크기에 비례하기 때문에 이 기술은 거의 항상 RSA와 함께 사용된다. 이는 응용 프로그램이 서명하고자 하는 데이터의 양보다 거의 항상 작다.

버전 이력

  • 버전 1.1–1.3, 1991년 2월부터 3월까지 비공개 배포.
  • 1991년 6월 버전 1.4, NIST/OSI 구현자 워크샵용으로 발행.
  • 버전 1.5, 1993년 11월.첫 공개.재게시됨 RFC2313.
  • 버전 2.0, 1998년 9월.RFC 2437로 다시 게시됨.RSAEP-OAEP 암호화 방식 도입
  • 버전 2.1, 2002년 6월.RFC 3447로 다시 게시됨.멀티프라임 RSA 및 RSASSA-PSS 시그니처 스키마 도입
  • 버전 2.2, 2012년 10월.RFC 8017로 다시 게시됨.

구현

아래는 PKCS#1에 대한 지원을 제공하는 암호화 라이브러리의 목록이다.

공격

PKCS #1 v1.5에 대한 여러 공격이 발견되었다.[2][3]

1998년에 다니엘 블레센바허블레센바허의 공격("백만 메시지 공격"[3][4]이라고도 알려져 있는)에 관한 세미날 논문을 발표했다.이후 릴리스 2.0에서 PKCS #1이 업데이트되었으며 이전 버전의 표준을 계속 사용하고자 하는 사용자에게 패치가 발행되었다.[2]약간의 변화에도 불구하고 이 취약성은 여전히 많은 현대 서버들에 존재한다.[5]

2006년, 블레센바허는 서명 계획 RSASASA-PKCS1-v1_5에 대한 새로운 위조 공격을 제시하였다.[6]

참고 항목

참조

  1. ^ Ilmari Karonen (27 October 2017). "Can I get a public key from an RSA private key?". Stack Exchange.
  2. ^ a b Jean-Sébastien Coron, Marc Joye, David Naccache, and Pascal Paillier (2000). New Attacks on PKCS #1 v1.5 Encryption (PDF). Lecture Notes in Computer Science. Vol. 1807. EUROCRYPT. pp. 369–381. doi:10.1007/3-540-45539-6. ISBN 978-3-540-67517-4. S2CID 8447520.{{cite book}}: CS1 maint : 복수이름 : 작성자 목록(링크)
  3. ^ a b Romain Bardou, Riccardo Focardi, Yusuke Kawamoto, Lorenzo Simionato, Graham Steel, Joe-Kai Tsay (2012). "Efficient Padding Oracle Attacks on Cryptographic Hardware". Rr-7944. INRIA: 19.{{cite journal}}: CS1 maint: 작성자 매개변수 사용(링크)
  4. ^ RFC 3218 – 암호 메시지 구문에 대한 백만 메시지 공격 방지
  5. ^ Hanno Böck; Juraj Somorovsky; Craig Young. "ROBOT attack: Return Of Bleichenbacher's Oracle Threat". Retrieved February 27, 2018.
  6. ^ Tetsuya Izu, Masahiko Takenaka, Takeshi Shimoyama (April 2007). "Analysis on Bleichenbacher's Forgery Attack". The Second International Conference on Availability, Reliability and Security (ARES'07). IEEE. pp. 1167–1174. doi:10.1109/ARES.2007.38. ISBN 978-0-7695-2775-8. S2CID 2459509.{{cite book}}: CS1 maint: 작성자 매개변수 사용(링크)

외부 링크