-
Notifications
You must be signed in to change notification settings - Fork 28
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
Ascon Algorithm Identifiers #60
Comments
Yes, this is certainly something that we could add for the next update to the specification. Based on my understanding of the specifications, for the AEAD algorithms:
For the Hash algorithms:
Is there any need to support suspending and resuming a hash operation for these algorithms (via the Just to note, though not requested here: support for XOF algorithms would require new functions in the API, and not just new identifiers. |
That would be great, thx!
Correct.
One correction:
We think that this is currently not required.
Yes, that's a different topic that also holds for the SHAKE variant of SHA3 and should not be part of this request. It would be handy if you could give a heads-up about the constants so we could create a draft implementation that is eventually compliant with the spec. |
The description in https://ascon.iaik.tugraz.at/specification.html and the parameters in the NIST submission have rate r = 64 for both Ascon-Hash and Ascon-HashA. |
You are right, I have looked into the wrong table, thanks! |
Given the status of the NIST standardization, where Ascon has been selected but the details of the NIST standard have not yet been published, it would be preferable to delay finalization of the Crypto API for these algorithms until we have those details. In particular, the specific algorithms that NIST includes, and the parameterizations that are selected. If we define these too early, there is a risk that the definition we provide is not consistent with the forthcoming NIST standard. Would be acceptable to delay making a further decision, at least until after the Lightweight Cryptography Workshop on June 21-22 June 2023? (see https://csrc.nist.gov/projects/lightweight-cryptography) If you need to provide access to these algorithms in your implementation prior to that, you could initially define vendor-specific key types and algorithms for this purpose. |
Sounds good, thanks! |
Update following the LWC conference in June. The conference website has links for all of the presentations over the two days. The final three are specifically relevant to understanding what will be standardized:
At this point it is not clear which, if any, of the ideas in these presentations might be included in the NIST specifications, and the final presentation suggests a tentative timeline of 'Fall 2023', but might include renaming. Unless there is a strong need to define an API prior to the NIST documentation, I would propose to wait until then. |
Finally! - NIST has published a public draft for review and comment: https://csrc.nist.gov/pubs/sp/800/232/ipd This includes not just a definition for an AEAD and a Hash function, but also includes two XOF variants. I will post more once I have had a chance to review the new specification. |
I think the Ascon AEAD and Hash should be straight-forward:
For the XOF variants, we haven't yet got a dedicated XOF API, which could also be useful for defining SHAKE128 and SHAKE256 algorithms (not just the specified-output-size hash algorithms such as SHAKE128/256 etc.). In a previous [private] discussion, we tentatively concluded that the KDF API was the best fit for XOF:
The Ascon-CXOF128 XOF has an additional context parameter (0 to 256 bytes in size). This addition adds a further benefit of using of the key derivation API, which already supports multiple inputs. We could give XOF algorithms their own category, distinct from KDFs, though it is not clear that is particularly beneficial. All XOFs should have the property that the input message can be split into fragments of any size without affecting the result, and that the output can be extracted in fragments of any size without affecting the overall output. For this, I think we want a new input step Then we would have as draft proposed encodings:
If this is the right approach for XOF functions, then we would also add SHAKE128 and SHAK256 for good measure:
|
Note:The NIST publication is an initial draft, with review open until February 2025. Therefore, any API proposed here, or written up as a pull-request, prior to the final publication of SP 800-232, should be considered BETA, and subject to change in line with changes made to the approved algorithms. |
ASCON-128, ASCON-128a, ASCON-HASH and ASCON-HASHA would fit into the PSA Certified API, with just the definition of some key types (for the AEAD) and algorithm Ids needed.
Are you going to define such constants for the PSA Certified API?
(from https://ascon.iaik.tugraz.at/)
The text was updated successfully, but these errors were encountered: