Skip to content
/ cymric Public

Implementations of the Cymric authenticated encryption modes

License

Notifications You must be signed in to change notification settings

aadomn/cymric

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

Implementations of the Cymric authenticated encryption modes

Cymric overview

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 $n$ refers to the block size of the underlying block cipher).

AE modes BC calls Keys Security bits
Manx 2 1 $n/2$
Cymric 3 2 $n$

More specifically, Cymric1 achieves n-bit security but further limits the restrictions on the inputs' length.

AE modes Security bits Restrictions on inputs
Cymric1 $n$ $|N| + |A| < n$ and $|M| + |N| \leq n$
Cymric2 $2n/3$ $|N| + |A| < n$ and $|M| \leq n$

For more details, see the paper Cymric: Short-tailed but Mighty by Wonseok Choi, Yeongmin Lee, Kazuhiko Minematsu, Yusuke Naito and myself.

Cipher-agnostic implementations

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.

Structure of the repository

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.

License

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.

Patent-free notice

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.

About

Implementations of the Cymric authenticated encryption modes

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published