Changeset - 562bc08c103d
[Not reviewed]
default
0 1 0
Laman - 3 years ago 2022-03-03 22:39:20

updated performance data
1 file changed with 10 insertions and 12 deletions:
readme.md
10
12
0 comments (0 inline, 0 general)
readme.md
Show inline comments
 
@@ -9,56 +9,54 @@ Outputs the shares as hexadecimal, Base3
 
### From pip
 

	
 
Run `pip install shamira`.
 

	
 
### From the source
 
Can be run straight from the cloned repository by executing the package with `python -m shamira` or simply installed with `python setup.py build`, `python setup.py install`. Then imported in your code with `import shamira` or run from the command line with `shamira`.
 

	
 
## Usage
 

	
 
### As a CLI application
 

	
 
Run `shamira split ...` for splitting and `shamira join ...` for joining the shares back. Appending `--help` will show you the documentation.
 

	
 
### As a library
 

	
 
`from shamira import generate, generate_raw, reconstruct, reconstruct_raw`
 

	
 
`help(function)` will show the documentation. 
 

	
 
## Issue tracker
 
Please report your issues to https://trac.19x19.cz/shamira/report
 

	
 
## Performance ##
 

	
 
As it is, the code is not very fast. Let's assume we have a secret of length _m_. For each byte, the splitting takes _n_ evaluations of a polynomial of order _k_ over Galois field 256, leading to _O(n\*k\*m)_ finite field multiplications. Reconstruction of the constant parameters during joining takes _O(k\*k + k\*m)_ multiplications.
 
Being written in pure Python, the code is not especially fast. It is therefore recommended to split rather keys to encrypted files than the files themselves.
 

	
 
Benchmark results, all values mean _seconds per byte_ of the secret length:
 
Benchmark results, as obtained by running `shamira benchmark`. All values mean _seconds per byte_ of the secret length:
 
<table>
 
    <tr>
 
        <th>k / n parameters</th>
 
        <th>Split</th>
 
        <th>Join</th>
 
    </tr>
 
    <tr>
 
        <td>2 / 3 (a Raspberry Pi 3)</td>
 
        <td>6.08e-05</td>
 
        <td>0.000435</td>
 
        <td>0.000142</td>
 
        <td>0.000448</td>
 
    </tr>
 
    <tr>
 
        <td>2 / 3 (a laptop)</td>
 
        <td>5.02e-06</td>
 
        <td>4.12e-05</td>
 
        <td>7.88e-06</td>
 
        <td>4.28e-05</td>
 
    </tr>
 
    <tr>
 
        <td>254 / 254 (a Raspberry Pi 3)</td>
 
        <td>0.226</td>
 
        <td>0.0314</td>
 
        <td>0.0268</td>
 
        <td>0.0287</td>
 
    </tr>
 
    <tr>
 
        <td>254 / 254 (a laptop)</td>
 
        <td>0.0125</td>
 
        <td>0.00175</td>
 
        <td>0.00183</td>
 
        <td>0.00156</td>
 
    </tr>
 
</table>
 

	
 
While the speeds are not awful, for longer secrets I recommend encrypting them with a random key of your choice and splitting only the key. Anyway, you can run your own benchmark with `shamira benchmark`
0 comments (0 inline, 0 general)