Skip to content

Hardware implementation of the cryptosystem McEliece in VHDL for binary (QD-) Goppa codes

License

Notifications You must be signed in to change notification settings

pmassolino/hw-goppa-mceliece

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

hw-goppa-mceliece

Hardware implementation of the cryptosystem McEliece in VHDL for binary (QD-)Goppa codes. This hardware implementation is structured in:

root folder: mceliece

  • mceliece_qd_goppa_encrypt.vhd
    This unit can perform encryption for McEliece binary QD-Goppa codes. It needs the following units to work:

    • codeword_generator_n_m_v3.vhd
    • controller_codeword_generator_n_m_v3.vhd
      Given a message and a generator matrix these units generate the necessary codeword.
    • error_adder.vhd
    • controller_error_adder.vhd
      Adds the necessary error into the generated codeword.
  • mceliece_qd_goppa_decrypt_v4.vhd
    This unit can perform decryption for McEliece for binary Goppa codes and QD-Gopppa codes as well. However this unit is missing the necessary memories, in case you want the version with the memories, you can use the mceliece_qd_goppa_decrypt_v4_with_mem.vhd It needs the following units to work:

    • stage_polynomial_calc_v4.vhd
    • pipeline_polynomial_calc_v4.vhd
    • polynomial_syndrome_computing_n_v2.vhd
    • controller_polynomial_syndrome_computing.vhd
      This unit can perform two different steps, both syndrome computation and polynomial evaluation for the roots search.
    • solving_key_equation_5.vhd
    • controller_solving_key_equation_5.vhd
      This unit is only made to find the error locator polynomial given the syndrome. There are also the following testbenches to verify the units:
  • tb_codeword_generator_n_m_v3.vhd
    Verify the codeword generator unit and controller against the internal tests.

  • tb_mcelice_qd_goppa_encrypt.vhd
    Verify the encryption unit and controller against the internal tests.

  • tb_mcelice_qd_goppa_decrypt_v4.vhd
    Verify the decryption unit and controller against the internal tests.

  • tb_mcelice_qd_goppa_decrypt_v4_with_mem.vhd
    Verify the decryption unit with internal memory against the internal tests.

  • tb_syndrome_calculator_n_pipe_v5.vhd
    Verify the syndrome computing unit if it can compute the correct syndrome.

  • tb_find_correct_errors_n_v4.vhd
    Verify the syndrome computing unit if it can evaluate the polynomial correctly.

folder: mceliece/backup

The oldest versions for encryption and decryption units.

folder: mceliece/data_tests

The data tests files that are necessary by all test benches to test all mceliece circuits.

folder: mceliece/finite_field

The files for all finite fields arithmetics circuits

  • GF(2^m) Adder
  • GF(2^m) Multiplier
  • GF(2^m) Pow2
  • GF(2^m) Inversion Their were made for m values between 1 to 20.

folder: mceliece/finite_field_tests

The data tests files that are necessary by finite field test benches.

folder: mceliece/util

The basic circuits that composes all other circuits, registers, shift registers, counter and ram memories.

References:

This entire project was done as my Master thesis, you can read more about it in :

Pedro Maat C. Massolino. "Design and evaluation of a post-quantum cryptographic co-processor". University of Sao Paulo. 2014. BIB

In this paper you can find more explanation about the constant time unit used for solving the key equation:

Pedro Maat C. Massolino, Paulo S. L. M. Barreto, Wilson V. Ruggiero. "Optimized and Scalable Co-Processor for McEliece with Binary Goppa Codes". ACM Transactions on Embedded Computing Systems (TECS). vol 14. issue 3. pp 45. 2015. doi:10.1145/2736284 BIB

About

Hardware implementation of the cryptosystem McEliece in VHDL for binary (QD-) Goppa codes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages