Skip to main content

Implementation Guidance for the PKCS #1 RSA Cryptography Specification
draft-irtf-cfrg-rsa-guidance-10

Revision differences

Document history

Date Rev. By Action
2026-09-15
10 (System) RPC status changed to Awaiting Editor Assignment from Awaiting Reference Checker, formatting
2026-09-14
10 (System) RPC status changed to Awaiting Reference Checker, formatting from blocked: Author Input Required
2026-09-14
10 (System) RFC Editor state changed to In Progress from Blocked
2026-09-11
10 (System) IANA Review state changed to Version Changed - Review Needed from IANA OK - No Actions Needed
2026-09-11
10 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-10.txt
2026-09-11
10 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2026-09-11
10 Alicja Kario Uploaded new revision
2026-09-11
10 (System) Request for posting confirmation emailed to previous authors: Alicja Kario
2026-09-11
10 Alicja Kario Uploaded new revision
2026-08-07
09 (System) IANA Action state changed to No IANA Actions
2026-08-07
09 (System) RPC status changed to blocked: Author Input Required from Awaiting Editor Assignment
2026-08-07
09 (System) RFC Editor state changed to Blocked from In Progress
2026-08-07
09 (System) RPC status changed to Awaiting Editor Assignment
2026-08-07
09 (System) RFC Editor state changed to In Progress
2026-08-06
09 Dirk KUTSCHER IRTF state changed to Sent to the RFC Editor from Waiting for IRTF Chair
2026-08-06
09 Dirk KUTSCHER Sent request for publication to the RFC Editor
2026-08-06
09 Morgan Condie IRTF state changed to Waiting for IRTF Chair::IESG Review Completed from In IESG Review
2026-07-06
09 (System) IANA Review state changed to IANA OK - No Actions Needed
2026-07-06
09 Dirk KUTSCHER IETF conflict review initiated - see conflict-review-irtf-cfrg-rsa-guidance
2026-07-06
09 Dirk KUTSCHER Closed "IRSG Approve" ballot
2026-07-06
09 Dirk KUTSCHER has been updated to reflect the CFRG recommendation nature of the document
2026-07-06
09 Dirk KUTSCHER IRTF state changed to In IESG Review from In IRSG Poll
2026-06-26
09 Stephen Farrell [Ballot Position Update] Position for Stephen Farrell has been changed to Yes from Not Ready
2026-06-26
09 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-09.txt
2026-06-26
09 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2026-06-26
09 Alicja Kario Uploaded new revision
2026-06-26
08 Alvaro Retana [Ballot Position Update] Position for Alvaro Retana has been changed to No Objection from Not Ready
2026-06-15
08 Stephen Farrell
[Ballot comment]
I agree with Alvaro that the IRTF cannot deprecate features of an IETF specification, nor should it really update an IETF-stream RFC. I'd …
[Ballot comment]
I agree with Alvaro that the IRTF cannot deprecate features of an IETF specification, nor should it really update an IETF-stream RFC. I'd also note that the IETF (via the TLS WG) only recently approved RFC9963 as a proposed standard - this document would have to also update that. As-is, I'd expect the IESG to consider this document a conflict when/if it did an RFC5742 review. I think the best way to handle the issue is for this document to not formally try deprecate anything in IETF-stream RFCs, nor to update any IETF-stream RFCs, but just change the language to say pkcs1v1.5 is e.g. 'NOT RECOMMENDED' by CFRG or some such. Any other approach would seem liable to generate more process work than is worthwhile.

The comments below can be taken or ignored, unlike the above, they're totally non-blocking:

- I wondered if any RSA code implementer had reviewed the text - could be good to see what such a person (who is the prime target audience here) thought.
- Sections 6.4 and 6.5 seem a bit unclear to me - I've not re-read [kocker96] so forget if it explains exactly this method of blinding, if not, then maybe more refs are needed?
- I'd keep the reference to the TLS fuzzer github repo (unless it's known that that will change soon).
2026-06-15
08 Stephen Farrell [Ballot Position Update] New position, Not Ready, has been recorded for Stephen Farrell
2026-06-08
08 Ryo Yanagida [Ballot Position Update] New position, No Objection, has been recorded for Ryo Yanagida
2026-05-18
08 Alvaro Retana
[Ballot comment]
The document formally updates RFC 8017, which is an IETF document. It makes sense to me.

Has there already been coordination with …
[Ballot comment]
The document formally updates RFC 8017, which is an IETF document. It makes sense to me.

Has there already been coordination with the IETF stream manager regarding that relationship?

