Modular exponentiation core for implementing public key algorithms such
as RSA, DH, ElGamal etc.
The core calculates the following functions:
C = M ** e mod N
M = C ** d mod N
d is the private key exponent.
M is a message with a length of n bits
e is the exponent with a length of at most 32 bits
N is the modulus with a length of n bits
n is can be 32 and up to and including 8192 bits in steps
of 32 bits.
The core has a 32-bit memory like interface.
The core is written in Verilog 2001 and suitable for implementation in
FPGA and ASIC devices. No vendor specific macros are used in the code.
The core is using Montgomery multiplication with 32-bit operands. The
core is iterative and will not be the fastest core on the
planet. The residue calculation is done in a separate process and the
calculated residue can be extracted and loaded by the application to
improve performance.
The core will perform blinding to protect against side channel
attacks.
No results yet.
(2015-04-20)
The Montgomery calculator has been implemented and debugged. The residue
calculator has been implemeted and debugged. The top level is being
developed and debugged.
(2015-03-13)
A working, bit exact C model with test cases has been developed and is
used to drive the HW development. There is also a Java functional model
available as support for high level undertanding.
Development of the Montgomery product module started. Top level modexp
module with memories for all operands are being worked on.
The Montgomery calculator has been implemented and debugged. The residue
calculator has been implemeted and debugged. The top level is being
developed and debugged.