CryptoHDL
A list of VHDL codes implementing cryptographic algorithms
Motivation
The motivation of creating this repository is to have a centralized point where all VHDL implementation of cryptographic algorithms can be found. I do my best to keep it updated. If you find or have any VHDL implementation of cryptographic algorithm that are missing, don’t hesitate to contribute.
Contents
- AES
- Ascon
- CRAFT
- GIFT
- Gimli
- KATAN
- KTANTAN
- Klein
- LED128
- LED64
- LowMC
- Midori
- Piccolo
- Picnic
- PRESENT
- Prince
- Simon
- Skinny
- Skinny64
- Speck
AES
VHDL implementation of AES encryption, and decryption algorithms
- Developers: Hosein Hadipour
- Official Repository
There are simple VHDL implementations of AES-128 encryption, and decryption algorithms, in this repository. This is actually my first experience in VHDL implementation! (https://hadipourh.github.io/AES-VHDL/).
This repository includes the hardware designs of AES cipher
- Developers: Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of AES. Apart from the unprotected implementation, all other designs MUST be synthesized by “keeping the hierarchy”. Otherwise, no fault-detection and no protection against SCA is guaranteed.
Unrolled hardware implementation of AES-128-128
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Ascon
Energy Efficient Hardware Implementations of Ascon
- Developers: Michael Fivez
- Official Repository
- Master Thesis: Energy Efficient Hardware Implementations of CAESAR Submissions-2016
Energy-efficient implementations of Ascon-128 and Ascon-128a by Michael Fivez, including a comparison with Joltik and MORUS. This repository contains several implementations of the Ascon hardware cipher.
Side-channel protected hardware implementations of Ascon
- Developers: Hannes Groß
- Official Repository
- Paper: Domain-Oriented Masking: Compact Masked Hardware Implementations with Arbitrary Protection Order
Side-channel protected hardware implementations of Ascon-128 and Ascon-128a by Hannes Groß using domain-oriented masking.
CRAFT
This repository includes the hardware designs of CRAFT cipher
- Developers: Amir Moradi
- Official Repository
- Paper: Lightweight Tweakable Block Cipher with Efficient Protection Against DFA Attacks. IACR Trans. Symmetric Cryptol. 2019
There are 6 folders for the VHDL source code of different implementations of CRAFT. Apart from the unprotected implementation, all other designs MUST be synthesized by “keeping the hierarchy”. Otherwise, no fault-detection and no protection against SCA is guaranteed. (https://sites.google.com/view/craftcipher/implementation).
Hardware implementation of CRAFT secured against Statistical Ineffective Fault Attack (SIFA) attack
- Developers: Amir Moradi, Aein Rezaei Shahmirzadi
- Official Repository
- Paper: “Impeccable Circuits II” authored by Aein Rezaei Shahmirzadi, Shahram Rasoolzadeh, and Amir Moradi.
This repository contains the HDL code and analysis results for hardware designs described in the paper: “Impeccable Circuits II” authored by Aein Rezaei Shahmirzadi, Shahram Rasoolzadeh, and Amir Moradi. Ruhr University Bochum, Embedded Security (Germany)
GIFT
This repository includes the hardware designs of GIFT cipher
- Developers: Anita Aghaie, Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
Three types VHDL implementations of GIFT, can be found in this repository.
Gimli
Hardware implementation of Gimli
- Developers: Daniel J. Bernstein, Stefan Kölbl, Stefan Lucks, Pedro Maat Costa Massolino, Florian Mendel, Kashif Nawaz, Tobias Schneider, Peter Schwabe, François-Xavier Standaert, Yosuke Todo, Benoît Viguier.
- Official Website
- Paper: Gimli: a cross-platform permutation.
- Location within this repository
Gimli is a 384-bit permutation designed to achieve high security with high performance across a broad range of platforms, including 64-bit Intel/AMD server CPUs, 64-bit and 32-bit ARM smartphone CPUs, 32-bit ARM microcontrollers, 8-bit AVR microcontrollers, FPGAs, ASICs without side-channel protection, and ASICs with side-channel protection.
KATAN
Hardware implementation of KATAN
- Developers: Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
Three types VHDL implementations of KATAN, can be found in this repository.
Unrolled hardware implementation of KATAN-32-80
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Unrolled hardware implementation of KATAN-64-80
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
KTANTAN
Hardware implementation of KTANTAN
- Developers: Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of KTANTAN in this repository.
Klein
A VHDL implementation of the Klein cipher
- Developer: Julian Harttung
- Official Repository
This is an implementation of the KLEIN lightweight block cipher as described in this paper. It encrypts individual blocks of 64 bit length with either a 64, 80, or 96 bit key.
LED-128
Hardware implementation of LED-128
- Developers: Anita Aghaie, Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of LED-128 in this repository.
LED-64
Hardware implementation of LED-64
- Developers: Anita Aghaie, Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of LED-64 in this repository.
LowMC
VHDL source code for LowMC
- Developers: Roman Walch
- Official Repository
- Paper: “Efficient FPGA Implementations of LowMC and Picnic”. Daniel Kales, Sebastian Ramacher, Christian Rechberger, Roman Walch, and Mario Werner
FPGA implementation of Picnic and LowMC.
Hardware implementation of Midori
- Developers: Anita Aghaie, Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of Midori in this repository.
Piccolo
- Developers: Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of Piccolo in this repository.
Picnic
VHDL source code for Picnic
- Developers: Roman Walch
- Official Repository
- Paper: “Efficient FPGA Implementations of LowMC and Picnic”. Daniel Kales, Sebastian Ramacher, Christian Rechberger, Roman Walch, and Mario Werner
FPGA implementation of Picnic and LowMC.
PRESENT
This repository includes the hardware designs of PRESENT cipher
- Developers: Anita Aghaie, Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of PRESENT in this repository.
A VHDL implementation of the PRESENT cipher
- Developer: Julian Harttung
- Official Repository
This is an implementation of the PRESENT lightweight block cipher as described in this paper. It encrypts individual blocks of 64 bit length with an 80 or 128 bit key. The desired key length can be set via the generic k (either K_80 or K_128).
Unrolled hardware implementation of PRESENT-64-80
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Unrolled hardware implementation of PRESENT-64-128
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Prince
A VHDL implementation of the Prince cipher
- Developer: Julian Harttung
- Official Repository
This is an implementation of the PRINCE lightweight block cipher as described in this paper. It encrypts individual blocks of 64 bit length with a 128 bit key.
Unrolled hardware implementation of Prince
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Simon
A VHDL implementation of the Simon cipher
- Developers: Anita Aghaie, Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
There are 3 folders for the VHDL source code of different implementations of Simon in this repository.
Unrolled hardware implementation of Simon-32-64
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Unrolled hardware implementation of Simon-64-128
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Skinny
Hardware implementation of Skinny64 and Skinny128 ciphers
- Developers: P. Sasdrich
- Official Website
- Paper: The SKINNY Family of Block Ciphers and its Low-Latency Variant MANTIS
- Location within this repository
SKINNY is a family of very lightweight tweakable block ciphers.
Skinny64
This repository includes the hardware designs of Skinny64 cipher with protection against SCA
- Developers: Amir Moradi
- Official Repository
- Paper: “Impeccable Circuits”. Anita Aghaie, Amir Moradi, Shahram Rasoolzadeh, Aein Rezaei Shahmirzadi, Falk Schellenberg, Tobias Schneider.
Speck
Unrolled hardware implementation of Speck-32-64
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Unrolled hardware implementation of Speck-64-128
- Developers: Pieter Maene
- Official Repository
- Paper: “Single-Cycle Implementations of Block Ciphers”. Pieter Maene, and Ingrid Verbauwhede
This work compares unrolled combinational hardware implementations of six lightweight block ciphers, along with an AES implementation as a baseline.
Licenses
GPL, and BSD are two common types of licenses which are used in these repositories.