fbpx
Wikipedia

PKCS 1

In cryptography, PKCS #1 is the first of a family of standards called Public-Key Cryptography Standards (PKCS), published by RSA Laboratories. It provides the basic definitions of and recommendations for implementing the RSA algorithm for public-key cryptography. It defines the mathematical properties of public and private keys, primitive operations for encryption and signatures, secure cryptographic schemes, and related ASN.1 syntax representations.

The current version is 2.2 (2012-10-27). Compared to 2.1 (2002-06-14), which was republished as RFC 3447, version 2.2 updates the list of allowed hashing algorithms to align them with FIPS 180-4, therefore adding SHA-224, SHA-512/224 and SHA-512/256.

Keys edit

The PKCS #1 standard defines the mathematical definitions and properties that RSA public and private keys must have. The traditional key pair is based on a modulus, n, that is the product of two distinct large prime numbers, p and q, such that  .

Starting with version 2.1, this definition was generalized to allow for multi-prime keys, where the number of distinct primes may be two or more. When dealing with multi-prime keys, the prime factors are all generally labeled as   for some i, such that:

  for  

As a notational convenience,   and  .

The RSA public key is represented as the tuple  , where the integer e is the public exponent.

The RSA private key may have two representations. The first compact form is the tuple  , where d is the private exponent. The second form has at least five terms  , or more for multi-prime keys. Although mathematically redundant to the compact form, the additional terms allow for certain computational optimizations when using the key. In particular, the second format allows to derive the public key.[1]

Primitives edit

The standard defines several basic primitives. The primitive operations provide the fundamental instructions for turning the raw mathematical formulas into computable algorithms.

  • I2OSP - Integer to Octet String Primitive - Converts a (potentially very large) non-negative integer into a sequence of bytes (octet string).
  • OS2IP - Octet String to Integer Primitive - Interprets a sequence of bytes as a non-negative integer
  • RSAEP - RSA Encryption Primitive - Encrypts a message using a public key
  • RSADP - RSA Decryption Primitive - Decrypts ciphertext using a private key
  • RSASP1 - RSA Signature Primitive 1 - Creates a signature over a message using a private key
  • RSAVP1 - RSA Verification Primitive 1 - Verifies a signature is for a message using a public key

Schemes edit

By themselves the primitive operations do not necessarily provide any security. The concept of a cryptographic scheme is to define higher level algorithms or uses of the primitives so they achieve certain security goals.

There are two schemes for encryption and decryption:

  • RSAES-PKCS1-v1_5: older Encryption/decryption Scheme (ES) as first standardized in version 1.5 of PKCS #1. Known-vulnerable.
  • RSAES-OAEP: improved ES; based on the optimal asymmetric encryption padding (OAEP) scheme proposed by Mihir Bellare and Phillip Rogaway. Recommended for new applications.[a]

There are also two schemes for dealing with signatures:

  • RSASSA-PKCS1-v1_5: old Signature Scheme with Appendix (SSA) as first standardized in version 1.5 of PKCS #1. Unforgeable, according to Jager et al. (2018).[2]
  • RSASSA-PSS: improved SSA; based on the probabilistic signature scheme (PSS) originally invented by Bellare and Rogaway. Recommended for new applications.

The two signature schemes make use of separately defined encoding methods:

  • EMSA-PKCS1-v1_5: old encoding method for signature appendix (EMSA) as first standardized in version 1.5 of PKCS #1.
  • EMSA-PSS: improved EMSA, based on the probabilistic signature scheme. Recommended for new applications.

The signature schemes are actually signatures with appendix, which means that rather than signing some input data directly, a hash function is used first to produce an intermediary representation of the data, and then the result of the hash is signed. This technique is almost always used with RSA because the amount of data that can be directly signed is proportional to the size of the keys; which is almost always much smaller than the amount of data an application may wish to sign.

  1. ^ Note: A small change was made to RSAES-OAEP in PKCS #1 version 2.1, causing RSAES-OAEP in PKCS #1 version 2.0 to be totally incompatible with RSA-OAEP in PKCS #1 version 2.1 and version 2.2.

Version history edit

  • Versions 1.1–1.3, February through March 1991, privately distributed.
  • Version 1.4, June 1991, published for NIST/OSI Implementors' Workshop.
  • Version 1.5, November 1993. First public publication. Republished as RFC 2313.
  • Version 2.0, September 1998. Republished as RFC 2437. Introduced the RSAEP-OAEP encryption scheme.
  • Version 2.1, June 2002. Republished as RFC 3447. Introduced multi-prime RSA and the RSASSA-PSS signature scheme
  • Version 2.2, October 2012. Republished as RFC 8017.

Implementations edit

Below is a list of cryptography libraries that provide support for PKCS#1:

Attacks edit

Multiple attacks were discovered against PKCS #1 v1.5, specifically its padding scheme.[3][4]

In 1998, Daniel Bleichenbacher published a seminal paper on what became known as Bleichenbacher's attack (also known as "million message attack"). The attack uses the padding as an oracle.[4][5] PKCS #1 was subsequently updated in the release 2.0 and patches were issued to users wishing to continue using the old version of the standard.[3] However, the vulnerable padding scheme remains in use and has resulted in subsequent attacks:

  • Bardou et al. (2012) find that several models of PKCS 11 tokens still use the v1.5 padding scheme for RSA. They propose an improved version of Bleichenbacher's attack that requires fewer messages. As a result of this improvement, they managed to extract the secret key from several models in under an hour. They also show that the AES-CBC scheme is vulnerable to a different padding oracle attack.[4][6]
  • Böck et al. (2018) report that many modern HTTPS servers are vulnerable to a variation of the attack. TLS 1.2 contains anti-Bleichenbacher countermeasures, but the workarounds are not correctly implemented in many software due to their sheer complexity.[7]

In 2006, Bleichenbacher presented a new forgery attack against the signature scheme RSASSA-PKCS1-v1_5.[8] Variants of this attack are reported in 2008[9] and 2014.[10] This class of attack exploits a flawed implementation of the signature verification; a proper implementation would not be vulnerable.[2]

See also edit

References edit

  1. ^ Ilmari Karonen (27 October 2017). "Can I get a public key from an RSA private key?". Stack Exchange.
  2. ^ a b Jager, Tibor; Kakvi, Saqib A.; May, Alexander (15 October 2018). On the Security of the PKCS#1 v1.5 Signature Scheme (PDF). The Second International Conference on Availability, Reliability and Security (ARES'07). pp. 1195–1208. doi:10.1145/3243734.3243798.
  3. ^ a b Jean-Sébastien Coron, Marc Joye, David Naccache, and Pascal Paillier (2000). Advances in Cryptology — EUROCRYPT 2000 (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: multiple names: authors list (link)
  4. ^ a b c Romain Bardou; Riccardo Focardi; Yusuke Kawamoto; Lorenzo Simionato; Graham Steel; Joe-Kai Tsay (2012). Efficient Padding Oracle Attacks on Cryptographic Hardware. Rr-7944 (report). INRIA. p. 19.
  5. ^ RFC 3218 – Preventing the Million Message Attack on Cryptographic Message Syntax
  6. ^ Green, Matthew (21 June 2012). "A bad couple of years for the cryptographic token industry". A Few Thoughts on Cryptographic Engineering.
  7. ^ Hanno Böck; Juraj Somorovsky; Craig Young. "ROBOT attack: Return Of Bleichenbacher's Oracle Threat". Retrieved February 27, 2018.
  8. ^ 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.
  9. ^ Kühn, Ulrich; Pyshkin, Andrei; Tews, Erik; Weinmann, Ralf-Philipp (2008): Variants of Bleichenbacher’s Low-Exponent Attack on PKCS#1 RSA Signatures. SICHERHEIT 2008 – Sicherheit, Schutz und Zuverlässigkeit. Beiträge der 4. Jahrestagung des Fachbereichs Sicherheit der Gesellschaft für Informatik e.V. (GI). Bonn: Gesellschaft für Informatik e. V.. PISSN 1617-5468. ISBN 978-3-88579-222-2. pp. 97–109. Regular Research Papers. Saarbrücken. 2.- 4. April 2008
  10. ^ . 1 April 2015. Archived from the original on 2015-04-01.

External links edit

pkcs, correct, title, this, article, pkcs, omission, technical, restrictions, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find,. The correct title of this article is PKCS 1 The omission of the is due to technical restrictions This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources PKCS 1 news newspapers books scholar JSTOR March 2019 Learn how and when to remove this message In cryptography PKCS 1 is the first of a family of standards called Public Key Cryptography Standards PKCS published by RSA Laboratories It provides the basic definitions of and recommendations for implementing the RSA algorithm for public key cryptography It defines the mathematical properties of public and private keys primitive operations for encryption and signatures secure cryptographic schemes and related ASN 1 syntax representations The current version is 2 2 2012 10 27 Compared to 2 1 2002 06 14 which was republished as RFC 3447 version 2 2 updates the list of allowed hashing algorithms to align them with FIPS 180 4 therefore adding SHA 224 SHA 512 224 and SHA 512 256 Contents 1 Keys 2 Primitives 3 Schemes 4 Version history 5 Implementations 6 Attacks 7 See also 8 References 9 External linksKeys editThe PKCS 1 standard defines the mathematical definitions and properties that RSA public and private keys must have The traditional key pair is based on a modulus n that is the product of two distinct large prime numbers p and q such that n p q displaystyle n pq nbsp Starting with version 2 1 this definition was generalized to allow for multi prime keys where the number of distinct primes may be two or more When dealing with multi prime keys the prime factors are all generally labeled as r i displaystyle r i nbsp for some i such that n r 1 r 2 r i displaystyle n r 1 r 2 cdots r i nbsp for i 2 displaystyle i geq 2 nbsp As a notational convenience p r 1 displaystyle p r 1 nbsp and q r 2 displaystyle q r 2 nbsp The RSA public key is represented as the tuple n e displaystyle n e nbsp where the integer e is the public exponent The RSA private key may have two representations The first compact form is the tuple n d displaystyle n d nbsp where d is the private exponent The second form has at least five terms p q d p d q q i n v displaystyle p q dp dq qinv nbsp or more for multi prime keys Although mathematically redundant to the compact form the additional terms allow for certain computational optimizations when using the key In particular the second format allows to derive the public key 1 Primitives editThe standard defines several basic primitives The primitive operations provide the fundamental instructions for turning the raw mathematical formulas into computable algorithms I2OSP Integer to Octet String Primitive Converts a potentially very large non negative integer into a sequence of bytes octet string OS2IP Octet String to Integer Primitive Interprets a sequence of bytes as a non negative integer RSAEP RSA Encryption Primitive Encrypts a message using a public key RSADP RSA Decryption Primitive Decrypts ciphertext using a private key RSASP1 RSA Signature Primitive 1 Creates a signature over a message using a private key RSAVP1 RSA Verification Primitive 1 Verifies a signature is for a message using a public keySchemes editBy themselves the primitive operations do not necessarily provide any security The concept of a cryptographic scheme is to define higher level algorithms or uses of the primitives so they achieve certain security goals There are two schemes for encryption and decryption RSAES PKCS1 v1 5 older Encryption decryption Scheme ES as first standardized in version 1 5 of PKCS 1 Known vulnerable RSAES OAEP improved ES based on the optimal asymmetric encryption padding OAEP scheme proposed by Mihir Bellare and Phillip Rogaway Recommended for new applications a There are also two schemes for dealing with signatures RSASSA PKCS1 v1 5 old Signature Scheme with Appendix SSA as first standardized in version 1 5 of PKCS 1 Unforgeable according to Jager et al 2018 2 RSASSA PSS improved SSA based on the probabilistic signature scheme PSS originally invented by Bellare and Rogaway Recommended for new applications The two signature schemes make use of separately defined encoding methods EMSA PKCS1 v1 5 old encoding method for signature appendix EMSA as first standardized in version 1 5 of PKCS 1 EMSA PSS improved EMSA based on the probabilistic signature scheme Recommended for new applications The signature schemes are actually signatures with appendix which means that rather than signing some input data directly a hash function is used first to produce an intermediary representation of the data and then the result of the hash is signed This technique is almost always used with RSA because the amount of data that can be directly signed is proportional to the size of the keys which is almost always much smaller than the amount of data an application may wish to sign Note A small change was made to RSAES OAEP in PKCS 1 version 2 1 causing RSAES OAEP in PKCS 1 version 2 0 to be totally incompatible with RSA OAEP in PKCS 1 version 2 1 and version 2 2 Version history editVersions 1 1 1 3 February through March 1991 privately distributed Version 1 4 June 1991 published for NIST OSI Implementors Workshop Version 1 5 November 1993 First public publication Republished as RFC 2313 Version 2 0 September 1998 Republished as RFC 2437 Introduced the RSAEP OAEP encryption scheme Version 2 1 June 2002 Republished as RFC 3447 Introduced multi prime RSA and the RSASSA PSS signature scheme Version 2 2 October 2012 Republished as RFC 8017 Implementations editBelow is a list of cryptography libraries that provide support for PKCS 1 Botan Bouncy Castle BSAFE cryptlib Crypto Libgcrypt mbed TLS Nettle OpenSSL wolfCryptAttacks editMultiple attacks were discovered against PKCS 1 v1 5 specifically its padding scheme 3 4 In 1998 Daniel Bleichenbacher published a seminal paper on what became known as Bleichenbacher s attack also known as million message attack The attack uses the padding as an oracle 4 5 PKCS 1 was subsequently updated in the release 2 0 and patches were issued to users wishing to continue using the old version of the standard 3 However the vulnerable padding scheme remains in use and has resulted in subsequent attacks Bardou et al 2012 find that several models of PKCS 11 tokens still use the v1 5 padding scheme for RSA They propose an improved version of Bleichenbacher s attack that requires fewer messages As a result of this improvement they managed to extract the secret key from several models in under an hour They also show that the AES CBC scheme is vulnerable to a different padding oracle attack 4 6 Bock et al 2018 report that many modern HTTPS servers are vulnerable to a variation of the attack TLS 1 2 contains anti Bleichenbacher countermeasures but the workarounds are not correctly implemented in many software due to their sheer complexity 7 In 2006 Bleichenbacher presented a new forgery attack against the signature scheme RSASSA PKCS1 v1 5 8 Variants of this attack are reported in 2008 9 and 2014 10 This class of attack exploits a flawed implementation of the signature verification a proper implementation would not be vulnerable 2 See also editComparison of cryptography librariesReferences edit Ilmari Karonen 27 October 2017 Can I get a public key from an RSA private key Stack Exchange a b Jager Tibor Kakvi Saqib A May Alexander 15 October 2018 On the Security of the PKCS 1 v1 5 Signature Scheme PDF The Second International Conference on Availability Reliability and Security ARES 07 pp 1195 1208 doi 10 1145 3243734 3243798 a b Jean Sebastien Coron Marc Joye David Naccache and Pascal Paillier 2000 Advances in Cryptology EUROCRYPT 2000 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 a href Template Cite book html title Template Cite book cite book a CS1 maint multiple names authors list link a b c Romain Bardou Riccardo Focardi Yusuke Kawamoto Lorenzo Simionato Graham Steel Joe Kai Tsay 2012 Efficient Padding Oracle Attacks on Cryptographic Hardware Rr 7944 report INRIA p 19 RFC 3218 Preventing the Million Message Attack on Cryptographic Message Syntax Green Matthew 21 June 2012 A bad couple of years for the cryptographic token industry A Few Thoughts on Cryptographic Engineering Hanno Bock Juraj Somorovsky Craig Young ROBOT attack Return Of Bleichenbacher s Oracle Threat Retrieved February 27 2018 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 Kuhn Ulrich Pyshkin Andrei Tews Erik Weinmann Ralf Philipp 2008 Variants of Bleichenbacher s Low Exponent Attack on PKCS 1 RSA Signatures SICHERHEIT 2008 Sicherheit Schutz und Zuverlassigkeit Beitrage der 4 Jahrestagung des Fachbereichs Sicherheit der Gesellschaft fur Informatik e V GI Bonn Gesellschaft fur Informatik e V PISSN 1617 5468 ISBN 978 3 88579 222 2 pp 97 109 Regular Research Papers Saarbrucken 2 4 April 2008 Advanced Threat Research Intel Security 1 April 2015 Archived from the original on 2015 04 01 External links editRFC 8017 PKCS 1 RSA Cryptography Specifications Version 2 2 PKCS 1 v2 2 RSA Cryptography Standard at the Wayback Machine archived April 10 2016 Raising the Standard for RSA Signatures RSA PSS at the Wayback Machine archived 2004 04 04 Retrieved from https en wikipedia org w index php title PKCS 1 amp oldid 1223015696, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.