ブロックチェーンを利用する際にプライベートキーを使いますが、プライベートキーのセキュアな管理方法については、ずっと研究されています。その中の1つは、Threshold Signature Scheme(TSS)という方法があります。
TSS とは
TSS とは、Threshold Signature Scheme の略語であり、マルチパーティ計算(multi-party computation、略語 MPC)技術の1種です。 イメージ的には
- 1つのプライベートキーを複数個の断片に分ける
- 複数個の断片から、閾値個の断片を集めれば、元のプライベートキーを復元できる
例えば総個数 3 、閾値が 2 の場合は、プライベートキーを3つの断片に分けて、その中任意の2つの断片を集めれば、元のプライベートキーを復元できます。
なぜできる?
数学の話になるので、数学が下手な私はあんまり説明できませんが、ベースは、連立方程式です。連立方程式において未知数を求めるためには、未知数個数分の関係式があれば解けます。 非常に分かりやすい記事があったので、そちらを参照してください。
参照元:https://atmarkit.itmedia.co.jp/fsecurity/special/53tsss/tsss02.html
マルチサインとの違い
似ているものとしてマルチサインもありますが、比較してみました
TSS | マルチサイン | |
---|---|---|
プライベートキーの数 | 1つ | 複数 |
ブロックチェーン側の対応 | なし | 必要 |
断片が他所で流用できる | できない | できる |
最後の他所での流用というのは、マルチサインの場合は各自自分が持っているのがフルのプライベートキーである為、普通にアドレスとして使えて署名したりなどもちろんできます。一方、TSS の断片は、フルのプライベートキーではない為、1つの断片だけで署名したりはできません。 これも不便と思う側面がありますが、逆にセキュリティ的にはよい側面ではあります。
要するに、TSS の断片は1つ漏れても、それだけでは何もできないので、被害は発生しません。マルチサインの場合、フルなプライベートキーであるため、漏れたら、そのアカウントが持っている資産がなくなる恐れがあります。
まとめ
あんまり分かっていなかった TSS 、結構セキュアで、これからいろいろ活用できそうなイメージですね。