Crate guff_ida[][src]

Expand description

A crate for working with Cauchy and Vandermonde matrices

A small collection of routines for creating matrices that can be used to implement erasure (error-correction) schemes or threshold schemes using Galois fields.

Note that this crate only provides data for insertion into a matrix. For the missing functionality, see:

  • guff : basic operations over finite fields, including vector operations
  • guff-matrix : full set of matrix types and operations

Using finite field matrix operations for threshold schemes

A “threshold scheme” is a mathematical method for securely splitting a secret into a number of “shares” such that:

  • if a set number (the “threshold”) of shares are combined, the original secret can be recovered

  • if fewer shares than the threshold are combined, no information about the secret is revealed

Module Focus

This module focuses in particular on Michael O. Rabin’s “Information Dispersal Algorithm” (IDA). In it, splitting a secret is achieved by:

  • creating a transform matrix that has the required threshold property

  • placing the secret into an input matrix, padding it if needed

  • calculating transform x input to get an output matrix

  • reading off each share as a row of the transform matrix and the corresponding row of the output matrix

To reconstruct the secret:

  • take the supplied transform matrix rows and put them into a square matrix

  • calculate the inverse of the matrix

  • form a new input matrix from the corresponding output data rows

  • calculate inverse x input

  • read the secret back from the output matrix

More details of the algorithm can be found later.


Generate inverse Cauchy matrix using a key

Cauchy-form matrix generated from a key

Vandermonde-form matrix