シャミアの秘密分散法というのがあって、"ファイルを複数に分割して、一つのファイルが漏れても元のファイルを推測できないようにする"という考え方(+その数理)なのだが、それをコンソール上でコマンドとして利用できるようにした『ssss』コマンドというものを見かけたので、ちょっと触ってみることにする。 しばらくメンテナンスされてないようで、ver0.5のままのようだ。
Ubuntuでは、以下のコマンドでインストールができる。
sudo apt install ssss
1. 文字列の分割
ファイルを分割する場合は、「ssss-split」コマンドを用いる。 以下のようにコマンドを実行することでファイルを分割することができる。
ssss-split -t 復元必要数 -n 分割ファイルの数
ssss-split -t 復元必要数 -n 分割ファイルの数 -w パスワード # パスワードを設定する場合
基本的には、以下のように標準出力をパイプで渡すなどして利用するようだ。
blacknon@BS-PUB-UBUNTU-01:~$ echo eiroh7cu2Xoosh5ofaeyo8Iemi9Ahz | ssss-split -t 3 -n 7
WARNING: couldn't get memory lock (ENOMEM, try to adjust RLIMIT_MEMLOCK!).
Generating shares using a (3,7) scheme with dynamic security level.
Enter the secret, at most 128 ASCII characters: Using a 240 bit security level.
1-8c696d90787ae185e68bacc6c477563cf8729dafa7f047d7598c21ed0c1c
2-30eb31faadbaaeea3cee19c635d08aefcd0906eecff9a1670969c922f63e
3-a3e6ab39387b6dfaf21209170ec2ad932ee5e48c1ba8d2792b55767336fa
4-6628b6b8c3b0131124c2e67a98485347f38a7a1258f9d1dd448295765052
5-f5252c7b5671d001ea3ef6aba35a743b106698708ca8a2c366be2a279084
6-49a7701183b19f6e305b43ab52fda8e8251d0331e4a14473365bc2e86a82
7-daaaead216705c7efea7537a69ef8f94c6f1e15330f0376d14677db9aa52
2. 文字列を元に戻す
文字列をもとに戻す場合は、「ssss-combine」コマンドを用いる。
ssss-combine -t 復元必要数
blacknon@BS-PUB-UBUNTU-01:~$ ssss-combine -t 3
WARNING: couldn't get memory lock (ENOMEM, try to adjust RLIMIT_MEMLOCK!).
Enter 3 shares separated by newlines:
Share [1/3]: 2-30eb31faadbaaeea3cee19c635d08aefcd0906eecff9a1670969c922f63e
Share [2/3]: 4-6628b6b8c3b0131124c2e67a98485347f38a7a1258f9d1dd448295765052
Share [3/3]: 5-f5252c7b5671d001ea3ef6aba35a743b106698708ca8a2c366be2a279084
Resulting secret: eiroh7cu2Xoosh5ofaeyo8Iemi9Ahz
128文字までしか対応していないようだが、ちょっと面白い。 標準出力からシェアした文字列も渡せるので、こんな感じに処理も可能みたいだ。
blacknon@BS-PUB-UBUNTU-01:~$ cat test.txt
2-d80437171366d2a9b16280cd2b21c34763bd1e82133474
3-b7d7ed517266d6a9d4ac4b3c3e24cafa9126d79029cb39
4-65ea9b3c2717e9c6da5962a125d9862c7221a323fdbd1d
blacknon@BS-PUB-UBUNTU-01:~$ cat test.txt | ssss-combine -t 3 -q
WARNING: couldn't get memory lock (ENOMEM, try to adjust RLIMIT_MEMLOCK!).
Pen-Pineapple-Apple-Pen
ただ、ちょっと動きが不安定のような…? メンテナンス止まってるのはちょっと残念。
参考
- 秘密分散法の数理 - SlideShare
- MarkupDancing - ssss: シャミアの秘密分散法 (ssss: Shamir's Secret Sharing Scheme)
- ssss: Shamir's Secret Sharing Scheme (ssssのデモページ)
- シャミアの秘密分散法で秘密のデータを分割管理する | kim hirokuni