秘密分散/MPC, TSS等
シャミアの秘密分散法 - Shamir's Secret Sharing Scheme (SSS, SSSS)
(k, n) 閾値秘密分散 で有名な暗号の手法。RSA の Shamir。
データを $ n 個の share に分割する。再度 $ m-of-$ n の share を集め無い限り、元のデータを復元できなくする暗号の手法。
多くの場合、暗号鍵の保護に使われる。
仕組概要
ラグランジュ補間定理を利用
多項式上の $ K 個の点が $ K-1 以下の次数の多項式を一意に決定することを利用。
シークレット $ S を $ 1 byte 単位に分割し、ガロア拡大体 $ GF(2^8) 上で演算する。
$ X byteのシークレットから $ X byteの share が生成される。
Proactive Secret Sharing (PSS)
proactive ... 定期更新などで攻撃者がシェアを侵害する時間を 積極的に 減らす
元の鍵を更新せずに、鍵の share の rotation が出来る。
Alice のシェアが欠損しても、Bob, Carol, Dave から新しいシェアを再計算できるようにする。
定期的に更新する場合もある。
利用例
クリプトでは、例えば Web3Auth で次のように SSS を利用している。
フロントエンドで秘密鍵を生成し 3 つの ShareA, ShareB, ShareC に分割して各々異なる場所で管理する。
ShareA: ユーザのデバイス上に保存。
ShareB: 更に複数に分割した状態でコンソーシアムの Auth network に分散。Social login で取得可能。
ShareC: 別デバイス保存、ユーザのパスワード等から Recovery される Share。
MPC ((Secure) Multi-party Computation)
秘密計算(Secure Computation) の一種
$ N 人参加者が入力値 $ x_1, ... x_N を秘匿したまま、多入力関数の値 $ f(x_1, ... x_N) のみ計算できる暗号学的な手法 。
閾値署名方式 Threshold Signature Scheme (TSS)
閾値署名方式 (TSS) = 分散鍵生成 (DKG) + 分散署名
仕組概要
解説動画
Paillier 暗号: 加法準同型性を有する公開鍵暗号。
Threshold Paillier: 分散での setup が非現実的(とても遅い)で、現実的には Dealer が必要になる。
CESC18論文の内容: practical な trusted setup に基づく閾値ECDSA
Threshold Paillier を使わずに、各々が Paillier 復号鍵を取得できる方法
Dealerless で 1 秒未満の実行速度
大幅な帯域削減が可能
SSS と TSS の比較
table:table
SSS TSS
鍵生成で Dealer が 1 人存在 Dealer が不在
署名時に秘密鍵の再構築が必要 秘密鍵の再構築が不要
TSSは秘密鍵が存在しない(知られていない)状態で署名を作れる
MultiSig と TSS の比較
table:table
MultiSig TSS
on-chainで実行される off-chainで実行される
参加者が非対話的 参加者が対話的
各々が署名を作る 全体で単一の署名を作る
プライバシーに弱い(署名者がバレる) プライバシーに強い(署名者がバレない)
MPC / TSS-based ウォレット
MPCウォレットのアーキテクチャ
1. アウトソーシング
自分の代わりに $ n 台のサーバにオフロードする
サービスプロバイダに結託されるリスクがある
Lit Protocol の PKP (distributed custody)
2. 複数デバイスで実行する
Iot Device, 携帯, ノートPC
オンラインで複数デバイスを扱うのが面倒
3. ハイブリッド
外部のサービスプロバイダー + ユーザ所有のデバイス
1, 2 のいいとこ取り
TSSの(意外な)応用例
Multi-Hop Locks
secure な private payment channel を構築できる Bitcoin Lightning Network の alternative
Library for ECDSA based construction for Anonymous Multi-Hop Locks
ShareLock
Mixing に使える
Questions
TSSの欠点ってあるの?対話型だし、運用が大変とか?
運用が大変なのかも知れないが分からない。
ThresholdNetwork は "trust levers" の判断をユーザにある程度委ねている。
Lit PKP の distributed custody ってどうなの?
アカウント譲渡出来る点では便利?
結託されるリスクがある。custodial なので Lit のセキュリティに強く依存する。
MPC/TSS-basedなウォレットは、秘密鍵をそのまま取り扱うより良くなる?
ハイブリット形式のアーキテクチャなら基本的に良さそう。
定期更新、異なるデバイスへの分散、リカバリー等が可能。