-
Notifications
You must be signed in to change notification settings - Fork 50
Description
I think it would make sense to start thinking about adding key-committing AEADs to the library. In general there seem to be two recent proposals that transform non-committing AEs into committing ones.
The first, are the UtC/RtC/HtE constructions by Bellare & Hoang in https://eprint.iacr.org/2022/268. Second, we have CTX proposed by Chan & Rogaway in https://eprint.iacr.org/2022/1260.
The most notable difference is that the UtC/RtC transforms work for either nonce-based AEADs and MRAEs, respectively. CTX only works for nonce-based AEADs. Orion currently only supports nonce-based AEADs, but if we choose to go with CTX then we'd need to implement RtC/HtE later on, if we add MRAE as well and wish to add key-commitment there as well.
On the other hand, CTX is much simpler to implement than UtC/RtC/HtE. Further, CTX commits to the entire input set (key, nonce, ciphertext, ad), whereas UtC only commits to the key and needs HtE on top, to be fully committing. For this reason, I think it would be best to start with CTX.
Questions remaining:
- Should this be behind an experimental flag?
- The intention is to eventually replace the high-level AEAD implementation to be fully committing. Should the high-level interface be modified in the first release, even if gated behind a feature flag, or not?
- What sizes for the new authentication tags should be chosen? 256-bit seems to be a reasonable choice. This is important because the security of the commitment scheme is based on the collision-resistance of the hash function used for CTX.
- Do we add key-commitment to XChaCha20-Poly1305 only or ChaCha20-Poly1305 also (I think both are good, then it makes sense to start providing key-committing implementations in the hazardous layer and move it to high-level up later on)