## guff-ida

Information Dispersal Algorithm

### 3 releases

 0.1.3 Jul 24, 2021 Jul 21, 2021 Jul 20, 2021

#1533 in Math

Used in guff-sharefiles

GPL-2.0-or-later OR LGPL-2.0-or-later

35KB
216 lines

# guff-ida

Information Dispersal Algorithm in Rust

This crate name is a placeholder.

It will include functionality for doing IDA (Information Dispersal Algorithm) transforms on data.

It is a port/rewrite of my old Perl module `Crypt::IDA`, which is available from CPAN or from my `gnetraid` repository on github.

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

~550KB
~11K SLoC