ssss man ページ- Split and Combine Secrets using Shamir's Secret Sharing Scheme
First appeared: 2011-09-22 11:08:00,
Last modified as a translation into Japanese:2011-09-22 11:08:00,
from "http://www.point-at-infinity.org/ssss/ssss.1.html
Copyright 2006 by B. Poettering (ssss AT point-at-infinity.org).
書式
ssss-split -t threshold -n shares [-w token] [-s level] [-x] [-q] [-Q] [-D] [-v]
ssss-combine -t threshold [-x] [-q] [-Q] [-D] [-v]
説明
ssss はシャミアの秘密分散法を実装したプログラムである。このプログラム一式は、既知の秘密から分散情報を生成し、ユーザがつくった分散情報を使って秘密を再構成する。
コマンド
- ssss-split
- ユーザから秘密の入力を受けて、それに対応する分散情報を生成する。
- ssss-combine
- 一組の分散情報を読んで、秘密を再構成する。
オプション
- -t 閾値
- 秘密を再構成するのに必要な分散情報の個数を指定する。
- -n 分散情報の個数
- 生成する分散情報の個数を指定する。
- -w トークン
- 分散情報に名前をつけるテキスト・トークンを指定して、幾つかの別々な秘密をそれぞれの分散情報で保護しているときに、どの秘密のための分散情報なのか混乱しないようにする。生成された分散情報は、このトークンを接頭辞に使う。
- -s レベル
- 秘密分散のセキュリティレベルを(ビットで)指定する。このオプションによって分散した秘密の長さの上限を指定することになる(それよりも短い秘密は不足を補う追加ビットで引き伸ばされる)*1。ここに指定する値は、8から1024までの8の倍数だけに限られる。もしこのオプションを省略した場合(あるいは値として0を指定した場合)は、秘密のレベルがその長さに応じて自動的に選ばれる。セキュリティレベルは、分散情報の長さを直に決定する。
*1 [訳註]"pad" は「詰める」と訳されることも多いが、"shrink" の意味に取れてしまう(方言もある)ので、やや回りくどいが誤解のない表現を採用した。
- -x
- 16進数モード (Hex mode)。入出力のため、ASCIIキャラクタの代わりに16進数を使う。もしブロック暗号のキーといったバイナリデータを保護したいなら、このモードが有用だ。
- -q
- 最小反応モード (Quiet mode)*2。不要な出力を全て無効にする。スクリプトから実行するときに有用である。
*2 [訳註]これも「静音(化)モード」や「低騒音モード」あるいは「沈黙モード」という訳語がよく使われるけれども、何も音をカットするわけではなく、クリティカルな応答を除いて余分な表示や反応をしないという意味なので、"quiet"(静か)という原語の意味合いに拘泥する必要はない。かといって「無反応」などと書くわけにもいかないため、やや冗長だが「最小反応モード」とした。
- -Q
- 超最小反応モード (Extra quiet mode)。-q とほぼ同じだが、このモードでは警告表示すら抑制してしまう。
- -D
- バージョン 0.2 で追加された拡散層 (diffusion layer) を無効にする。このオプションが必要なのは、ssss バージョン 0.1 で生成された分散情報を再構成するときである。
- -v
- バージョン情報を出力する。
使用例
あなたのログインパスワードを10個の分散情報によって保護し、そのうちの三つでパスワードを再構成できるようにするには、以下のコマンドを実行するだけでよい。
ssss-split -t 3 -n 10 -w パスワード文字列
そうして生成した分散情報から三つを使って(順番はなんでもよい)パスワードを再構成するには、
ssss-combine -t 3
注釈
1,024ビット以上の長い秘密を保護するには、次のような組み合わせの手法を使うとよい。つまり、長い秘密は先にブロック暗号で暗号化しておき、それの復号化に使う鍵を分散するのである。暗号化する手順だけなら、gpg と openssl ではそれぞれ以下のようにすればよい。
openssl bf -e < プレインファイル名 > 暗号化したファイル名
gpg -c < プレインファイル名 > 暗号化したファイル名
セキュリティ
ssss は、プライバシーを保護するために RAM の領域に固有のバーチャルアドレスをロックして確保しようとする。しかし、これは二つの理由で失敗することがある。それは、プロセス実行時の uid がページをロックする特権をもっていない場合や、呼び出し元の RLIMIT_MEMLOCK(ソフト資源制限 [特権を持っていないプロセスがメモリをロックできる許容量])があまりにも少なく設定されている場合だ。ページをロックするのに失敗した場合、ssss は警告を表示して、予定された mlock() を実行しないままでも動作する。
著者
このソフトウェア(ヴァージョン 0.5)は2006年に B. Poettering(ssss AT point-at-infinity.org) が開発したものである。最新のバージョンは ssss プロジェクトのホームページ(http://point-at-infinity.org/ssss/)を参照のこと。