[SECNET REVIEW 00/56] Elliptic curve DH

Ian Jackson ijackson at chiark.greenend.org.uk
Thu Jan 2 01:18:30 GMT 2020


This series was originally from Mark Wooding.  Thanks, Mark!
It provides x448 and x25519 DH closures.

There is also groundwork for using EC signatures, ed448 and ed25519,
although the secnet closures for that (and the corresponding
make-secnet-sites code etc.) are not provided yet.

Mark's branch was given to me as a work-in-progress so I have
substantially altered and overhauled it.

In particular, the script for importing code from Catacomb now runs in
two phases: firstly, we copy files unchanged from the Catacomb tree
and commit them to git; and then, later, during the build, we do the
massaging.  This means that the secnet repository actually ends up
containing (copies of) the source code for these files.

This is all based on my public key handling series wip.pubkeys.v2.

The number of commits is inflated by my reluctance to make single
commits containing substantial changes the Catacomb import script...

This can be found at:
  chiark:/u/ian/things/secnet
  git://git.chiark.greenend.org.uk/~ian/secnet.git
in
  refs/heads/wip.xdh.v5
and the commit range is
  82880e70fdef1a8bf8269c80adf9b28a20e49e50
to
  a8a74eb8dca5a226d6dfa128e4a9609bad622315

The basic branch structure is:

1. sha512 closure (Mark) and its test case (me):

  01  sha512.[ch]: Remove a bunch of unused code.
  02  sha512.c, etc.: Provide `sha512' as a hash function for signing.
  03  stest: New `hashclosure' variable
  04  stest: Test sha512 hash closure

2. cleanups and prep work (Mark):

  05  site.c, dh.c, secnet.h: Allow the dh `makeshared' method to fail.
  06  Change our view of the Diffie--Hellman closure protocol.
  07  site.c: Pass the length of the actual shared secret to the transform.
  08  dh.c, secnet.8: Allow `diffie-hellman' to take a dictionary of arguments.
  09  site.c: Abstract out generation of the Diffie--Hellman private secret.
  10  site.c: Allocate and free the Diffie--Hellman secret buffers each time.
  11  Introduce negotiation for Diffie--Hellman groups.
  12  Adjust the DH closure protocol to handle public values as raw binary.
  13  unaligned.h: Add macros for reading and writing little-endian 32-bit...

3. catacomb-import-update (Mark and then me) and the Catacomb import.

  14  import-catacomb-crypto: New script, but needs some work
  15  import-catacomb-crypto: Add emacs Local Variables block
  16  import-catacomb-crypto: Do not go mad on initial import
  17  import-catacomb-crypto: Add use strict and fix a bug revealed
  18  catacomb-import-update: Rename from import-catacomb-crypto
  19  catacomb-import-update: Separate import from convert
  20  catacomb-import-update: Improve a warning message
  21  catacomb-import-update: Improve import change listing algorithm
  22  catacomb-import-update: Import catacomb's licence notice too
  23  catacomb-import-update: Handle deletion
  24  catacomb-import-update: Prepare for out-of-tree builds
  25  catacomb-import-update: Install the conversion outputs at the end
  26  catacomb-import-update: Write conversion output to cat/ subdir
  27  catacomb-import-update: --import: Write .mk file
  28  Update crypto code from Catacomb 2.5.0.
  29  Catacomb: Make arrangements for running convert in `cat' subdir
  30  catacomb-import-update: --convert: Check the .mk is unchanged
  31  catacomb-import-update: Abolish a now-unused variable
  32  catacomb-import-update: commit_changes: Introduce $idir
  33  catacomb-import-update: Investigate donor during convert
  34  catacomb-import-update: Rename directory variables

4. Build system prep work (me)

  35  Makefiles: Rename test executables to end in .trun
  36  Makefiles: Rename test stamp files to .tconfirm (from .confirm)
  37  .gitignore: Ignore .trun and .tconfirm files en masse
  38  Makefiles: Better workaround for make bug (Debian #4073)
  39  Makefiles: Make cat_CATS variable available in toplevel

5. Crypto tests (Mark, commits reorganised by me)

  40  u64.h: Provide u64get{lo,hi} and u64not
  41  Catacomb import: Provide fake-mLib-bits.h
  42  crypto-test: Introduce first version of new .c file.
  43  crypto-test: C code for testing ed25519
  44  catacomb-import-update: Extra massaging of keccak code
  45  crypto-test: Support for text strings
  46  crypto test code for keccak and sha3
  47  crypto test code for ed448
  48  crypto-test.c: Don't print dead registers.
  49  ec-field-test.c: Make the field-element type use internal format.
  50  crypto-test: Generic test C file for XDH (X448, X25519)
  51  crypto tests: Wire into Makefiles

6. xdh support.

  52  xdh.c: New module defining elliptic curve Diffie--Hellman functions.
  53  xdh: End-to-end tests for the new DH key agreement groups
  54  make-secnet-sites: Add XDH groups

7. make-secnet-sites changes.

  55  Make the `dh' property be listish
  56  README.make-secnet-sites: Algorithm negotiation control keywords

Together with v2 of
  [SECNET REVIEW 000/227] New signature key arrangements
this is now 287 commits ahead of secnet master...

Thanks for your attention,
Ian.

-- 
Ian Jackson <ijackson at chiark.greenend.org.uk>   These opinions are my own.

If I emailed you from an address @fyvzl.net or @evade.org.uk, that is
a private address which bypasses my fierce spamfilter.



More information about the sgo-software-discuss mailing list