Cymric is a family of two authenticated encryption (AE) modes, namely Cymric1 and Cymric2, finely tuned for very short inputs.
While the Manx modes (also named after a cat breed with short tails) already provide an efficient solution for this use case, Cymric adds an extra block cipher call to achieve beyond-birthday-bound (BBB) security.
See the table below for a very simple comparison between the two schemes (where
AE modes | BC calls | Keys | Security bits |
---|---|---|---|
Manx | 2 | 1 | |
Cymric | 3 | 2 |
More specifically, Cymric1 achieves n-bit security but further limits the restrictions on the inputs' length.
AE modes | Security bits | Restrictions on inputs |
---|---|---|
Cymric1 |
|
|
Cymric2 |
|
For more details, see the paper Cymric: Short-tailed but Mighty by Wonseok Choi, Yeongmin Lee, Kazuhiko Minematsu, Yusuke Naito and myself.
The Cymric implementations provided in this repository are cipher-agnostic in the sense that the internal functions related to the underlying block cipher (i.e. key expansion and block encryption) are passed as arguments rather than being hardcoded. This way, it is easy to instantiate Cymric with your favorite block cipher dynamically.
The repository structure is as follows:
cymric
│
├───cymric
│
├───cymric-aes128
│ ├───armv7m
│ ├───avr8
│ └───x86_64
│
├───cymric-gift128
│ ├───armv7m
│ └───avr8
│
├───cymric-lea128
│ ├───armv7m
│ └───avr8
The cymric
folder contains the generic implementations of Cymric1 and Cymric2: instructions on how to plug your favorite block cipher are given in the folder-specific README.
The cymric-aes128
folder contains implementations of Cymric1 and Cymric2 instantiated with different AES implementations listed by platform. See the folder-specific README files for more information.
The code related to the Cymric AE modes released in this repository is under CC0 license. However, some block cipher implementations included in this repository might be under other licenses. If so, a folder-specific LICENSE file will be included. For instance, the AES implementations on AVR are based on the work from B. Poettering which is under the GNU General Public License.
The authors are not aware of any patent convering the Cymric authenticated modes and do not intend to assert any patent claims in the future to promote wider adoption.