This comment is to make sure the administrative step has taken place.
2026-05-18
08 Alvaro Retana [Ballot Position Update] New position, Not Ready, has been recorded for Alvaro Retana
2026-05-04
08 Jane Coffin [Ballot Position Update] New position, Yes, has been recorded for Jane Coffin
2026-03-17
08 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-08.txt
2026-03-17
08 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2026-03-17
08 Alicja Kario Uploaded new revision
2026-03-04
07 Colin Perkins [Ballot comment]
RFC 5743 Section 2.1 statements will be added, so this should be ready for publication.
2026-03-04
07 Colin Perkins [Ballot Position Update] Position for Colin Perkins has been changed to No Objection from Not Ready
2026-03-03
07 Colin Perkins
[Ballot comment]
The draft looks to be missing the text required by RFC 5743 Section 2.1. These guidelines are especially important for CFRG drafts, since …
[Ballot comment]
The draft looks to be missing the text required by RFC 5743 Section 2.1. These guidelines are especially important for CFRG drafts, since there's frequent confusion about their status as IRTF documents. Once those statements are added, I believe the draft will be ready for publication.
2026-03-03
07 Colin Perkins [Ballot Position Update] New position, Not Ready, has been recorded for Colin Perkins
2026-03-02
07 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-07.txt
2026-03-02
07 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2026-03-02
07 Alicja Kario Uploaded new revision
2026-03-02
06 Dirk KUTSCHER Created IRSG Ballot
2026-03-02
06 Dirk KUTSCHER IRTF state changed to In IRSG Poll from Awaiting IRSG Reviews
2025-10-24
06 Dirk KUTSCHER IRTF state changed to Awaiting IRSG Reviews from Waiting for IRTF Chair
2025-10-01
06 Stanislav Smyshlyaev IRTF state changed to Waiting for IRTF Chair from Waiting for Document Shepherd
2025-10-01
06 Stanislav Smyshlyaev
Document summary
This document specifies additions and amendments to RFC 8017, "PKCS #1: RSA Cryptography Specifications". Its primary purpose is to provide concrete guidance …
Document summary
This document specifies additions and amendments to RFC 8017, "PKCS #1: RSA Cryptography Specifications". Its primary purpose is to provide concrete guidance to implementers on protecting RSA implementations against a wide range of side-channel attacks. The document also formally deprecates the RSAES-PKCS-v1_5 encryption scheme for all new protocols, citing its inherent fragility. However, for legacy systems where removing PKCS#1 v1.5 is not feasible, it provides a novel and robust alternative depadding algorithm based on implicit rejection. This mechanism is designed to mitigate Bleichenbacher-style padding oracle attacks that arise from vulnerable APIs. The overall goal of the specification is to significantly increase the security and robustness of RSA implementations in practice. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.

Research Group Summary
The document has undergone extensive review within the CFRG. Prior to the Research Group Last Call (RGLC), the draft was formally reviewed by two members of the Crypto Review Panel: Jon Callas and Scott Fluhrer. Their comments were fully addressed in version -04 of the draft. A 3-week RGLC was initiated for version -04 in August 2025. The document received strong support for publication. During the RGLC, a very detailed review was provided by Maximilian Lorlacks from an implementer's perspective, which led to a productive discussion with the author. The feedback resulted in numerous editorial improvements and clarifications, which were incorporated into version -05 of the draft. Further minor clarifications from Jeffrey Goldberg were addressed in version -06. All comments were fully processed, and no issues were left unresolved. The RGLC concluded successfully in September 2025.

Document Quality
The guidance in this document is supported by a public reference implementation of the proposed implicit rejection mechanism, available in the author's tlslite-ng Python library [1]. This implementation served to generate the comprehensive set of test vectors included in the document's appendix, demonstrating the practicality and correctness of the proposed algorithms. While the Python code serves as an excellent algorithmic blueprint, the document notes that true constant-time properties depend on the specific language, compiler, and hardware environment. Implicit rejection for RSAES-PKCS-v1_5 was made in OpenSSL [2], starting from version 3.2.0, and Mozilla [3], starting from version 3.61. No IPR disclosures related to the described techniques have been made, and the participants are not aware of any IPR that would encumber the implementation of this guidance.

Personnel
Stanislav Smyshlyaev is the Document Shepherd.
Colin Perkins is the IRTF Chair.

[1] https://github.com/tlsfuzzer/tlslite-ng/blob/master/tlslite/utils/python_rsakey.py
[2] https://github.com/openssl/openssl/pull/13817
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=1651411
2025-09-29
06 Stanislav Smyshlyaev
Document summary
This document specifies additions and amendments to RFC 8017, "PKCS #1: RSA Cryptography Specifications". Its primary purpose is to provide concrete guidance …
Document summary
This document specifies additions and amendments to RFC 8017, "PKCS #1: RSA Cryptography Specifications". Its primary purpose is to provide concrete guidance to implementers on protecting RSA implementations against a wide range of side-channel attacks. The document also formally deprecates the RSAES-PKCS-v1_5 encryption scheme for all new protocols, citing its inherent fragility. However, for legacy systems where removing PKCS#1 v1.5 is not feasible, it provides a novel and robust alternative depadding algorithm based on implicit rejection. This mechanism is designed to mitigate Bleichenbacher-style padding oracle attacks that arise from vulnerable APIs. The overall goal of the specification is to significantly increase the security and robustness of RSA implementations in practice. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.

Research Group Summary
The document has undergone extensive review within the CFRG. Prior to the Research Group Last Call (RGLC), the draft was formally reviewed by two members of the Crypto Review Panel: Jon Callas and Scott Fluhrer. Their comments were fully addressed in version -04 of the draft. A 3-week RGLC was initiated for version -04 in August 2025. The document received strong support for publication. During the RGLC, a very detailed review was provided by Maximilian Lorlacks from an implementer's perspective, which led to a productive discussion with the author. The feedback resulted in numerous editorial improvements and clarifications, which were incorporated into version -05 of the draft. Further minor clarifications from Jeffrey Goldberg were addressed in version -06. All comments were fully processed, and no issues were left unresolved. The RGLC concluded successfully in September 2025.

Document Quality
The guidance in this document is supported by a public reference implementation of the proposed implicit rejection mechanism, available in the author's tlslite-ng Python library [1]. This implementation served to generate the comprehensive set of test vectors included in the document's appendix, demonstrating the practicality and correctness of the proposed algorithms. While the Python code serves as an excellent algorithmic blueprint, the document notes that true constant-time properties depend on the specific language, compiler, and hardware environment. The corresponding fix for OpenSSL [2] took place in 3.2.0. The corresponding fix for Mozilla [3] took place in 3.61. No IPR disclosures related to the described techniques have been made, and the participants are not aware of any IPR that would encumber the implementation of this guidance.

Personnel
Stanislav Smyshlyaev is the Document Shepherd.
Colin Perkins is the IRTF Chair.

[1] https://github.com/tlsfuzzer/tlslite-ng/blob/master/tlslite/utils/python_rsakey.py
[2] https://github.com/openssl/openssl/pull/13817
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=1651411
2025-09-25
06 Stanislav Smyshlyaev Notification list changed to smyshsv@gmail.com because the document shepherd was set
2025-09-25
06 Stanislav Smyshlyaev Document shepherd changed to Stanislav V. Smyshlyaev
2025-09-23
06 Stanislav Smyshlyaev RGLC successful.
2025-09-23
06 Stanislav Smyshlyaev IRTF state changed to Waiting for Document Shepherd from Active RG Document
2025-09-23
06 Stanislav Smyshlyaev Changed consensus to Yes from Unknown
2025-09-17
06 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-06.txt
2025-09-17
06 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2025-09-17
06 Alicja Kario Uploaded new revision
2025-09-04
05 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-05.txt
2025-09-04
05 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2025-09-04
05 Alicja Kario Uploaded new revision
2025-09-04
05 (System) Request for posting confirmation emailed to previous authors: Alicja Kario
2025-09-04
05 Alicja Kario Uploaded new revision
2025-07-04
04 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-04.txt
2025-07-04
04 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2025-07-04
04 Alicja Kario Uploaded new revision
2025-03-01
03 Stanislav Smyshlyaev Intended Status changed to Informational from None
2025-03-01
03 Stanislav Smyshlyaev IRTF state changed to Active RG Document
2025-02-20
03 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-03.txt
2025-02-20
03 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2025-02-20
03 Alicja Kario Uploaded new revision
2025-01-16
02 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-02.txt
2025-01-16
02 Alicja Kario New version accepted (logged-in submitter: Alicja Kario)
2025-01-16
02 Alicja Kario Uploaded new revision
2024-09-03
01 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-01.txt
2024-09-03
01 Alicja Kario New version accepted (logged-in submitter: Hubert Kario)
2024-09-03
01 Alicja Kario Uploaded new revision
2024-03-04
00 Stanislav Smyshlyaev Changed document external resources from: None to:

github_repo https://github.com/tomato42/marvin-ietf
2024-03-04
00 Stanislav Smyshlyaev This document now replaces draft-kario-rsa-guidance instead of None
2024-03-04
00 Alicja Kario New version available: draft-irtf-cfrg-rsa-guidance-00.txt
2024-03-04
00 Stanislav Smyshlyaev WG -00 approved
2024-03-04
00 Alicja Kario Set submitter to "Hubert Kario ", replaces to draft-kario-rsa-guidance and sent approval email to group chairs: cfrg-chairs@ietf.org
2024-03-04
00 Alicja Kario Uploaded new revision