MPCにおけるHDPathの使い方
tss-lib は、MPC(Multi Party Computation)を用いて、しきい値署名スキーム(TSS)を実装したライブラリです。TSS では、秘密鍵が複数のパーティに分散されており、これらの分散された鍵の一つ一つを KeyShare と呼びます。本記事では、tss-lib の ECDSA における HDPath を用いた子鍵の導出と、そのために必要な情報の共有方法について解説します。
MPC の概要についてはこちらの記事をどうぞ 😃
HDPath を用いた子鍵の導出
tss-lib の ECDSA では、HDPath(階層的決定性パス)を用いて、親鍵から子鍵を導出することが可能です。(ソースコードのこの辺りです)
HDPath は、BIP32(Bitcoin Improvement Proposal 32)で定義された規格で、親鍵から子鍵を階層的に導出するためのパスを表します。
HDPath は、"m/0/0/0" のような形式で表現されます。HDPath を使用することで、同じ親鍵から複数の子鍵を体系的に導出することができます。これにより、多数のアドレスを管理する際の利便性が向上します。
tss-lib では、HDPath を用いた子鍵の導出に以下の情報が必要です。
-
chainCode:親鍵から子鍵を導出する際に使用される、256 ビットの追加のエントロピーを提供するデータ。
-
HDPath:親鍵から子鍵を導出するためのパス。
または、これらから計算された
- keyDerivationDelta:chainCode と HDPath から計算される値で、子鍵の導出に使用される。
下図は、KeyShare、HDPath、および chainCode を使って keyDerivationDelta を計算し、keyDerivationDelta と KeyShare を用いて KeyShare を調整することで、子鍵の導出に必要な調整された KeyShare を得るプロセスを示しています。この調整された KeyShare を使用して、子鍵による署名が可能になります。
導出に必要な情報の共有方法
アドレスを使い分けるためには KeyShare を持つ各パーティとこれらの情報を共有する必要があります。
いくつかの選択肢があり、ここでは次の3つを挙げてみます。
選択肢 1: chainCode と HDPath を署名の都度渡す
メリット
-
署名ごとに chainCode と HDPath を渡すことで、柔軟性が向上します。
-
事前の共有が不要であるため、初期設定が簡単です。
デメリット
-
署名ごとに chainCode と HDPath を渡す必要があるため、傍受される可能性が増加します。
-
chainCode をどこで管理してバックアップするかが課題となります。
選択肢 2: chainCode を予め共有しておいて、署名の都度 HDPath を渡す
メリット
-
HDPath のみを渡すことで、通信量を減らすことができます。
-
HDPath だけを傍受されても chainCode が無ければ使い道がありません。
デメリット
- chainCode を予め共有する必要があるため、初期設定が必要です。
選択肢 3: keyDerivationDelta を署名の都度渡す
メリット
-
keyDerivationDelta のみを渡すことで、通信量を最小限に抑えることができます。
-
chainCode と HDPath が通信されないため、システムの構造や関連性の機密性が向上します。
-
各パーティが keyDerivationDelta を計算する必要がないため、全体の計算量が減少します。
デメリット
- chainCode をどこで管理してバックアップするかが課題となります。
まとめ
tss-lib の ECDSA では、HDPath を用いた子鍵の導出が可能であり、これにより MPC での複数アドレス管理の利便性が向上します。子鍵の導出には、chainCode、HDPath、およびこれらから計算された keyDerivationDelta が必要です。導出された子鍵は、調整された KeyShare を使用して署名を行うことができます。
これらの情報を共有する方法には、それぞれメリットとデメリットがあります。通信量、セキュリティ、柔軟性などの要件を考慮して、最適な選択肢を決定することが重要です。
特に、選択肢 3 の keyDerivationDelta を署名の都度渡す方法は、通信量を最小限に抑えつつ、システムの構造や関連性の機密性を高めることができるため、多くの場合に適していると考えられます。
適切な情報共有の方法を選択することで、tss-lib を用いた MPC におけるセキュリティと効率性を高めることができるでしょう。
Discussion