# 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.

## Functions

Generate inverse Cauchy matrix using a key

Cauchy-form matrix generated from a key

Vandermonde-form matrix