Skip to content

hadipourh/CryptoHDL

Repository files navigation

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

  1. AES
  2. Ascon
  3. CRAFT
  4. GIFT
  5. Gimli
  6. KATAN
  7. KTANTAN
  8. Klein
  9. LED128
  10. LED64
  11. LowMC
  12. Midori
  13. Piccolo
  14. Picnic
  15. PRESENT
  16. Prince
  17. Simon
  18. Skinny
  19. Skinny64
  20. Speck

AES

VHDL implementation of AES encryption, and decryption algorithms

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

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

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

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

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

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

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

Three types VHDL implementations of GIFT, can be found in this repository.

Gimli

Hardware implementation of Gimli

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

Three types VHDL implementations of KATAN, can be found in this repository.


Unrolled hardware implementation of KATAN-32-80

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

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

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

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

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

There are 3 folders for the VHDL source code of different implementations of LED-64 in this repository.

LowMC

VHDL source code for LowMC

FPGA implementation of Picnic and LowMC.

Midori

Hardware implementation of Midori

There are 3 folders for the VHDL source code of different implementations of Midori in this repository.

Piccolo

There are 3 folders for the VHDL source code of different implementations of Piccolo in this repository.

Picnic

VHDL source code for Picnic

FPGA implementation of Picnic and LowMC.

PRESENT

This repository includes the hardware designs of PRESENT cipher

There are 3 folders for the VHDL source code of different implementations of PRESENT in this repository.


A VHDL implementation of the PRESENT cipher

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

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

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

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

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

There are 3 folders for the VHDL source code of different implementations of Simon in this repository.


Unrolled hardware implementation of Simon-32-64

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

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

SKINNY is a family of very lightweight tweakable block ciphers.

Skinny64

This repository includes the hardware designs of Skinny64 cipher with protection against SCA

Speck

Unrolled hardware implementation of Speck-32-64

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

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.