Skip to content
/ lowmc Public

An implementation of the LowMC block cipher family.

License

Notifications You must be signed in to change notification settings

LowMC/lowmc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LowMC implementation

This is a C++ implementation of the LowMC block cipher family. The parameters (block size, number of S-boxes in the substitution layer, number of rounds, key size) are defined in LowMC.h. Compilation requires support of C++11 features.

The files LowMC.h and LowMC.cpp contain the relevant code. test.cpp contains a short example usage.

The file determine_rounds.py contains a Python script that determines the number of rounds needed for LowMC to be secure in dependence on the other parameters: the block size n, the number of S-boxes per layer m, the log2 of the allowed data complexity d, and the key size k.

Example usage: python3 determine_rounds.py 256 63 128 128

Script for generating the matrices and and constants

The python script generate_matrices.py can be used to generate the matrices for the linear layer and the key schedule as well as the round constants. They are written to a file named matrices_and_constants.dat. This is script can provide the matrices for use in cryptanalysis. It is not needed for the reference implementation which creates the matrices and constants internally.

About

An implementation of the LowMC block cipher family.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published