hukaisdu / LowerBoundsAlgDegree

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This repository contains the code used to obtain some of our results in the paper "Lower Bounds on the Degree of Block Ciphers".

The different folder contents are the following :

- "search" contains our implementation to detect the input/key/output patterns. Especially this is the implementation used to get the results for GIFT-64 and PRESENT

- "simple_verification_code" contains short and easy to read code to verify the number of trails for a given input/key/output pattern for GIFT-64, Skinny64 and AES.

- "pattern" contains the different input/key/ouput patterns used to get our results.

An installation of the MILP optimizer Gurobi is necessary (https://www.gurobi.com/)
The GUROBI_HOME environment variable should be set according to the Gurobi documentation.
If needed, edit the makefile to adjust to the correct paths/version of Gurobi, especially the -lgurobi_g++5.2 and -lgurobi81 flags

This implementation was tested using :

g++ version 9.3.0 (Arch Linux 9.3.0-1)
SageMath version 9.0, Release Date: 2020-01-01
Gurobi 9.0.0

and

g++ (Ubuntu 9.2.1-17ubuntu1~18.04.1) 9.2.1 20191102
SageMath version 8.1, Release Date: 2017-12-07
Gurobi 8.1.1

No guarantees are given when using different versions, but we do not expect any issue.
The only compiler-dependent instruction should be __builtin_popcountll

About


Languages

Language:C++ 90.7%Language:Python 8.8%Language:Makefile 0.5%