diff options
-rw-r--r-- | LICENSE | 24 | ||||
-rw-r--r-- | README.md | 49 |
2 files changed, 73 insertions, 0 deletions
@@ -0,0 +1,24 @@ +Author: Joachim Strömbergson +Copyright (c) 2015, SUNET +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e6f44a9 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +modexp +====== + +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. + + +## Implementation details ## + +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 core will perform blinding to protect against side channel +attacks. + + +## FPGA-results ## + +No results yet. + + +## Status ## + +***(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. |