-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarification on Minimum Algorithm Required for JARM #479
Comments
JARM uses JWS and therefore FAPI is already prescriptive on this. As JARM is purely a non-repudiation method (which is the ID Token's real purpose in Hybrid flow) there is no reason to perform encryption of its responses nor does FAPI require it. Enabling encryption on JARM would be a repeat of the ID Token encryption decision (in my opinion a mistake) for literally zero benefit as JARM is incapable of transferring data claims beyond those necessary for non-repudiation ( |
Does FAPI calls out minimum algorithms that must be supported by implementers? If so, do you mind reference it? From an ADR's perspective, if a minimum set of algorithms are specified then ADRs will not be faced with the prospect of supporting all the possible algorithms. |
This issue was discussed in the Maintenance Iteration 11 call. It was agreed to incorporate this change request into this maintenance iteration. As per JARM section 5, Data Holders advertise signing and encryption algorithm support via their OIDD:
These are negotiated through dynamic client registration services. Discussion considered two approaches:
If Option 2 is preferred, agreement on the minimum set is sought. Note that according to RFC7518 section 5.1, According to RFC7518 section 3, No key encryption algorithms are required according to RFC7518 section 4.1, but |
We support Option 2 - explicitly defining a minimum set of algorithms (as has been done for ID token signing/encryption and request object signing) makes the most sense and avoids the introduction of weaker algorithms. From recent discussions we note that it has been discussed that the JWT should not be encrypted - we agree with this position and would like it formalised into the specifications. We also note that these items are necessary clarifications in order to enable FAPI 1 phase 3 implementations. |
Intuit supports Option 2 as it provides a fixed set of algorithms required to be supported by ADRs. |
The current draft of the FAPI 2.0 Message Signing requirements (see Authorization Response Encryption) it includes a note that authorisation response encryption is not required. The DSB proposes a third option to this change request: Option 3: Prohibit authorisation response encryption This option would constrain FAPI_2.0-JARM such that authorisation response encryption is not allowed. This reduces ecosystem complexity and ADR implementation costs. If in future, FAPI 2.0 permits or requires authorisation response encryption, it would create a future breaking change for CDR implementations. Given the guidance by the FAPI working group draft on FAPI message signing is to not require authorisation response encryption, this risk seems low. Note that Option 1 and 2 deal with the current requirements in the data standards. There is discretion for Data Holders whether they support support authorisation response encryption (it is not stated as mandatory in the Data Standards, only that Data Holders must implement JARM in accordance with the upstream specification). If they do, Option 1 vs Option 2 is still a design consideration. Options 1 and Option 2 allow Data Holders to have discretion to require authorisation response encryption. This does mean that all ADRs must effectively handle encryption of authorisation responses even when some Data Holders do not support it. |
If Option 2 is preferred to constrain signing algorithm support, the DSB proposes aligning to the current requirements for token, request object and ID token signing by constraining choice to Further discussion on encryption algorithm support will be discussed in the next Maintenance Iteration call (31/08/2022). Please note that Option 2 proposes a minimum set of algorithms be agreed to that Data Holders must offer (see "ID Token Algorithm Selection Considerations" for reference). Data Holders may support other encryption algorithms beyond that minimum set in accordance with upstream specifications. |
Regarding Option 3: Perhaps it is better for the standard not to override upstream standard? May be let DHs decide whether they want to support encryption or not. If so, publish using As an ADR, we'd rather deal with the complexity once as opposed to possibly do another uplift later and incurring another cost in resource/testing/time/etc. Moreover, JWT encryption is not new for the ecosystem. |
In addition to our previous support of Option 2, we are also supportive of Option 3. For both Options 2 and 3 we would like to see the algorithms for signing be explicit within the standards. We agree with the DSB that PS256 and ES256 are suitable. |
In regards to optional encryption with JARM and FAPI... JARM specification can be used in different circumstances, with FAPI and without FAPI security profile. In CDR case (as it stands at the moment), when used with FAPI security profile, with the payload we have in CDR ecosystem, encryption is not providing any additional security benefit. In fact, unnecessary encryption will cause more interoperability and security issues issues in addition to added complexity for data recipients. @spikejump, this is an example of a specification profiling (reduce the options available based on ecosystem requirements), which is perfectly sound unlike overriding or changing upstream specification. So option 3 should fit everyone's requirements from encryption perspective. |
This issue was discussed in the maintenance iteration 12 call. Whilst there has been feedback to suggest prohibiting encryption for JARM responses would not have any security implications and would present a profiling of the FAPI 2.0 specification, there was no consensus to select Option 3. The DSB proposes selecting Option 2 and defining a minimum set of signing and encryption algorithms. If there is further support to profile the FAPI 2.0 specification to prohibit encryption for JARM responses, this can be adopted at a later time. Option 2 presents a middle ground and the ADR feedback received has indicated that dealing with encrypted responses is workable. Signing Algorithms These would be advertised by Data Holders using the Encryption Algorithms Encryption algorithm requirements are defined via
Aligning JARM algorithmic support would be as follows:
|
As per the discussion in today's maintenance iteration call - we are stating our support for this issue to be treated as urgent. |
The current proposed solution is to adopt the change as proposed here with an obligation date of April 7th 2023 for ADR and DH support. |
The Data Standard's Chair has approved this issue be treated as urgent in combination with #547. |
Could you please clarify this section. |
Hi @ikawalec, you are correct that was a typo. This has been corrected in the comment above. |
This change request was incorporated through ConsumerDataStandardsAustralia/standards#282 (comment) |
Description
The latest spec has a section titled "ID Token Algorithm Selection Considerations", there is the explicit statement of "Participants MUST support, at a minimum, the following ID Token algorithms"... There is similar algorithm call out of PS256 and ES256 under the section "RegistrationProperties/Enumerated Values". The original idea way back was to specify some algorithms in the spec to minimise the ADRs needing to support a large number of algorithms simply to connect to the DHs.
Given the new requirement to support JARM, perhaps same consideration can be specified in the spec for minimum algorithm that DHs MUST support for JARM signing/encrypting?
Change Proposed
Similar to ID Token Algorithm, perhaps specify the minimum algorithm for
DSB Proposed Solution
The current DSB proposal for this issue is in this comment.
The text was updated successfully, but these errors were encountered: