summaryrefslogtreecommitdiff
path: root/raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2020-09-13 23:06:24 +0000
committerRob Austein <sra@hactrn.net>2020-09-13 23:06:24 +0000
commit891730d13b324fad916572a82f0bd610c5de9aad (patch)
treef46c94ddfff34f15aafe7cac0596716d1c13c412 /raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac
parentb092ffbcbe2c9398494f7dc9db6f0796971633e0 (diff)
Rename for conversion
Diffstat (limited to 'raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac')
-rw-r--r--raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac39
1 files changed, 39 insertions, 0 deletions
diff --git a/raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac b/raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac
new file mode 100644
index 0000000..cc3cf9c
--- /dev/null
+++ b/raw-wiki-dump/GitRepositories%2Fuser%2Fshatov%2Fecdsa_fpga_model.trac
@@ -0,0 +1,39 @@
+{{{
+#!htmlcomment
+
+This page is maintained automatically by a script. Don't modify this page by hand,
+your changes will just be overwritten the next time the script runs. Talk to your
+Friendly Neighborhood Repository Maintainer if you need to change something here.
+
+}}}
+
+{{{
+#!html
+<h1>ecdsa_model_fpga</h1>
+
+<p>This reference model was written to help debug Verilog code, it mimics how an FPGA would do elliptic curve base point scalar multiplication for ECDSA curves P-256 and P-384. Note, that the model may do weird (from CPU point of view, of course) things at times. Another important thing is that while FPGA modules are actually written to operate in constant-time manner, this model itself doesn't take any active measures to keep run-time constant. Do <strong>NOT</strong> use it in production as-is!</p>
+
+<p>The model is split into 4 layers:</p>
+
+<ul>
+<li>Low-level primitives (32- and 48-bit adders, 32-bit subtractor, 16x16-bit multiplier, 48-bit accumulator)</li>
+<li>Utility routines (copier, comparator)</li>
+<li>Modular arithmetic (adder, subtractor, multiplier, invertor)</li>
+<li>EC arithmetic (adder, doubler, multiplier)</li>
+</ul>
+
+<p>Modular multiplier and invertor use complex algorithms and are thus further split into "helper" sub-routines.</p>
+
+<p>This model uses tips and tricks from the following sources:</p>
+
+<ol>
+<li><a href="http://diamond.boisestate.edu/~liljanab/MATH308/GuideToECC.pdf">Guide to Elliptic Curve Cryptography</a></li>
+<li><a href="https://www.iacr.org/archive/ches2008/51540064/51540064.pdf">Ultra High Performance ECC over NIST Primes
+on Commercial FPGAs</a></li>
+<li><a href="http://joppebos.com/files/CTInversion.pdf">Constant Time Modular Inversion</a></li>
+</ol>
+}}}
+
+[[RepositoryIndex(format=table,glob=user/shatov/ecdsa_fpga_model)]]
+
+|| Clone `https://git.cryptech.is/user/shatov/ecdsa_fpga_model.git` ||