応用暗号: 非対話型分散鍵生成の紹介(日本語訳)

tokuryoo
DfinityJP
Published in
9 min readDec 30, 2021

Medium の DFINITY 公式の記事 Applied Crypto: Introducing Noninteractive Distributed Key Generation(2021/3/18) の日本語訳です。

NIDKGは、前方秘匿性を伴う暗号化 と 非対話型ゼロ知識証明 を含む、高度な暗号技術を応用しています。

By Jens Groth, Team Lead, Research | DFINITY

Internet Computer — 高度な分散型プロトコルを実行する独立したデータセンターのネットワークにより作成された革新的なブロックチェーンコンピューター — は、開発者、組織、起業家がセキュアなアプリケーションや自律的なソフトウェアプログラムをビルドし、デプロイすることを可能にします。プロプライエタリなインフラ または 特定のホスティングサービス上で動作する典型的ななクラウドベース または 分散アーキテクチャとは異なり、Internet Computer のブロックチェーンは、オープンなインターネット上で直接ソフトウェアやサービスを実行することを可能にします。分散型の Internet Computer Protocol (ICP) は、高度な暗号技術を実装することで、このセキュアなネットワークを構築します。

非中央集権的な分散システムでは、様々な疑問が生じます。ピアツーピアのレベルでは、この敵対的なオープンな環境において、ノード間でどのように人工物を広めるのでしょうか?最も効率的な方法でそれを行うにはどうすればよいのでしょうか?最も適切なネットワークトポロジーはどのように定義すればよいのでしょうか?そして、中央の権威がいない中で、正しい取引が正しい順序で検証され処理されることの保証を主な論点とするコンセンサスプロトコルがあります。

DFINITY Foundationでは、研究開発と私たちが生み出したブロックチェーンとの間で差異はありません。研究開発チームのメンバーは、定期的に新しい技術を実装し、そのアイデアが実用化されるのを目の当たりにしています。この暗号レベルでの実装の好例が、Internet Computer の非対話型分散鍵生成(noninteractive distributed key generation)(NIDKG) プロトコルであり、これは財団が初めてリリースした斬新でコアな暗号技術です。

非対話型分散鍵生成(Noninteractive DKG)の紹介

Internet Computer 上で動作するアプリケーションまたはサービスのエンドユーザーは、キャニスターのスマートコントラクトと対話し、このブロックチェーンを構築するために使用されている高度な暗号技術を直接目にすることはありません。Internet Computer は、キャニスターの動作方法を規定するシンプルでクリーンなインターフェイスを定義しています。それにより、異なるアプリが通信して互いのAPIを使用できるソフトウェアエコシステムを可能にしています。

もう少し掘り下げると、Internet Computer が出力を証明し認証するためにデジタル署名が使われていることがわかります。デジタル署名は、1970年代後半の Diffie-Hellman と RSA の先駆的な研究で登場し、現代暗号の黎明期の一部となりました。

エンドユーザー 及び 他のキャニスターと会話するキャニスターは、証明された情報を必要としています。しかし、Internet Computer では、キャニスターは世界中のノードの集合体によって運営されているサブネット上でホストされています。そのため、ノードは分散プロトコルを実行して、Internet Computer の出力に同意し署名しなければなりません。閾値署名は、サブネット上のノードが共同でデータに署名することを可能にします。十分な数のノードが協力することで、署名することができます。一方、少数の悪意あるノードは、逸脱して不正なメッセージに署名することはできません。

ここまでは良いのですが、もうひと工夫あります。Internet Computer では、サブネットを運営するノードの集合が進化していきます。ノードは各自のサブネットに参加したり、離脱したりすることができます。ネットワークの要求や要件、望ましいセキュリティレベル、データセンターで利用可能な容量、ランダムなハードウェアの故障などに応じて、サブネットを実行するノードの集合は時間とともに変化します — つまり、閾値署名者のグループは時間とともに進化するのです。

その結果、サブネット内で流動的なノードに対して、新しい公開鍵を生成、登録、配布し続けることは、論理的に複雑になります。そこで代替案があります。サブネットを構成するノードが流動的でも、同一のサブネットに1つの静的な公開鍵を常に紐づけることができれば、鍵管理は大幅に簡素化されます。

幸いなことに、公開鍵の保存には暗号的な解決策があり、秘密鍵を再共有することが可能です。このような秘密鍵の再共有方式では、閾値署名方式に参加した署名者の集合は、閾値署名する能力を別の署名者の集合に移すことができます。既存の鍵再共有方式には多くの利点がありますが、対話的であるため、非同期性の問題が生じるといった制約があります。あるノードからのメッセージが欠落した場合、メッセージが単に遅れただけなのか、または ノードがクラッシュしたのか、または 侵害されたのかが不明になってしまいます。

DFINITYの研究開発チームは、新しい非対話型鍵再共有プロトコルを発明しました。各旧署名者達は、新署名者達に1通のメッセージをブロードキャストするだけで済みます。これを安全に行うために、前方秘匿化を伴う暗号化 と 非対話型ゼロ知識証明を含む、高度な暗号技術の多くの概念が活用されています。非対話型であるため、鍵の再共有プロトコルの動作方法は非同期環境に最適であり、その利点には鍵の保存が含まれます。サブネットの寿命が尽きるまで、そのサブネットは単一の公開鍵で知られており、Internet Computer の他の当事者は公開鍵の変更を追跡する必要はありません。

サブネットの鍵管理の様々なフェーズを見てみると、まず、このプロトコルは初期の鍵生成に適用されます。Internet Computer は、NIDKGプロトコルを使用して新しいサブネットを開始し、初期ノードに閾値署名鍵を与えることができ、初期ノードはセットアップ処理に関与しません。ノードは単純に、自分たちがサブネットに割り当てられたことを知り、署名鍵の秘密シェアを演繹し、サブネットの運用を開始します。

サブネットが稼働している間、分散鍵再共有プロトコルにより、新規参加ノードの登録が行われます。サブネットは暗号化された鍵の素材を参加ノードに残しておくだけなので、長い登録プロセスは必要ありません。

最も頻繁に起こると予想されるのは、一組のノードが秘密鍵の再共有を自ら行うことです。これは、ノードがすでに閾値署名鍵を持っているので、直感に反すると思うかもしれません。しかし、このアイデアはプロアクティブセキュリティの概念から生まれたものです。

時間が経つことでノードが危険にさらされるかもしれないのは、問題です。ある長い期間、同じ複数のノードによって運営されているサブネットを想像してみてください。この場合、攻撃者は、ノードの署名鍵の閾値シェアを何らかの方法で知ることができる時間的猶予を与えられます。プロアクティブセキュリティは、署名鍵の閾値シェアをリフレッシュし続けることで解決策を提供します。つまり、ノードは鍵を再共有し、署名鍵の新しい閾値秘密シェアを取得します。その後、古いシェアを削除します。つまり 攻撃者が時間をかけて各ノードからシェアを見つけたとしても、任意のエポックにおいて少数のシェアしか知られていなければ、閾値署名鍵は依然としてセキュアであるということです。

NIDKGは、Internet Computer が掲げた「ウェブの創造力を一新する」という壮大なビジョンを実現するために、DFINITYの研究開発チームが率先して行っている数多くのイノベーションの一つであり、そのビジョンは着実に現実のものになりつつあるのです。開発者の皆様が、ネットワークの可能性を探求し、未来のアプリケーションとサービスを創造してくださることを期待しています。

Join our developer community and start building at forum.dfinity.org.開発者コミュニティに参加し、forum.dfinity.org で開発を始めましょう。

--

--