【CTO Tech Blog】AADPベースのWitness Encryption
- CTO Tech blog

当社のCTO、安土 茂亨がクラウドやBlockchainについて書き連ねるブログ Develop with pleasure! から最新記事をご紹介するCTO Tech Blog。
今回は「AADPベースのWitness Encryption」というタイトルの記事をご紹介!!
📦 ブログ記事の概要
本記事では、Bitcoin における条件付き秘密鍵アクセスを可能にする暗号技術 Witness Encryption (WE) の一形態として、AADP(Adaptive Affine Determinant Programs)ベースの方式 を解説しています。これは、特定の条件(witness)が満たされた場合にのみ秘密鍵を復号できる暗号化手法であり、PIPEs v2 の設計思想の一部として注目されています。
🔎 背景:Witness Encryption と PIPEs v2
- Witness Encryption (WE) は、ある証明(witness)を持つ者だけが暗号文を復号できる暗号方式で、従来の公開鍵暗号とは異なる条件ベースのアクセス制御を可能にします。
- Bitcoin のコンテキストでは、オンチェーンでは Schnorr 署名の検証のみを行い、秘密鍵を入手するためにはオフチェーン条件(witness)が必要 というルールを強制する仕組みとして提案されています。
🧠 AADP の基礎と拡張
- ADP(Affine Determinant Program) は、入力ビットに応じて構成される行列に対し、その 行列式の値を NP 証明の検証に使う アルゴリズムです。ADP は bit 単位でしか扱えないため、大きな算術回路では効率が悪いという課題がありました。
- AADP(Adaptive Affine Determinant Program) は、ADP を拡張し、有限体の要素を直接入力として扱えるように最適化 した方式です。これにより bit 分解のオーバーヘッドを削減し、暗号文の効率化と検証効率の向上が図られています。
📋 暗号化・復号の仕組み
- 暗号化では、NP 証明回路をADPに変換し、その ADP に対応する行列の 行列式がゼロになる条件(det=0) を witness が満たした場合にのみ、秘密鍵が埋め込まれた行列のカーネルベクトルから秘密鍵を読み出せます。
- ランダム行列による変換により、構造情報を隠蔽しないと秘密鍵が漏洩するリスクがあるため、ランダム化処理 が適用されています。
🔐 分散セットアップと信頼モデル
- AADP ベースの witness encryption では、秘密鍵を一人のセットアップ者が知る必要がないように、複数参加者が秘密鍵の断片を生成・MPC でセットアップを行う方式が採用されています。
- この方式では “参加者のうち少なくとも一人が正直であれば秘密鍵は安全” という信頼モデルが成立しますが、全員が結託すると秘密鍵が再構成可能になる点は注意が必要です。
📊 実用性と課題
- 論文ベースの試算では、暗号文サイズ約338TB、複数十台規模のCPU並列処理で10分以内に計算可能というレベル が示されており、AADP の導入によって従来の ADP より現実的な実行可能性が見えてきたものの、実用レベルにはなお高コストである とされています。
この記事は、Bitcoin における 条件付き暗号アクセスや高度な暗号プリミティブの応用 を理解したい暗号・ブロックチェーンエンジニアにとって、Witness Encryption の理論と実装上の工夫を整理した内容 となっています。
Chaintopeでブロックチェーンの未来を共に創りませんか?
Chaintopeは、独自のブロックチェーン「Tapyrus(タピルス)」と、開発プラットフォーム「Tapyrus Platform」を活用し、デジタル社会の信頼基盤を構築しています。
私たちは、ブロックチェーン技術の可能性を最大限に引き出し、社会に新しい価値を提供することを目指しています。
募集職種:
- ブロックチェーンエンジニア
- アプリケーションエンジニア
- インフラ・保守エンジニア
- プロジェクトマネージャー
- フィールドセールス
Chaintopeで働く魅力:
- 最先端のブロックチェーン技術に触れる機会
- リモートワークやフレックスタイム制による柔軟な働き方
- 専門性の高いチームとの協働
ブロックチェーン技術に情熱を持つあなたのスキルを、私たちのチームで活かしませんか?
↓↓詳細は、採用情報をご覧ください↓↓


