Skip to main content

閾値 ECDSA

Internet Computer は、革新的な閾値 ECDSA プロトコルを実装しています。このプロトコルでは、ECDSA 秘密鍵は秘密分散されて複数のノード、つまり IC 上の閾値 ECDSA 対応サブネットのレプリカによって保持され、秘密鍵を再構成(復元)することなく、分散された秘密鍵を用いて署名されます。このためサブネットの各レプリカは、それ自体では何も情報を提供しない秘密鍵シェアを保持しています。少なくとも3分の1のレプリカがそれぞれの秘密鍵シェアを提供して初めて閾値署名をすることが出来ます。

Internet Computer の任意のサブネット上の各 Canister は、固有の ECDSA 鍵ペアの制御を有し、対応する秘密鍵による署名の計算を(ECDSA サブネットに)要求することができます。署名は、その資格のある Canister、すなわち ECDSA 鍵の正当な所持者にのみ発行されます。各 Canister は、固有の ECDSA 鍵に対してのみしか署名を取得することができません。Canister は自分では ECDSA 秘密鍵や秘密鍵シェアを持たず、IC の特定の閾値 ECDSA 対応サブネットに委任していることに注意してください。閾値暗号は、ブロックチェーンのトラストモデルにおいて、従来の暗号だけでは実現不可能な機能を実現するのに役立ちます。

ブロックチェーン上の閾値 ECDSA 実装は、秘密鍵を安全に保管し、資格のある対象の要求に応じて(それらに対してのみ)署名を発行するという意味で、ハードウェアセキュリティモジュール(HSM)のオンチェーン版として見なすことができます。

閾値 ECDSA が利用できることで、例えば、以下のような多数の重要なユースケースが可能になります:

  • Bitcoin をネイティブに Canister に保持すること。
  • Ethereum との統合、例えば Ethereum の ERC-20 トークンを IC に取り込んだり、Ethereum のトランザクションに署名したりすること。
  • トランザクションへの署名方式として ECDSA を使用する他のブロックチェーンと統合すること。
  • 分散型認証局(CA)を実現し、閾値 ECDSA を用いて証明書を発行すること(そのためには現在実装されている楕円曲線 secp256k1 とは異なる楕円曲線、secp256r1 が必要となります)。

これらは、私たちの閾値 ECDSA プロトコルの使用のほんの一例に過ぎません。クリエイティブな技術者や起業家は、さらに多くのエキサイティングなユースケースを思いつくことでしょう。

さらに学ぶには

もしあなたが閾値 ECDSA についてもっと知りたいなら、how it works ページをチェックしてください。さらに深く掘り下げるなら、Groth と Shoup の Eurocrypt 2022 paper を参照してください。

ビルドしたい方は

threshold-ecdsa のサンプルコードは examples repositorymotoko または rust サブディレクトリで提供されています。対応するコード・ウォークスルーは samples documentation で見ることができます。