CRYPTREC 暗号技術ガイドライン（高機能暗号）
CRYPTREC 暗号技術調査ワーキンググループ（高機能暗号）

2023 年 3 月

表1

CRYPTREC 高機能暗号 WG 委員構成

主査

四方 順司

横浜国立大学委員

岩本 貢

電気通信大学委員

大原 一真

国立研究開発法人産業技術総合研究所

委員

勝又 秀一

ＰＱＳｈｉ e ｌｄ

委員

金岡 晃

東邦大学

委員

川原 祐人

日本電信電話株式会社

委員

国井 裕樹

セコム株式会社委員

須賀 祐治

株式会社インターネットイニシアティブ

委員鈴木 幸太郎豊橋技術科学大学委員

花岡 悟一郎

国立研究開発法人産業技術総合研究所

委員

濱田 浩気

日本電信電話株式会社

委員

外園 康智

株式会社野村総合研究所

委員

山田 翔太

国立研究開発法人産業技術総合研究所

委員

米山 一樹

茨城大学

委員

渡邉 洋平

電気通信大学

Ｌｔｄ．／国立研究開発法人産業技術総合研究所

目次
第1章

はじめに

4

第2章

高機能暗号技術とその活用法

7
8
8
8
9
10
10
12
17
21
28
37

2.1
2.2

高機能暗号とは . . . . . . . . . . . . . . . . . . . . . . . . . . .
高機能暗号はどこに使えるか、その有用性 . . . . . . . . . . . .

CRYPTREC 暗号リストの暗号方式との違い . . . . . .
高機能暗号の有用性 . . . . . . . . . . . . . . . . . . . .
高機能暗号の種類と分類 . . . . . . . . . . . . . . . . . . . . . .
高機能暗号の活用例と標準化動向 . . . . . . . . . . . . . . . . .
2.4.1 守秘関連の活用事例と標準化動向 . . . . . . . . . . . . .
2.4.2 認証・署名関連の活用事例と標準化動向 . . . . . . . . .
2.4.3 その他の高機能暗号の活用事例と標準化動向 . . . . . . .
2.4.4 活用事例からみた高機能暗号の利用方法 . . . . . . . . .
参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1
2.2.2

2.3
2.4

第3章

3.1

主な高機能暗号技術のアルゴリズム・プロトコルとその性能
守秘を目的とした高機能暗号技術 . . . . . . . . . . . . . . . . .

3.1.1
3.1.2
3.1.3
3.1.4
3.1.5

ＩＤベース暗号 . . . . . . . . . . . . . . . . . . . . . .
属性ベース暗号 . . . . . . . . . . . . . . . . . . . . . .
放送型暗号 . . . . . . . . . . . . . . . . . . . . . . . . .
準同型暗号 . . . . . . . . . . . . . . . . . . . . . . . . .
プロキシ再暗号化 . . . . . . . . . . . . . . . . . . . . .

参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2

認証・署名を目的とした高機能暗号技術 . . . . . . . . . . . . .

3.2.1
3.2.2
3.2.3

属性ベース署名 . . . . . . . . . . . . . . . . . . . . . .
集約 MAC、マルチ MAC、集約署名、マルチ署名 . . . .
グループ署名 . . . . . . . . . . . . . . . . . . . . . . . .

2

46
47
47
49
53
55
58
60
65
65
67
70

3.2.4
3.2.5

リング署名 . . . . . . . . . . . . . . . . . . . . . . . . .

Oblivious Random Access Machine（ORAM） . . . . .
Private Information Retrieval（PIR） . . . . . . . . . .
検索可能暗号 . . . . . . . . . . . . . . . . . . . . . . . .
参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73
76
79
84
84
87
90
94
99
101
105
108

おわりに

116

しきい値署名 . . . . . . . . . . . . . . . . . . . . . . . .

参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3

その他の高機能暗号技術 . . . . . . . . . . . . . . . . . . . . . .

3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7

第4章

秘密分散 . . . . . . . . . . . . . . . . . . . . . . . . . .
マルチパーティ計算–秘密分散ベース– . . . . . . . . . .
マルチパーティ計算–Garbled Circuit ベース– . . . . . .
ゼロ知識証明 . . . . . . . . . . . . . . . . . . . . . . . .

3

第1章

はじめに
ネットワークの高速化、広帯域化、さらには、すさまじい勢いでのコンピュータの高性能化に伴い、サイバー空間とフィジカル空間が融合したいわゆる Society5.0の世界が現実的なものになりつつある。特に、クラウドサービスの充実、人工知能（Artiﬁcial Intelligence，AI）技術の進歩等もあいまって、多くの分野でオンラ
インサービスの需要が高まっている。また、暗号資産の出現により、経済も変化しつつある。さらに、2020 年に訪れたコロナ禍においては、すべての対応をオンライン化しなければならない状況が生じ、在宅勤務を含むリモートワークや、リ
モート会議等のオンラインサービス、それに伴う技術が著しく進歩し、いわゆるニューノーマルな社会を実現するための環境作りが進んできた。
以前より、これらの技術の進歩、社会の変化に伴った現状のサービスの改善や、将来のサービス変化を見越して、既存の暗号技術よりも効率的で高機能な方式の研究開発が進められている。従来技術より、低コスト、高機能の特徴をもつ「高機能暗号」は、ゲノムのような重要な個人情報を扱う医療データの活用、AI 用の
秘密計算、DB の秘匿検索をはじめとするさまざまな用途での利用が期待されている。しかし、どの高機能暗号を選べばよいのか、選ばれた高機能暗号方式は従来の暗号方式よりもどのような点で優れているのか、運用時にはどのようなことに注意することが必要か等、実際に利用する際には専門家以外では、判断基準がわからず、実運用の判断に困難な場合も多い。

CRYPTREC では、主として電子政府で利用する暗号技術について検討を行っているが、それに加えて、今後さまざまな領域で利用が想定される暗号技術について技術調査を行い、社会に役立つ形で情報提供を行うことを目指している。特に、高機能暗号技術が求められる製品やサービスにおいて、利用者が適切な暗号方式を選択でき、容易に調達できることを目指し、2021 年度より CRYPTREC 暗号技術評価委員会の下に、“暗号技術調査ワーキンググループ（高機能暗号）”（以下、4高機能暗号 WG）が設置された。本ガイドラインは、高機能暗号の方式を選択・利用する際の技術的判断に資すること、今後の利用促進を図ることを目的として、高機能暗号 WG が作成したものである。主たる読者として、セキュリティ技術の標
準化等を目指すコンソーシアムや団体、情報システムのセキュリティ機能の設計・開発・実装において暗号技術を活用する技術者や、セキュリティ機能を搭載した
情報システムの導入を推進する企業等を想定しているが、高機能暗号技術に興味を持つ方に広く読んで頂ければ幸いである。

1 章は、本ガイドラインの総説である。2 章では、高機能暗号の概説をまとめている。まず、対象とする高機能暗号と、その活用例を示し、その上で、高機能暗号を実際に活用する際の手引きを示している。特に、高機能暗号の特徴、代表的なユースケース、方式の選択方法等を記載している。3 章では、代表的な高機能暗号のアルゴリズムと性能等を示している。多くの高機能暗号方式が提案されている
中、優位な特徴がある方式を取り上げ、アルゴリズムを紹介するとともに、その優位性を示している。
本ガイドラインを読むにあたり、どのような暗号があるかを知りたい読者は、第

1 章、第 2 章までを読み、より暗号技術の詳細内容まで知りたい読者は、第 3 章まで読むことをお勧めする。
本ガイドラインで紹介している高機能暗号技術は、執筆時点までに、主要国際学会で発表されており、有力な攻撃法が発見されておらず、かつ、十分な性能を持つと考えられる方式を選んでいる。このため、本ガイドラインで紹介する高機能
暗号は、CRYPTREC 暗号リストの暗号方式とは異なり、CRYPTREC において安全性評価を行った方式ではなく、国際会議等の発表により脆弱性が発見されていないことを安全性の根拠としている。そして、可能な限り最新の情報に基づき安全性や、性能比較、標準化動向等を紹介している。しかしながら、高機能暗号の研究開発は今まさに盛んに行われており、年々新たな方式や評価結果が出ている
ところであり、記載内容が執筆時点のものであることに留意いただきたい。また、本ガイドラインで紹介する高機能暗号は、その機能の優位な特徴を明確に示す暗号を掲載している。このため、アプリケーションに本ガイドラインに記載されている暗号方式を実装することで、その暗号方式が有する優位な特徴を利用することはできるものの、必ずしもそのアプリケーションにとって最適な方式とは限らないケースもある。この場合、最適な方式を選択するためには、暗号方式の詳細を理解し、改良したり、別の暗号方式を利用する等の検討が必要となることがある
ことをご留意いただきたい。
本ガイドラインは表 1.1 に示す高機能暗号 WG 委員および CRYPTTREC 事務5

局で執筆・編集を行った。所属は、WG 委員、事務局を担当した期間におけるものである。また、本ガイドラインを作成する上で、活用事例からみた高機能暗号の利用方法において、日本電気株式会社の横田治樹氏、藤井了氏、三菱電機株式会社の平野貴人氏、川合豊氏、反町亨氏、早坂健一郎氏に多くの有益な情報をご提供いただいた。
表 1.1

高機能暗号ガイドライン執筆者リスト

主査

四方 順司

横浜国立大学委員

岩本 貢

電気通信大学委員

大原 一真

国立研究開発法人産業技術総合研究所

委員

勝又 秀一

PQShield Ltd. ／国立研究開発法人産業技術総合研究所

委員

金岡 晃

東邦大学

委員

川原 祐人

日本電信電話株式会社

委員

国井 裕樹

セコム株式会社委員

須賀 祐治

株式会社インターネットイニシアティブ

委員鈴木 幸太郎豊橋技術科学大学委員

花岡 悟一郎

国立研究開発法人産業技術総合研究所

委員

濱田 浩気

日本電信電話株式会社

委員

外園 康智

株式会社野村総合研究所

委員

山田 翔太

国立研究開発法人産業技術総合研究所

委員

米山 一樹

茨城大学

委員

渡邉 洋平

電気通信大学事務局

野島 良

国立研究開発法人情報通信研究機構

事務局

青野 良範

国立研究開発法人情報通信研究機構

事務局

伊藤 竜馬

国立研究開発法人情報通信研究機構

事務局

大久保 美也子

国立研究開発法人情報通信研究機構

事務局

金森 祥子

国立研究開発法人情報通信研究機構

事務局

黒川 貴司

国立研究開発法人情報通信研究機構

事務局

篠原 直行

国立研究開発法人情報通信研究機構

事務局

吉田 真紀

国立研究開発法人情報通信研究機構

事務局

小川 一人

国立研究開発法人情報通信研究機構

6

第2章

高機能暗号技術とその活用法

7

2.1 高機能暗号とは
近年、従来の守秘、認証、署名の機能だけではなく、様々な機能を持つ「高機能暗号」（Advanced Cryptography）の研究開発が進んでおり、学会等で提案されている。高機能暗号は日本が強みを持つ分野であり、日本での研究開発が盛んである。そして、日本発の高機能暗号が、多くの著名な国際会議で発表されている。
また、ISO/IEC 等において標準化が進められている高機能暗号技術もある。
様々な機能を有する高機能暗号技術は、今後の発展が予想される 5G および

Beyond5G の社会における種々のサービスで利用できる可能性があり、Internet ofThings（IoT）や AI にとどまらず、Society5.0 における基盤となる Cyber Phisical
System（CPS）といった次世代のネットワークサービスを構築する上でも有効な
セキュリティ技術の一つとなることが期待されている。
一方で、これまで提案されてきた高機能暗号技術には、様々な機能を有する方式が存在する。機能に応じて、それぞれ暗号技術が発展しており、それらを一つの指標で比較することは困難である。このため、国際的に「高機能暗号」に対して一般的に合意されている定義はない。ただし、ガイドラインを読み進めるにあたり、高機能暗号を定義しておくことは読者の理解の支えになると考えられる。以上の状況を鑑み、本ガイドラインでは、「従来の暗号技術に対して、機能が追加・向上される等の優位性を主張する暗号技
術、および、従来の暗号技術では困難であった事象を解決できる等の新規機能を有することを主張する暗号技術」
をスコープとし、従来の暗号技術に対して、なんらかの機能・性能で優位性（高機能性）を持つ暗号技術を高機能暗号における主な対象とする。ここで述べた従来の暗号技術とは、CRYPTREC 暗号リスト [1] に挙げられているような暗号基礎技術を指す。そして、この高機能性については、各項目において明示することにする。

2.2 高機能暗号はどこに使えるか、その有用性
2.2.1 CRYPTREC 暗号リストの暗号方式との違い
CRYPTREC 暗号リスト [1] には、公開鍵暗号、共通鍵暗号、ハッシュ関数、暗号利用モード、メッセージ認証コード、認証暗号、エンティティ認証が記載されて8

いる。さらに、公開鍵暗号は、署名、守秘、鍵共有に分かれている。また、共通鍵
暗号は、64 ビットブロック暗号、128 ビットブロック暗号、ストリーム暗号に分かれ、暗号利用モードは、秘匿モード、認証付き秘匿モードに分かれている。
本ガイドラインで紹介する高機能暗号方式は、これらの暗号方式単独では実現できない機能を持つ暗号方式、もしくは、これらの暗号方式で実現するには非効率である事象を効率的に実現する暗号方式である。前者の例としては、CRYPTREC
暗号リストにおける公開鍵暗号では鍵生成においてランダムに出力される値が公開鍵として使用される。これに対し、任意の記号列、例えば、人名やメールア
ドレス、を公開鍵として利用することを可能とした高機能暗号が開発されている(第 3.1.1 章 ID ベース暗号参照)。また、後者の例としては、一つの平文を複数の利用者に送る際に、復号権限のある利用者の人数分の暗号文を生成し全利用者に暗号文を送ることに比べて、さらにコンパクトな暗号文のサイズで同じ機能を達成する高機能暗号も開発されている（第 3.1.3 章放送型暗号参照）。
第 1 章でも述べたように、本ガイドラインで紹介する高機能暗号方式は、CRYPTREC により安全性評価を行った方式ではない。これは、高機能暗号は発展途上にあるが、できる限り最新の情報を提供することを目指したためである。
発展途上にある最新の技術を CRYPTREC で評価をするためには、多大な時間を要することになり、逆に、最新の技術が掲載できなくなる。とはいえ、ガイドラ
インに掲載するためには、安全性が保障されない技術を記載するわけにはゆかない。そこで、主要な国際会議等の発表により脆弱性が発見されていないことを安
全性の根拠とし、世界の研究者を評価者と考えることで、安全性を担保する方針とした。

2.2.2 高機能暗号の有用性
本ガイドラインで扱う高機能暗号は、従来の暗号技術と比べ、

 ランダムな暗号化鍵ではなく、良く知っているメールアドレスや人名を暗号化鍵に利用できる。

 属性、例えば課長以上の役職の職員、を指定した、ファイル、ドキュメント
へのアクセス制御ができる。

 復号鍵の漏洩対策として、複数人の復号情報が集まらなければ、もとのデータに復号できない設定にできる。

 暗号化したまま論理演算や算術演算ができる。
 個人情報を秘匿したまま、あるグループに所属しているメンバーシップを認9証できる。

 個人が実際に所有する秘密情報を公開することなく、その秘密を持っていることを他者に証明することができる。

 DB へのアクセスパターンを秘匿することができる。
 管理者等によるコンピュータの RAM の解析を防ぐことができる。
 DB 管理者等に、どんなデータを検索したかを秘匿したまま、所望のデータを検索できる。
等の特徴を持つ暗号技術であり、これらの特徴が従来の暗号技術よりも優位な点となる。
このように様々な高機能暗号があるが、その優位性は種別毎に異なっている。
このため、高機能暗号を使用するにあたり、その目的にあった高機能暗号の選択が必要となる。

2.3 高機能暗号の種類と分類
2.2.2 章で述べたように、高機能暗号は、その使用目的にあった選択が必要となる。そこで、本ガイドラインでは、高機能暗号の目的に応じて、“守秘”、“認証・署名”、“その他” の 3 つに分類した。
守秘は、第３者に秘匿する文書等を暗号化するための技術である。認証・署名
は、文書等を作成する人、文書等を送る人、および、通信している機器の認証を行う、もしくは、それらに署名を付与するための技術である。その他については、上記の守秘、認証・署名には属さない新たな技術である。例えば、複数の人やサーバが協調しつつ各利用者が持つ秘密情報は秘匿して計算を行う方式や、秘密情報を提示することなく個人が秘密情報を持っていることを提示する方法等の技術である。
守秘と認証・署名は CRYPTREC 暗号リストにも同じ分類があるが、その他については、CRYPTREC 暗号リストの分類では、どの分類にも当てはまらない暗号技術となる。表 2.1 に、本ガイドラインで扱う暗号方式の一覧を示す。

2.4 高機能暗号の活用例と標準化動向
以前は、セキュリティ技術は付加機能であり、開発コストが高く、敬遠され、進んで導入する組織は多くなかった。現在では、企業からの情報漏洩は、企業のイ
メージを落とすことにもつながるため、たとえ一部の情報であっても漏洩することがあってはならない状況である。そして、サイバー攻撃等による情報漏洩の危10

表 2.1

分類

守秘本ガイドラインで扱う高機能暗号一覧

高機能暗号

特徴

ＩＤベース暗号

任意の記号列を公開鍵にすることが可能

属性ベース暗号

受信者の属性に応じた復号権限の付与が可能

放送型暗号

多数の受信者に対して放送用のコンテンツの効率的な復号権限の制御が可能

準同型暗号

暗号化した状態での演算が可能

プロキシ再暗号化

サーバにおいて暗号化鍵を変更することが可能

属性ベース署名

個人ではなく、属性に応じた署名権限の付与が可能

集約 MAC、マルチ MAC、 複数の MAC ／署名をコンパクトに圧縮すること
認証・署名

集約署名、マルチ署名が可能

グループ署名、リング署名

グループを構成するメンバの誰かが匿名で署名をすることが可能

しきい値署名

一定数以上の署名者がそろうことで、一つの署名
生成が可能

秘密分散

秘密データを複数に分割し秘匿する方法

マルチパーティ計算

複数のサーバが入力情報を秘匿したまま協調的に計算して結果を得ることが可能

ゼロ知識証明証明者が検証者に命題の正しさを証明でき、それ以外の情報を漏らさないことが可能

その他

Oblivious Random Ac-

サーバ内のデータアクセスにおいて、データの秘cess Machine （ORAM） 匿に加えてデータへのアクセスパターンをサーバに対して秘匿することが可能

Private Information Re-

サーバ内のデータアクセスにおいて、どのデータ

trieval （PIR）にアクセスしたかをサーバに秘匿することが可能

検索可能暗号サーバ内のデータへのキーワード検索において、検索キーワードを秘匿したままデータ検索が可能

険性もあり、セキュリティ対策を堅実に行うことが組織のアピールにもつながり、
セキュリティ技術を積極的に導入する組織が増加している。
さらに、社会環境も変化し、種々多様なサービスが発展してきている。この変化に伴い、ネットワークや、データの保護方法も変化し、高機能暗号が期待され、提案されている。また、すでに導入、活用され、実用化の段階に入っている高機能
暗号も増加している。以下では、個々の高機能暗号に対し、どのような活用例が11考えられているかを示すとともに、使用可能なライブラリや、標準化に向けた活動がある方式については標準化動向を示す。その後、活用事例に対し、高機能暗号を利用した実例を紹介する。

2.4.1 守秘関連の活用事例と標準化動向■ID ベース暗号

ID ベース暗号は、利用者の ID をはじめとする任意の文字列を公開鍵に利用できる公開鍵暗号方式の一種である。暗号文を受け取る相手の名前、
メールアドレス、ID、企業名、部署名等、よく知っており、一目で相手がわかる
情報を公開鍵として利用することができるため、相手とは全く無関係の公開鍵を利用した従来の暗号方式よりも利便性に優れている。
具体的には、メールの本文や添付ファイルを暗号化するサービス等が商用化されている。そのメールサービスでは、個々の利用者の公開情報であるメールアド
レスを公開鍵として、それに対する秘密鍵がサービス事業者により生成され、秘密
鍵はそれぞれの利用者に送られ保持される。メールの送信者は、メール送信先のメールアドレスを公開鍵（暗号鍵）として、メール本文を暗号化する。メール受信
者は、メールアドレスに対する秘密鍵（復号鍵）を持っているので、このメールを復号して読むことができる。秘密鍵は、メールアドレスの受信者しか持っていな
い情報であるため、メールの守秘性が保たれる。この方式では、送信者はメール
受信者の公開鍵を知る必要はなく、メールアドレスだけを知っていれば、受信者が復号できる暗号文を作ることができるため、従来の公開鍵暗号のように受信者の公開鍵を取得するための通信等の必要がない。

ID ベース暗号では、複数のライブラリがオープンソースソフトウェアとして公開されるなどソフトウェアが充実しており、パフォーマンスも高い [2]。まず、ID
ベース暗号に限らず近年の多くの公開鍵暗号方式で使われている Pairing と呼ばれる基盤技術がある。この Pairing をベースに最初に作られたライブラリが PBC
ライブラリ（Pairing-based Cryptography Libraly） [3] である。PBC ライブラリの中には ID ベース暗号関連のソフトウェアも含まれている。PBC ライブラリ以
外にも ID ベース暗号関係のライブラリは存在するが、PBC ライブラリが最も参照され、使用されている。商用のサービスとしては Voltage 社による電子メールの暗号化ソリューションである Voltage SecureMail がある [4]。また Cloudﬂare社が提供する CDN 顧客の秘密鍵管理のソリューションである Geo Key Manager
において ID ベース暗号の発展である Identity-based Broadcast Encryption とIdentity-based Revocation が採用されている [5]。
また、標準化活動も活発である。IETF では 2007 年 12 月に RFC 5091 として
12

Boneh-Franklin の手法と Boneh-Boyen の手法が標準化された [6] ことを皮切りに、ID ベース暗号関連の標準化がすすめられた。RFC 5091 をもとにデータ構造
等が RFC 5408、5409 として 2009 年 1 月に標準化された [7, 8]。2011 年に入り、ID ベースの認証鍵交換（ID based Authenticated Key Exchange，IDAKE）手法
が RFC 6267 として標準化され [9]、2012 年に、IDAKE 自体が RFC 6539 [10]、ID ベース暗号向けの Certiﬁcateless Signature 手法が RFC 6507 [11]、境-笠原の手法が RFC 6508 として標準化された [12]。IEEE では P1363.3 として ID ベース暗号だけではなくより広い Identity-based Cryptography（IBC）として標準化の活動が行われ、2013 年に IEEE Std 1363.3-2013 として標準化されている [13]。
そこでは 境-笠原の Key Encapsulation Mechanism（KEM）、Boneh-Boyen のKEM、Boneh-Franklin と Boneh-Boyen の ID ベース暗号方式が Identity-based
encryption scheme として標準化されている。ISO/IEC でも ID ベース暗号だけ
ではなくより広い範囲で Identity-based ciphers として ISO/IEC 18033-5:2015 が策定されている。そこでは IEEE Std 1363.3 と同様に Boneh-Franklin、BonehBoyen、境-笠原の手法が標準仕様として掲載されている [14]。
ID ベース暗号の活用に関する学術の研究としては、2003 年に ID ベース暗号のパラメータ配付に DNS を利用する方式が Smetters らにより提案されている [15]。
また 2013 年に Ruoti らによる電子メール暗号化の高いユーザビリティを実現す
る Private Webmail（PWM）において ID ベース暗号が採用されている [16, 17]。
Miklejohn らは交通系の料金収受システムの提案内において Blind Identity-based
Encryption を利用し、被発行者 ID を利用した暗号化を行っている [18]。機器認証において ID ベース暗号を用いる手法は Software Deﬁned Network（SDN）の研究において 2012 年の Veltri らの研究を筆頭に、2010 年代半ばに複数研究されている [19, 20, 21]。
■属性ベース暗号

属性ベース暗号は、暗号文の復号の際に、暗号文の受信者の肩書、会社名、地域名等の属性に応じて復号権限を変更することができる公開鍵暗号方式の一種である。より正確には、暗号文または復号鍵（秘密鍵）に属性に対応したアクセス構造を持たせることにより、当該暗号文の復号権限を一括で制御できる。従来の公開鍵暗号方式により属性毎のアクセス構造を持たせる場合、同じ属性を持つ利用者の公開鍵を用いて、利用者数に応じた暗号文を作ることになる。
これに対し、属性ベース暗号では、暗号文は一つでアクセス構造を持たせることができ、効率性において従来の公開鍵暗号方式よりも優れている。
属性ベース暗号の活用事例としては、クラウド環境を介したファイル交換サー
ビスにおける暗号化されたファイルへのアクセス制御の仕組みをセキュアかつ効13

率よく実現するために属性ベース暗号を利用しているソリューションが提供されている [22]。
具体的には、ある企業内のファイルにおいて、部長、課長は閲覧可能であるが、他の職員は閲覧できないようにするソリューションである。そのソリューション
では、部長、課長が持つ秘密鍵には、部長、課長に対応する属性情報が埋め込まれている。他の職員には、部長、課長の属性情報が埋め込まれていない秘密鍵が配布されている。ある企業内の機密ファイルに、部長、課長の属性をもつ復号鍵であれば復号可能となるように、公開鍵（暗号化鍵）と部長、課長という属性を用いて暗号化し、クラウドに保存する。クラウドからファイルの取得は誰でも可能であるが、復号時に、復号者の秘密鍵に埋め込まれた属性が適合しなければ復号できない。すなわち、属性に応じた復号のアクセス制御が可能となる。
一般に、公開鍵暗号においては、暗号文生成時においての復号権限をもつエン
ティティは唯一に指定されるため、複数エンティティに復号権限を与える場合にはその数に比例する暗号文の生成が必要である。一方、属性ベース暗号では上記の機能を単一の暗号文で実現可能となる。属性ベース暗号は、暗号文ポリシー型と鍵ポリシー型に大別され、それぞれ暗号文と秘密鍵にアクセス構造を埋め込む技術である。利用者は、この特徴に応じて、どちらかの型を選択することになる。
すなわち、ユースケースにおける暗号文と秘密鍵の更新頻度を比較し、相対的に更新頻度が少ない方へアクセス制御を埋め込む型を選択する方が効果的である。
そして、属性ベース暗号の様々な実現手法を実装したライブラリがオープンソー
スソフトウェアとして公開されている [23, 24, 25]。[23] は、ID ベース暗号の項で述べた PBC ライブラリを用いて作成された暗号文ポリシー型属性ベース暗号のソ
フトウェアである。[24] は Garg らによる GCH+13 方式 [26] の属性ベース暗号を用いて作成された Java ベースのライブラリである。[25] は Goyal らの属性ベース
暗号 [27] をもとにして作成されたライブラリである。
■放送型暗号

放送型暗号とは、一つの暗号化鍵を用いて暗号化されたコンテンツ

を、複数の利用者が同時に復号できるようにする方式であり、暗号化鍵と復号鍵が異なる公開鍵型放送型暗号と、暗号化鍵と復号鍵が等しい共通鍵型放送型暗号がある。複数の利用者に同じコンテンツを送る場合であっても、暗号化鍵は一つしかなく、すなわち、暗号化は一度でよい、という点で効率性に優れている。
公開鍵型放送型暗号は、利用者毎に異なる復号鍵を持つが、暗号化のための公開鍵は一つである。暗号化鍵は公開情報であり、公開情報のみで誰でも暗号化が可能だが、この性質を積極的に活用可能な応用先が乏しく、現時点では具体的な社会実装例は見当たらない。
14

共通鍵型放送型暗号は、暗号化鍵と復号鍵が同一であり、また、利用者すべてが同じ復号鍵を持つ方式である。誰でも暗号化を行うことができる公開鍵暗号型放送型暗号とは異なり、暗号化を行うことができる機関が暗号化鍵を共有したエンティティに限定されるものの、大規模コンテンツ配信システム等においては、暗号化するエンティティがごく少数であるため、そのような制約はそれほど問題とはならず、大規模コンテンツ配信の実用システム上では共通鍵型放送型暗号方式が利用されている。また、Blu-ray 等のメディア用にも使用されており、具体的には、Blu-ray 等のコンテンツ保護に用いられる Advanced Access Content System（AACS） [28] は、Naor らにより開発された放送型暗号である SD 法 [29] と共通
鍵暗号を組み合わせた共通鍵型放送型暗号に基づき構成されている。AACS については、デジタル家電業界、パソコン業界、映画業界の主導により、規格策定団
体 AACS LA [30] が設立され、IBM、 Intel、 Microsoft、 Panasonic、 SONY、

Disney、 Toshiba、 Warner Brothers 等により運営されている。
■準同型暗号準同型暗号は、データを暗号化したまま演算処理（四則演算等）ができる暗号技術である。可能な演算は暗号方式により異なっており、加算のみ、乗
算のみ、加算と乗算の両方が可能な方式等がある。暗号化状態での演算であるた
め、演算の途中でデータが漏洩したとしても、生のデータが解読されることはな
く、データを処理速度の速いコンピュータに預けて演算を行う分析等の応用例が具体化されている。具体的には、機械学習の分野で準同型暗号を活用することにより、学習データのプライバシを確保しつつ機械学習モデルを生成する手法に関する研究開発等がある。
すでに実証実験に至っている事例もある。複数の金融機関の取引データを利用して不正取引検知の精度を向上することを目的とする実証実験である。この実験
では、複数の金融機関が持つ取引データを持ち寄り、不正取引検知用の AI モデルを構築する方法が提案されている [31]。複数の金融機関のデータは、他の金融機
関や中央サーバには秘匿すべきデータとして扱う。そして、それらを AI の連合学習に利用する。深層学習を行う際には、DeepProtect と呼ばれるプライバシ保護
深層学習技術が使われている [32, 33]。DeepProtect では、準同型暗号により学習
中のパラメータ（勾配情報）を暗号化して中央サーバに送り、中央サーバでは、暗号化したまま、学習モデルのパラメータの更新を行う。
鉄道会社の IC カードの分析に秘密計算を取り入れる検証等も実施されている [34]。そして、IC カードの利用履歴、乗降履歴や購買履歴等のセキュアな利用に取り組んでいる。この検証では、加算型の準同型暗号の一つである Paillier 暗号 [35] が使用されている。また、暗号化前と暗号化後の順番が変化しない順序保15

存型暗号（Order Preserving Encryption）も活用しているとされている。
準同型暗号については、ライブラリ、ソフトウェアが数多くオープンソースソフ
トウェアとして公開されている。Brakerski らによる準同型暗号 BGV12 方式 [36]と Cheon らによる準同型暗号 CKKS17 方式 [37] を基に開発されたライブラリ

HElib [38]、Brakerski による準同型暗号 Bra12 方式 [39]、Fan らによる準同型暗号 FV12 方式 [40]、CKKS17 方式に基づくライブラリ SEAL [41]、 CKKS17 方
式 に基づくライブラリ HEAAN [42]、Bra12 方式、 FV12 方式、BGV12 方式、CKKS17 方式、Ducas らによる準同型暗号 DM15 方式 [43]、 Chillotti らによる準同型暗号 CGGI16 方式 [44] に基づくライブラリ PALISADE [45]、Bra12 方式、FV12 方式、CKKS17 方式に基づくライブラリ Lattigo [46] 等がある。さらに、
HEAAN を用いたプラットフォーム等の製品 [47] が商用化されている。
準同型暗号の標準化も行われており、標準化団体 Homomorphic Encryption
Standardization [48] は準同型暗号のセキュリティ、API ＆アプリケーションの標準化を目指している。この標準化では、記法と準同型暗号化のセキュリティプロ
パティ、完全準同型暗号スキーム、推奨パラメータ値、標準的な攻撃方法とその耐性、推定実行時間だけでなく、将来を見越した耐量子計算機対応としてラティ
ス攻撃、LWE に対する Arora-Ge 攻撃、RLWE に対する代数攻撃方法とその耐性が標準化の対象となり、今後も、API 設計、アプリケーション例が追加される予定となっている。さらに、ISO/IEC では、単一演算型の準同型のアルゴリズム（Exponential ElGamal encryption、Paillier encryption）の暗号処理にかかるプ
ロセスを規定している [49]。
■プロキシ再暗号化

プロキシ再暗号化は、ある暗号文を復号せずに、暗号文の作成者とは異なるエンティティ（プロキシ）が、平文が同じである別の暗号文に変換する暗号方式である。入力された暗号文と出力される暗号文では、秘密鍵が異なることが一般的であり、このため、秘密鍵の更新が必要となるアプリケーションや、所有者変更等のアプリケーションでの応用例が報告されている。
例えば、復号を実行せずに動的に受信者を変更できるため、動的にアクセス権限の変更をすることを想定するクラウドストレージ等において特に有用であると考えられる。そして、NuCypher 社は、Umbral PRE と呼ばれるプロキシ再暗号化方式を開発し、これを用いた事業展開を進めている [50]。ここでは、サーバにおかれた暗号化データを利用者に配布する場合、その利用者の秘密鍵で復号できる
ようにアクセス制御する方式等が提供されている。また、東芝も独自に開発したプロキシ再暗号化方式を用いて、デジタル貸金庫と呼ばれるサービスを 2021 年まで展開していた [51]。デジタル貸金庫では、サーバに蓄えられたデータを、複数の
16

デバイスで利用できるようになっている。ただし、個々のデバイスの復号鍵は異なっている。この個々のデバイスで利用するために、サーバに蓄えられた暗号文から、利用するデバイスの復号鍵で復号できる暗号文にプロキシ再暗号化を利用して変換していた。

2.4.2 認証・署名関連の活用事例と標準化動向■属性ベース署名

属性ベース署名とは、属性ベース暗号の署名版と考えて差支えない。属性ベース暗号の場合は、復号する利用者の属性に応じて、より正確には、復号する利用者が持つ復号鍵に応じて、暗号文へのアクセス制御を行っている。これに対し、属性ベース署名では、署名者の持つ署名鍵が、署名者の属性に応じて異なっており署名者の属性集合が埋め込まれた署名鍵になっている。そして、ある文書に対して署名鍵を用いて署名を生成するわけであるが、その署名の中に属性に関するアクセス制御構造が埋め込まれる。署名検証において、署名者の持つ属性集合が、アクセス制御のために埋め込まれた構造にマッチしている場合は、署名検証をパスすることができる。すなわち、署名者の属性に応じて、検証判定ができる署名方式である。
この属性ベース署名を使うことで、社内に送付する文書において、名前ではなく、文書作成者の属性（役職、部局等）等に応じた署名を付与することができる。
ある社の A さんが作成した文書を、その課長、部長等が押印して回付することはよくあることである。紙媒体の場合、A さんの印、課長印、部長印が押印される。
この課長印、部長印は、課長もしくは部長の権限を持つ人が、課長／部長の責任に応じた役割を果たし、文書を確認したことを、文書の受領者に示すものであり、課長、部長の名前よりも、その役職に意味がある印である。さらに、詳細に、総務部の課長印のように、部署名も必要なこともある。この押印を電子的に行う場合、
属性ベース署名が役に立つ。
総務部の課長 B さんは、 所属：総務部 、 役職：課長 の属性を持つ。このため、B さんの署名鍵（秘密鍵）は、 所属：総務部 、 役職：課長 に応じた署名鍵となる。B さんが署名を生成する際に、署名を受理するためのアクセス条件を付与する。この例の場合、 総務部かつ課長

であれば、受理するという条件になる。文書の受信者は、署名がアクセス条件にあっているかどうかを確認することになる。B さんの署名は、 総務部

かつが通る。もしではない第 3 者が署名を偽造したとしても、

総務部

かつ

課長

課長

の属性であるため、署名検証

署名検証でエラーとなる。
この例で示す通り、名前による確認ではなく、役職や所属部署名による確認を17

行うことができる。もちろん、企業によっては、課長印、部長印以外に、名前が必要な場合もある。この場合は、 名前：B さん または 名前：C さん または 名
前：D さん等をアクセス条件に入れることで対応ができる。

また、属性の作り方を工夫することで、多くの活用方法が考えられ、例えば、ブロックチェーンやユーザ認証において匿名性を確保するために属性ベース署名を活用する手法の研究が行われている [52, 53]。
■集約 MAC・マルチ MAC・集約署名・マルチ署名

集約 MAC は、異なる複数の文書に対し、複数もしくは一つの秘密鍵でメッセージ認証符号（Message Authentication

Code，MAC）を付与する場合を効率よくするための技術である。例えば、企業内
で文書に対し、文書の作成者とその上司、および、別の部の担当者等、複数の人が異なる秘密鍵により MAC を付与する場合である。通常の MAC 方式であれば、MAC を付与する人数が多くなると、人数に比例して MAC 部分のサイズが大きくなる。これに対し、集約 MAC では、複数の MAC を単一の MAC に集約するた
め、MAC サイズが小さくなるという優位性を持つ。
マルチ MAC は一つの文書に対し、複数の異なる秘密鍵で生成された MAC を統合し、集約する技術である。MAC を付与する文書が共通であり、集約 MAC の特殊ケースとして捉えることができる。そして、集約 MAC と同じように、MAC
サイズが小さくなる優位性を持つ。
集約署名は集約 MAC の電子署名版と考えることができる。複数の文書に対し、複数人が署名するような場合を効率よくするための技術である。通常の署名方式であれば、署名を付与する人数が多くなると、人数に比例して署名部分のサイズが大きくなる。これに対し、集約署名では、複数の署名を単一の署名に集約するため、署名サイズが小さくなる、という優位性を持つ。また、署名を検証する人は、これを効率よく検証できる提案もある。すなわち、集約された署名の人数分の検証を行うのではなく、一回の検証処理で行う方式である。
マルチ署名は、一つの文書に対し、複数人が署名を行う場合、この署名を単一の署名にまとめる技術である。集約署名と同じように、署名サイズが小さくなる点がメリットである。
集約 MAC および集約署名については、現時点で具体的なサービス等の提供は行われていないが、ITU により廣瀬らによる方式 [54]、佐藤らによる方式 [55] の
技術内容の標準化が行われている [56]。また、この技術を用いた認証関連のデー
タ量の削減効果を考慮し、認証に係るインターネット上のトラフィック量削減を目的とする活用に関する研究が行われている [57]。
マルチ署名は、暗号資産 Bitcoin やブロックチェーンプラットフォームである18

Ethereum におけるマルチシグウォレットにおいて活用されている。マルチシグ
ウォレットは、複数のユーザが共同利用することを前提とし、取引の実行には全てのユーザの同意が必要となるものであり、同意形成の仕組みとしてマルチ署名が利用されている。例えば、信頼できる第三者に署名生成鍵を委託することにより、他のユーザによる不正送金等を防ぐことを目的に利用される [58, 59]。
■グループ署名

グループ署名は、署名者があるグループの一員であることは明示的に分かるが、グループ内の誰であるかまでは分からない匿名性を保証することができる署名方式である。一般の署名方式では不可能であった、署名者のプライバ
シ保護、匿名性が必要となるアプリケーションにおいて需要がある。
例えば、プログラム開発での確認作業、いわゆる Attestation において、2000 年
代からグループ署名が利用されるようになった。ここでの Attestation とはプログラムが製造者やユーザの意図した通りに動作しているかを確認するための処理であり、ブート結果や周辺機器の接続状況等の予め想定された処理結果に対して
デジタル署名をつけて正当性を確認できるようにするものである。集中管理するケースにおいては通常のデジタル署名や PKI を利用した場合、Attestation をしたエンティティの活動に対するプライバシ侵害が起こりうるため、グループ署名を利用してそれを回避する仕組みが取られることが多い。
また、ISO/IEC において、標準化も行われている [60, 61]。
■リング署名

リング署名では、署名者があるグループの一員であることは明示的に分かるが、グループ内の誰であるかまでは分からない匿名性を保証する署名方式である。一般の署名方式では不可能であった、署名者のプライバシ保護、匿名性が必要となるアプリケーションにおいて需要がある。この意味では、グループ
署名と同じ効果を有する署名方式である。ただし、グループ署名とは異なり、グループ管理者を置く必要がなく、署名生成時に柔軟にグループを選ぶことができるという点で、グループ署名とは異なっている。
グループ管理者を置かないことにより、グループ生成を柔軟にできることはメリットであるが、逆に、署名者の誰かが不正を行った場合に、不正を行った署名者が誰かを特定することは困難である、というデメリットもある。グループ署名を使用するか、リング署名を使用するかは、その利用環境に応じて決められるべきことである。例えば、署名を生成できるユーザを管理者が認可したユーザだけに絞りたい場合はグループ署名を使用する。この場合、管理者に対して、署名者の匿名性を担保することは困難となる。これに対し、リング署名の場合は完全な匿名性を担保したい場合に使用する。グループ署名とは逆に、署名者を管理する管理19

者がいないため、誰でも署名を生成することができる。
リング署名は、実用事例は少ないが、活動が盛んになっている暗号資産において使われている [62]。
■しきい値署名

しきい値署名は、「シェア」と呼ばれるある情報の分散情報を利用する。まず、一つの平文に対し、複数の署名鍵のシェアを用いて署名のシェアを生成する。この署名のシェアをあるしきい以上集めて、結合することで真の署名を生成する方式である。検証鍵は一つだけであり、各署名シェアではなく、真の署名の検証時に利用する。平文の正当性を一人の署名だけで確認するのではなく、
しきい値以上の複数人の署名、すなわち、複数人が個々に平文を確認し、署名することにより、複数人が確認した平文となる。しきい値署名では、この複数人が生成した署名を、一度に検証することができる。
暗号資産における鍵漏洩への対策としてしきい値署名が使われることが多くなっている。例えば、しきい値署名の利用例として Bitcoin 等での利用が挙げられる。Bitcoin ではマルチ署名のような複数の署名者によるトランザクションの生成が可能である。しかし、この方法では複数の署名を必要とするため、ストレージ
効率が悪いことや、署名者の構成が公開されてしまう等のデメリットがある。一方、しきい値署名はオフチェーンで利用することが前提となるが、複数の署名者がしきい値署名を使って署名の断片を作り、その署名を集めて一つの有効な署名としてトランザクションを生成する。この署名は単一の署名値でありマルチ署名に比べてストレージ効率が良く、署名者の構成が署名値からは分からない。ここでのオフチェーンとは直接ブロックチェーンの処理に組み込まれることのない処理のことを指している。
そして、このオフチェーン処理の署名について、特に Bitcoin が利用する署名方式を ECDSA からシュノア署名に置き換わるにあたり、しきい値署名の利用が推進される可能性が種々報告されている [63]。また、暗号資産 quredo のイエローペーパーではしきい値署名が使用され [64]、フレセッツ社では HSM を利用した
しきい値署名 [65] による Ethereum 秘密鍵保護方式 [66]、Coinbase 社では DApp

Wallet [67] と呼ばれる暗号資産用のアプリで採用しているようであり、分散型のブロックチェーンを開発するプロジェクトである DFINITY ではスマートコント
ラクト canister が保持する Bitcoin や Ethereum の鍵をしきい値 ECDSA にする提案（V.Shoup） [68] 等の報告がある。
これに応じて、標準化活動もおこっている。アメリカ国立標準技術研究所（National Institute of Standards and Technology, NIST) では、2019 年にしきい値暗号に関する NIST の標準化の目的等について記述された NISTIR 8214 [69] が20

発行され、さらに 2020 年にそのロードマップとなる NISTIR 8214A が発行された [70]。そして、2021 年 9 月にフィードバックの締切があり、2022 年 8 月に開発者向けガイドラインと推奨の 8214B が発行された [71]。また、IETF では、標準化提案が行われ、標準化プロセスが始められている [72]。

2.4.3 その他の高機能暗号の活用事例と標準化動向■秘密分散

秘密分散法は、その名の通り秘密情報を何らかのグループのメンバー間で分散する暗号技術の一種である。秘密鍵などの秘密情報を保管する際は、その秘密情報の紛失、破損、盗難、漏洩といった脅威を考慮する必要がある。破損や紛失については情報のコピーを作ることで対策できるが、コピーが増えれば増えるほど盗難や漏洩のリスクが高まる。これを解決するため、秘密分散法は秘密情報を「シェア」と呼ばれる複数のデータに分割し、これを複数の当事者間で分散して保管する。このシェアは、ある定められた組み合わせを揃えたときのみ元の秘密情報が復元でき、また、復元の条件を満たさないシェアを揃えても、元の秘密に関する情報が漏れないように作られる。最もシンプルでよく用いられる「組み合わせ」の例はしきい値型である。すなわち、n 個のシェアのうち、k (≤ n) 個のシェアを集めることで秘密が復元できるような方式である。
上述の特徴の通り、秘密分散法の直接的な応用は分散ストレージサービスである。秘密分散法を用いて分散保管することで、データの秘匿性を保証しながら冗長性を確保することが可能となる。そして、この冗長性の確保により、一部のストレージに障害が起きた場合への耐性を取ることが可能となる。具体的なアプ
リケーションとしては、文書管理システムやコンテンツ配信システムなどへの適用事例がある [73]。自然災害の多い日本国においては、事業継続計画（BusinessContinuity Plan，BCP） 対策は重要な課題であると認識されており、とりわけ
東日本大震災の直後は、Azure 等のクラウドストレージサービスを利用しながら世界中のサーバにデータを秘密分散するサービス [74] が登場するなど、セキュリ
ティと災害対策を両立する技術として活用されている。
ま た 、計 算 量 的 な 秘 密 分 散 法 と し て 知 ら れ る All-Or-Nothing Transform（AONT）を利用したものでは、Shin らによる AONT [75] を用いたサービスがZenmuTech 社によって実装され、近年実用化されている [76]。
秘密分散法の応用は分散保管にとどまらず、様々な暗号プロトコルの要素技術としても用いられている。特に、複数のエンティティで一つの計算を行うマルチ
パーティ計算との関連が深い。近年ではブロックチェーンと組み合わせた秘密鍵の分散管理システムなどへの応用もあり、マルチパーティ計算と組み合わせるこ
21

とで暗号資産等の秘密鍵を安全に運用する手段として注目されている [77]。
標準化も進められており、ISO/IEC SC27 WG2 においては、秘密分散法の定義、記法、代表的な方式の標準規格が発行されている [78]。現在の規格では、5 つの代表的な方式が記載されている。1 つ目は、しきい値型の完全秘匿性を達成する

Shamir の秘密分散法 [79] であり、今日においては最もよく知られた方式である。
完全秘匿性とは、攻撃者が無限の計算能力を持っていたとしても破ることができな秘匿性のことである。2 つ目は、完全秘匿性の要件を緩和する代わりに、シェアのサイズを秘密情報のサイズより小さくするランプ型秘密分散法（Ramp Secret

Sharing） [80, 81] であり、Shamir の秘密分散法の一般化として構成される。3 つ目は、加法型秘密分散法（Additive Secret Sharing）と呼ばれる手法に基づく、一般的なアクセス構造を実現する秘密分散法 [82] である。これは、秘密情報へのア
クセスを許されるシェア集合と、許されないシェア集合を指定可能な秘密分散法
であり、しきい値型よりも柔軟なアクセス構造を導入することが可能である。4 つ目は、複製型秘密分散法（Replicated Secret Sharing）と呼ばれる手法に基づく、
一般的なアクセス構造を実現する秘密分散法 [83] である。この方式も、任意のアクセス構造を実現することが可能である。こちらの方式はシェアのサイズがパーティ数に対して大きいが、方式の特殊ケースは近年の効率的なマルチパーティ計
算にも利用されている [84, 85]。5 つ目は、計算量的安全な秘密分散法 [86, 87] である。これは、情報理論的に安全な秘密分散法と共通鍵暗号を組み合わせることで実現でき、情報理論的な秘密分散法と比較してシェアサイズが大幅に削減できることが知られている。
■マルチパーティ計算

マルチパーティ計算（Multi-Party Computation，MPC）は、複数の参加者（マルチパーティ）が自身の秘密情報を秘匿しながら、それらの秘密情報を入力とする種々の関数をパーティ間で協調計算することを可能とする技術である。MPC には、大きく分けて秘密分散法をベースにしたものと、Garbled

Circuit をベースにしたものがある。前者は後者に比べて参加者間で複数回の通信を必要とする代わりに、計算量・総通信量が小さい傾向にある。また、両者ともに参加者のうち一定数が結託しないという仮定の下で安全性が保証される。そして、標準的な公開鍵暗号では困難であった暗号化しながらの計算処理が、MPC では可能となる。また、準同型暗号と比較した場合、通信量や計算量に優れるため、処理のスループットが高いという特徴がある。
秘密分散法をベースにした MPC 方式の活用事例として、個人の秘密情報を秘匿したまま、統計情報の計算・機械学習等のデータ分析を行うサービス提供がある [88]。例えば、病院の臨床データの分析のために、ディープラーニングをする
22

際、入力に対してマルチパーティ計算させることで、平文の入力データを誰にも知られることなく、分析結果を得ることができる。秘密分散法がベースであるため、前述の秘密分散の項で説明したように、入力データはシェアと呼ばれるデータに分割され、複数の入力データシェアが作成される。その後、マルチパーティ計算を行う複数のサーバにそれぞれの入力データシェアが入力される。入力シェアを得たサーバは、ディープラーニング用にサーバ独自の計算を行うとともに、別のサーバと通信をすることで、分析結果データを分割したものとなる出力シェアを生成する。この出力シェアを全部集めて合成することで、分析結果を得る方法である。
さらに、複数の医療機関が保持するゲノム情報や診療情報を統合して解析することにも応用されている [89]。このゲノム情報は非常に機微性の高い情報であり、漏洩は絶対に許されない。そこで、MPC を用いてデータ秘匿性を守りながらデータを収集し、医療・医学に活用する方法としている。
さらに、国外でも、政府の持つ TAX Records と STUDENT Records より、教育と年収の関係、大学在学中のアルバイトと留年の関係、大学の学問分野とアルバイト量の関係を分析 [90] したり、エネルギー消費の最適化を行うために大手企業の産業データを秘匿化して収集し分析するエネルギー供給の最適化 [91] 等、多くの応用例がある。また、国内外で多くのスタートアップ等による活用が進んでおり、コミュニティの形成を通じた知見の共有、企業間の連携が進んでいる [92]。
さらに、秘密計算技術が広く社会実装され、クラウドサービスのデータ保護に対する不安の払拭や、組織や企業の枠を超えたデータ利活用により新たな価値が創出されることを目的とし、様々な秘密計算方式を俯瞰した実用的かつ客観的な安全性基準や、ユーザが秘密計算を活用する際の参考となる指針の検討、ホームページ
やイベントを通じた、上記基準や指針の検討状況、方式の性能等に関する技術資料
や先端事例の情報発信 [93]、秘密計算を中心としたプライバシ保護関連技術に関連する情報発信、および、個人情報保護法の改正を始めとしたデータ活用とプライ
バシ保護がコンフリクトしている現状に対応すべく、法令遵守したデータ活用やプライバシ保護テクノロジの勉強会や情報発信を行っている団体もある [94]。さらに、NIST はプライバシに関するプロジェクト Project on Privacy-Enhancing

Cryptography（PEC）の中で、MPC の普及に務めている [95]。
標準化も進められており、現在、ISO/IEC SC27 WG2 において、秘密分散型
MPC の定義、記法、代表的な方式の標準化に向けたドラフト作成が進められている [96]。
Garbled Circuit をベースにした方式では、2 者計算の様々なシーンで利用されるが、近年では鍵管理の文脈において、秘密鍵を分散して保護しながら、それを23

Garbled Circuit によって復元することなく暗号化・復号・署名等の計算を可能とする Hardware Secure Module（HSM）の代替としての応用が存在する。特に、暗号資産における電子署名の鍵管理手法として注目を集めており、従来の取引所等が集中的に鍵を管理する形態と比べて、鍵管理を集中して行う必要がなくなり、取引所等の単一障害点が排除されており、秘密情報を含む情報漏洩に対しても耐性があり、安全性が高い利点がある [97]。

Garbled Circuit ベースの MPC についての標準化の動向はないが、先に紹介した NIST の PEC プロジェクトにおいては、PEC 技術の一種として Garbled
Circuit に関するワークショップ等での報告が行われている [95]。
■ゼロ知識証明

ゼロ知識証明とは、ある人が他の人に特定の命題を証明したいときに、証明したいこと以外の知識を与えることなく証明する手法であり、以下に示す
完全性、健全性、ゼロ知識性の３つの性質をもつ。

 完全性：証明者の命題が真ならば、検証者は真であることが必ずわかること。
 健全性：証明者の命題が偽ならば、検証者はかなり高い確率で、偽であることを見抜けること。

 ゼロ知識性：あらゆる場合で、検証者が証明者から何らかの知識を得ようとしても、証明者の命題が真であること以上の知識は得られないこと。
ここで証明したい命題には、ある値が規定の範囲内に存在するかの「範囲の証明」
や、任意の演算が正しく実行されたか「演算の証明」がある。一番の特徴は、証明したいこと以外の知識を与えないため、安全性が高いことである。
この特徴を利用して、いろいろな場面での活用が考えられている。例えば、不動産会社と顧客と金融機関の間での取引において「不動産会社は、顧客に対して『住宅を借りるために十分な所得があるか』を証明してほしいと考えている。顧客は、正確な所得金額を明かしたくない。顧客は、命題『一定金額以上の所得がある』ことを、金融機関を通して、ゼロ知識証明により証明する。
」
より具体的には、銀行において、顧客の本人確認を行う時に、正確な数字を明らかにすることなく、給与が特定の範囲内にあることを証明したり（ZKRP）、特定の地域の住人であることを具体的な住所を明かすことなく居住地区の範囲を証明す
ることをゼロ知識証明により行う。そして、ZKRP をオープンソースソフトウェ
アとしてリリースしているケースもある [98]。
また、匿名性のある暗号資産の Zcash においては、zk-SNARK と呼ばれるゼロ
知識証明を用いて、トランザクションを生成することにより、送信アドレスと受信
24

アドレス、送金額を秘匿することができる [99]。
さらに、パブリックブロックチェーンの一番の課題は、BtoC もしくは BtoB
でやりとりされるトランザクションの匿名性の確保である。そこで、パブリック
チェーンの Ethereum 上でトークンのプライベートトランザクション（匿名送金）を可能にするゼロ知識証明を用いたプロトコルが開発されている [100]。ただし、プライベートトランザクションはデータサイズが大きくなり、Ethereum のシステ
ムを稼働させるための手数料にあたる、いわゆる gas 代 の負担が高くなる傾向にあるが、複数の証明のバッチ化の工夫により、コスト負担を軽減させている。
また、標準化を目的とした団体があり、その中には NIST も参加している団体もある。標準化では、ゼロ知識証明を用いたデータプライバシ製品やアプリケー
ションのセキュリティ保証と相互運用性を向上させることを目的としている。そして、作成されたドキュメントでは、理論から実装までの情報がカバーされている [101]。
■Oblivious Random Access Machine （ORAM）

サーバに暗号化データを格納し必要に応じて読み込み/書き込みを行う場合に、データは秘匿されているが、暗号化デー
タへのアクセス頻度等のアクセスパターンの情報からサーバに統計的な部分情報が漏れてしまう。Oblivious Random Access Machine（ORAM）においては、サーバにアクセスパターンを隠しながら、暗号化データの読み込み/書き込みが可能となる。具体的には、ORAM 上で暗号化データに対して読み込み/書き込みを行う
たびに、格納位置をシャッフルするとともに再暗号化することで、各アクセス間の関係を秘匿する。

ORAM を利用して、プライバシ保護を可能としたデータベースサービスが開発されている [102]。このサービスでは、プライバシ保護の安全性指標である差分プ
ライバシの概念に従ったプライバシ保護技術を利用して個別のデータを明らかにすることなくデータ分析を可能とし、ORAM によりアクセスパターンの漏えいを防ぐことができる。また、暗号資産のトランザクションにおいて、マイナーによりトランザクションの順番を、マイナーに有利な順番に操作する攻撃が考えられている。このような攻撃を防ぐために、ORAM を利用した仕組みが開発されている [103]。この攻撃では、マイナーはユーザのアクセスを監視して攻撃を行うが、ORAM を用いることによってアクセスパターンをマイナーに秘匿できることになる。
■Private Information Retrieval （PIR）

ユーザがデータベース（DB）を検索し、ユー

ザに必要な情報を取得するサービスは多数ある。この DB 検索を行うためには、

25

DB に対してクエリと呼ばれる質問を入力し、その質問に対する回答として、DBからファイルやデータ等の検索結果を受け取っている。この際、ユーザは、 質問
内容も個人情報であり、この内容を DB の管理者であっても知られたくない という場合もある。このような情報秘匿を行うために創出されたプロトコルが Private

Information Retrieval（PIR）である。そして、PIR は暗号方式そのものではな
く、暗号方式を用いて、ユーザのプライバシを保護した情報検索法である。
具体的には、ある DB が n 個のデータ D = {D1 , . . . , Dn } を持っている時に、ユーザは質問 i にある処理を施しクエリ qi を作成し、qi を DB に送る。この qi からは i の情報は全く漏洩しないように工夫されている。そして、DB は i に関する情報を何も得られないが、qi を用いてある演算をすることで、検索結果を含む複数の候補を出力することができる。ユーザは、受け取った複数の候補から、所望の Di を抽出する。全体として、DB が得られる情報から i については何の情報も得られないプロトコルとなっている。
具体的な提案としては、Wang らは安全で信頼できるハードウエアの存在を前提として、データベースのアウトソーシングに関する考察を行なった [104]。ここでは信頼できる第 3 者機関（Trusted Third Party，TTP） の存在、非存在の両方について議論されている。当時の解決方法としては、AMD，HP，Intel，Microsoft等が中心となっている Trusted Computing Group（TCG）の仕様に準拠したセキュリティチップ Trusted Platform Module（TPM）や Intel 社による LaGrandeTechnology などの採用を検討していたことが論文からは窺える一方で速度の面から効率的な実装は少なかったと判断される。
コンピュータシステム・ストレージ系の書籍 [105] において PIR を用いた活用
事例でのセキュリティとプライバシを考慮したデータマイニングが実利用される
場合の懸念点が示されている。１）コントロール外のデータの扱い、２）技術的に担保されていたとしても非匿名化の可能性、３）サービスに対する法域外の扱い、
４）法律と現在の技術の対応が未熟、という 4 点である。PIR を適用するデータ
はセンシティブな扱いを要することが容易に想像できるか、上記のような課題が存在していることに留意しなければならない。
近年では 2020 年に Mozaﬀari らによる PIR の改良方式 [106] が広く知られることとなった。この論文の中で以下のようなアプリケーションが列挙されており、幅広い適用が検討されていることが見て取れる。

 インターネット ドメインの登録 Tor サーバのリレー情報の取得
 プライベート メディア配信
26 プライバシを保護する電子商取引アプリケーション
 オープン アクセス電子論文リポジトリでのプライベート クエリ
 メッセージング アプリケーション
 プライベート オンライン通知
 プライベート ファイル共有アプリケーション
また日本でもブロックチェーン技術への応用に関するプレスが 2020 年 6 月に発表されている [107]。Bitcoin 等で利用されている Unspent Transaction Output（UTXO）と呼ばれるトランザクション（価値の移動を表現するフォーマット）のデータベースが運用されていると仮定して、この DB に対して検索を行う際の検索クエリが流出するというプライバシ問題を解決するために PIR を利用するというアナウンスであった。ただし、Bitcoin 関連のイベントに合わせたプレスである
ことや、その後、このプレスを発行した組織は買収されるなどして、その後の動きなどはなく実際には実用化されていないと考えられる。
また、暗号資産のアクセスの秘匿化に使用する実装が報告され、実用化されているている [107]。この実装では、Microsoft から公開されている PIR のオープン
ソースソフトウェア SealPIR [108] が使われている。
■検索可能暗号

一般的な共通鍵暗号や公開鍵暗号では、サーバに暗号化文書を格納した場合に、暗号化すると平文が秘匿されるため、ある暗号文に対応する平文があるキーワードを含んでいるか検索することができない。検索可能暗号においては、サーバにキーワードの暗号文を一緒に格納することにより、検索キーワードを含むかどうか以外の平文の情報をサーバに漏らさずに、暗号文のままキーワード検索が可能となる。
検索可能暗号がもっとも活用される分野として注目されているのはデータベースと言って良い。この場合、データベースには、暗号化されたデータと、暗号化されたキーワードが保存されている。利用者はデータベースに暗号化されたキー
ワードのクエリを送る。データベースは復号鍵を持っていないので、平文のクエ
リを知ることはできない。データベースでは、その暗号化されたクエリと保存されている暗号化キーワードのマッチングを行い、検索結果を得る。検索結果も暗号化されたデータであり、その平文データをデータベースに知られることはない。
暗号化されたクエリにより検索を可能とするデータベースは MIT による

CryptDB [109] を代表に多くの事例がある。CryptDB は Paillier 暗号等、複数の暗号技術を用いて暗号化データベースを実現しており、Cipherbase や SEED、Microsoft 社のシステム等、複数の商用サービスに採用されている。この他にも、

27

学術研究をもとにした著名なオープンソースソフトウェアとして KafeDB [110] 等がある。国内の商用のソリューションとしては、日立製作所はクラウドサービス
として検索可能暗号技術を提供しており [111]、三菱電機もソフトウェアを開発している [112] 等、さまざまなアプローチで活用されている。また、Intel SGX 上で検索可能暗号を実現する技術 [113] 等、多くの実用化研究が行われている。
検索可能暗号の標準化については、IETF において過去に準同型暗号についてのプレゼンテーション等で検索可能暗号についれ触れられていたことがあったものの、標準仕様として議論されるには至っていない。

2.4.4 活用事例からみた高機能暗号の利用方法
ここまで、高機能暗号技術がどのようなものであるか、という視点に立ち、その活用例、実施例、標準化活動を紹介した。本章では、どのようなサービス、応用方法があるか、という視点に立ち、そのサービス、応用にとって、どのような暗号方式で有用であり、実用化されたか、を紹介する。
■プライバシ強化

種々のサービスにおいてプライバシを強化する目的で、秘密計算を利用した暗号を社会実装したケースがある。秘密計算とは、計算を行うサーバ等の装置に対し、ある加工されたデータを渡し、そのサーバ等の装置において計算の元となる値を知られることなく、その結果を計算する方法の総称である。代表的な方式として、準同型暗号（3.1.4 章参照）を用いた方式、秘密分散法（3.3.1
章参照）を用いた方式、マルチパーティ計算（Multi-Party Computation，MPC）（3.3.2 章、3.3.3 章参照）を用いた方式、装置内に組み込まれている信頼できる秘匿されたハードウェア（Trusted Execution Environment，TEE）を用いる方式等が広く知られている。表 2.2 に示す事例は、この秘密計算が有用であると考えられる事例である。これらの中から、数例を以下に紹介する。
例 1．ゲノム解析による実証実験
ゲノム解析に関し、秘密計算を利用した企業と大学の共同実験が行われている [114]。ゲノムは、個人の遺伝子情報の全体であり、究極のプライバシ情報と言える。これまで、ゲノム情報は個別の医療機関で所有しているが、医療機関を超えた連携は、プライバシ情報の漏洩につながるため容易ではなかった。より多くのデータを集めることで、正確でより広範なゲノム解析が可能となるが、このプラ
イバシ保護のハードルを超える必要があった。そこで利用したのが、秘密計算である。
実験の概要を図 2.1 に示す。ここでは、各医療機関が持つデータを加工し、複数
28

表 2.2

秘密計算の応用事例

領域

説明

適用例

統計処理

典型的な統計計算（合計、平均、最売上集計、ログの分析、ゲノム分

大値、最小値）析

複数のデータソースから同じキー

マーケティング、ゲノム分析

突合を持つレコードを突合
スコアリング／ AI 推論

入力および AI モデル等を秘匿しAML（不正送金）

ながら計算
マッチング

連合学習

要求条件を秘匿しながら、条件の秘密オークション、場外の証券取合うレコードを検索

引

連合学習時の AI モデルの保護

特に機微なデータを元にした AIモデルの保護

投票

投票者を秘匿しながら集計

図 2.1

選挙

実証実験１：ゲノム分析（[114] から引用）の別のデータに変換した。具体的には、個々の医療機関が持つゲノム情報や、診療情報のデータを３分割し、秘匿化する。この分割されたデータから、元のゲノム情報や診療情報のデータは復元できないようになっている。いわゆる秘密分散法を用いた方式である。そして、これらの分割され秘匿化されたデータを、それぞれ異なる３台のサーバに分散して保存する。それぞれのサーバでは、受け取ったデータを利用するとともに他のサーバと通信しつつ、あらかじめ定められた演算を行う。これは、MPC 技術の一種であり、入力データの加工方法である秘密分
29

散法と組み合わせ、秘密分散ベース MPC と呼ばれることもある。秘密分散ベー
ス MPC では他のサーバとの通信を行うが、各サーバのデータが漏洩しないように、通信路の暗号化を追加する等、実運用時にはさならる安全性を担保する。

MPC では複数のサーバが必要となる。近年の個人情報漏洩のインシデントを見る限り、何らかのオペレーション時の個人の操作ミスによるものが多い。従って、複数のサーバの管理者を分けるだけでもインシデント対策として効果はある。さらに、サーバ毎に異なる組織、事業者などで管理することで、より安全なシステムが構築できる。
演算を終えた各サーバは、演算結果を分析機関に送る。分析機関では、すべてのサーバからの演算結果を統合する。この統合方法は、入力データの加工方法と、各サーバに定められた演算によって決まるが、秘密分散の逆演算とみなすことができる演算を行う。この秘密分散の逆演算を行うことにより、分析機関では、秘匿化されたデータの可読化を行う。
実験では、この可読化されたデータに対しゲノム分析ツールを用いて、典型的
ゲノム分析、非典型的ゲノム分析の 2 種類の分析を行った。

 典型的ゲノム分析（ゲノム変異分析）：ゲノム変異が起こる割合を年代や性別ごとに集計グラフ化する。

 非典型的ゲノム分析（連鎖不平衡ブロック生成）：世代間の遺伝のし易さを変異場所のブロックで示す分析手法を利用。
これらの実験を通じ、秘密計算の処理の高速性と、分析に秘密計算が適用でき
ることが実証された。
例２．創薬向けの実証実験
創薬向けの予測モデルの構築において、秘密計算を利用した方法の実証実験も行われている [115]。創薬においては、企業毎に種々の原料が使われ、その構造デー
タは各企業の機密情報である。このため、データを企業から持ち出すことや、企業間で共有し、新たな創薬を行うことは困難であった。また、最近では、創薬にも機械学習が多く用いられている。機械学習では、学習によるモデルの構築が必要となるが、学習データが多いほど精度の高い学習が可能となる。このため、図 2.2に示すような、秘密計算を用いた連合学習を行い、モデル構築の実証実験が行われた。
実証実験では、モデル構築に参加する複数の組織を想定している。各組織で個別のデータを用いて機械学習を行う。機械学習により出力されたモデルのパラメー

30‫׼‬՛‫ב״‬ೲฝ֘‫׊‬ᅃቹጮ֪૱్֘‫׊‬ँ஽ᆾ‫׼‬՛‫״‬ँ஽ᆾ‫׼‬՛‫״‬ျ஽ଢ଼֭‫ؠ׼ؗ‬ँ஽ᆾ‫׼‬՛‫״‬図 2.2

実証実験２：創薬向け予測モデル（NEC 提供）

タを、秘密分散し、とりまとめを行う複数のサーバに送る。秘密分散を行う前のデータは、ある意味統計加工されたデータとなっており、ここから元データを知ることは困難である。複数のサーバでモデルを統合するが、その際に秘密計算を利用して統合モデルを作成する。サーバでモデルを統合する場合には、センターと各組織の間で通信するデータはモデルそのものではなく、差分値だけを扱うことで盗聴耐性を持たせることも可能である。
この実証実験では、データを暗号化したまま計算処理ができる秘密計算を用いた複数組織間のデータ統合の有効性を検証した。
例１において、サーバへのデータ入力、データの加工方法はデータを分割する方法が記されているが、加工方法は応用事例に応じて多種多様である。特に、個人のデータを利活用する場合、個人の同意を得ることが、個人情報保護法で求められている。ただし、個人のデータに対しある加工を施すことで、制限はあるものの個人のデータの利活用が可能となっている。この加工技術が、匿名加工や、仮名加工である。

 匿名加工： 各医療機関が、複数のデータを一つにまとめ、外部への提出用
データを作成する。データはまとめられ、加工データから、元データを知ることは不可能なため匿名加工したこととなる。

 仮名加工： 各医療機関では、実名と匿名の対応表を作り、外部への提出用に匿名のデータ表を作成する。匿名化されており、実名を知ることは不可能
なため、仮名加工したこととなる。
これらは、個人情報保護法に対応した個人データの利活用をするためにも、必須の技術となっている。

31

また、商用に供するために、各社で秘密計算のライブラリを整えている。MPC、準同型暗号を用いた方式、TEE を利用した方式など、利用者に合わせて利用できる。これらのライブラリを用いて、ゲノム解析、創薬の実証実験以外にも、

 商店街の活性化のイベントを行う際に、その費用対効果をしるために、各店舗の売上情報を秘密計算を用いて統合分析する統計値処理

 銀行における不正取引リスクを分析するために、各銀行が持つリスクデータを統合して分析するリスク分析の AI
 プラントのログ解析
等、多くの応用が検討されている。第 3 項目のプラントのログ解析は、個人情報保護とは直接は関係がない項目であるが、同じ要素技術で解決策を得られる項目
例として、ここに挙げている。
■データへのアクセス制御−セキュアなパブリッククラウドの利用

企業、団体、組織（以後、組織）からの種々のサービス提供のみならず、組織内における電子データのやりとりにおいては、電子データは的確に保護されなければならない。これらの目的のために、属性ベース暗号や検索可能暗号と呼ばれる高機能暗号技術を利用して、データの保護、データへのアクセス制御を社会実装したケースがある。これ
らの事例を以下に紹介する。
例１．組織内文書管理−属性ベース暗号技術の活用例
組織内の共有スペースに電子データを置き、データの共有をはかることはよく行われている。但し、電子データの中には、一部のメンバだけで共有したいデータもある。この場合、共有するデータにアクセス制御をかける必要がある。さらに、暗号化により他のメンバーに閲覧できないようにすることで、強固なアクセス制
御が可能となる。以下に紹介する社会実装例では、属性ベース暗号（3.1.2 章参照）
を利用して、強固なアクセス制御を実現している。
属性ベース暗号とは、暗号文を復号するための条件を設定し、復号できるユー
ザを制御できる暗号技術である。復号鍵を所有しないユーザは、当然、暗号文を復号することはできない。さらに、復号鍵を持っているユーザであっても、条件に適合しない場合は復号できない。すなわち、暗号化とデータへのアクセス制御が一体化した技術である。
属性ベース暗号の論文での提案時より、活用例として、企業内や学校内での文書管理が記載されている。具体的には、企業内の役員だけが閲覧できる文書、部長以上の役職であれば閲覧できる文書、ある部署（例えば総務部のみ）の職員だけ
32

が閲覧できる文書、社員であれば誰でも閲覧できる文書など、文書の閲覧には閲覧できるユーザに条件がつけられていることが多い。ユーザの役職、所属部署などを属性と見て、職員 A さんは属性（人事部、課長）であり、所属 B さんは属性（総務部、部長）を持つとする。そして、職員 A さんには、属性（人事部、課長）に対応する復号鍵が渡され、人事部あての文書や、課長以上が閲覧できる文書、職員全員が閲覧できる文書が閲覧可能となる。職員 B さんは、属性（総務部、部長）に対応する復号鍵が渡され、総務部あての文書や、部長以上が閲覧できる文書、職員全員が閲覧できる文書が閲覧可能となる。文書の作成者は、閲覧者の属性を意識して、文書を暗号化することになる。ここで紹介した暗号技術が属性ベース暗号となる。より正確には、属性ベース暗号には大きく分けて 2 種類、暗号文に条件を入れる場合と、暗号鍵に条件を入れておく場合があり、ここで紹介した事例は暗号鍵に条件を入れた属性ベース暗号となる。
属性ベース暗号のその他の利用方法として、

 複数の工場や事業所を所有する企業における、ロケーション／役職に応じた文書管理。

 クラウドサービスに文書を保管し、文書毎にアクセス可能な企業を制御できるファイル交換サービス。
などがあり、属性ベース暗号関連のソフトウェアがライブラリとして製品化されている [116, 117]。これらは、Windows ベースで開発されており、各種のインターフェース、ディレクトリサービスとの連携までも考えられている。
例２．DB に保存されたデータの保護−検索可能暗号技術の活用例
組織内、組織外を問わず、電子データをサーバに置いて管理することはよく行われている。電子データはサーバ内のデータベース（DB）で管理され、ユーザからのデータ追加や検索などに応じている。通常、サーバもしくはＤＢの管理者はＤＢ
内のデータを閲覧できる。悪意のある管理者であれば、データを悪用することは容易である。管理者の善意に頼るのみではなく、技術的な対策も求められる。さ
らに、近年はサイバー攻撃が多くなり、この対策も求められている。このため、Ｄ
Ｂのデータを管理者やサイバー攻撃者が知らない鍵によって暗号化することが対策として考えられてきた。さらに、ユーザからの検索キーワードも暗号化することで、何を検索しているのか等の情報も漏洩しないことが求められている。これ
らの要求に応える技術として、検索可能暗号（3.3.7 章参照）を利用した社会実装
例を以下に紹介する。

33

検索可能暗号とは、データベース（DB）に暗号化されたデータを復号することなく検索できる暗号技術である。DB 内のデータはすべて暗号化されているため、DB が保管されているサーバが攻撃され、データが漏洩したとしても、安全性が担保できる。さらに、検索のためのキーワードも暗号化されているため、暗号化されていない通信路を経由しての検索であっても安全である。さらに、暗号化されたキーワードや、データをサーバ内で復号することがないため、サーバの管理者に対しても安全性が担保される。
従来、DB のデータは平文で管理されていた。もしくは、DB に平文データが入力された後、DB が暗号化を行い、暗号化されたデータを保存していた。前者のように DB で平文を管理する場合、検索も高速である。すなわち、平文の検索キー
ワードにより検索が行われるためである。ただし、DB にアクセス可能なユーザであったり、サイバー攻撃によって DB の中身が漏洩する場合を考えると、情報漏洩のリスクは高いものであった。また検索キーワードも平文であり、検索キーワー
ドからも情報が漏洩していた。後者のように、DB が暗号化を行う場合は、ＤＢに保存されているデータは安全に保存される。ただし、検索はやや遅くなる。すな
わち、データの検索時には、保存されている暗号文を復号した後に、検索キーワー
ドとのマッチングを行い検索結果を出力するため、暗号文を復号する時間が必要となる。さらに、セキュリティの観点からすると、DB の管理者が悪意を持つ場
合、および、サイバー攻撃に DB がさらされた場合、情報漏洩のリスクが大きくなる。すなわち、どちらの場合も、ＤＢが保存している秘密鍵の漏洩が考えられる。
秘密鍵の漏洩は、ＤＢが保存しているすべての暗号化データが平文データとなって漏洩することと同じ結果となる。また、メモリ解析もセキュリティリスクの一つであり、攻撃として考えられる。すなわち、検索処理は多くの場合、サーバのメ
モリ上で行われる。このため、管理者やマルウェアがメモリを監視することで平文情報がわかってしまう可能性がある。
これらのセキュリティリスクを回避する目的で開発された技術が検索可能暗号である。検索可能暗号を利用することで、ＤＢに保存されているデータは暗号化され、さらに、復号鍵をＤＢは所持していない。すなわち、ＤＢの管理者が悪意を持って情報を漏洩させた場合、および、サイバー攻撃にＤＢがさらされたとしても、漏洩するのは暗号化されたデータだけであり、復号鍵は漏洩しない。さらに、
検索キーワードも暗号化されており、ＤＢ内で復号されることはないため、検索キーワードからの情報漏洩もない。
検索可能暗号の実装例として、

 クラウドにＤＢ管理を委託した場合に、ＤＢ内のデータを検索するセキュア
34

•
•
•

図 2.3

社会実装例：パブリッククラウドを用いたデータ共有

なアクセスを可能とする秘匿検索サービスなどがあり、検索可能暗号関連のソフトウェアがライブラリとして製品化されている [118]。
例３．パブリッククラウドを用いたデータ共有
多くの企業、団体、組織（以後、組織）では協業の効率化等の目的でパブリックク
ラウドを利用する機会が多くなっている。例えば、自組織のサービスをパブリック
クラウド上で展開したり、逆に、他組織のサービスを利用する際に利用することもある。さらに、パブリッククラウド上で展開されている機能／ライブラリ群なども多くなったこともあり、パブリッククラウドの活用が加速されている。このよ
うな状況下で、パブリッククラウドに置かれるデータの安全性を担保する目的で、属性ベース暗号と検索可能暗号の両方を社会実装したケースがあるので紹介する。
複数の組織で電子データを共有する場合にパブリッククラウドを利用すること
で、サービスの効率化を図れる場合がある。組織が所有する電子データが少ない
場合、他組織と共有する電子データの量が少なく、関連する他組織の数も少なくなる。このような場合には、情報を共有するとしても、メールにデータを添付した
り、記録媒体で渡すなどの、小規模な手段で情報共有が可能であった。これに対し、近年では、組織が持つ電子情報が膨大になり、他組織と共有する電子データの量が多くなり、関連する他組織の数も多くなり、状況が大きく変わっている。
例えば（図 2.3 参照）、ある組織（M 社）が業務効率化のために、他組織（A 社）と別の他組織（B 社）に作業委託を行うことがあり、M 社と A 社、B 社は機密デー

35タや顧客データを共有することもある。そして、A 社と共有する情報と B 社と共有するデータには、共通のデータもあり、異なるデータもある。そして、M 社は、社内にオンプレミス型の巨大な DB（オンプレ DB）が構築されていることはよくある状況である。委託先 A 社、B 社は M 社にとっては他組織であるため、M 社のオンプレ DB に A 社や B 社がアクセスすることは、委託に関係しないデータへのアクセスに対する危惧もあり、セキュリティ上の理由で好まれない。このため、パブリッククラウド（以後、サーバ）を利用して、オンプレ DB の中の共有すべきデータだけをサーバに置き、テンポラルな DB（テンポラリ DB）を作成し、A社、B 社とデータ共有を行うことが考えられている。
テンポラリ DB を利用し、オンプレ DB 内の必要最小限のデータ共有であったとしても、M 社にとっては機密データであるため、このデータ共有を安全に行うことは重要である。さらに、利用するサーバの管理者は、容易にテンポラリ DBに置かれたデータにアクセスできる。さらには、サーバがパブリックであるが故に、サーバの管理者、M 社、A 社、B 社とは関係のない、不特定多数のユーザがアクセスする可能性もある。
このような状況であっても、テンポラリ DB に置かれた機密データを保護するために、属性ベース暗号と検索可能暗号を利用する。M 社が共有するデータをテ
ンポラリ DB に置く際に、委託に必要なデータを抽出して、“A 社のみが閲覧できるデータ”、“B 社のみが閲覧できるデータ”、“A 社と B 社の両方が閲覧できるデータ” の 3 種類に分類する。そして、属性ベース暗号を利用して、“属性 A”、“属性 B”、“属性 A または属性 B” の属性を持つ復号鍵であれば、復号できるようにそれぞれのデータに対して暗号化を行い、暗号文をテンポラリ DB に置く。そして、A 社には “属性 A” を持つ復号鍵を、B 社には “属性 B” を持つ復号鍵を配布しておく。また、これらのデータを検索できるように、共有するデータからキーワードを抽出し、検索可能暗号を用いて、キーワードを暗号化し、テンポラリ DBに置く。A 社、B 社はテンポラリ DB のデータを閲覧する際、まず、検索キーワー
ド（クエリ）を検索可能暗号を用いて暗号化して、暗号化クエリをテンポラリ DBに送る。テンポラリ DB では、検索可能暗号の検索機能を用いて検索結果を出力し、A 社もしくは B 社に返送する。
検索結果を受領した A 社もしくは B 社では、属性ベース暗号の復号鍵を用いて、受領したデータを復号するが、A 社が持つ復号鍵は “属性 A” を持ち、B 社が持つ復号鍵は “属性 B” を持つ。このため、A 社は、“A 社のみが閲覧できるデータ” と “A 社と B 社の両方が閲覧できるデータ” を復号することができるが、“B社のみが閲覧できるデータ” を復号することはできない。逆に、B 社は、“B 社の36

みが閲覧できるデータ” と “A 社と B 社の両方が閲覧できるデータ” を復号することができるが、“A 社のみが閲覧できるデータ” を復号することはできない。
この一連の属性ベース暗号と検索可能暗号の実装により、データ閲覧に対するアクセス制御と、いわゆる秘匿検索、暗号化したままでの検索が可能となり、テン
ポラリ DB 内データに対する不要なデータ閲覧を防ぎ、キーワードからの情報漏洩を防いでいる。

参考文献[1] CRYPTREC: “電子政府における調達のために参照すべき暗号のリスト”.
https://www.cryptrec.go.jp/list/cryptrec-ls-0001-2012r6.pdf.
[2] S. Mitsunari: “MCL: a Portable and Fast Pairing-Based Cryptography
Library”. GitHub Repository.
[3] Stanford University: “The Pairing-Based Cryptography Library”. https://crypto.stanford.edu/pbc/.
[4] Voltage: “Voltage SecureMail”. https://www.microfocus.com/en-us/
cyberres/data-privacy-protection/secure-mail.
[5] N. Suilvan: “Geo Key Manager: How It Works”. The Cloudﬂare Blog,
https://blog.cloudflare.com/geo-key-manager-how-it-works/.
[6] IETF: “RFC 5091: Identity-Based Cryptography Standard (IBCS)#1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems”.
[7] IETF: “RFC 5408: Identity-Based Encryption Architecture and Supporting Data Structures (January 2009)”.
[8] IETF: “RFC 5409：Using the Boneh-Franklin and Boneh-Boyen IdentityBased Encryption Algorithms with the Cryptographic Message Syntax(CMS)”.
[9] IETF: “RFC 6267：MIKEY-IBAKE: Identity-Based Authenticated Key
Exchange (IBAKE) Mode of Key Distribution in Multimedia Internet
KEYing (MIKEY)”.
[10] IETF: “RFC 6539：IBAKE: Identity-Based Authenticated Key Exchange”.
[11] IETF: “RFC 6507：Elliptic Curve-Based Certiﬁcateless Signatures for
Identity-Based Encryption (ECCSI)”.
[12] IETF: “RFC 6508：Sakai-Kasahara Key Encryption (SAKKE)”.
[13] IEEE: “IEEE Std 1363.3-2013 - IEEE Standard for Identity-Based Cryptographic Techniques using Pairings”.
37

[14] ISO/IEC: “ISO/IEC 18033-5:2015 - Identity-Based Ciphers”.
[15] D. K. Smetters and G. Durfee: “Domain-Based Administration of IdentityBased Cryptosystems for Secure Email and IPSEC”, USENIX Security
Symposium 2003 (2003).
[16] S. Ruoti, N. Kim, B. Burgon, T. W. vander Horst and K. E. Seamons:“Confused Johnny: When Automatic Encryption Leads to Confusion and
Mistakes”, Usable Privacy and Security, ACM (2013).
[17] S. Ruoti, J. Andersen, T. Hendershot, D. Zappala and K. E. Seamons:“Private Webmail 2.0: Simple and Easy-to-Use Secure Email”, User Interface Software and Technology, ACM, pp. 461–472 (2016).
[18] S. Meiklejohn, K. Mowery, S. Checkoway and H. Shacham: “The Phantom
Tollbooth: Privacy-Preserving Electronic Toll Collection in the Presenceof Driver Collusion”, USENIX security symposium, Vol. 201, No. 1 (2011).
[19] L. Veltri, G. Morabito, S. Salsano, N. Blefari-Melazzi and A. Detti: “Supporting Information-Centric Functionality in Software Deﬁned Networks”,
IEEE ICC 2012 (2012).
[20] M. Santos, B. D. Oliveira, C. Margi, B. Astuto, T. Turletti, I. S. Antipolis
and K. Obraczka: “Software-Deﬁned Networking Based Capacity Sharing
in Hybrid Networks”, IEEE ICNP 2013 (2013).
[21] M. Santos, B. Astuto, K. Obraczka, T. Turletti, B. D. Oliveira and
C. Margi: “Decentralizing SDN’s Control Plane”, IEEE Conference on
Local Computer Networks 2014 (2014).
[22] 三 菱 電 機 IT ソ リ ュ ー シ ョ ン ズ：“パ ッ ケ ー ジ プ ラ ス (R) ト ラ ン ス
ポ ー タ ー”. https://www.mdsol.co.jp/products/general_affairs/
transporter.html.
[23] テ キ サ ス 大 学：“Ciphertext-Policy Attribute-Based Encryption：PBC(Pairing-Based Cryptography) ライブラリ（C ライブラリ）を利用したライブラリ”. http://acsc.cs.utexas.edu/cpabe/.
[24] “Java Pairing-Based Cryptography Library (JPBC): [GGH+13] 方式を利用した Java による高機能暗号ライブラリ”. http://gas.dia.unisa.it/
projects/jpbc/.
[25] “OpenABE: [27] 方式の変形版を利用した C/C++ オープンソースライブラリ”. https://github.com/zeutro/openabe.
[26] S. Garg, C. Gentry, S. Halevi, A. Sahai and B. Waters: “Attribute-Based38Encryption for Circuits from Multilinear Maps”, CRYPTO 2013, Vol. 2,
Springer-Verlag, pp. 479–499 (2013).
[27] V. Goyal, O. Pandey, A. Sahai and B. Waters: “Attribute-Based Encryption for Fine-Grained Access Control of Encrypted Data”, ACM CCS 2006,
pp. 89–98 (2006).
[28] AACS: “Advanced Access Content System (AACS) Introduction and Common Cryptographic Elements Book”. https://aacsla.com/wp-content/
uploads/2019/02/AACS_Spec_Common_Final_0953.pdf.
[29] D. Naor, M. Naor and J. Lotspiech: “Revocation and Tracing Schemes forStateless Receivers”, CRYPTO 2001, Springer-Verlag, pp. 41–62 (2001).
[30] https://aacsla.com/.
[31] NICT, 神戸大学, エルテス：“プライバシー保護深層学習技術を活用した不正送金検知の実証実験において金融機関 5 行との連携を開始”. https://www.nict.go.jp/press/2020/05/19-1.html, https://www.kobe-u.ac.
jp/research_at_kobe/NEWS/collaborations/2020_05_19_01.html.
[32] “DeepProtect”. https://deepprotect.nict.go.jp/.
[33] L. T. Phong, Y. Aono, T. Hayashi, L. Wang and S. Moriai: “PrivacyPreserving Deep Learning via Additively Homomorphic Encryption”,
Vol.13, No.5, pp. 1333–1345 (2018).
[34] 日本経済新聞：“Suica 履歴を「秘密計算」データの中身、読まずに分析”.
https://www.nikkei.com/article/DGXZQOUC233NT0T20C21A6000000/.
[35] P. Paillier: “Public-Key Cryptosystems Based on Composite Degree Residuosity Classes”, EUROCRYPT 1999, Springer-Verlag, pp. 223–238 (1999).
[36] Z. Brakerski, C. Gentry and V. Vikuntantathan: “(Leveled) Fully Homomorphic Encryption without Bootstrapping”, ITCS 2012, ACM, pp.
309–325 (2012).
[37] J. Cheon, A. Kim, M. Kim and Y. Song: “Homomorphic Encryption
for Arithmetic of Approximate Numbers”, ASIACRYPT 2017, Vol. 1,
Springer-Verlag, pp. 409–437 (2017).
[38] “HElib (Homomorphic Encryption library)”.
https://github.com/
homenc/HElib.
[39] Z. Brakerski: “Fully Homomorphic Encryption without Modulus Switchingfrom Classical GapSVP”, CRYPTO 2012, Springer-Verlag, pp. 868–886(2012).

39[40] J. Fan and F. Vercauteren: “Somewhat Practical Fully Homomorphic Encryption”. ePrint 2012/144.
[41] “Simple Encrypted Arithmetic Library”. https://www.microsoft.com/
en-us/research/project/microsoft-seal/.
[42] “HEAAN”. https://github.com/snucrypto/HEAAN.
[43] L. Ducas and D. Micciancio: “FHEW: Bootstrapping Homomorphic Encryption in Less Than a Second”, EUROCRYPT 2015, Springer-Verlag,
pp. 617–640 (2015).
[44] I. Chillotti, N. Gama, M. Georgieva and M. Izabachène: “Faster Fully Homomorphic Encryption: Bootstrapping in Less Than 0.1 Seconds”, ASIACRYPT 2016, Springer-Verlag, pp. 3–33 (2016).
[45] “PLISADE”. https://palisade-crypto.org/.
[46] “Lattigo”. https://github.com/ldsec/lattigo.
[47] “CRYPTOLAB”. https://www.cryptolab.co.kr/eng/product/heaan.
php.
[48] “Homomorphic
Encryption
Standardization”.
https:
homomorphicencryption.org/standard/.
[49] ISO/IEC: “ISO/IEC 18033-6:2019 - Homomorphic Encryption”. https://www.iso.org/obp/ui/#iso:std:iso-iec:18033:-6:ed-1:v1:en.
[50] NuCypher: “Umbral: A Threshold Proxy Re-Encryption Scheme”.
https://raw.githubusercontent.com/nucypher/umbral-doc/master/umbral-doc.pdf.
[51] ITmedia: “東 芝「 デ ジ タ ル 貸 金 庫 」”. https://www.itmedia.co.jp/
pcuser/articles/1211/21/news053.html.
[52] 川 合, 小 関, 柴 田, 大 松：“属 性 ベ ー ス 署 名 を 用 い た ブ ロ
ッ ク チ ェ ー ン”, DICOMO2017, 情 報 処 理 学 会, pp. 669–671(2017). https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=190099&file_id=1&file_no=1.
[53] 堀川, 高谷, S. Z. Fazekas, 山村：“属性ベース署名を用いた匿名シングルサ
インオンの提案” (2017). https://www.kurims.kyoto-u.ac.jp/~kyodo/
kokyuroku/contents/pdf/2051-26.pdf.
[54] S. Hirose and J. Shikata: “Non-Adaptive Group-Testing Aggregate MAC
Scheme”, ISPEC 2018, Springer-Verlag, pp. 357–372 (2018).
[55] S. Sato and J. Shikata: “Interactive Aggregate Message Authentication

40

Scheme with Detecting Functionality”, AINA 2019, Springer Nature, pp.
1316–1328 (2019).
[56] ITU-T: “Recommendation ITU-T X.1366: Aggregate message authentication schemes for Internet of things environment”. https://www.itu.int/
ITU-T/recommendations/rec.aspx?rec=14262&lang=en.
[57] 日本ネットワーク・オペレーターズ・グループ：“アグリゲート署名を用いた
bgpsec の改良”. https://www.janog.gr.jp/meeting/janog43/program/
bgpsec/.
[58] ARMORY: “Armory Secure Wallet”. https://www.bitcoinarmory.com/.
[59] “ERC: Standard API for multisig wallet smart contracts #763”. https://github.com/ethereum/EIPs/issues/763.
[60] ISO/IEC: “ISO/IEC 20008-2:2013 - Information technology - Security techniques ― Anonymous digital signatures ― Part 2: Mechanisms using a group public key”. https://www.iso.org/standard/
56916.html, https://www.iso.org/obp/ui/#iso:std:iso-iec:20008:-2:ed-1:v2:en.
[61] ISO/IEC: “ISO/IEC 11889 - ISO/IEC 11889-1:2015 - Information technology ―Trusted platform module library ― Part 1: Architecture”.
https://www.iso.org/standard/66510.html.
[62] S. Noether: “Ring Conﬁdential Transactions”. ePrint 2015/1098.
[63] P. Wuille, J. Nick and T. Ruﬃng: “Bitcoin Improvement Proposal 340”
(2020). https://github.com/bitcoin/bips/blob/master/bip-0340.
mediawiki.
[64] K. McCusker and B. Spector: “Qredo Network” (2020). https://www.
qredo.com/qredo-yellow-paper.
[65] J. Doerner, Y. Kondi, E. Lee and A. Shelat: “Secure Two-party Threshold
ECDSA from ECDSA Assumptions”. ePrint 2018/499.
[66] フレセッツ株式会社：“世界初、フレセッツが hsm を活用した完全オフライ
ン環境でのセキュアなマルチシグ実装に成功” (2020). https://prtimes.
jp/main/html/rd/p/000000017.000028896.html.
[67] Coinbase 株 式 会 社：“What is a Dapp Wallet”.
https://help.
coinbase.com/en/coinbase/trading-and-funding/trade-on-dex/
what-is-a-dapp-wallet.
[68] DFINITY: “Threshold ECDSA Signatures”. https://forum.dfinity.

41

org/t/threshold-ecdsa-signatures/6152.
[69] NIST: “Threshold Schemes for Cryptographic Primitives: Challenges andOpportunities in Standardization and Validation of Threshold Cryptography”. https://csrc.nist.gov/publications/detail/nistir/8214/
final.
[70] NIST: “NIST Roadmap Toward Criteria for Threshold Schemes for Cryptographic Primitives”. https://nvlpubs.nist.gov/nistpubs/ir/2020/
NIST.IR.8214A.pdf.
[71] NIST: “NIST Roadmap Toward Criteria for Threshold Schemes
for Cryptographic Primitives”. https://csrc.nist.gov/news/2022/
nist-requests-comments-on-ir-8214b-initial-public.
[72] IETF: “Two-Round Threshold Signatures with FROST”. https://
datatracker.ietf.org/doc/draft-irtf-cfrg-frost/.
[73] 保坂, 多田, 加藤：“秘密分散法とその応用”, 東芝レビュー, 62, 7 (2007).
[74] “NRI: Windows Azure と秘密分散法を利用したセキュリティ性の高い「世界分散ストレージサービス」”, https://cloud.watch.impress.co.jp/
docs/column/cloud/493419.html.
[75] S. Shin, S. Yamada, G. Hanaoka, Y. Ishida, A. Kunii, J. Oketani, S. Kunii and K. Tomomura: “An Extended CTRT for AES-256”, WISA 2019,
Springer-Verlag, pp. 79–91 (2019).
[76] “ZENMU-AONT に関する論文が 国際会議で best paper premium awardを受賞”, https://www.atpress.ne.jp/news/191661.
[77] “Alchemy - What is MPC wallet?”, https://www.alchemy.com/
overviews/mpc-wallet.
[78] “ISO/IEC 19592-2:2017 Information technology - Security techniques Secret sharing - Part 2: Fundamental mechanisms”.
[79] R. Cleve, D. Gottesman and H.-K. Lo: “How to Share a Quantum Secret”,
Physical Review Letters, 83, 3, pp. 648–651 (1999).
[80] G. R. Blakley and C. Meadows: “Security of ramp schemes”, CRYPTO
1984, Springer-Verlag, pp. 242–268 (1984).
[81] 山本：“(k, L, n) しきい値秘密分散システム”, 電子通信学会論文誌, J68-A,
9, pp. 945–952 (1985).
[82] M. Itoh, A. Saito and T. Nishizeki: “Secret Sharing Scheme Realizing
General Access Structure”, IEEE Globecom 1987, pp. 99–102 (1987).

42

[83] R. Cramer, I. Damgård and Y. Ishai: “Share Conversion, Pseudorandom Secret-Sharing and Applications to Secure Computation”, TCC 2005,
Springer-Verlag, pp. 342–362 (2005).
[84] T. Araki, J. Furukawa, Y. Lindell, A. Nof and K. Ohara: “HighThroughput Semi-Honest Secure Three-Party Computation with an Honest Majority”, ACM CCS 2016, pp. 805–817 (2016).
[85] K. Chida, D. Genkin, K. Hamada, D. Ikarashi, R. Kikuchi, Y. Lindelland A. Nof: “Fast Large-Scale Honest-Majority MPC for Malicious Adversaries”, CRYPTO 2018, Springer-Verlag, pp. 34–64 (2018).
[86] R. Kikuchi, K. Chida, D. Ikarashi, W. Ogata, K. Hamada and K. Takahashi: “Secret Sharing with Share-Conversion: Achieving Small Share-Sizeand Extendibility to Multiparty Computation”, IEICE Trans., E98-A(1),pp. 213–222 (2015).
[87] H. Krawczyk: “Secret sharing made short”, CRYPTO 1993, SpringerVerlag, pp. 136–146 (1993).
[88] 千 葉 大 学 病 院, NTT Com：“秘 密 計 算 デ ィ ー プ ラ ー ニ ン グ 」な ど の技 術 を 活 用 し た 臨 床 デ ー タ 分 析”. https://www.ntt.com/about-us/press-releases/news/article/2021/0208.html.
[89] NEC, 大 阪 大 学：“医 療 デ ー タ 活 用”.
https://jpn.nec.com/rd/
technologies/201805/index.html.
[90] CYBERNETICA: “収入と教育履歴の分析”. https://sharemind.cyber.
ee/big-data-analytics-protection/.
[91] Cosmian: “エネルギー供給の最適化”. https://cosmian.com/use-case/.
[92] MPC Alliance. https://www.mpcalliance.org/.
[93] 秘密計算コンソーシアム. https://secure-computation.jp/.
[94] 秘密計算研究会. https://securecomputing.jp/.
[95] NIST: “NIST Project on Privacy-Enhancing Cryptography (PEC)”.
https://csrc.nist.gov/projects/pec.
[96] ISO/IEC: “ISO/IEC 4922-1/2 Information security ― Secure multiparty
computation”. https://www.iso.org/standard/80508.html.
[97] Curv.
https://medium.com/@william_97682/
curv-mpc-is-not-key-sharding-276b020130c4.
[98] INGBank.
https://www.ingwb.com/en/
insights/distributed-ledger-technology/43

ing-launches-major-addition-to-blockchain-technology.
[99] https://z.cash/technology/.
[100] Ernst & Young.
https://www.ey.com/en_gl/news/2019/12/
ey-releases-third-generation-zero-knowledge-proof-blockchain-\https://assets.ey.
technology-to-the-public-domain,com/content/dam/ey-sites/ey-com/ja_jp/topics/library/info-sensor/2020/12/pdf/ey-japan-info-sensor-2020-12-08.pdf.
[101] ZKProof Standards. https://zkproof.org/, https://docs.zkproof.
org/pages/reference/reference.pdf.
[102] TechCrunch:“Kalepso Looks to Break into The Crowded Encrypted Database Space” (2018). https://techcrunch.com/2018/11/
29/kalepso-database-encryption-battlefield-berlin/.
[103] Coinspeaker:“Decentralized Service Protocol, Automata Network, Launches a Solution for the Miner Extractable Value
https://www.coinspeaker.com/(MEV)
Issue”(2021).
automata-network-miner-extractable-value-conveyor/.
[104] S. Wang, X. Ding, R. H. Deng and F. Bao: “Private Information Retrieval Using Trusted Hardware”, ESORICS 2006, Springer-Verlag, pp.
49–64 (2006).
[105] M. Melucci and R. Baeza-Yates: “Advanced Topics in Information Retrieval”, Vol. 33, Springer (2011).
[106] D. Augot, F. Levy-dit Vehel and A. Shikfa: “A Storage-Eﬃcient and Robust Private Information Retrieval Scheme Allowing Few Servers”, CANS
2022, Springer International Publishing, pp. 222–239 (2022).
[107] “事業者向け暗号資産ウォレット開発のフレセッツ、暗号資産ウォレット
ユーザに対するプライバシー向上技術の開発に成功”. https://prtimes.
jp/main/html/rd/p/000000014.000028896.html.
[108] “Microsoft sealpir”. https://github.com/microsoft/SealPIR.
[109] MIT: “CryptDB”. http://css.csail.mit.edu/cryptdb/.
[110] “Kafedb: End-to-end structually-encrypted relational database system”.
https://zheguang.github.io/kafedb/.
[111] 日 立 製 作 所：“秘 匿 情 報 管 理 サ ー ビ ス 匿 名 バ ン ク”.
https://www.hitachi.co.jp/products/it/harmonious/cloud/service/
tokumei/index.html.

44

[112] 三 菱 電 機：“部 分 一 致 対 応 秘 匿 検 索 基 盤 ソ フ ト ウ ェ ア”.
https://www.mitsubishielectric.co.jp/corporate/randd/list/info_
tel/a29/index.html.
[113] G. Amjad, S. Kamara and T. Moataz: “Forward and Backward Private
Searchable Encryption with SGX”, European Workshop on Systems Security 2019, Vol. 4, pp. 1–6 (2019).
[114] NEC, 大阪大学：“複数機関が保有するゲノム情報をプライバシー侵害リスクを抑えて解析できることを実証”. https://jpn.nec.com/press/201907/
20190723_03.html.
[115] NEC: “連合学習技術と秘密計算技術を用いた創薬における予測モデル構築に関する実証実験を実施”. https://jpn.nec.com/press/202203/
20220311_01.html.
[116] 三 菱 電 機：“三 菱 情 報 セ キ ュ リ テ ィ ソ フ ト ウ ェ ア feﬁleprotection”. https://www.mitsubishielectric.co.jp/business/security/
fileprotect/index.html.
[117] 三菱電機：“関数型暗号とクラウドサービスを利用した機密情報ファイル交換サービス「パッケージプラス (r) トランスポーター」の提供開始”. https://www.mdsol.co.jp/newsrelease/doc/information_20160125.pdf.
[118] 三菱電機：“Mistyguard ＜検索可能暗号＞ cizouxlib を開発”. https://www.
mdis.co.jp/news/press/2021_1028.html.

45

第3章

主な高機能暗号技術のアルゴリズム・プロトコルとその性能

463.1 守秘を目的とした高機能暗号技術
3.1.1 ＩＤベース暗号
ID ベース暗号（Identity-based encryption, IBE） は、ID をはじめとする
任意の文字列を公開鍵に利用可能とする公開鍵ベースの暗号化手法である。1984
年にそのコンセプトを提案した Shamir [1] により、公開鍵の情報として ID 情報を利用可能とすることから ID ベース暗号と名付けられたが、本質的には ID 情
■特徴

報の代表的な具体例である電子メールアドレスやその他の識別情報などが利用可能であり、さらには ID 情報のみならず任意の情報を公開鍵の情報として利用可能である。公開鍵である ID 情報から容易にその所有者を特定することができることから、（通常の公開鍵暗号では必要となる）公開鍵暗号基盤 （Public-Key

Infrastructure, PKI） が発行する公開鍵証明書が不要となる。一方で、公開鍵暗号とは異なり、IBE では暗号の作成者（送信者）と秘密鍵をもつユーザ以外に、各ユーザの鍵生成を行う鍵生成センタ（Private-Key Generator, PKG） が存在する。このような機関を想定しなければ、誰でも任意の ID に対して秘密鍵を生成可能となり、安全性が担保できない。また、IBE を実現するうえで最も重要な安全性が結託耐性である。結託耐性とは、多数のユーザが結託し自身の ID の秘密鍵を共有したとしても、結託に関与していないユーザの ID 宛の暗号文の解読が難しいことを保証する安全性である。
さらに、IBE は他の暗号技術を構成するための暗号要素技術として利用価値が高い。例えば、IBE を要素技術として用いることで、秘密鍵の漏洩に耐性のある
鍵隔離暗号 [2] や前方秘匿暗号 [3]、暗号文が復号可能となる期間を指定可能な時
刻特定暗号 [4]、強い安全性を満たす公開鍵暗号 [5] 等、様々な暗号技術を実現できることが知られている。
■方式の歴史・進展

結託耐性を持つ IBE の効率的な実現は難しく、Shamir によって IBE のコンセプトが提唱された 1984 年から 15 年以上が経過して初めて、2000
年に境-大岸-笠原により ID ベースの鍵共有方式 [6] が日本国内で提案された。さらに、2001 年に Boneh-Franklin による IBE 方式 [7] が海外で提案された。これらの方式の特筆すべき点は、Pairing 写像が初めて暗号構成に利用されたことである。

Pairing 写像は 2 入力 1 出力の写像であり、暗号用途では楕円曲線上の Pairing 写像を用いる。特に、Pairing 写像のもつその双線形性によって、IBE を始めとする多くの高機能暗号技術の実現が可能となった（双線形性については具体的な構成
例で説明する）実際、Pairing 写像の登場を皮切りに多くの（高機能）暗号技術の47

構成研究が発展することとなった。

IBE 研究においても、Pairing 写像を用いた構成手法が現実的な IBE の実現方
法として主流であり、活用事例や標準化のほとんどに Pairing 写像を用いた構成手法が採用されている。Boneh-Franklin IBE の提案以降の主要な成果として、まず2004 年の IBE 方式 [8] が挙げられる。この方式は Boneh-Franklin IBE とは異なり（現実には存在し得ない）理想的なハッシュ関数が構成に不要な一方で、保証できる安全性が弱く、現実的な状況（適応的な攻撃に対する安全性）を捉え切れていなかった。その後、2005 年に（理想的なハッシュ関数なしで）適応的な攻撃に対して安全な方式 [9]、2006 年には安全性の根拠となる計算量仮定は強いものの適応的な攻撃に対して安全かつ効率的なパラメータサイズを達成する方式 [10] と、立て続けに主要成果が提案された。Boneh-Franklin IBE に続くブレークスルーとなった研究が、Waters [11] による Dual System Encryption と呼ばれる証明技法の開発である。安全性証明にのみ登場し実際には利用しない “不完全な” 暗号文や秘密鍵を定義することで、標準的な計算量仮定の下で適応的な攻撃に対して安
全かつ効率的なパラメータサイズを達成する方式を初めて提案した。このように、

Pairing 写像ベース IBE 方式は効率的なパラメータサイズを達成し得るが、一方で Pairing 写像演算それ自体の計算負荷が高いという欠点がある。
また、Pairing 写像以外を用いる IBE の構成手法として有名なものに、格子構造を用いたものがある。代表的な格子ベース IBE 方式 [12, 13] は基本的に Pairing
写像ベース IBE 方式の構成アプローチを基にして作られており、格子構造のもつ耐量子計算機性が最大の魅力である。効率性の観点では、格子ベース IBE 方式はパラメータサイズが大きくなるものの、暗号化や復号が基本的に行列演算で実現可能という特長がある。格子以外の構成手法として、古典的な乗法巡回群を用いた Döttling-Garg による IBE 方式 [14] も重要な IBE 研究の一つである。Pairing
写像の登場まで IBE が実現されなかったことからも、IBE は通常の公開鍵暗号で利用されるような基本的な代数的構造での実現は難しいと考えられていたが、この研究がその認識を覆すこととなり、IBE の実現可能性の意味で大きなブレーク
スルーとなった。
学術研究としては更に高機能な ID ベース暗号が提案されており、PKG の秘密
鍵生成の負担の分散を目的とした階層型（Hierarchical）IBE [15] や、秘密鍵が部分的に漏洩したとしても安全性を保証可能な漏洩耐性（Leakage-resilient）IBE [16]、効率的に秘密鍵の失効を実現可能な鍵失効機能付き（Revocable）IBE [17] 等、想定される機能は多岐にわたる。

48

■具体的な構成例

具体的な IBE 方式として、最も基本的かつ標準化もされている

Boneh-Franklin IBE のアルゴリズムを紹介する。各ユーザは個別のユニーク ID（ID ）を持つものとする。
Setup: 公開パラメータ M P K とマスター鍵 M SK を設定する。素数位数 pの乗法群を G1 , GT とし、G1 の生成元を g とする。また、Pairing 写像
を e : G1 × G1 → GT とする。e は双線形性を満たす。すなわち、任意の a, b ∈ Zp に対して e(g a , g b ) = e(g b , g a ) = e(g, g)ab を満たす。ランダ
ムな元 s ∈ Z∗p を選択し、gpub = g s を計算する。また、ハッシュ関数
H1 : {0, 1}∗ → G1 と H2 : GT → {0, 1}n を定めておく。公開パラメータ
M P K を M P K = (p, G1 , GT , e, n, g, gpub , H1 , H2 )、PKG のマスター秘密鍵
M SK を M SK = s とする。
Extract(M P K, M SK, ID): ユーザ鍵 SKID を生成する。ID ∈ {0, 1}∗ から
QID = H1 (ID) ∈ G1 を計算し、ユーザ鍵 SKID = QsID とする。
Encrypt(M P K, ID, M ): メッセージ M の暗号化を行い、暗号文 C を生成する。
gID = e(QID , gpub ) ∈ GT を計算し、ランダムな元 r ∈ Z∗p を選択する。その後、メッセージ M ∈ {0, 1}n から暗号文 C = (g r , M ⊕ H2 (gID r )) を作成する。

Decrypt(SKID , C): 暗号文 C を復号し、メッセージ M を復号する。暗号文
C = (U, V ) に対して、V ⊕ H2 (e(SKID , U )) を出力する。この時、正しい暗号文であれば (U, V ) = (g r , M ⊕ H2 (gID r )) であり、e(SKID , U ) =rであるから、V ⊕ H2 (e(SKID , U ) = M がe(QsID , g r ) = e(QID , g s )r = gID成り立つ。

3.1.2 属性ベース暗号■特徴

属性ベース暗号（Attribute-Based Encryption, ABE）は、暗号文または秘密鍵の一方に属性情報を、もう一方にアクセス構造を持たせ、復号時に属性情報に含まれる値がアクセス構造の条件を満たすかどうか判別することで、復号者の制御が実現可能な公開鍵暗号方式の一つである。一般に（狭義の）公開鍵暗号
や ID ベース暗号（IBE）においては、暗号文とそれを復号可能な秘密鍵は 1 対 1の関係を持つため、暗号文の生成時に復号できるエンティティは唯一に決定され、もし複数のエンティティに同一のメッセージを送付する場合には、エンティティ
数に比例する暗号文の生成が必要である。一方で、属性ベース暗号ではアクセス構造を指定することで、単一の暗号文でメッセージの秘匿ときめ細かなアクセス49

制御を同時に達成可能となる。表現可能なアクセス構造は用いる暗号方式により様々であるが、多くの方式では例えば AND, OR で記述された条件式を表現することができる。
属性ベース暗号の方式は、鍵ポリシ型（Key-Policy, KP）と暗号文ポリシ型（Ciphertext-Policy, CP）の 2 種類の型に大別される。鍵ポリシ型ではエンティ
ティが持つ秘密鍵に、暗号文ポリシ型ではメッセージにそれぞれアクセス構造を埋め込み、もう一方に属性情報を埋め込む点が異なる。そして、適応先のユース
ケースによってより効果的な型を選択する必要があり、例えば、ユーザや機器等のエンティティが固有に有する情報を元に制御したい場合には暗号文ポリシ型、暗号化対象のメッセージが固有に有する情報を元に制御したい場合には鍵ポリシ型の方式が適していることが多い。
一般に属性ベース暗号方式を構成する場合、セットアップおよび鍵発行を実行する主体である鍵生成局と、暗号化および復号を実行する主体であるエンティティが存在する。エンティティは、自身の有する属性情報（またはアクセス構造）を含む秘密鍵を鍵発行局から発行してもらい、自身のみが扱うように安全に保管する。
暗号化については、公開情報を知ることができる任意のエンティティが実行することができ、メッセージにアクセス構造（または属性情報）を指定して暗号化する。
復号については、エンティティが各自の秘密鍵と暗号文を用いて復号を行うが、属性情報とアクセス構造の関係が満足する場合には元のメッセージに復号できる。
■方式の歴史・進展

属性ベース暗号は、2005 年に ID ベース暗号の拡張である Fuzzy

IBE が Sahai らにより提案され、そのコンセプトが提唱された [18]。Fuzzy IBE
では、秘密鍵および暗号文にそれぞれ複数の ID が割り当てられており、各 ID 集
合の間で定められたしきい値以上の ID が一致した場合にのみ復号可能である。この複数の ID を属性集合、一致する ID とそのしきい値をアクセス構造と見なすことで、現在の属性ベース暗号の一種と捉えられる。翌年 2006 年、Goyal らにより、より広いクラスの条件式を扱うことができるはじめての実用的な属性ベース暗号が提案された [19]。Goyal らの方式は鍵ポリシ型であり、秘密鍵に対して AND,OR, しきい値を用いた論理式で表現された条件式を設定し、また暗号文に属性集合を指定することで、暗号文に含まれる属性値が自身の持つ秘密鍵の条件式を満たすかにより、きめ細やかな復号者の制御が可能となった。さらに 2007 年には、Bethencourt らにより、暗号文に対してアクセス構造を設定することが可能な暗号文ポリシ型の方式がはじめて提案された [20]。
その後、安全性の研究においては、適応的攻撃に対しても安全な方式 [21] や標
準モデルと呼ばれる現実的な仮定の下で安全な方式 [22] の研究等が進められ、ま50

た量子計算機に対して安全な格子ベースの方式も提案されている [23]。条件式で使えるクラス拡張の研究においては、数値の大小比較 [24]、NOT 条件 [25] を利用可能な方式等、数多くの方式が提案されている。
さらに、前述した基本的な性質以外の機能性を追加した方式も提案されてきた。
例えば、鍵発行処理をより柔軟にするものとして、ある秘密鍵で復号可能な暗号文のうち、その中の一部の暗号文のみを復号できる新たな秘密鍵を生成し、権限を移譲できる方式 [19] や鍵発行局を階層化した方式 [26]、複数の鍵発行局の秘密鍵を用いて復号制御ができるマルチオーソリティ方式 [27]、さらに特権的なルートを持たない分散型マルチオーソリティ方式 [28] 等がある。
■具体的な構成例: GPSW06 KP-ABE

本節では、AND, OR, および (k, n)-しきい値を条件式として記述でき、はじめてきめ細かなアクセス制御が可能となった

KP-ABE である Goyal らによる GPSW06 の構成を示す [19]。
はじめに本方式のアクセス構造の表現方法であるアスセスツリー T について説明する。アスセスツリー T の葉ノード以外の全てのノードはしきい値ゲー
トを表現できる。ノード x に対して、子ノードの個数を numx 、しきい値を

1 ≤ kx ≤ numx である値 kx とする。kx = 1 の場合には OR ゲートを、kx = numxの場合には AND ゲートを、1 < kx < numx の場合には (kx , numx )-しきい値ゲー
トを表現できる。各ノード x の子ノードは順序付けされており、それぞれ 1 から
numx までのインデックスが割り振られている。また葉ノードでは属性値が設定されており、kx = 1 とする。
アスセスツリー中のノードの取り扱いを容易にするため、いくつかのサブ関数を準備する。あるノード x に対して、parent(x) を x の親ノード、index(x) を親
ノード parent(x) から割り振られたインデックスを指す値とする。parent(x) の各子ノードはこのインデックスで一意に特定できる。また att(x) を x の属性値
で、x が葉ノードのときにのみ値を取るものとする。
以降では、素数 p に対して、位数 p の乗法群を G1 , GT 、G1 の生成元を g とする。また Pairing 写像を e : G1 × G1 → GT とし、双線型性を満たす。また GT の生成元を gT = e(g, g) とする。ラグランジュ補間において、Zp 上の元の集合 S での基底多項式を ∆i,S (x) =Pj∈S,j̸=i (x − j)/(i − j) とする。

このとき、セットアップ (Setup)、暗号化 (Encrypt)、鍵生成 (Keygen)、復号(Decrypt) の 4 つのアルゴリズムは以下の通りである。
Setup: 属性ユニバースを U = {1, 2, ..., n} とする。それぞれの属性値 i ∈ U に対して、Zp 上から一様ランダムに選択した値を ti とする。また値 y ∈ Zp を一51

様ランダムに選択する。このとき、公開パラメータ M P K およびマスタ秘密鍵 M SK は以下の通りとなる。


M P K := T1 := g t1 , ..., Tn := g tn , Y := gTy , M SK := (t1 , ..., tn , y)
Encrypt(M, γ, M P K): メッセージ空間を M := GT とする。また入力としてメッセージ M ∈ M、指定する属性集合 γ ⊆ U とする。暗号文は、ランダムな値 s ∈ Zp を選択し、
Cγ := (γ, C ′ := M Y s , {Ci := Tis }i∈γ )となる。

Keygen(T , M SK): ある属性集合 γ に対して T (γ) = 1 の場合に限り復号できる
アクセスツリー T に紐づいた秘密鍵を出力する。これは T を表現するノード集合 N の全てのノードに対して、ルートノードから下位ノードに向かって順に次の計算をすることで得る。
各ノード x ∈ N において、しきい値 kx から次数 dx := kx − 1 である多項式 qx を定める。ルートノード r では、多項式 qr は、qr (0) = y とし、qr 上の他の dr 個の値をランダムに選択する。非ルートノード x では、親ノード

parent(x) に割り振られたインデックス index(x) から、多項式 qx の定数を
qx (0) = qparent(x) (index(x)) とし、また qx 上の dx 個の値をランダムに選択する。最後に、葉ノード x では、att(x) ∈ U に対して、
SKx := g qx (0)/tatt(x)を計算し、これらがアクセスツリー T に対する秘密鍵、

SKT := {SKx | att(x), x ∈ N }となる。

Decrypt(Cγ , SKT ): 暗 号 文 Cγ := (γ, C ′ := M Y s , {Ci := Tis }i∈γ )、秘 密 鍵
SKT := {SKx | att(x), x ∈ N } を入力として、アクセスツリー T の各ノード x に対して、関数 DecryptNode(Cγ , SKT , x) を再帰的に実行することで計算する。関数 DecryptNode は、計算結果として GT 上の元または ⊥ を出力する。
ノード x が葉ノードである場合、i = att(x) として、以下を得る。

(
Fx := DecryptNode(Cγ , SKT , x) =52

s·q (0)e(SKx , Ci ) = gT x⊥

if i ∈ γ
if i ∈/γ

ノード x が非葉ノードである場合、ノード x の子ノード zi の結果 Fzi から
関数 DecryptNode を計算する。まずはじめに、子ノードの内、Fzi ̸= ⊥ を満たす、ある kx 個のノードを Sx := {zi1 , ..., zikx | ij ∈ [1, numx ]} とする。

またこれらのノードのインデックスの集合 Sx′ := {index(zi ) | zi ∈ S} とする。このとき、Sx のノード数が kx 個に満たない場合は、⊥ を出力する。それ以外の場合は、

Fx := DecryptNode(Cγ , SKT , x)Y ∆index(z),S′ (0)
x
=
Fz
z∈Sx

=

Y

s·q (index(z)) ∆index(z),S ′ (0)

(gT x

)

x

z∈Sx
s·q (0)= gT xとし、多項式補間によりノード x における多項式 qx の定数 qx (0) を得られる。
結果として、ルートノード r に対する DecryptNode(Cγ , SKT , r) は、再帰計
算により、Fr = gT = Y s が得られ、最後に、メッセージ M ′ := C ′ /Fr が出
sy

力される。

3.1.3 放送型暗号
放送型暗号では、送信者は複数の受信者に暗号文を同時送信し、なおかつ、そのうちの任意の受信者集合に復号権限を指定できる。この仕組みは、従来の暗号方式を単純に組み合わせても実現可能であるが、その場合は受信者数に比例した暗号文長が必要となるため、非効率的となる。これに対し、放送型暗号では受信者数よりも漸近的に短い暗号文長で同等の機能を実現することが可能である。
放送型暗号には、誰でも公開情報のみを用いた暗号化を行うことが可能な公開鍵型と暗号化にも秘密情報を必要とする共通鍵型が存在する。公開鍵型について
は、楕円曲線上の Pairing 写像に基づき、暗号文サイズが受信者数によらず定数となる方式 [29] が設計されて以降、効率化についての理論的な検討が継続されており、2020 年には、Agrawal と山田により、暗号文と鍵サイズが現実的な仮定の下で定数サイズとなる初めての方式が提案されている [30]。一方、共通鍵型に関しては、木構造などの組み合わせ論的技法を用いてパラメータを圧縮する方法が主流である。公開鍵型の構成と異なり、重い計算負荷を要する代数的な構造は必要
53としないため、ある程度高速な処理が可能であり、各利用者に求められる鍵情報のサイズは実用的な範囲に抑えられるものの、公開鍵型のように定数サイズにまで圧縮することは困難だと思われる。
■Boneh, Gentry, Waters による放送型暗号

本稿では具体的な方式の例として Boneh-

Gentry-Waters 放送型暗号方式（以下、BGW 方式）[29] を記述する。BGW 方式
は、結託耐性と受信者人数に劣線形（比例しない）短い定数長の暗号文長を達成した初めての方式であり、歴史的に非常に重要である。また、提案以来効率性や安全性の改善の検討が続いてはいるものの、当該方式は現時点においても最も効率の良い方式の一つである。なお、原論文では Key encapsulation mechanism（KEM）の形で方式が記述されているが、ここでは Encryption の形で方式を記述する。平
文空間は GT となっているが、一般の平文を暗号化するためには e(g1 , gn )t を適当な鍵導出関数に入力して得られる文字列を共通鍵暗号の秘密鍵として平文を暗号化すればよい。鍵導出関数としては、例えば SHA のような暗号的ハッシュ関数
や、Pair-wise independent ハッシュ関数を用いればよい。
以下、G と GT を素数位数 p をもつ群とし、e : G × G → GT を付随する（対称）Pairing 写像とする。

Setup(1λ , n): セットアップアルゴリズムは、システムの人数 n とセキュリティ
パラメータ λ を入力とし、適切な Pairing 写像 e を選び、公開鍵をP K = (g, g1 , . . . , gn , gn+2 , . . . , g2n , v = g γ ) ∈ G2n+1iと設定する。ここで、g は G のランダムな生成元、gi = g α 、α と v は Zp のランダムな元である。また、i 番目のユーザに対する秘密鍵を

di = giγと設定する。最終的な出力は (P K, d1 , . . . , dn ) である。

Enc(P K, S, m): 暗号化アルゴリズムは、ユーザ集合 S にむけて平文 m ∈ GT を暗号化するために、P K, S, m の入力を受け、ランダムな t ∈ Zp を選択し、暗号文をCT = (c0 = g t , c1 = (vY

gn+1−j )t , cT = e(g1 , gn )t m) ∈ G2 × GTj∈S

により計算し、出力する。

Dec(P K, S, i, di , CT ): 平文を m := cT · e(di , ·より計算し、出力する。
54

Q

j∈S,j̸=i gn+1−j+i , c0 )/e(gi , c1 ) に

BGW 方式は、暗号文長、秘密鍵長がシステム内のユーザ数に依存せず、定数長であるという利点があるが、公開鍵長はシステム内のユーザ数に比例して長くなるという欠点がある。[29] では、上記方式のほかに公開鍵長と暗号文長のトレード
オフを実現する方式が記載されている。

BGW 方式は選択的攻撃に対して結託耐性を持つことが、Pairing
群上の Bilinear Diﬃe-Hellman Exponent（BDHE）問題と呼ばれる問題の困難性■安全性についてを仮定して証明可能である。結託耐性とは、システム上の復号権限を持たないユー
ザ全員が結託しても、暗号化された平文の情報を得ることが識別不可能性の意味でできないことを指しており、選択的攻撃とは攻撃者が公開鍵を得る前に攻撃目標である受信者集合を定める種類の攻撃を指している。BDHE 問題とは、対称

Pairing 群の元 (g, h, g1 , . . . , gℓ , gℓ+2 , . . . , g2ℓ ) が与えられた時に、e(gℓ+1 , h) とラン
ダムな GT の元の識別をするという問題である。ここで、g, h はソース群の生成元iで、gi = g (α ) であり、α は Zp 上でランダムにサンプルされる。また、システム内のユーザ数 n に応じてパラメータ ℓ は大きくなる。BDHE 問題に対しては、ℓ が特定の条件を満たす際に Cheon 攻撃 [31] の適用が可能であり、特に n が大きい場
合には、パラメータ選定における注意が必要である。
■その他の放送型暗号方式について

放送型暗号の概念は Fiat と Naor らにより定式化された [32]。共通鍵型の放送型暗号としては [33] が著名である。BGW 方式は選択的攻撃に対する安全性しか証明できていないことが欠点の一つであったが、より強い適応的攻撃に対する安全性を持つ方式がランダムオラクルモデルで Gentryと Waters によって [34]、標準モデルで Waters によって提案された [11]。Watersによる方式は、decisional linear 仮定と呼ばれる BDHE 仮定よりも標準的な数論
仮定に基づき安全性証明が与えられている。標準モデルでの方式はその後の研究によってさらに効率化されている [35]。

3.1.4 準同型暗号
準同型暗号は、データを暗号化したまま演算処理（四則演算等）ができる暗号技術であり、一般には公開鍵暗号の機能要件だけで、この性質が保証されるわけではない。準同型暗号は、実現できる演算内容により、単一演算型、Leveled 型、完全型に大別される。単一演算型は、加算または乗算のみ実現可能であり、単純な演算処理のみ実現可能である。例えば、加法準同型性をもつ暗号方式として

Okamoto-Uchiyama 方式 [36] や、Paillier 方式 [37] が有名である。Leveled 型は加算と乗算をともに実現可能であるが、演算回路の深さに（特に乗算の深さに）上55

限がある。なお、回路の深さとは入力ゲートから出力ゲートまでに最大の長さのことである。完全型は、加算と乗算を共に実現可能であり、かつ乗算の回数に制限がない。実際には、Leveled 型にブートストラッピングと呼ばれる技術を組み合わせることにより完全型が実現されることが多い。また、Leveled 型のうち、扱える計算回路の深さが浅いものは Somewhat 型と呼ばれることも多い。以下に、具体的な準同型暗号技術のアルゴリズムを紹介する。
■Boneh, Goh, Nissim による準同型暗号

具体的な準同型暗号方式の例として Boneh-

Goh-Nissim 準同型暗号方式（以下、BGN 方式）[38] を記述する。BGN 方式は
2-DNF formula に対する準同型暗号方式として提案されているが、ここでは整数上の加算と一回の乗算が可能な準同型暗号として記述する。G と GT を合成数位
数 n = q1 q2 をもつ群とし、e : G × G → GT を付随する（対称）Pairing とする。
ここで、q1 および q2 は素数である。また、G は位数 q1 の群 Gq1 と位数 q2 の群
Gq2 の直積と同型であり、ここでは Gqi = {g qi : g ∈ G} を Gq3−i (i ∈ {1, 2}) と同一視することにする。

Setup(1λ ): セットアップアルゴリズムでは、適切な Pairing 写像 e を選択、および、G のランダムな生成元 g と u を選択する。さらに、h = uq2 を計算し、公開鍵をP K = (n, g, h)と設定する。また、秘密鍵は SK = (q1 , q2 ) である。

Enc(P K, m): 暗号化アルゴリズムは、 (整数として符号化された) 平文 m ∈ Z を暗号化するために、P K, m の入力を受け、ランダムな r ∈ {0, 1, . . . , n − 1}
を選択し、暗号文をCT = g m hr
により計算し、出力する。

Dec(P K, SK, CT ): 復号アルゴリズムの入力 CT は、G の元である場合と、GTの元である場合がある。前者は準同型的乗算を行う前の暗号文で、後者は準同型的乗算を行った後の場合である。どちらの場合も、復号アルゴリズム
はまず CT q1 を計算する。次に、 ĝ を底とした CT q1 の離散対数を計算し、m を得る。ここで、CT ∈ G の場合は ĝ = g q1 であり、CT ∈ G の場合はĝ = e(g, g)q1 である。復号が可能なためには m はセキュリティパラメータの多項式程度でなければならない。
次に、準同型演算を記述する。
56

Add(P K, CT1 , CT2 ): 二つの暗号文に対して加法を準同型的に行うためには、CT1 と CT2 は同じ群 (G か GT ) の元である必要がある。両者ともに G の群である場合には、ランダムな r ∈ {0, 1, . . . , n − 1} を選択し CT1 · CT2 · hr
を、両者ともに GT の群である場合には、ランダムな r ∈ {0, 1, . . . , n − 1}
を選択し CT1 · CT2 · e(h, h)r を計算する。
Mult(P K, CT1 , CT2 ): 二つの暗号文に対して加法を準同型的に行うためには、CT1 と CT2 は G の 元 で あ る 必 要 が あ る 。そ の 場 合 に ラ ン ダ ム な r ∈{0, 1, . . . , n − 1} を選択し、e(CT1 , CT2 )e(g, h)r を計算する。
BGN 方式は、部分群判定問題の困難性を仮定すると IND-CPA
安全性をもつことが証明できる。部分群判定問題とは、G のランダムな元 g 、Gq1のランダムな元 h が与えられた時、G のランダムな元と Gq1 のランダムな元が識■安全性について別不可能であるという仮定である。

BGN 方式は、合成数位数 Pairing 群の演算が必要であるが、合成数位数 Pairing 群は素数位数 Pairing 群に比べ大きいパラメータが必要であり、計算効率が悪い。BGN 方式の改良として、素数位数 Pairing 群に基づく準同型暗号方式が Freeman によって提案され [39]、のちにさらなる改良方式がAttrapadung らにより提案された [40]。Attrapadung らは提案方式の実装も行っ■BGN 方式の後続研究についてている。
■完全準同型暗号方式について

初の完全準同型暗号は Gentry によって 2009 年に提案された [41]。Gentry の提案は格子問題の困難性を利用していたものだったが、これが契機となり格子に基づく完全準同型暗号および Leveled 準同型暗号の研究が活発になった。代表的な方式としては、Brakerski らによる BGV 方式 [42]、Gentry らによる GSW 方式 [43]、Chillotti らによる TFHE 方式 [44]、Cheon らによる CKKS 方式 [45] などが挙げられる。CKKS 方式以外は、準同型演算の結果が復号によって正確に得られるタイプの完全準同型暗号方式だが、CKKS 方式
は復号結果にエラーが加わるタイプの方式であり、復号結果にエラーが加わることを容認することで効率化を図っている。CKKS を含む復号にエラーが含まれるタイプの完全準同型暗号に関しては、セキュリティ上の懸念が指摘されており、利用シナリオやパラメータ選定等に注意が必要な場合がある [46]。
完全準同型暗号の著名な実装例としては、Homomorphic Encryption library（HElib） [47] や Simple Encrypted Arithmetic Library（SEAL） [48] が挙げられる。HElib は IBM 社がオープンソースで提供している準同型暗号のライブラリであり、BGV 方式と CKKS 方式が利用可能である。また、SEAL は Microsoft 社
57

がオープンソースで提供している準同型暗号のライブラリであり、Fan らによる

FV 方式 [49] と CKKS 方式が利用可能である。
3.1.5 プロキシ再暗号化
プロキシ再暗号化は、あるユーザ宛の暗号文を、復号することなく別のユーザ宛の暗号文へ変換することが可能な暗号技術である。より具体的に、ユーザ A は、
もう一方のユーザ B とプロキシ（代理人）と呼ばれる第三者を指定し、プロキシ
に対して「再暗号化鍵 rkA→B 」を預託する。プロキシは、この再暗号化鍵 rkA→B
を使って、ユーザ A 宛の暗号文 ctA の中身を知ることなく、ユーザ B 宛の暗号文

ctB に変換することができる。
プロキシ再暗号化方式は、再暗号化鍵 rkA→B の性質や暗号文が備える安全性レ
ベルによっていくつかに分類可能である。以下、代表的な分類のいくつかを紹介する。

 一方向/双方向変換: ユーザ A から B への再暗号化鍵 rkA→B を用いて、ユー
ザ B 宛の暗号文をユーザ A 宛の暗号文に変換することができない場合は一方向、できる場合は双方向。

 CPA/CCA 安全性: 選択的平文攻撃に対してのみ安全であれば CPA 安全で、選択的暗号文攻撃に対しも安全であれば CPA 安全。
 シングル/マルチホップ: 再暗号化した暗号文をそれ以上再暗号化できなけ
ればシングルホップ、連続して再暗号化できればマルチホップ。
これらの性質については、用途に応じて選定を行う必要があるが、求められる性質
によって処理性能に差が生じるため、慎重な判断が必要となる。なお、双方向変換可能で CPA 安全なマルチホップ方式が、最も高速な処理が可能となる。以下、Blaze ら [50] により初めて提案された双方向変換可能で CPA 安全なマルチホップ
な方式である BBS 方式を紹介する。BBS 方式は、ElGamal 暗号の簡単な変形で導かれ、その後のプロキシ再暗号化の構成の基盤となっている。
■Blaze, Bleumer, Strauss によるプロキシ再暗号化方式 [50]以下、G を素数位数 p を持つ群とし、g ∈ G をその生成元とする。

KeyGen: 各ユーザは、鍵生成アルゴリズムを実行し、公開鍵 pk = g x ∈ G と秘密
鍵 sk = x ∈ Zp \{0} を生成する。
ReKeyGen(skA , skB ): ユーザ A と B は、各々の秘密鍵 skA = a と skB = b を入力に再暗号化鍵生成アルゴリズムを実行し、再暗号化鍵 rkA→B = b/a ∈ Zp を58

プロキシに渡す。

Enc(pkA , msg ∈ G): 暗号化アルゴリズムを利用し、ユーザ A 宛の暗号文 ctA =(msg · g r , (pkA )r ) を生成する。なお、r はアルゴリズムがサンプルする乱数である。ここで、通常の ElGamal 暗号は ctA = (g r , msg · (pkA )r ) であることに注意されたい。

ReEnc(rkA→B , ctA ): プロキシは、再暗号化アルゴリズムを実行し、ユーザ A 宛の暗号文 ctA = (ct1 , ct2 ) から、ユーザ B 宛の暗号文 ctB = (ct1 , (ct2 )rkA→B ) を生成する。

Dec(sk, ct): 各ユーザは、復号アルゴリズムを実行し、まず自身宛の暗号文 ct =(ct1 , ct2 ) から msg′ = (ct1 )sk /ct2 を計算し、平文 msg = (msg′ )1/sk を出力する。
暗号文 ctA がユーザ A 宛であれば、ctA は (msg·g r , g ar ) であるため、秘密鍵 skA = aを用いて、msg が正しく復号できることが確認できる。また、rkA→B = b/a を利用することで、暗号文 ctA の第 2 項目が、g br に変換できるため、プロキシがユーザ

B 宛の暗号文 ctB に正しく変換できていることも確認できる。rkB→A = (rkA→B )−1であることに注意すると、rkA→B = b/a が双方向変換に対応していることが確認できる。最後に、異なるユーザ C に対する再暗号化鍵 rkB→C を渡されたプロキシ
は、ctB をさらにユーザ C 宛の暗号文 ctC に変換できるため、マルチホップ性も満たす。

BBS 方式は、通常の公開鍵暗号が備える最も基本的な選択平文攻撃に対する安全性（CPA 安全性）に類似した CPA 安全性を備える。通常の CPA 安全性では、攻撃者は公開鍵 pkA 、および、自身が選んだ任意の平文 msg0 と msg1 のいずれかに関する暗号文 ct∗A を入手し、ct∗A がどちらの■BBS 方式の安全性について

平文を暗号化しているか識別できないことを要求する。プロキシ再暗号化方式においては、これに加え、任意の n ∈ N に対して、攻撃者は n 人の異なるユーザの公開鍵 {pkBi }i∈[n] と再暗号化鍵 {rkA→Bi }i∈[n] を与えられた上での、識別不能性を要求する。具体的に BBS 方式では、(g, g a , {g bi , bi /a}i∈[n] , g r , g ar ) の組みと、′(g, g a , {g bi , bi /a}i∈[n] , g r , g r ) の組みが識別不可能であることを意味する。ここで、後者の下線部に現れる r′ は他の変数に依存しないランダムな Zp 上の要素である。
この組みを識別する問題は、Decisional Diﬃe-Hellman（DDH）問題の困難性に帰着でき、BBS 方式は DDH 問題の困難性仮定に基づいて CPA 安全であることが
示される。

59

BBS 方式は、もし攻撃者が（ct∗A 以外の）暗号文を復号できる復号オラクルと対話できる場合、平文 msg0 か msg1 のどちらが暗号化されているかを自明に識別することができる。従って、BBS 方式は CPA 安全
であるが、より強い選択暗号文攻撃に対する安全性（CCA 安全性）を持たない。
Canetti と Hohenberger [51] は、CCA 安全性を備える、双方向変換可能でマルチホップな再暗号化方式を提案した。BBS 方式と比べ、構成に双線型写像を要する■その他のプロキシ再暗号化方式

ため、安全性と引き換えに効率性が少し劣る。
双方向変換可能なプロキシ再暗号化方式は、再暗号化鍵 rkA→B を生成する際にユーザ A と B の秘密鍵 skA と skB を必要とする。しかし、一方向変換可能なプロ
キシ再暗号化方式は、再暗号化鍵 rkA→B を生成する際に、ユーザ A の秘密鍵 skAとユーザ B の公開鍵 pkB だけが必要になり、rkA→B からユーザ B の秘密鍵 skBの情報が漏洩することはない。従って、ユーザ B の暗号文をユーザ A の暗号文に変更する必要がないアプリケーションにおいては、一方向変換可能なプロキシ
再暗号化方式が双方向変換可能な方式と比べ、安全性を担保できるため適切である。そして、Libert と Vergnaud [52] は、CCA 安全で一方向変換可能なプロキシ
再暗号化方式を双線型写像から構成し、花岡ら [53] は、特定の性質を満たすしきい値暗号に基づく一般的な構成を示した。いずれの方式もシングルホップであり、CCA 安全で一方向変換可能、かつ、マルチホップな効率的なプロキシ再暗号化方式は現段階では開発されていない。

参考文献[1] A. Shamir: “Identity-Based Cryptosystems and Signature Schemes”,
CRYPTO 1984, Springer-Verlag, pp. 47–53 (1984).
[2] Y. Dodis, J. Katz, S. Xu and M. Yung: “Key-insulated public key cryptosystems”, EUROCRYPT 2002, Springer-Verlag, pp. 65–82 (2002).
[3] R. Canetti, S. Halevi and J. Katz: “A forward-secure public-key encryption
scheme”, EUROCRYPT 2003, Springer-Verlag, pp. 255–271 (2003).
[4] K. Paterson and E. Quaglia: “Time-speciﬁc encryption”, SCN 2010,
Springer-Verlag, pp. 1–16 (2010).
[5] D. Boneh, R. Canetti, S. Halevi and J. Katz: “Chosen ciphertext security
from identity based encryption”, SIAM J. Computing, 36, 5, pp. 1301–1328(2007).
[6] R. Sakai, K. Ohgishi and M. Kasahara: “Cryptosystems Based on Pairings”,
60

SCIS 2000 (2000).
[7] D. Boneh and M. Franklin: “Identity-Based Encryption from the Weil Pairing”, CRYPTO 2001, Springer-Verlag, pp. 213–229 (2001).
[8] D. Boneh and X. Boyen: “Eﬃcient Selective-ID Secure Identity Based Encryption without Random Oracles”, EUROCRYPT 2004, Springer-Verlag,
pp. 223–238 (2004).
[9] B. Waters: “Eﬃcient Identity Based Encryption without Random Oracles”,
EUROCRYPT 2005, Springer-Verlag, pp. 114–127 (2005).
[10] C. Gentry: “Practical identity-based encryption without random oracles”,
EUROCRYPT 2006, Springer-Verlag, pp. 445–464 (2006).
[11] B. Waters: “Dual System Encryption: Realizing Fully Secure IBE and
HIBE under Simple Assumptions”, CRYPTO 2009, Springer-Verlag, pp.
619–636 (2009).
[12] C. Gentry, C. Peikert and V. Vaikuntanathan: “Trapdoors for Hard Lattices
and New Cryptographic Constructions”, STOC 2008, ACM, pp. 197–206(2008).
[13] S. Agrawal, D. Boneh and X. Boyen: “Eﬃcient lattice (H)IBE in the standard model”, EUROCRYPT 2010, Springer-Verlag, pp. 553–572 (2010).
[14] N. Döttling and S. Garg: “Identity-based encryption from the DiﬃeHellman assumption”, CRYPTO 2017, Springer-Verlag, pp. 537–569 (2017).
[15] D. Boneh, X. Boyen and E.-J. Goh: “Hierarchical Identity Based Encryption
with Constant Size Ciphertext”, EUROCRYPTO 2005, Springer-Verlag,
pp. 440–456 (2005).
[16] S. S. Chow, Y. Dodis, Y. Rouselakis and B. Waters: “Practical leakageresilient identity-based encryption from simple assumptions”, ACM CCS
2010, pp. 152–161 (2010).
[17] A. Boldyreva, V. Goyal and V. Kumar: “Identity-based encryption with
eﬃcient revocation”, ACM CCS 2008, pp. 417–426 (2008).
[18] A. Sahai and B. Waters: “Fuzzy Identity-Based Encryption”, EUROCRYPT 2005, Springer-Verlag, pp. 457–473 (2005).
[19] V. Goyal, O. Pandey, A. Sahai and B. Waters: “Attribute-Based Encryption
for Fine-Grained Access Control of Encrypted Data”, ACM CCS 2006, pp.
89–98 (2006).
[20] J. Bethencourt, A. Sahai and B. Waters: “Ciphertext-Policy Attribute-61Based Encryption”, IEEE S&P 2007 (2007).
[21] A. Lewko, T. Okamoto, A. Sahai, K. Takashima and B. Waters: “Fully
Secure Functional Encryption: Attribute-Based Encryption and (Hierarchical) Inner Product Encryption”, EUROCRYPT 2010, Springer-Verlag, pp.
62–91 (2010).
[22] B. Waters: “Ciphertext-Policy Attribute-Based Encryption: An Expressive,Eﬃcient, and Provably Secure Realization”, PKC 2011, Springer-Verlag, pp.
53–70 (2011).
[23] S. Gorbunov, V. Vaikuntanathan and H. Wee: “Attribute-Based Encryption
for Circuits”, STOC 2013, ACM, pp. 545–554 (2013).
[24] D. Boneh and B. Waters: “Conjunctive, Subset, and Range Queries on
Encrypted Data”, TCC 2007, Springer-Verlag, pp. 535–554 (2007).
[25] R. Ostrovsky, A. Sahai and B.Waters: “Attribute-Based Encryption with
Non-Monotonic Access Structures”, ACM CCS 2007, pp. 195–203 (2007).
[26] G. Wang, Q. Liu, J. Wu and M. Guo: “Hierarchical Attribute-Based Encryption and Scalable User Revocation for Sharing Data in Cloud Servers”,
Computers and Security, Vol. 30, Issue 5, ACM, pp. 320–331 (2011).
[27] M. Chase: “Multi-Authority Attribute Based Encryption”, TCC 2007,
Springer-Verlag, pp. 515–534 (2007).
[28] A. Lewko and B. Waters: “Decentralizing Attribute-Based Encryption”,
EUROCRYPT 2011, Springer-Verlag, pp. 568–588 (2011).
[29] D. Boneh, C. Gentry and B. Waters: “Collusion Resistant Broadcast
Encryption with Short Ciphertexts and Private Keys”, CRYPTO 2005,
Springer-Verlag, pp. 258–275 (2005).
[30] S. Agrawal and S. Yamada: “Optimal Broadcast Encryption from Pairingsand LWE”, EUROCRYPT 2020, Springer-Verlag, pp. 13–43 (2020).
[31] J. Cheon: “Security Analysis of the Strong Diﬃe-Hellman Problem”, EUROCRYPT 2006, Springer-Verlag, pp. 1–11 (2006).
[32] A. Fiat and M. Naor: “Broadcast Encryption”, CRYPTO 1993, SpringerVerlag, pp. 480–491 (1993).
[33] D. Naor, M. Naor and J. Lotspiech: “Revocation and Tracing Schemes forStateless Receivers”, CRYPTO 2001, Springer-Verlag, pp. 41–62 (2001).
[34] C. Gentry and B. Waters: “Adaptive Security in Broadcast Encryption
Systems (with Short Ciphertexts)”, EUROCRYPT 2009, Springer-Verlag,

62pp. 171–188 (2009).
[35] J. Chen, R. Gay and H. Wee: “Improved Dual System ABE in Prime-OrderGroups via Predicate Encodings”, EUROCRYPT 2015, Springer-Verlag, pp.
595–624 (2015).
[36] T. Okamoto and S. Uchiyama: “A New Public-Key Cryptosystem as Secure
as Factoring”, EUROCRYPT 1998, Springer-Verlag, pp. 308–318 (1998).
[37] P. Paillier: “Public-Key Cryptosystems Based on Composite Degree Residuosity Classes”, EUROCRYPT 1999, Springer-Verlag, pp. 223–238 (1999).
[38] D. Boneh, E. Goh and K. Nissim: “Evaluating 2-DNF Formulas on Ciphertexts”, TCC 2005, Springer-Verlag, pp. 325–341 (2005).
[39] D. Freeman: “Converting Pairing-Based Cryptosystems from CompositeOrder Groups to Prime-Order Groups”, EUROCRYPT 2010, SpringerVerlag, pp. 44–61 (2010).
[40] N. Attrapadung, G. Hanaoka, S. Mitsunari, Y. Sakai, K. Shimizu and
T. Teruya: “Eﬃcient Two-level Homomorphic Encryption in Prime-order
Bilinear Groups and A Fast Implementation in WebAssembly”, AsiaCCS
2018, ACM, pp. 685–697 (2018).
[41] C. Gentry: “Fully Homomorphic Encryption Using Ideal Lattices”, STOC
2009, ACM, pp. 169–178 (2009).
[42] Z. Brakerski, C. Gentry and V. Vikuntantathan: “(Leveled) Fully Homomorphic Encryption without Bootstrapping”, ITCS 2012, ACM, pp. 309–
325 (2012).
[43] C. Gentry, A. Sahai and B. Waters: “Homomorphic Encryption from Learning with Errors: Coceptually-Simpler, Asymptotically-Faster, AttributeBased”, CRYPTO 2013, Springer-Verlag, pp. 75–92 (2013).
[44] I. Chillotti, N. Gama, M. Georgieva and M. Izabachène: “Faster Fully Homomorphic Encryption: Bootstrapping in Less Than 0.1 Seconds”, ASIACRYPT 2016, Springer-Verlag, pp. 3–33 (2016).
[45] J. Cheon, A. Kim, M. Kim and Y. Song: “Homomorphic Encryption for
Arithmetic of Approximate Numbers”, ASIACRYPT 2017, Springer-Verlag,
pp. 409–437 (2017).
[46] B. Li and D. Micciancio: “On the Security of Homomorphic Encryption on
Approximate Numbers”, EUROCRYPT 2021, Springer-Verlag, pp. 648–677(2021).

63

[47] “HElib (Homomorphic Encryption library)”.
https://github.com/
homenc/HElib.
[48] “Simple Encrypted Arithmetic Library”. https://www.microsoft.com/
en-us/research/project/microsoft-seal/.
[49] J. Fan and F. Vercauteren: “Somewhat Practical Fully Homomorphic Encryption”. ePrint 2012/144.
[50] M. Blaze, G. Bleumer and M. Strauss: “Divertible Protocols and Atomic
Proxy Cryptography”, EUROCRYPT 1998, Springer-Verlag, pp. 127–144(1998).
[51] R. Canetti and S. Hohenberger: “Chosen-Ciphertext Secure Proxy ReEncryption”, ACM CCS 2007, pp. 185–194 (2007).
[52] B. Libert and D. Vergnaud: “Unidirectional Chosen-Ciphertext Secure
Proxy Re-Encryption”, PKC 2008, Springer-Verlag, pp. 360–379 (2008).
[53] G. Hanaoka, Y. Kawai, N. Kunihiro, T. Matsuda, J. Weng, R. Zhang and
Y. Zhao: “Generic Construction of Chosen Ciphertext Secure Proxy ReEncryption”, CT-RSA 2012, Springer-Verlag, pp. 349–364 (2012).

64

3.2 認証・署名を目的とした高機能暗号技術
3.2.1 属性ベース署名
属性ベース署名は、署名者が持つ署名鍵が、署名を付与する平文に付随する条件を満たしている時に限り署名を生成でき、かつ、署名からは条件が満たされたという情報以外は漏れない署名方式である。より具体的に、属性ベース署名は、平文ポリシー型と鍵ポリシー型に大別されるが、前者は平文に条件、いわゆるアクセス構造が付随し、署名生成鍵に属性が付随する。平文と署名鍵に付随する情報を逆転させると後者になる。この際、属性（例えば、 会社員、30 歳以上、東京都在住）がアクセス構造（例えば、18 歳以上の都民であるか？）を満たす時に限り、署名を生成することができる。例えば平文ポリシー型であれば、アクセス構造を満たす属性を所持する署名者が署名したという情報以外が漏れないため、匿名性を担保しながらアクセス制御が可能になる。どちらのポリシー型が適切かはアプ
リケーションによるが、一般的に平文ポリシー型の方が利便性が高い属性ベース
署名と考えられており、より多くの構成方法が知られている。

Maji ら [1] により初めて属性ベース署名が提案されて以降、扱えるアクセス構造
をより豊かにする研究が進み、今では論理回路やチューリング機械によって表現できる非常に幅広いアクセス構造を扱える属性ベース署名が知られている [2, 3, 4]。
いずれの方式も構成方法の概略は似ている。以下典型的な、論理回路をアクセス構造に扱える平文ポリシー型の属性ベース署名の実現方法の概略を説明する。記載する方式は、初めて論理回路をアクセス構造に扱える方式を楕円曲線上で達成した坂井ら [2] の方式を、電子署名・コミットメント方式・非対話型ゼロ知識証明と呼ばれる暗号要素技術で一般化した El Kaafarani と勝又 [4] の方式に基づいている。
■論理回路をアクセス構造に扱える平文ポリシー型の属性ベース署名

Setup: 管理者は、Setup アルゴリズムを実行し、システム共有のパラメータを生成する。具体的に、電子署名の公開鍵 vk と秘密鍵 sk、コミットメント方式の公開鍵 pkc を生成し、属性ベース署名の管理者公開鍵 mpk = (vk, pkc ) を公開し、管理者秘密鍵 msk = sk を保管する。
KeyGen(msk, x): 管理者は、KeyGen アルゴリズムを実行し、（L ビットにエンコードされた）属性 x ∈ {0, 1}L を所持するユーザの署名鍵 Kx を生成する。具体的に、管理者は sk を用いて、x に対して署名 σ を生成し、署名鍵 Kx = σ を65

出力する。

Sign(mpk, Kx , C, msg): 属性 x を所持するユーザは、Sign アルゴリズムを実行し、C(x) = 1 を満たす論理回路 C : {0, 1}L → {0, 1} で表されるアクセス構造が付随する平文 msg に対して署名を生成する。具体的に、以下の手順で署名を生成する。

1. 属性 x ∈ {0, 1} と署名鍵 Kx = σ を管理者公開鍵に含まれる pkc でコミットし、それらを各々 comx と comσ と置く。
2. 属性 x ∈ {0, 1} と署名鍵 Kx = σ を秘匿にしながら、次のような関係を示す非対話型ゼロ知識証明 π を生成し、Σ = (comx , comσ , π) を署名として出力する。本説明では、平文 msg が署名 Σ に紐づいていないが、一般
的には、論理回路 C か非対話型ゼロ知識証明の内部に msg を埋め込むことで紐づけられることに注意されたい。
（a） C(x) = 1 である。つまり、属性がアクセス構造を満たす。
（b） σ が管理者公開鍵に含まれる vk の下で正当な署名である。
（c） comx と comσ が管理者公開鍵に含まれる pkc の下で x と σ に対する
コミットメントである。

Verify(mpk, Σ, C, msg): 検証者は、Verify アルゴリズムを実行し、論理式 C によって表されるアクセス構造を満たす属性を所持したユーザが msg に対して署名 Σ を生成したかを確認する。具体的に、非対話型ゼロ知識証明の証明
Σ の第 3 項 π が正しいことを検証する。
■安全性について属性ベース署名は、適応的文書攻撃に対して存在的偽造不可能性（EUF-CMA 安全性）、および、秘匿性を満たす必要がある。前者は、一般的な電子署名における EUF-CMA 安全性に似ており、攻撃者がある論理回路 C ∗ で表されるアクセス構造が付随した（以下、C ∗ が付随した）平文 msg に対する署名 Σを偽造できないことを要求する。この際、攻撃者は、C ∗ (x) = 0 を満たす任意の属性 x（つまり、アクセス構造を満たさない x）に対する署名鍵 Kx を管理者から入手でき、さらに、異なる論理回路 C ̸= C ∗ が付随した平文 msg に対する署名を得られる。後者は、属性ベース署名に特有な安全性要件で、署名から属性情報が漏′れないことを要求する。具体的には、異なる属性 x∗ と x∗ が論理回路 C ∗ を満たす′

場合、C ∗ が付随した平文 msg に対して属性 x と x∗ を所持するいずれのユーザが署名を打ったかが識別できないことを要求する。これは、署名からはアクセス構
造を満たした誰かが署名を作成したことしか漏れず、具体的な属性が秘匿されることを表す。

66

上記で紹介した方式の EUF-CMA 安全性は、概略的には電子署名の EUF-CMA
安全性と非対話型ゼロ知識証明の健全性から導かれる。仮に攻撃者に属性ベース
署名の偽造ができたとした場合、非対話型ゼロ知識証明の健全性より、管理者公開鍵に含まれる電子署名の公開鍵 vk の下で正当な署名 σ を利用していなければならない。攻撃者は、管理者から C ∗ (x) = 0 を満たす任意の属性 x に対する署名
鍵 Kx = σ ′ を入手できるが、これらは C ∗ が付随した平文に署名することはできない。従って、攻撃者が偽造に利用した σ は、管理者から入手した σ ′ とは異なるが、これは電子署名の EUF-CMA 安全性に矛盾する。以上より、属性ベース署名の偽造を生成できる攻撃者がいないことが示される。
また、秘匿性については、コミットメントの秘匿性と非対話型ゼロ知識証明のゼロ知識性から直ちに導かれる。署名 Σ は、(comx , comσ , π) という形をしているが、コミットメントの秘匿性より comx と comσ は、属性 x と署名鍵 Kx の情報を隠す。さらに、非対話型ゼロ知識証明のゼロ知識性より、証明 π も正しい証拠を利用して証明が作られた以上の情報を漏らさない。以上より、Σ は、論理回路 C ∗を満たす属性で生成された署名である以上の情報を漏らしていない。
■具体的な実現方法について

現在知られている属性ベース署名のほとんどは上記構成に従っており、違いはどのような電子署名、コミットメント、非対話型ゼロ知識
証明を用いるかである。例えば、坂井ら [2] は上記一般構成の 2.(a) と 2.(b), (c) に各々特化した非対話型ゼロ知識証明 Groth-Sahai [5] と Groth-Ostrovsky-Sahai [6]を融合させることにより、Pairing 写像に基づく効率的な属性ベース署名を構成した。一方で、El Kaafarani と勝又 [4] は上記の暗号要素技術を耐量子計算機安全な道具で実現することで、初めて耐量子計算機安全な論理回路をアクセス構造に扱える属性ベース署名を構成した。

3.2.2 集約 MAC、マルチ MAC、集約署名、マルチ署名
メッセージ認証コード（Message Authentication Code，MAC）や電子署名は、ある平文を特定のユーザが認証したこと、署名したことを暗号学的に保証できる暗号技術である。MAC は秘密鍵を利用してタグを検証することができ、電子署名は
公開情報のみで署名を検証できる。通常の MAC や電子署名では、複数のユーザや平文に対してタグを付与したり、署名を生成する場合、MAC や署名を行う回数
だけタグや署名が生成されるため、タグや署名が数多く生成される。アプリケー
ションにおいてはスケーラビリティの課題となる。そこで、この課題を解決するための技術である集約 MAC、マルチ MAC、集約署名、マルチ署名を紹介する。

67

 集約 MAC [7]: 異なる平文に対して、複数の異なる秘密鍵で生成されたタ
グを、単一のタグに集約する技術であり、タグサイズの削減が可能となる。
タグ検証においても、集約したタグの検証のみで複数の平文の正当性を一括で検証可能となる。ただし、平文や秘密鍵は必ずしも異なるとは限らない。

 マルチ MAC [7]: 単一の平文に対して、複数の異なる秘密鍵で生成されたタグを、単一のタグに集約する技術である。タグ生成の際の平文が全ユーザで同一な、集約 MAC の特殊ケースとして捉えることができ、集約 MAC と比べてより効率的な構成が可能となる。

 集約署名 [8, 9]: 電子署名の枠組みで集約 MAC と同じ機能を実現する方法である。

 マルチ署名 [8, 9, 10, 11, 12]: 電子署名の枠組みでマルチ MAC と同じ機能を実現する方法である。
集約・マルチ MAC/署名の中には、集約する際に MAC/署名を生成するユーザ同士が対話する必要がある方式や、集約が逐次的にしか行えない方式等様々な方式があるため、用途に応じて選定することが求められる。一般的に、利便性が高い
方式ほど効率性が悪くなる傾向があることに注意されたい。例えば、常にネットに繋がっているサーバ同士でタグや署名を集約する場合は、効率を高めるために対話型の集約方式の利用が好ましい。一方で、一般のユーザがクラウドやブロッ
クチェーン上にアップロードしたタグや署名を集約する応用では、全ユーザが同時にオンラインであるとは限らないため、非対話型の集約方式の方が好ましい。
以下、代表的な方式を二つを紹介する。

F を鍵空間と出力空間が {0, 1}λ で入力空間が M の擬似ランダム関数とする。以下、平文空間に M を持つ集約 MAC を
F から構成する。
■Katz と Lindell による集約・マルチ MAC [7]KeyGen(1λ ): 各ユーザは、鍵生成アルゴリズムを実行し、F の鍵 K ← {0, 1}λ をサンプルし、秘密鍵 key = K を出力する。
MAC(key, msg ∈ M): ユーザは、タグ生成アルゴリズムを実行し、タグ tag ←F(K, msg) を生成する。
Aggregate((msgi , tagi )i∈[N ] ): タグ集約者は、各ユーザが生成した平文 msgi に対するタグ tagi を入力にタグ集約アルゴリズムを実行し、集約タグ tag =L
λi∈[N ] tagi ∈ {0, 1} を生成する。
Verify((keyi , msgi )i∈[N ] , tag): タグ検証者は、各ユーザの秘密鍵 keyi = Ki と署
名したであろう平文 msgi を入力にタグ検証アルゴリズムを実行し、tag =68

Li∈[N ] F(Ki , msgi ) が成り立てば、集約タグが正当だと判定する。ただし、異なる i, j ∈ [N ] に対して (keyi , msgi ) ̸= (keyj , msgj ) とする。
タグ検証アルゴリズムはタグ生成を再度行い、それが集約タグと同一かを確認する。タグ生成が決定的であることより、方式の正当性は確認できる。参考までに、
上記方式は擬似ランダム関数の代わりに、タグ生成が決定的な任意の MAC を利用することができる。詳細は [7] を参考にされたい。また、上記方式はタグ集約ア
ルゴリズムが同じ平文だけを入力に取るように制限することで、マルチ MAC にもなる。
■集約・マルチ MAC の安全性について

通常の MAC と同様に、適応的平文と署名攻撃に対して存在的偽造不可能性（EUF-CMVA 安全性）と同等の安全性を要求する。
この安全性は、秘密鍵 keyi = Ki を持つユーザが平文 msgi を署名していない限
り、Verify((keyi , msgi )i∈[N ] , tag) が正当と判断するような組み (keyi , msgi )i̸=j,i∈[N ]と集約タグ τ を攻撃者が出力できないことを意味する。ただし、攻撃者は任意のタグと平文の組み (σ, msg) が秘密鍵 keyi の元で正しい署名か検証してもらえるとする。EUF-CMVA 安全性を上記方式が満たすことは、F が擬似ランダム関数であることより直ちに導かれる。

G0 , G1 , GT を素数位数 p を持つ群として、g0 を G0 の生成元、e : G0 × G1 → GT を付随する（非対称）Pairing 写像とする。また、H0 と H1 をハッシュ関数とする。以下、平文空間に M を持つ集

■Boneh, Drijvers と Neven による集約・マルチ署名 [9]約署名を構成する。

KeyGen : 各ユーザは、鍵生成アルゴリズムを実行し、a ← Zp をサンプルし、公開鍵 pk = h = g0a ∈ G0 と秘密鍵 sk = a を生成する。
Sign(sk, msg) : ユーザは、署名生成アルゴリズムを実行し、署名 σ = H0 (msg)sk ∈G1 を生成する。
Aggregate((pki , msgi , σi )i∈[N ] ) : 署名集約者は、各ユーザが生成した平文 msgi に対する署名 σi を入力に署名集約アルゴリズムを実行し、まず (t1 , · · · , tN ) ←Qti
H1 (pk1 , · · · , pkN ) ∈ ZNを計算し、集約署名σ=pi∈[N ] σi を生成する。
Verify((pki , msgi )i∈[N ] , σ) : 署 名 検 証 者 は 、各 ユ ー ザ の 公 開 鍵 pki = g aiと 署 名 し た で あ ろ う 平 文 msgi を 入 力 に 署 名 検 証 ア ル ゴ リ ズ ム を
実 行 し 、ま ず (t1 , · · · , tN ) ← H1 (pk1 , · · · , pkN ) ∈ ZN
p を計算し、Qtie(g, σ) =i∈[N ] e(pki , H0 (msgi )) が 成 り 立 て ば 、集 約 タ グ が 正 当 な ものだと判定する。

69

アルゴリズムの正当性は、下記の数式が成立するこから確認できる。

Ye(g0 , σ) = e(g0 ,Yσiti ) =i∈[N ]e(g0 , H0 (msgi )ski ·ti ) =i∈[N ]Ye(pktii , H0 (msgi ))i∈[N ]

さらに、各ユーザが同じ平文 msg を署名するマルチ署名の設定においては、予め集約された公開鍵 apk =Qi∈[N ] pki ∈ G0 を計算することで、集約署名の検証

は e(g, σ) = e(apk, H0 (msg)) を確かめるだけである。計算コストが比較的に高い

Pairing 写像の計算が (n + 1) 回から 2 回にでき、マルチ署名の方が集約署名よりも検証コストが少なくなる。集約・マルチ MAC の場合、このような検証コストの差はない。
■集約・マルチ署名の安全性について

集約・マルチ MAC の場合と同様、通常の電子署名における適応的平文攻撃に対して存在的偽造不可能性（EUF-CMA 安全性）と同等の安全性を要求する。ただし、MAC とは違い、電子署名では検証を攻撃
者自身が行えるため、選択署名攻撃を考慮に入れなくてよいことに注意されたい。上述の方式は、Boneh ら [13] の電子署名の自然な集約・マルチ署名への拡張になっているが、EUF-CMA 安全性も大まかには同様に導かれる。具体的には、(g0a , g1a , g b ) ∈ G0 × G1 × G1 を与えられても g0ab ∈ G0 を求めることができないという、co-Computational Diﬃe-Hellman 仮定の困難性より導かれる。
■その他の方式

署名の設定において、現在最も効率的な集約署名は上記で紹介した Boneh ら [9] の方式である。マルチ署名については、署名集約アルゴリズムで各ユーザが対話することを許せば、Pairing 写像を用いないより効率的な方式がある。Bellare と Neven[10] は、対話を 3 ラウンド許すことで離散対数問題の困難性仮定を基にしたマルチ署名を構成し、署名長は Schnorr 署名 [14] と同じである。
近年、より強い困難性仮定を基にすることで、[10] の方式のラウンド数を減らしより効率性を高めた方式が提案されている [11, 12]。

3.2.3 グループ署名■グループ署名の特徴

従来の電子署名では、署名検証の際に署名者が誰であるか明

示的に分かってしまう。グループ署名は、従来の電子署名と異なり、署名者の匿名性を保証することができる特徴を有する。グループ署名における匿名性とは、ある組織（グループ）に属するメンバのだれかが署名したことしか検証者には分からない性質である。グループ署名では、署名者と検証者に加えて、発行者と呼ばれる各グループメンバに署名生成用の署名鍵を発行する管理者と、開示者と呼ばれる署名から真の署名者を開示する管理者を含む。ただし、それぞれの管理者は機70

能分離されていなくてもよい。
署名者の匿名性を保証する高機能暗号技術としてリング署名 (第 3.2.4 章参照）があるが、グループ署名とリング署名は以下の相違がある。

 アドホック性：リング署名では各署名者は独自に鍵生成を行い検証鍵を公開し、署名生成時に任意の検証鍵集合を選択して含めることでグループをアドホックに構成できるのに対し、グループ署名では発行者と署名鍵を生成したユーザ集合がグループとなる。

 署名者開示の有無：リング署名では署名鍵が開示されたとしても真の署名者であるかどうか分からないのに対し、グループ署名では開示者により真の署名者を開示できる。
この相違に応じ、リング署名は管理者無しの環境で強い匿名性を要求する状況、グループ署名は管理者がグループを管理し緊急時には真の署名者を開示可能である
ことを要求する状況で使い分けることが望ましい。
■グループ署名の歴史

グループ署名の概念は、Chaum と Van Heyst [15] によって初めて提案された。同時にいくつかの方式が提案されたが、グループメンバをセッ
トアップ後は追加不可能である静的グループに制限されている方式であるか、もしくは開示者が真の署名者を開示する際にグループメンバとの対話が必要という問題があった。また、数学的な安全性定義が示されておらず、非形式的な安全性評価しかされていなかった。
その後、Bellare らによって、静的グループの場合 [16] と署名生成後でも新たなグループメンバを追加可能な動的グループの場合 [17] における統一的な数学的安全性定義がそれぞれ提案された。加えて、Bellare らは従来の電子署名、公開鍵
暗号、非対話ゼロ知識証明から一般的に安全なグループ署名を構成する手法を提案した。Bellare らの構成法では、メンバ追加時は、各メンバは発行者から自分がグループに属していることを示す証明書を受け取り、証明書を含む署名鍵を生成する。署名生成時は、自分の ID に紐づいた証明書の暗号文とともに、証明書を知ることと暗号文が正しいことを証明する非対話ゼロ知識証明を署名として出力する。開示者による署名開示時は、署名に含まれる暗号文を復号し、ID を特定した上で、（必要に応じて）開示内容が正しいことを示す非対話ゼロ知識証明を出力する。Bellare らの安全性定義に基づき、Pairing 写像を利用した署名長の短い方式 [18, 19] 等が提案されている。
また、グループメンバの証明書を失効する機能を持つ方式も知られており、グループ管理者が失効リストを配布し、署名者がそれに基づいて署名を生成し、検証
71

者が失効済みかどうか検証するリスト公開型失効 [20] と、署名生成時は失効リス
トを用いずに検証者のみがリスト検証する検証者ローカル型失効 [21] がある。検証者ローカル型失効では、新たな失効者が出る際に、その都度、グループメンバに通知する必要が無いため、リスト公開型失効よりも効率的である。
近年では、量子計算機実用化の研究の進展に伴い、大規模な量子計算機が実現したとしても安全性を保つ耐量子計算機安全な方式の研究が進んでおり、格子問
題に基づく方式 [22, 23, 24] が主に提案されている。
■グループ署名方式の比較

一般に、グループ署名の安全性として以下の 3 つの性質が要求される。

 匿名性：開示者以外（発行者も含む）は署名から真の署名者を識別できない。
 追跡可能性：開示者が署名者を追跡不可能であり、かつ、検証に合格する署
名を攻撃者は生成することができない。

 濡れ衣不可能性：管理者であっても、署名を作成していないメンバに対して真の署名者であると証明できない。

Bellare らの構成法 [16, 17] 以降に提案された方式の多くは、彼らの構成法を基としており、上記の性質を満たしている。
また、グループ署名の効率は以下の観点で比較できる。

 グループ公開鍵長
 署名長
 署名計算量

Chaum と Van Heyst の方式 [15] の方式は、グループ公開鍵長、署名長、署名計
算量のいずれもグループメンバ数に比例しているが、Camenisch と Stadler [25]によってグループ公開鍵長、署名長、署名計算量のいずれも定数長の RSA 仮定に基づく方式が提案され、以後古典計算機に対して安全な方式のほとんどは定数長を達成している。その中でも、Pairing 写像を利用したグループ署名方式 [18, 19]
では署名長をグループ署名ではない CRYPTREC 暗号リスト [26] に掲載されている電子署名の数倍程度まで短くすることができる。耐量子計算機安全な方式では、
グループ公開鍵長と署名計算量が定数長の方式 [24] やグループ公開鍵長と署名長が定数長の方式 [23] が知られている。
■代表的な方式のアルゴリズム

具体的なグループ署名の実現方法として、公開鍵暗号と電子署名に基づく静的な方式 [16] を紹介する。

72

Setup(1k , 1n ): 管理者鍵生成アルゴリズム。k をセキュリティパラメータ、n をグ
ループの最大メンバ数とし、共通参照情報 crs、公開鍵暗号の復号鍵と暗号化
鍵 (dk, ek)、電子署名の署名鍵と検証鍵 (msk, mvk) を生成し、発行者の秘密
鍵 ik = msk 、開示者の秘密鍵 ok = dk 、グループ公開鍵 gpk = (crs, mvk, ek)を出力する。

KeyGen(i, ik, gpk): メンバ鍵生成アルゴリズム。メンバ i は電子署名の署名鍵と検証鍵 (ski , vki ) を生成し、vki を発行者に送る。発行者は msk を用いて、(i, vki ) をメッセージとした署名 certi を生成し、証明書としてメンバに送る。
メンバは秘密鍵 gski = (i, ski , vki , certi ) を出力する。
Sign(gski , m): 署名者 i の署名生成アルゴリズム。メッセージ m に対して、skiを用いて署名 s を生成し、乱数 r を選び、ek を用いて (i, vki , certi , s) を暗号化した暗号文 ct を計算する。crs を用いて、次のような関係を示す非対話
ゼロ知識証明 π を生成する。
(mvk の下で ((i, vki) , certi ) が正しい署名) かつ (vki の下で (m, s) が正しい署名)
かつ (ek の下で ct が(i, vki , certi , s) の正しい暗号文) 署名 σ = (ct, π) を出力する。
Verify(gpk, m, σ): 署名検証アルゴリズム。π が成り立つかチェックする。
Open(ok, gpk, m, σ): 署名者開示アルゴリズム。π が成り立つかチェックし、dkを用いて ct から (i, vki , certi , s) を復号し、i を出力する。
3.2.4 リング署名■リング署名の特徴

リング署名は、匿名署名の一種であり、あるグループの誰かが署名したことはわかる（偽造不可能性）が、そのグループの誰が署名したかはわからない（匿名性）、という性質を持っている。具体的には、リング署名は、リングと呼ばれる n 人の署名参加者の集合に対して、リングのなかの少なくとも 1 人の署名者が署名を生成したことは確認できるが、リングのなかの誰が署名を生成したかはわからない、ことを示す署名である。リング署名は、リングに属する n 人の署名参加者の公開鍵に対して、少なくとも 1 人の署名参加者の秘密鍵を知っていることを示す、非対話 1-out-of-n OR 証明と見ることもできる。
匿名署名の一種であるグループ署名（第 3.2.3 章参照）と比較すると、以下ような相違がある。

 アドホック性：リング署名では、各署名者は独自に鍵生成を行い検証鍵を公開し、署名生成時に署名者が任意の検証鍵集合を選択することでグループを
アドホックに構成できる。一方、グループ署名では、発行者（グループ管理
73者）と協力して署名鍵を生成したユーザの集合がグループとなる。

 署名者開示の有無：リング署名では、署名者であっても、真の署名者を開示することはできない。一方、グループ署名では、開示者（グループ管理者）
は、真の署名者を開示することができる。
このように、リング署名は、署名生成時にアドホックにグループを選ぶことができ、グループ管理者が必要なく非中央集権的である、という特徴を持っている。
■リング署名の歴史

リング署名は、Rivest, Shamir, Tauman [27] によって初めて提案され、落戸付一方向性置換に基づく方式が示された。その後、離散対数問題に基づくリング署名方式 [28] が提案された。これらの方式で用いられている典型的なリング署名の構成法では、n 人の署名参加者の集合であるリングに対して、リングのなかの署名者以外の署名参加者の公開鍵を用いて n − 1 個の値の連鎖を生成し、署名者の秘密鍵を用いて連鎖を環になるように連結する 1 個の値を生成することによって、値の連鎖の環を構成しそれを署名としている。署名者の秘密鍵を用いて連結した部分は、署名者の秘密鍵が分かったとしても特定することができず、強い匿名性を実現している。また、署名サイズは O(n) となっている。
通常のリング署名は前述の通り、署名者であっても自分が真の署名者であることを証明できない強い匿名性を保証しているが、応用のために匿名性を制限した
方式も知られている。リンク可能リング署名 [29] では、同じ秘密鍵とタグを用いて異なる 2 つのメッセージについて生成された署名を、リンクすることができる。
トレース可能リング署名 [30] では、同じ秘密鍵とタグを用いて異なる 2 つのメッ
セージについて生成された署名から、署名者を特定することができる。リング署
名の非中央集権的な構成が暗号資産に適しており、上記の性質により暗号資産の二重使用を防ぐことができるため、リンク可能リング署名やトレース可能リング
署名は匿名の暗号資産で用いられている。
また、しきい値リング署名 [31, 32] は、1-out-of-n のリング署名を k-out-of-n に一般化したものであり、n 人の署名参加者の集合であるリングに対して、リングのなかの少なくとも k 人の署名者が協力して署名を生成したことを確認することができる署名である。
■リング署名方式の比較

リング署名の安全性として以下の 2 つの性質が要求される。

 匿名性: n 人のリングのなかの誰が署名者であるか、署名から特定できない。
 偽造不可能性: n 人のリングのなかの少なくとも 1 人の署名者の秘密鍵がな
ければ、署名を生成できない。

74

リング署名方式の多くは、上記の性質を満たしている。匿名性を制限したものとして、前述のリンク可能リング署名とトレース可能リング署名がある。さらに、ア
カウント可能リング署名 [33] では、開示者を置くことによって署名者の開示を可能としている。ただし、アカウント可能リング署名では、グループ署名とは異なり発行者は必要なく署名生成時にグループを選ぶことができる。また、偽造不可能性を k-out-of-n に一般化したものとして、前述のしきい値リング署名がある。
また、リング署名の効率は以下の観点で評価される。

 署名サイズ 署名生成と検証に必要な計算量
リング署名方式の多くは、リングの署名参加者の数を n とすると、署名サイズがO(n) である。1-out-of-n の効率的なゼロ知識証明を用いることで、署名サイズをO(log n) にできる方式が知られている [34, 35, 36, 37]。また、信頼できるセット
アップを仮定することで、アキュムレータにより n 個の公開鍵を圧縮し署名サイズを定数にできる方式も提案されている [38]。
また、基づいている計算量仮定の観点では、耐量子計算機安全性を持つリング
署名方式が提案されている [39, 35, 36, 37]。
■代表的な方式のアルゴリズム

具体的なリング署名の実現方法として、Abe, Ohkubo,

Suzuki による離散対数問題に基づく方式 [28] を紹介する。署名者 i について、qiを素数、gi を位数 qi の巡回群 Gi の生成元、Hi : {0, 1}∗ → Zqi をハッシュ関数とする。

KeyGen(qi , Gi , gi ): 鍵生成アルゴリズム。
1. 署名者 i は、秘密鍵 xi ∈ Zqi をランダムに選び、公開鍵 (qi , Gi , gi , yi = gixi )を計算する。

Sign(xa , L = {y1 , ..., yn }, m): 署名生成アルゴリズム。
1. 署名者 a ∈ {1, ..., n} は、秘密鍵 xa と公開鍵のリスト L = {y1 , ..., yn } とメッセージ m を入力として受け取る。
2. 署 名 者 a は 、ra ∈ Zqa を ラ ン ダ ム に 選 び 、ea = gara と ca+1 =Ha+1 (L, m, ea ) を計算する。
3. 署 名 者 a は 、si ∈ Zqi を ラ ン ダ ム に 選 び 、ei = gisi yici と ci+1 =Hi+1 (L, m, ei ) を、i = a + 1, ...n, 1, ..., a − 1（ただし i = n + 1 = 1 とする）について計算する。

4. 署名者 a は、sa = ra − ca xa mod qa を計算する。

75

5. 署名者 a は、署名 σ = (c1 , s1 , ..., sn ) を出力する。
Verify(L = {y1 , ..., yn }, σ, m): 署名検証アルゴリズム。
1. 検証者は、公開鍵のリスト L = {y1 , ..., yn } と署名 σ = (c1 , s1 , ..., sn ) とメッセージ m を入力として受け取る。
2. 検証者は、ei = gisi yici と ci+1 = Hi+1 (L, m, ei ) を、i = 1, ..., n − 1 について計算する。

3. 検証者は、en = gnsn yncn を計算する。
4. 検証者は、もし c1 = H1 (L, m, en ) なら受理を出力し、そうでなければ非受理を出力する。
なお、この方式は、n = 1 のとき Schnorr 署名となっており、Schnorr 署名の自然な拡張になっている。

3.2.5 しきい値署名■しきい値署名の特徴(k, n) しきい値署名とは、ある (k, n : k ≤ n) である自然数の組に対して、以下のアルゴリズムから成る公開鍵署名方式である。

1. 公開鍵署名の署名生成鍵と検証鍵のペアを生成する。
2. 署名生成鍵を n 個のシェアに分割する（しきい値秘密分散）。シェアとは、元のデータを複数のデータに分割したものである。

3. 1 つのメッセージに対していくつかのシェアで署名を生成する。
4. シェアから生成された署名を k 個以上集め、組み合わせる処理を行う。
5. 組み合わされた署名に対し、検証鍵で検証を行い、検証結果を出力する。
偽造等の不正が行われず正当にこのアルゴリズムが実行された場合、第 4 項で組み合わされた署名は、第 1 項で生成された署名鍵を用いて生成された署名と同等となり、第 5 項の検証処理を通る署名となる。
しきい値署名は一般的な DSA 等の公開鍵署名方式と比較すると、ベースとなる
しきい値秘密分散の特性によって署名生成鍵を複数にすることができるため、しきい値未満の漏洩や故障に対して優位性を持つ。類似したアクセス構造を実現する署名方式として「署名生成の際に設定された（しきい値等の）アクセス構造を満たす属性集合に対応する署名生成鍵を持つ署名者は単一の正当な署名を生成できる」属性ベース署名が存在するが、属性ベース署名では署名者は単一であり、単体ではアクセス構造を満たさない属性を複数の署名者が持ち寄っても正当な署名は作れない。一方でしきい値署名は複数の署名者に署名生成権限を分散すること76を想定しており、漏洩・故障等への耐性を持つことが属性ベース署名とは異なる。
また、マルチパーティ計算のように複数の参加者が想定される署名プロトコルであるため、鍵生成については、信頼できる鍵生成・配布を行うトラステッドディー
ラーを仮定する場合と、各参加者が独自に鍵を生成した上で暗黙的に署名生成鍵や署名検証鍵が決定される分散鍵生成を用いる方式が存在する。
しきい値署名におけるの安全性の定義には以下が存在する。

 偽造不可能性（Unforgeablity）：しきい値未満のシェアで生成された署名を集めただけでは、検証鍵で検証可能である正当な署名は生成不可能。さらに不正者の数によって以下のように定義が分かれる。

– dishonest majority：不正者が n/2 以上しきい値未満– honest majority：不正者が n/2、かつしきい値未満
 堅牢性（Robustness）：正規のシェアがしきい値以上集まれば、必ず正当な署名が生成可能 Identiﬁable abort：正直な署名者は不正なシェアが少なくとも 1 つ以上含まれていることを検知可能

 Proactive security：長期的な期間でのシェアの漏洩に対して安全
また署名アルゴリズムとしての安全性もあるため、例えば後述する BLS 署名
をベースとしたしきい値署名ではランダムオラクルモデルのもとで Gap Diﬃe-Hellman 問題の困難性を安全性の根拠として、選択メッセージ攻撃に対する存在
的偽造不可能性が証明されている。
■しきい値署名の歴史

しきい値署名は 1987 年 Desmedt によって最初にコンセプ

トが提案 [40] され、同じく Desmedt と Frankel によって ElGamal 暗号 [41] とShamir のしきい値秘密分散 [42] を組み合わせた方式が提案された [43]。Gennaro
らは安全性証明がついた ElGamal 方式ベースのしきい値署名を 1996 年に発表し[44]、Shoup は同期通信を必要としない RSA 署名をベースとした方式を発表している [45]。また署名の検証に署名生成者の協力が必要な Undeniable な方式や、検証者を複数にする (k, l)-Shared Veriﬁcation 方式等、様々な方式が提案されている。
近年では暗号資産に関連した技術として注目されている。例えば、Bitcoin では
署名者のプライバシに関する問題やトランザクションのストレージ効率化に向けてしきい値署名を採用しやすい Schnorr 署名をとりいれている [46]。また、効率的なスキームとして FROST[47] 等が考案されており、利用されるケースが増えてきている。ECDSA を取り入れたしきい値署名に関する提案が数多くあり [48] セ77

キュリティの強化やプロトコルの効率化を目指して様々な方式があげられている[49, 50, 51, 52, 53, 54, 55, 56]。最近では Groth と Shoup によって効率的で堅牢な方式 [57] が提案されている。
■しきい値署名方式の比較

しきい値署名は様々な方式が提案されているがベースとなる署名方式やしきい値秘密分散・分散鍵生成の方式によって効率性や安全性が異なる。
効率性では、(1) 鍵長・署名長などの各パラメータサイズ、(2) シェア生成・組み合わせ処理などの各オペレーション速度、(3) エンティティ間の同期が必要か否かの違いがあげられるが、(1)(2) はベースとなる署名方式や定義されている演算処理（楕円曲線演算や Pairing 写像）によって異なる。例えば、128bit セキュリティ程
度のパラメータを基準とすると ECDSA（secp256r1）および EdDSA（Ed25519）
ベースのしきい値署名 [57, 47] の各シェア自身のサイズは署名生成鍵と同等で256bit、シェアから生成される署名長は 512bit となる。BLS 署名（BLS12-381）
ベースのしきい値署名 [58] の場合、各シェアのサイズは 256bit、署名長は 768bitとなる [59]。なお、数値については圧縮を使った表現も含まれており、シェアに対するコミットメントの保持や通信回数の効率化や安全性の向上のために事前計算を行った signature helpers を共有することもあるため、参加者が保持するデータ量はこれより増加することがある。(3) については方式が同期式・非同期式なのかによって異なり先の項目でもあげたが事前計算を行うことによって非同期式を実現し高速化を行うことがある。また鍵生成方式においてもベースとなる分散鍵生成方式の違いによって決まってくる。例えば通信ラウンド数の比較では Pedersen-

DKG[60] は 3 ラウンド、Gennaro-DKG[61] は 4 ラウンド、FROST-DKG[47] は
1 ラウンドというように方式によって大きな違いがありネットワークレイテンシを考慮すると性能に大きな差が生じる可能性がある。しきい値署名に関する各文献で多くの方式が比較されているが、最近の比較では [56] の Figure1 や [62] のTable1 などがあげられる。
■代 表 的 な ア ル ゴ リ ズ ム・方 式

こ こ で は Ethereum な ど で 既 に 用 い ら れ て い る

Boldyreva が提案した BLS 署名 [13] ベースのしきい値署名 [58] を紹介する。
以下では、(t, n)-しきい値署名とし、n 人の参加者を P1 , ..., Pn とする
Setup(1κ ): BLS 署名のセットアップはセキュリティパラメータ κ を入力にとり、素数 p、p を位数とする巡回群 G1 , G2 , GT 、各巡回群を使って定義される Pairing 写像 e : G1 × G2 → GT 、文字列から G1 の元へのハッシュ関数
H : {0, 1}∗ → G1 、G2 の元からランダムに決定した Q を準備し公開パラ78

メータ P arams := (p, G1 , G2 , GT , e, H, Q) とする

SharedKeygen(P arams, t, n): 分散鍵生成アルゴリズム [61] を利用して BLS 署
名鍵ペア (vk, sk)（ただし、sk ∈ Z∗p , vk = skQ) に対するシェア {vki , ski :1 ≤ i ≤ n} を (t, n) 秘密分散になるよう各参加者が保持する。
SharedSign(P arams, m, ski ): 参加者はメッセージ m に対して σi = ski H(m) を計算し提出する

Verify((P arams, m, {σij }1≤j≤t , {vkij }1≤j≤t , vk)): 1. 参加者から収集した各 j に対して、e(σij , Q) = e(H(m), vkij ) が成り立つことを確認する
P
2. 正規の署名を σ = 1≤j≤t L(ij )σij により計算する。ただし、L(ij ) は分
散鍵生成におけるラグランジュ補間係数である。

3. vk を使って e(σ, Q) = e(H(m), vk) により署名を検証する。

参考文献[1] H. K. Maji, M. Prabhakaran and M. Rosulek: “Attribute-Based Signatures”, CT-RSA 2011, Springer-Verlag, pp. 376–392 (2011).
[2] Y. Sakai, N. Attrapadung and G. Hanaoka: “Attribute-Based Signatures
for Circuits from Bilinear Map”, PKC 2016, Springer-Verlag, pp. 283–300(2016).
[3] Y. Sakai, S. Katsumata, N. Attrapadung and G. Hanaoka: “AttributeBased Signatures for Unbounded Languages from Standard Assumptions”,
ASIACRYPT 2018, Springer-Verlag, pp. 493–522 (2018).
[4] A. El Kaafarani and S. Katsumata: “Attribute-Based Signatures for Unbounded Circuits in the ROM and Eﬃcient Instantiations from Lattices”,
PKC 2018, Springer-Verlag, pp. 89–119 (2018).
[5] J. Groth and A. Sahai: “Eﬃcient Noninteractive Proof Systems for Bilinear
Groups”, SIAM J. Computing, 41(5), pp. 1193–1232 (2012).
[6] J. Groth, R. Ostrovsky and A. Sahai: “New Techniques for Noninteractive
Zero-Knowledge”, J. ACM, 59(3), pp. 1–35 (2012).
[7] J. Katz and A. Y. Lindell: “Aggregate Message Authentication Codes”,
CT-RSA 2008, Springer-Verlag, pp. 155–169 (2008).
[8] D. Boneh, C. Gentry, B. Lynn and H. Shacham: “Aggregate and Veriﬁably
Encrypted Signatures from Bilinear Maps”, EUROCRYPT 2003, SpringerVerlag, pp. 416–432 (2003).
79[9] D. Boneh, M. Drijvers and G. Neven: “Compact Multi-Signatures for
Smaller Blockchains”, ASIACRYPT 2018, Springer-Verlag, pp. 435–464(2018).
[10] M. Bellare and G. Neven: “Multi-Signatures in the Plain Public-Key Modeland a General Forking Lemma”, ACM CCS 2006, pp. 390–399 (2006).
[11] C. Komlo and I. Goldberg: “FROST: Flexible Round-Optimized Schnorr
Threshold Signatures”, SAC 2020, Springer-Verlag, pp. 34–65 (2020).
[12] J. Nick, T. Ruﬃng and Y. Seurin: “MuSig2: Simple Two-Round Schnorr
Multi-Signatures”, CRYPTO 2021, Springer-Verlag, pp. 189–221 (2021).
[13] D. Boneh, B. Lynn and H. Shacham: “Short Signatures from the Weil
Pairing”, J. of Cryptology, 17(4), pp. 297–319 (2004).
[14] C.-P. Schnorr: “Eﬃcient Identiﬁcation and Signatures for Smart Cards”,
CRYPTO 1989, Springer-Verlag, pp. 239–252 (1989).
[15] D. Chaum and E. V. Heyst: “Group Signatures”, EUROCRYPT 1991,
Springer-Verlag, pp. 257–265 (1991).
[16] M. Bellare, D. Micciancio and B. Warinschi: “Foundations of Group Signatures: Formal Deﬁnitions, Simpliﬁed Requirements, and a Construction
Based on General Assumptions”, EUROCRYPT 2003, Springer-Verlag, pp.
614–629 (2003).
[17] M. Bellare, H. Shi and C. Zhang: “Foundations of Group Signatures: The
Case of Dynamic Groups”, CT-RSA 2005, Springer-Verlag, pp. 136–153(2005).
[18] D. Boneh, X. Boyen and H. Shacham: “Short Group Signatures”, CRYPTO
2004, Springer-Verlag, pp. 41–55 (2004).
[19] J. Groth: “Fully Anonymous Group Signatures without Random Oracles”,
ASIACRYPT 2007, Springer-Verlag, pp. 164–180 (2007).
[20] J. Camenisch and A. Lysyanskaya: “Dynamic Accumulators and Application to Eﬃcient Revocation of Anonymous Credentials”, CRYPTO 2002,
Springer-Verlag, pp. 61–76 (2002).
[21] B. Boneh and H. Shacham: “Group Signatures with Veriﬁer-Local Revocation”, ACM CCS 2004, pp. 168–177 (2004).
[22] S. D. Gordon, J. Katz and V. Vaikuntanathan: “A Group Signature Schemefrom Lattice Assumptions”, ASIACRYPT 2010, Springer-Verlag, pp. 395–
412 (2010).

80

[23] S. Katsumata and S. Yamada: “Group Signatures Without NIZK: From
Lattices in the Standard Model”, EUROCRYPT 2019, Springer-Verlag, pp.
312–344 (2019).
[24] V. Lyubashevsky, N. Nguyen, M. Plancon and G. Seiler: “Shorter LatticeBased Group Signatures via Almost Free Encryption and Other Optimizations”, ASIACRYPT 2021, Springer-Verlag, pp. 218–248 (2021).
[25] J. Camenisch and M. Stadler: “Eﬃcient group signature schemes for large
groups”, CRYPTO 1997, Springer-Verlag, pp. 410–424 (1997).
[26] CRYPTREC: “電子政府における調達のために参照すべき暗号のリスト”.
https://www.cryptrec.go.jp/list/cryptrec-ls-0001-2012r6.pdf.
[27] R. Rivest, A. Shamir and Y. Tauman: “How to Leak a Secret”, ASIACRYPT 2001, Springer-Verlag, pp. 552–565 (2001).
[28] M. Abe, M. Ohkubo and K. Suzuki: “1-out-of-n Signatures from a Variety
of Keys”, ASIACRYPT 2002, Springer-Verlag, pp. 415–432 (2002).
[29] J. Liu, V. Wei and D. Wong: “Linkable Spontaneous Anonymous Group
Signature for Ad Hoc Groups (Extended Abstract)”, ACISP 2004, SpringerVerlag, pp. 325–335 (2004).
[30] E. Fujisaki and K. Suzuki: “Traceable Ring Signature”, PKC 2007,
Springer-Verlag, pp. 181–200 (2007).
[31] E. Bresson, J. Stern and M. Szydlo: “Threshold Ring Signatures and Applications to Ad-hoc Groups”, CRYPTO 2002, Springer-Verlag, pp. 465–480(2002).
[32] M. Abe, M. Ohkubo and K. Suzuki: “Eﬃcient Threshold Signer-Ambiguous
Signatures from Variety of Keys”, IEICE Trans., E87-A(2), pp. 471–479(2004).
[33] S. Xu and M. Yung: “Accountable Ring Signatures: A Smart Card Approach”, CARDIS, vol. 153 of IFIP, pp. 271–286 (2004).
[34] J. Groth and M. Kohlweiss: “One-out-of-Many Proofs: Or How to Leak a
Secret and Spend a Coin”, EUROCRYPT 2015, Springer-Verlag, pp. 253–
280 (2015).
[35] W. Beullens, S. Katsumata and F. Pintore: “Calamari and Falaﬂ: Logarithmic (Linkable) Ring Signatures from Isogenies and Lattices”, ASIACRYPT
2020, Springer-Verlag, pp. 464–492 (2020).
[36] V. Lyubashevsky, N. Nguyen and G. Seiler: “SMILE: Set Membership from81

Ideal Lattices with Applications to Ring Signatures and Conﬁdential Transactions”, CRYPTO 2021, Springer-Verlag, pp. 611–640 (2021).
[37] T. Yuen, M. Esgin, J. Liu, M. Au and Z. Ding: “Dualring: Generic Construction of Ring Signatures with Eﬃcient Instantiations”, CRYPTO 2021,
Springer-Verlag, pp. 251–281 (2021).
[38] Y. Dodis, A. Kiayias, A. Nicolosi and V. Shoup: “Anonymous Identiﬁcation in Ad Hoc Groups”, EUROCRYPT 2004, Springer-Verlag, pp. 609–626(2004).
[39] M. Esgin, R. Zhao, R. Steinfeld, J. Liu and D. Liu: “MatRiCT: Eﬃcient,
Scalable and Post Quantum Blockchain Conﬁdential Transactions Protocol”, ACM CCS 2019, pp. 567–584 (2019).
[40] Y. Desmedt: “Society and Group Oriented Cryptography: A New Concept”, CRYPTO 1987, Springer-Verlag, pp. 120–127 (1987).
[41] T. ElGamal: “A Public Key Cryptosystem and Signature Scheme Based on
Discrete Logarithms”, IEEE Trans. Inform. Theory, 31, pp. 469–472 (1985).
[42] A. Shamir: “How to Share a Secret”, Commun. ACM, 22, 11, pp. 612–613(1979).
[43] Y. Desmedt and Y. Frankel: “Threshold Cryptosystems”, CRYPTO 1989,
Springer-Verlag, pp. 307–315 (1989).
[44] R. Gennaro, S. Jarecki, H. Krawczyk and T. Rabin: “Robust Threshold
DSS”, EUROCRYPT 1996, Springer-Verlag, pp. 354–371 (1996).
[45] V. Shoup: “Practical Threshold Signatures”, EUROCRYPT 2000, SpringerVerlag, pp. 207–220 (2000).
[46] “BBitcoin Improvement Proposal 340”. https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki.
[47] C. Komlo and I. Goldberg: “FROST: Flexible Round-Optimized Schnorr
Threshold Signatures”. ePrint 2020/852.
[48] J. P. Aumasson, A. Hamelink and O. Shlomovits: “A Survey of ECDSA
Threshold Signing”. ePrint 2020/1390.
[49] Y. Lindell, A. Nof and S. Ranellucci: “Fast Secure Multiparty ECDSA with
Practical Distributed Key Generation and Applications to Cryptocurrency
Custody”, ACM CCS 2018, pp. 1837–1854 (2018).
[50] R. Gennaro and S. Goldfeder: “Fast Multiparty Threshold ECDSA with
Fast Trustless Setup”, ACM CCS 2018, pp. 1179–1194 (2018).

82

[51] J. Doerner, Y. Kondi, E. Lee and A. Shelat: “Secure Two-Party Threshold
ECDSA from ECDSA Assumptions: The multiparty Case”, IEEE S&P2018, pp. 980–997 (2018).
[52] I. Damgard, T. P. Jakobsen, J. B. Nielsen, J. I. Pagter and M. B. Østergaard:“Fast Threshold ECDSA with Honest Majority”, SCN 2020, SpringerVerlag, pp. 382–400 (2020).
[53] R. Gennaro and S. Goldfeder: “One Round Threshold ECDSA with Identiﬁable Abort”. ePrint 2020/540.
[54] G. Castagnos, D. Catalano, F. Laguillaumie, F. Savasta and I. Tucker:“Bandwidth-Eﬃcient Threshold EC-DSA”, PKC 2020, Springer-Verlag, pp.
266–296 (2020).
[55] A. Gagol, J. Kula, D. Straszak and M. Świetek: “Threshold ECDSA for
Decentralized Asset Custody”. ePrint 2020/498.
[56] R. Canetti, R. Gennaro, S. Goldfeder, N. Makriyannis and U. Peled: “UC
Non-Interactive, Proactive, Threshold ECDSA with Identiﬁable Aborts”,
ACM CCS 2020, pp. 1769–1787 (2020).
[57] J. Groth and V. Shoup: “Design and Analysis of A Distributed ECDSA
Signing Service”. ePrint 2022/506,.
[58] A. Boldyreva: “Threshold Signatures, Multisignatures and Blind Signatures
Based on the Gap-Diﬃe-Hellman Group Signature Scheme”, PKC 2003,
Springer-Verlag, pp. 31–46 (2003).
[59] Y. Sakemi, T. Kobayashi, T. Saito and R. S. Wahby: “Draft-irtf-cfrgpairing-friendly-curves-10” (2021).
[60] T. P. Pedersen: “A Threshold Cryptosystem without a Trusted Party”,
EUROCRYPT 1991, Springer-Verlag, pp. 522–526 (1991).
[61] R. Gennaro, S. Jarecki, H. Krawczyk and T. Rabin: “Secure Distributed
Key Generation for Discrete-Log Based Cryptosystems”, EUROCRYPT
1999, Springer-Verlag, pp. 295–310 (1999).
[62] M. Pettit: “Eﬃcient Threshold-Optimal ECDSA”, CANS 2021, SpringerVerlag, pp. 116–135 (2021).

83

3.3 その他の高機能暗号技術
3.3.1 秘密分散
■秘密分散法の特徴

秘密分散法（Secret Sharing Scheme，SSS）は現在、様々な暗号技術の要素技術として用いられているが、提案された当時は秘密鍵などの安全な管理を目的としていた [1, 2]。通信の秘匿性を担保するために保持しなければな
らない秘密鍵のような情報を保管する際に、破損や紛失を避けるためにはいくつかのコピーを作る必要がある一方で、コピーを作ることは盗難や漏洩の危険性を増大させるといった相反する問題が存在する。そこで、秘密情報を「シェア」と呼ばれる n 個の分散情報に符号化し、そのうちの任意の k ≤ n 個のシェアを集めることで秘密が復元できるが、k − 1 個では秘密情報が情報理論的に一切漏洩しない方式を考える。このような方式は (k, n) しきい値法と呼ばれ、n − k 個以下の破損や紛失、k − 1 個以下の盗難や漏洩に対して安全となることから、上記の問題に対する一つの解決策となる。(k, n) しきい値法は、秘密情報へのアクセスを許される
シェア集合と、許されないシェア集合を指定可能な秘密分散法に拡張することができる。このような秘密分散法を、一般アクセス構造に対する秘密分散法と呼ぶ[3]。また、可検証秘密分散法（Veriﬁable SSS、[4]）などをはじめとして様々な機能拡張がなされている。
秘密分散法は、上記のような秘密情報の分散保管を目的として提案されたが、現在ではマルチパーティ計算（Multi-Party Computation，MPC）をはじめとした
様々な暗号プロトコルの要素技術として用いられている [5]。また、様々な媒体でも実現手法が知られており、視覚暗号 [6]、量子秘密分散法 [7, 8] などが提案されている。
■秘密分散法の歴史、実装例

秘密分散法は 1979 年に Shamir [9] と Blakley [2] によって独立に提案された。どちらの論文も (k, n) しきい値法の構成手法であるが、Shamir は多項式補間（Lagrange 補間）による方法を、Blakley は射影幾何に基づく方法を提案している。これらの手法は線形変換のランクを元にした構成法に一般化できる [10]。このような線形変換のランク関数と関連付ける研究は一般ア
クセス構造をもつ秘密分散法の構成法やシェアサイズの下界を求める際にも有用であり、ポリマトロイドの性質などと関連付けられて近年でも研究が進んでいる[11]。また、線形代数的なアプローチとして Monotone span program による構成法が挙げられる [12]。
文献 [10] では線形変換に基づく構成法に加えて、情報理論的な手法でシェアの84

サイズの下界が導出されており、秘密情報へのアクセスが許されないシェア集合
から 1 ビットも情報が漏れない完全秘匿性という性質を要求する場合、秘密情報 S
を確率変数としたときの S のシャノンエントロピー（直観的にはビット長）H(S)は i 番目のシェア Vi のシャノンエントロピー H(Vi ) に対して常に H(Vi ) ≥ H(S)が成り立つ。Shamir の手法は任意の i に対して H(Vi ) = H(S) が成り立つことが容易に分かるため、Shamir の構成法がシェアサイズの観点からは最良であることになる。これらの結果を受けて、完全秘匿性を弱める代わりに、シェアのサイズを
秘密情報のサイズより小さくするランプ型秘密分散法（ramp SSS）が提案された[13, 14]。ランプ型秘密分散法は Shamir の秘密分散法の一般化として構成できる。
計算量的秘密分散法は、Shamir 法と共通鍵暗号を組み合わせることで実現でき、
Shamir 法に比べて大幅にシェアサイズが削減できることが知られている [15]。近年では、計算量的 (n, n) しきい値法として All-Or-Nothing Transform（AONT）が知られている。Shin らによる AONT [16] は ZenmuTech 社によって実装され、実用化されている [17]。
■秘密分散法の代表的アルゴリズム

秘密分散法は極めて多くの方式が提案されているため、最も基本的で利用頻度が多いと思われる Shamir の多項式補間によるアルゴ
リズム [9]、およびその拡張方式について、ISO/IEC 標準 [18] に関連するいくつかの方式を説明する。以下では全ての計算を有限体 F の上で行うものとする。また、
自然数 n をシェアの総数として、参加者の集合を P = {p1 , p2 , . . . , pn } とし、参加
者 pi がシェア vi を持つとする。
Shamir 法とランプ型秘密分散法

はじめに最も基本的な Shamir の (k, n) しきい値法 [9]（Shamir 法）を説明する。秘密情報 ss ∈ F をもつディーラは、秘密情報と独立で、互いに独立かつ一様な乱数を k − 1 個選び、r1 , r2 , . . . , rk−1 ∈ F とする。このようにして選んだ値から、k − 1 次のランダム多項式 f (x) := s + r1 x1 + r2 x2 + · · · + rk−1 xk−1を作成し、参加者 Pi にシェアとして vi := f (i) を秘密通信路を介して配布する。復号にあたっては、任意の k 人の参加者 Pi1 , Pi2 , . . . , Pik が各自のシェア

vi1 , vi2 , . . . , vik をもって集まり、多項式 f (x) を復元することによって秘密情報
s = f (0) が復元される。多項式は Lagrange 補間によって求められるので、秘密Pk
Qk
情報は s = f (0) = α=1 viα β=1,β̸=α (−iβ )/(iα − iβ ) で求められる。
完全秘匿性を達成する秘密分散法では、シェアのサイズをこれ以上短くできな
いことが知られている [10]。ただし、秘密情報の一部を漏らすことを許せば、シェアのサイズを小さくすることができる。このように、情報漏洩とシェアのサイズのトレードオフを実現する秘密分散法がランプ型秘密分散法である [13, 14]。ラン85

プ型秘密分散法は秘密情報を s0 , s1 , . . . , sL−1 ∈ F として、Shamir 法の多項式 f (·)

Pk−1 11x+sii=L ri x を用いる事で構成できる。シェアが ki=0個以上ある場合、Shamir 法と同様に Lagrange 補間を用いて復号が可能であり、シェアが k − L 個以下なら s に関する情報が情報理論的に（完全）秘匿される。一方で、シェアを k − ℓ (1 ≤ ℓ ≤ L − 1) 個集めた場合は秘密情報は条件付エントロ
ピーの意味で (1 − ℓ/L)H(S) だけ情報が漏洩する。
ただし、完全秘匿性を満たす Shamir 法では秘密情報 S はどのような確率分布に従っても良いが、ランプ型秘密分散法は s0 , s1 , . . . , sL−1 ∈ F を独立かつ一様ラの代わりに g(x) :=PL−1

ンダムに選ぶ必要があることに注意する。また、ランプ型秘密分散における情報
漏洩は、秘密情報が存在しうる空間のサイズが FL ではなく F となることを表し、秘密情報の探索空間のサイズは同じでも、秘密情報の一部が一意に定まる場合と一意に定まらない場合がある。秘密情報のどのシンボルも一意に定まらないラン
プ型秘密分散法は強いランプ型秘密分散（strong ramp SSS）と呼ばれるが [14]、上に示した Shamir 法のランプ型への拡張は必ずしも強いランプ型秘密分散法になるとは限らないことが知られている [19]。
一般アクセス構造への拡張と複製型秘密分散法

しきい値型秘密分散法を用いると、一般アクセス構造に対する秘密分散法を構成することもできる。まず、参加者の集合を P = {p1 , p2 , . . . , pn } に対する一般アクセス構造について簡単に説明する。アクセス構造とは参加者の集合 X ⊆ P に秘密
情報 s ∈ F へのアクセス権を与えるかどうかを決定するものであり、秘密情報へのアクセス権を有する有資格集合の族 ΓQ ⊆ 2P とアクセス権のない禁止集合の族

ΓF ⊆ 2P からなる。ΓQ ∩ ΓF = ∅ が要請される一方で、ΓQ ∪ ΓF = 2P である必要はない。また、アクセス構造が自然に意味をもつために、任意の A ∈ ΓQ および任意の A′ ⊇ A に対して A′ ∈ ΓQ であること、および、任意の A ∈ ΓF および任意の A′ ⊆ A に対して A′ ∈ ΓF であることが必要となる。この性質を単調性と呼ぶ。
単調性をもつ任意のアクセス構造に対する秘密分散法は [3] で初めて提案されたが、ここでは [20] による、加法的秘密分散法を用いた一般アクセス構造に対する秘密分散法を説明する。
加法的秘密分散法とは、有限体における秘密鍵の加算と減算で暗号化と復号をおこなう、いわゆる使い捨て暗号 [21] の拡張であり、秘密情報 s ∈ F に対して (m, m) しきい値法を実現する方法である。具体的には、独立で一様な乱数

r1 , r2 , . . . , rm−1 ∈ F を用意し、i = 1, 2, . . . , m − 1 に対するシェアを vi = ri とす
Pm−1
る。そして、m 番目のシェアは vm = s − i=1 ri により計算し、m 個のシェア
Pmとする方法である。また、秘密情報 s は m 個のシェアを全て集め、s =i=1 vi86

により計算できる。この加法的秘密分散法を用いた一般アクセス構造に対する秘密分散法 [20] は、任意の A ∈ ΓA に対して、s を秘密情報とした加法的秘密分散法（(|A|, |A|) しきい値法）を独立に実現し、それぞれの加法的秘密分散法で pi に割り当てられるシェアをまとめて vi と考えることで実現できる。
なお、[3] で提案された方式は単一の (m, m) しきい値法のシェアを複製型秘密分散法を用いて、適切に配布することで一般アクセス構造を実現している。第 3.3.2
章「MPC - 秘密分散ベース」の項で紹介する「参加者が 3 人の複製秘密分散法に基づく方法」で用いる秘密分散法はこれの特殊ケースであり、加法型の (3, 3) しきい値法に対して複製型秘密分散法を適用して構成された (2, 3) しきい値の秘密分散法である。

3.3.2 マルチパーティ計算–秘密分散ベース–
秘密分散ベースのマルチパーティ計算（Multi-Party Computation，MPC）は、
第 3.3.3 章に記載する Garbled Circuit ベースのマルチパーティ計算と異なり、乗算回数などに応じた通信回数が必要となる。一方で、Garbled Circuit ベースのMPC において支配的であった、共通鍵暗号による真理値表の暗号文の送受信を必要としない分、通信量の面では秘密ベース分散ベースの MPC の方が小さくなる。
この特徴から、秘密分散ベースの MPC は Garbled Circuit に基づく方法と比較して、通信量を抑えたい状況の処理に適していると考えられている。秘密分散ベースの MPC と Garbled Circuit ベースの MPC とを組み合わせて用いることもあり、特に 3 者以上の多人数の MPC において、定数回の通信による方式を実現する
ときなどに利用される [22, 23]。
■秘密分散ベースのマルチパーティ計算の歴史

秘密分散ベースのマルチパーティ計算の草分けとして、Goldreich らによる GMW 方式 [24] や Ben-Or らによる BGW
方式 [25] が知られている。GMW 方式は、加法的秘密分散法に基づく MPC プロ
トコルである。秘密情報を「シェア」と呼ばれる分散情報に分割して符号化し、シェアから秘密情報を復元することなく、秘密情報どうしの加算・乗算の計算を実現する。本章で紹介する MPC は秘密分散ベースであるため、このシェアとは、第 3.3.1 章に記載したシェアと同じものであり、元となるデータを分割したものとなる。この方式では、紛失通信と呼ばれる暗号プロトコルを利用して乗算を実現している。BGW 方式は、Shamir の秘密分散法 [1] に基づく MPC プロトコルであり、GMW 方式と同様に秘密情報のシェアを復元することなく、秘密情報どうしの加算・乗算の計算を実現する。この方式では、ローカルでの計算による乱数の偏り、多項式の次数増加を回避するため、計算結果を再分散することによって再87

ランダム化・次数の削減を行って乗算を実現している。

GMW 方式と BGW 方式やその後に提案された多くの具体的な MPC プロトコ
ルは、共通する基本的な枠組みの中で構築されている。それは、線形秘密分散法と総称される方式群に含まれる秘密分散法をベースとし、線形秘密分散法の性質を利用したローカル計算のみからなる加算プロトコルを持ち、他の参加者との通信を必要とする乗算プロトコルを備える、というものである。そのため、複雑なデータ処理を MPC で実行する際は、当該処理を論理回路/算術回路として見なした場合の AND/乗算の回数分の通信が発生し、これが処理時間全体の多くの部分を占めることになる。従って、この点に関する改善が処理全体の高速化に寄与すると考えられ、さまざまな改良がなされている。アルゴリズムの改良や実装の洗練化により、近年は実用的な処理性能が得られており、たとえば、NEC などが7,000,000,000 ゲート/秒を達成 [26] し、また、産総研などは、データベース処理等における重要な構成要素となる秘匿状態でのシャッフルを加算・乗算のレベルまで分解せずに効率的に実現する手法を提案し、当該処理について従来の 100 倍程度の高速化に成功している [27]。
■代表的な方式 1: 参加者が 3 人の複製秘密分散法に基づく方法

効率的な方式の代表例として、参加者が 3 人の場合に向けて設計された、Araki らの方法 [26] を単純化した MPC プロトコル [28] を紹介する。以下では、各値はある整数 q を法とする剰余環の元とする。[28] の方式は、以下のような 3 つのうち任意の 2 つのシェアから復元可能な複製秘密分散法に基づいている。秘密情報 x の秘密分散は、x = x1 + x2 + x3 を満たす 3 つの乱数 x1 ，x2 ，x3 に加法的秘密分散し、それらのうち 2 つずつの対 (x2 , x3 )、(x3 , x1 )、(x1 , x2 ) をそれぞれ参加者 P1 ,P2 , P3 のシェアとすることにより実現される。復元の際は、いずれか 2 つのシェ
アを集め、x1 + x2 + x3 を計算すればよい。
加算のプロトコルは、各参加者が自身の持つ 2 つのシェアを加算することで実現される。2 つの秘密情報 x，y が秘密分散されているとき、z := x + y の秘密分散を計算する加算のプロトコルを以下に示す。各参加者 Pi (i ∈ {1, 2, 3})
は zi+1 := xi+1 + yi+1 と zi+2 := xi+2 + yi+2 を計算し、(zi+1 , zi+2 ) を z を秘密分散した Pi のシェアとする。ただし、添字の 4 は 1 と読み替えるものとし、以下も同様とする。正当性は z1 + z2 + z3 = (x1 + y1 ) + (x2 + y2 ) + (x3 + y3 ) =(x1 + x2 + x3 ) + (y1 + y2 + y3 ) = x + y = z により確認できる。このプロトコル
は一切の通信を必要とせず、各参加者のローカルの計算で完結している。
乗算のプロトコルを以下に示す。入力は加算の場合と同じとし、w := xy の秘密分散を計算するものとする。
88

1. 参加者間で 0 を加法的秘密分散し、各参加者 Pi (i ∈ {1, 2, 3}) は ai を得る。
ここで、a1 ，a2 ，a3 は a1 + a2 + a3 = 0 を満たす乱数である。
2. 各参加者 Pi (i ∈ {1, 2, 3}) は wi+2 := xi+1 yi+1 + xi+1 yi+2 + xi+2 yi+1 + ai を計算し、Pi+1 に送る。
3. (wi+2 , wi+3 ) を w の秘密分散の Pi (i ∈ {1, 2, 3}) のシェアとする。
P
基本的なアイデアは、xy を分解した i,j∈{1,2,3} xi yj の 9 個の項のうち、参加者
Pi が自身の持つシェアから計算可能な xi+1 yi+1 + xi+1 yi+2 + xi+2 yi+1 を計算結果 w の加法的秘密分散のシェアとするものである。この値は入力 x, y に関する情報を含んでいるため、ステップ 2 で隣の参加者に送る前に乱数 ai を加算する
ことによって見かけ上ランダムな値にしている。ステップ 1 の 0 の加法的秘密
分散の作成は、各参加者が乱数を作成して次の参加者へ送り、自身の作った乱数から受け取った乱数を引いた値をシェアとすることで実現できる。正当性は、

w1 + w2 + w3 = (x3 y3 + x3 y1 + x1 y3 + a1 ) + (x1 y1 + x1 y2 + x2 y1 + a2 ) + (x2 y2 +x2 y3 + x3 y2 + a3 ) = (x1 + x2 + x3 )(y1 + y2 + y3 ) + (a1 + a2 + a3 ) = xy = w により確認できる。このプロトコルは通信を伴い、1 回の実行につき各参加者は 2 つの値を送信する。さらに、pseudorandom secret sharing [29] と呼ばれる方法を使うと、送信する乱数の一部を隣接する参加者間で共有していたシードから生成した
擬似乱数で代用でき、各参加者が送信する値を 1 つにまで減らすことができる。
本方式は、NTT の秘密計算システム算師 [30] などに実装され実用化されている [31]。
■代表的な方式 2: Beaver triple を使う乗算プロトコル

参加者が 3 人の複製秘密分散法に基づく方法で述べた MPC プロトコルとは異なる特性を持つ代表的な方式として、Beaver 乗算と呼ぶ乗算プロトコルを紹介する。
この方式は Beaver triple [32] と呼ばれる互いに関連した乱数の組を利用するものであり、任意の線形秘密分散法の上で構築することができる。また、事前計算を行うことにより、入力を受け取った後に必要な通信を少量にすることができるという特徴を持つ。

Beaver 乗算の基本的なアイデアは以下の通りである。乗算の実行に先立って、
2 つの乱数とそれらの積をそれぞれ秘密分散したシェアの 3 つ組（これを Beaver
triple と呼ぶ）を用意しておく。乗算の実行時には、まず、入力の 2 つの値にBeaver triple の 2 つの乱数をそれぞれ減算し、入力値と乱数の差分値のシェアを各参加者と通信して共有する。そして、各参加者は共有した値から差分値を復元する。差分値は乱数によりマスクされているので、復元しても入力値が参加者に89

知られることはなく安全である。そして、これらの復元した差分値どうしの積を計算する。この計算は公開値どうしの計算であるから、ローカルで計算可能である。この公開値どうしの積と元々欲しかった入力の積との差は、Beaver triple の各値の（マスクして復元した値を定数として使った）線型結合として表現でき、線形秘密分散法の性質によりローカルで計算できる。すなわち、Beaver triple を消費することで、入力をマスクした値の復元以外はローカル計算だけで乗算が実現される。

Beaver 乗算のプロトコルを説明する。以下では、ある値 x が秘密分散された状態を [x] と書くこととし、秘密分散された x と y の加減算をそれぞれ [x] + [y]と [x] − [y]、秘密分散された x の定数 c による定数倍を c[x] と書くことにする。
Beaver triple は、a と b を乱数、c := ab として、([a], [b], [c]) とする。乗算プロト
コルの入力は [x] と [y] とし、w := xy を満たす [w] を出力とする。プロトコルは
以下の通りである。

1. 各参加者は自身の持つシェアから [α] := [x] − [a] と [β] := [y] − [b] を計算する。

2. 各参加者は自身の [α] および [β] のシェアを他参加者に共有し、α と β を復元する。

3. 各参加者は自身の持つシェアから [w] := [c] + α[b] + β[a] + αβ を計算して出力する。
正当性は、w = c + αb + βa + αβ = ab + (x − a)b + (y − b)a + (x − a)(y − b) =ab + bx − ab + ay − ab + xy − bx − ay + ab = xy により確認できる。
Beaver triple は乗算プロトコルの入力とは無関係であるため、入力を受け取る
前に計算して蓄えておくことができる。これにより、実際の入力を受け取った後の処理時間を小さくすることができる。Beaver triple の事前計算の方法はいくつも提案されており、例えば MPC プロトコルにより計算する方法 [33] や、信頼する第三者が作成する方法 [34] がある。

Beaver triple を使う方式は ZenmuTech 社と産総研の秘密計算ソフトウェア
QueryAhead [35] などに実装され実用化されている [36]。
3.3.3 マルチパーティ計算–Garbled Circuit ベース–
Garbled Circuit（GC）は、1986 年に Yao [37] により提案された 2 者間のマルチパーティ計算（Multi-Party Computation，MPC）のためのフレームワークである。この方式では、2 者が協調計算したい関数を論理回路と■Garbled Circuit の概要

90

して表現した後、その回路の各ゲートに対応する真理値表に対し、乱数を鍵として暗号化することで、Garbled Truth Table（GTT）と呼ばれる「暗号化された真理値表」に相当する暗号文リストを作成する。この GTT に含まれる暗号文のうち、2 者の入力に対応する暗号文のみが正しく復号されるように乱数の交換を行うことで、関数値のみが復元される仕組みを実現する。

GC に基づく MPC は、第 3.3.2 章に記載の秘密分散ベースの MPC とは異なり、乗算回数などに応じた膨大な通信回数を必要とはしないが、上記の通り、処理全
体をすべての入力に対する真理値表とみなしたうえで、真理値表全体の暗号文を送受信しなければならないため、通信量が非常に大きくなることが知られている。
これらの特徴から、GC に基づく MPC は秘密分散ベースの MPC と比較すると遅延の大きいネットワーク環境における小規模な処理に適していると考えられる。

GC と秘密分散ベースの MPC を組み合わせて用いることもあり、特に 3 者以上の多人数の MPC において、定数回の通信による方式を実現するときなどに利用される [22, 23]。
また、GC の概念は 1980 年代から知られていたものの、厳密な安全性の取り扱いについては長期にわたり十分な整備がなされていなかったが、Bellare らなどの成果 [38] により、理論的に厳密な取り扱いが可能となっている。
■代表的な方式

ここでは、GC に基づく 2 者計算の代表的な構成方法をいくつか紹介する。
以下、プロトコルに参加する 2 人の参加者を P1 と P2 とし、P1 および P2 が持
つ入力をそれぞれ x ∈ {0, 1}n , y ∈ {0, 1}n として、お互いの入力を秘匿したまま関数 F(x, y) を計算することを目標とする。関数 F の論理回路による表現を C と表記する。また、κ をセキュリティパラメータとし、H : {0, 1}∗ ← {0, 1}κ を暗号
学的ハッシュ関数とする。
方式 1: Yao の Garbled Circuit [37]

代表的な方式の一つとして、Yao [37] による GC の構成法を紹介する。
以下の手順で回路 C に対する GC を構成することができる。
回路 C の各ワイヤ wi および b ∈ {0, 1} について、ランダムにラベb
ル wi = (kib ∈ {0, 1}κ , pbi ∈ {0, 1}) を生成する。ただし、pbi = 1 − pi1−b とする。wi0 および wi1 は、このワイヤにおける値 0 と 1 に対応するラベルでラベル生成:ある。

GTT の生成: C に含まれる各論理ゲート Gi について、入力ワイヤに近いワイヤ

91

から順に以下の処理を行い、GTT を作成する。

 Gi を関数 gi : wc = gi (wa , wb ) のゲートとする。入力 wa に対応する
ラベルを wa0 = (ka0 , p0a ), wa1 = (ka1 , p1a )、wb に対応するラベルを wb0 =(kb0 , p0b ), wb1 = (kb1 , p1b )、出力 wc に対応するラベルが wc0 = (kc0 , p0c ), wc1 =(kc1 , p1c ) とする。
 Gi への入力 va , vb ∈ {0, 1} の考えられる組み合わせ 4 通り（2×2）それg (v ,v )ぞれについて、eva ,vb = H(kava ||kbvb ||i) ⊕ wc i a b を計算する。
 前ステップで計算した {eva ,vb }va ,vb ∈{0,1} を、(pvaa , pvb b ) の順でソートする。
出力復号用テーブルの作成: 各ゲートの出力ワイヤ wi （ラベル wi0 = (ki0 , p0i ) お
よび wi1 = (ki1 , p1i ) に対応）およびワイヤが取りうる値 v ∈ {0, 1} について、
ev = H(kiv ||“out′′ ||j) ⊕ v を計算する。ただし、この計算においては H の最下位ビット（LSB）のみを用いる。得られた出力 {ev } を pvi の順でソートする。

GC に基づく MPC においては、上記の手順を P1 が行う。この計算を行う参加者のことを Garbler とも呼ぶ。
上記の手順により生成した出力復号用テーブルを含む GC を、P1 から P2 へ送信する。同時に、各入力ワイヤについて、P1 自身の入力に対応するラベルも P2 へ送信する。

GC の “復号”には、P2 の入力に対応するラベルを P1 から P2 の入力を知ることなく P2 へ送信する必要がある。このような機能は、紛失通信 （Oblivious
Transfer，OT） [39] によって実現することができる。各 P2 の入力ワイヤ wb について、P1 は 0, 1 それぞれの入力に対するラベル wb0 , wb1 を入力し、P2 は選択ビット c を入力することで、P1 から P2 へ wbc のみを送信することができる。
以降は P2 が受け取った入力を基に GC の評価を行う。この手順を行う参加者をEvaluator とも呼ぶ。各ゲートに対応する GTT T = (e0,0 , e0,1 , e1,0 , e1,1 ) および入力ラベル wa = (ka , pa ), wb = (kb , pb ) を用いて、P2 は wc = H(ka ||kb ||i) ⊕ epa ,pb を計算する。
すべてのゲートを評価し終えたら、最終的な出力を復号するために、第 2 キーに “out” を用いて、計算の平文結果となる最終出力を得ることができる。P2 は得られた出力を P1 に返却することで、両者が結果を得ることができる。
方式 2: Half-Gates [40]

GC においては、GTT のサイズを削減するためにいくつかのテクニックが知られている。Yao の方式では 2 入力 1 出力のゲート 1 つあたりに 4 つの暗号文を必要92としたが、XOR ゲートの暗号文数を 0 に削減する Free-XOR と呼ばれるテクニッ
ク [41] や、一般のゲートにおける暗号文数を 3 あるいは 2 へ削減する Garbled

Row Reduction（GRR）テクニック [42, 43] などが知られる。
これらのテクニックを組み合わせた方式で効率が良い方式の一つとして、Zahur
らによって提案された Half-gates [40] と呼ばれる方式を説明する。この方式では、

XOR ゲートの GTT を必要とせず、AND ゲートの GTT を暗号文 2 つで構成することが可能である。AND ゲートと XOR ゲートの組み合わせで、任意の回路を表現可能であることに注意する。

Half-gates のアイデアのポイントは、AND ゲートを 2 つの “half gate”の XORとして表現することである。このそれぞれの half gate は、入力の 1 つが参加者のいずれかに既知の AND ゲートであり、暗号文 2 つで GTT を構成することができる。この暗号文 2 つの GTT を GRR テクニックによって暗号文 1 つに圧縮し、2つの half gate を接続する XOR を Free-XOR テクニックによって削減することで暗号文 2 つによる AND ゲートの GC を達成している。
2 つの half gate はそれぞれ、“generator half gate” と “evaluator half gate” と呼ばれる。以下でそれぞれについて説明する。
・Generator half gate
入力ワイヤを a と b、出力ワイヤを c とする AND ゲートを考える。Generator

half gate は vc = va ∧ vb のような回路で、va が generator (P1 ) に対して何らかの形で既知であり、evaluator (P2 ) はいずれの入力も未知の回路である。このとき、
va = 0 であれば vc = 0 であり、va = 1 であれば vc = vb であることに注意する。
いま、ka0 , kb0 , kc0 をワイヤ a, b, c それぞれの入力 0 に対応するラベルとする。このとき、generator half gate の GTT は以下のように表される。
H(kb0 ) ⊕ kc0
H(kb1 ) ⊕ kc0 ⊕ va · R
ただし、kb1 = kb0 ⊕ R であり、R はランダムなグローバルオフセットである。

Free-XOR を用いる際はこのように、0 と 1 それぞれに対応する 2 つのラベルを(X, X ⊕ R) のように差分を固定した形で設定する。
Evaluator (P2 ) はこの half gate を評価するために、自身の入力 b に対応するラベル（kb0 あるいは kb1 ）を用いてそのハッシュ値を計算する。もしワイヤ b の値が0 の場合、evaluator は kb0 を持ち、H(kb0 ) を計算して kc0 を得ることができる。一方、もし b の値が 1 の場合は、kb1 = kb0 ⊕ R によって H(kb1 ) を計算して kc0 ⊕ va · Rを得ることができる。ちなみに、va = 0 のとき kc0 となり、va = 1 のとき kc0 ⊕ Rとなる。
93・Evaluator half gate

Evaluator half gate は、vc = va ∧ vb のような形で、va が evaluator (P2 ) にとって既知であり、generator (P1 ) はいずれの入力も未知の回路である。このとき、
evaluator は自分の知るワイヤ a の入力に応じて異なる振る舞いをすることができる。Evaluator half gate の GTT は以下のように実現される。
H(ka0 ) ⊕ kc0
H(ka1 ) ⊕ kc0 ⊕ kb0
ただし、generator half gate と同様、ka1 = ka0 ⊕ R であり、R はグローバルなオフ
セットである。ワイヤ a の値が 0 の場合、H(ka0 ) を計算し、kc0 を得ることができる。一方、a の値が 1 の場合は、kc0 ⊕ kb0 を得ることができる。最終的に、これをb に対応するラベルと XOR を取ることで、b の値が 0 の場合、すなわち evaluatorが kb0 を持っている場合は kc0 を、b の値が 1 の場合、すなわち、evaluator が kb1 を持っている場合は kc1 = kc0 ⊕ R を得ることができる。
・Generator half gate/Evaluator half gate の結合
上記の 2 種類の half gate を用いて vc = va ∧ vb のゲートを GC で評価するた
めに、generator は GC の生成時にランダムなビット r を生成し、これを用いてAND ゲートを以下のように変形する。
vc = va ∧ (r + r + b)
= (va ∧ r) ⊕ (va ∧ (r ⊕ vb ))(va ∧ r) は generator half gate を用いて garbling することができ、(va ∧ (r ⊕ vb ))は point-and-permute [22] を用いると r ⊕ vb を evaluator に伝えることができる
ため、evaluator half gate を用いて garbling することができる。XOR ゲートについては上記の通り、Free-XOR テクニックを用いると GTT が不要であるため、GRR で圧縮した generator half gate の GTT と evaluator half gate の GTT の組が、所望の AND ゲート va ∧ vb に対する GTT となる。
3.3.4 ゼロ知識証明■ゼロ知識証明の特徴

ゼロ知識証明とは、ある命題 X に対して、証明者と検証者の間で情報をやりとりし、証明者が検証者に命題 X が正しいことを確信させ、かつ命題が正しいこと以外の情報を検証者に与えないプロトコルである。次に述べる
完全性、健全性、ゼロ知識性の性質をもつ。
完全性：

証明者の命題が真ならば、検証者は真であることが必ずわかること。
94

健全性：

証明者の命題が偽ならば、検証者はかなり高い確率で、偽であることを見抜けること。
ゼロ知識性：

あらゆる場合で検証者が証明者から何らかの知識を得ようとしても、証明者の命題が真であること以上の知識は得られないこと。
さらに、ゼロ知識証明の中でも zk-SNARKs 方式（Zero-Knowledge Succinct

Non-Interactive Argument of Knowledge）は、命題が正しいことの証拠の保有を証明するもので、名前に由来する以下の特徴を持つ。
簡潔 Succinct： 知識証明のサイズが命題のサイズに依存せず一定で、十分に短い
非対話 N onInteractive：

検証者は証明者からの一度の知識証明の送付で検証可能
アーギュメント Argument：

検証者は計算能力に限りある（多項式時間計算力）

証明者からは守られる
知識 Knowledge： 証明者は証拠なしでは知識証明の生成は不可能
ゼロ知識証明で扱える命題は、その証拠を使って多項式時間アルゴリズムで真偽判定できる「クラス NP 問題」であり、関数の解や充足可能問題なども含み幅広い。
■ゼロ知識証明の歴史

ゼロ知識証明の歴史は古く、1985 年に Goldwasser らにより、証明者と検証者間で対話を繰り返し、知識を証明するプロトコルとして定式化された [44]。この対話型の改良として、信頼できる第三者機関が、共通参照情報（Common Reference String, CRS ）を事前に生成し、配布することで、非対話型が達成される [45]。また健全性について、離散対数問題をベースとしたシュノア
プロトコル [46] は、証明者の計算能力を限定することで健全性を保証する方式で、計算困難な数学的問題を根拠とする方式の原型といえる。
クラス NP 問題に、一方向性関数の存在を仮定すると、非対話型ゼロ知識証
明が適用できることは保証されていたが、実用的な手法は 2013 年の Gennaro
らによる zk-SNARK である [47]。これを一般化した zk-SNARKs 方式の中でも Pinocchio [48] は、暗号資産の取引システム上で実用化されている。また

Pinocchio の効率化が Groth により定式されている [49]。さらに、zk-STARKs [50]と BulletProofs [51] は、証明サイズや計算量は大きくなるが、事前準備を必要としないことを特徴とする。

95

■代表的なゼロ知識証明方式

Pinocchio アルゴリズムの概要を説明する。はじめに、

命題「多項式 F の解の存在」をゼロ知識証明する場合を例に、全体の流れを示す。

1. F を加算と積算演算ゲートを持つ算術回路に変換する。
2. 具体的な手続きに従って、回路を 2 次算術プログラム（QAP ）で表現する。
ここで QAP は 3 つの多項式の集合 V, W, Y と目的多項式 t(x) で構成される。回路を満たす割り当て {ci } がある時、V, W, Y と {ci } から多項式 p(x)が定まり、後述の QAP 定理 [47] より「F の解の存在」と「h(x)t(x) = p(x)を満たす多項式 h(x) の存在」が同値になる。
3. 証明者は、証拠から h(x) を計算し、h(x) を暗号化した知識証明 π を作り、検証者に渡す。

4. 検証者は、知識証明 π から、h(x)t(x) = p(x) の成立を、Pairing 写像を用いて検証する。
以上のプロセスを、非対話型にするために CRS と呼ばれる乱数の共有が必要である。第 2 項にある QAP 定理を以下に示す。

QAP 定理 [47]: F を n 個の元を入力し n′ 個の元を出力する関数とし、N = n+n′とする 。こ の 時、3 つの 多 項式 集合 V = {vk (x)}, W = {wk (x)}, Y ={yk (x)}k=1,…,m と目的多項式 t(x) が存在し (これを F の QAP と呼ぶ）、
次が成立する。入出力値 (c1 , …, cN ) が F から得られる回路の正しい割り当て（値）とすると、係数 (cN +1 , …, cm ) が存在し、t(x) が p(x) を割り切る。
この時、係数 (cN +1 , …, cm ) を証拠と呼ぶ。ここで p(x) と t(x) は以下の式となる。

p(x) = (mX
k=1t(x) =

ck vk (x))(

YmX

ck wk (x)) −

k=1

m
X

ck yk (x),k=1(x − rg )g:積算演算ゲート

具体例として、F(C1 , C2 , C3 , C4 ) = (C1 × C2 ) × (C3 + C4 ) ＝ C6 を当てはめると、F の QAP は目的多項式 t(x) = (x − r5 )(x − r6 ) と V = {vk (x)}, W ={wk (x)}, Y = {yk (x)}k=1,…,6 で構成される。V の初項は v1 (x) = (x − r5 )(x − r6 +1)/(r6 −r5 ) であり、i ≥ 2 の vi (x) と W ,Y は順次計算できるが、残りの項の記載は省略する。そして、F を満たす解 x = (c1 , c2 , c3 , c4 , c6 ) と途中ゲートの入出力制約をみたす c5 を使用して、p(x) = {c1 v1 (x)+c2 v2 (x)+c3 v3 (x)}{c4 w4 (x)+c5 w5 (x)}−{c5 y5 (x) + c6 y6 (x)} を計算する。p(x) を展開すると、「(c1 × c2 ) × (c3 + c4 ) = c6
96

の成立」と「t(x) が p(x) を割り切る」が同値であることが分かる。
定式化のため写像を 2 つ用意する。1 つ目は巡回群 G とその生成元 g による、暗号化写像 E(s) := g s であり、単射かつ E(s + t) = E(s)E(t) を満たす。値 g s とg からは s が計算困難な離散対数困難性を持つ。2 つ目は G 上の Pairing 写像 eで、双線形性 e(g a , g b ) = e(g, g)ab を持つ。Pinocchio は（CRSGen,Proof, Verify）の 3 つのアルゴリズムからなる。
CRSGen(1λ , F): 信頼できる第三者により CRS を生成するアルゴリズム。
証明したい命題 F を、算術回路変換を通して QAP 表現する。QAP がサイ
ズ m、次数 d、V = {vk (x)}, W = {wk (x)}, Y = {yk (x)}k=1,…,m , t(x) で構成される時、[N ] = {1, …, N }, Imid = {N, …, m}, [d] = {1, …, d} と置く。
s, α, βv , βw , βy , γ をランダムに選び、CRS = (EK, V K) を生成する。証明者に EK を、検証者に V K を送付する。
EK = {{E(si ), E(αsi )}i∈[d] , {E(vk (s)), E(αvk (s)), E(βv vk (s))}k∈Imid ,{E(wk (s)), E(yk (s)), E(αwk (s)), E(αyk (s), E(βw wk (s)),
E(βy yk (s))}k∈[N ] }V K = {E(1), E(α), E(γ), E(βv γ), E(βw γ), E(βy γ), E(t(s)), E(vk (s)k∈[N ] }Proof(EK, u): 証明者により知識証明 π を生成するアルゴリズム。
証明者は、入力 u から y = F(u) を計算し、回路が満たす {ck }k∈[m] を得る。
これから

p(x) = (mX

ck vk (x))(

k=1

m
X

ck wk (x)) −mX

ck yk (x)

k=1

k=1

h(x) = p(x)/t(x)と多項式 h(x) を得る。次に、この h(x) の暗号化を行う。h(x) の係数 hiからE(h(s)) =Y

E(si )hii∈[d]を 計 算 す る 。さ ら に 、秘 匿 し た い 入 出 力 値 と 証 拠 {ck }k∈Imid も 使 い 、E(vmid (s)) =Qk∈Imid E(vk (s))

ck

や E(w(s)) なども同様の計算を行い、合わせて、知識証明 π を構成する。

π = {E(h(s)), E(vmid (s)), E(w(s)), E(y(s)), E(αh(s)),
E(αvmid (s)), E(αw(s)), E(αy(s))E(βv v(s))E(βw w(s))E(βy y(s))}
97π に、y と u の中で秘匿しない入出力値に対応する {ck } を加えて、検証者に送る。
しかし、上記の定式化では、π のゼロ知識性が満たされていない。そのた′め、一様乱数の組と区別できないように、vmid(x) = vmid (x) + δt(x) と、暗号化前の各多項式に乱数 δ を加えてゼロ知識性を達成する。これに合わせて

p(x) と h(x) も変更される。
Verify(V K, u, y, π):
検証者により証明者の知識 π を検証するアルゴリズム。
次の 2 種類のチェックのすべてが通った時に、検証成立となる。
?
1. 等式 p(s) = h(s)t(s) の成立チェック
V K と 回 路 の 秘 匿 し な い 入 出 力 値 {ck } を 使 い 、E(vi/o (s)) =Q
ckk∈[N ] E(vk (s)) を計算する。そして、?

e(E(vi/o (s))E(vmid (s)), E(w(s))/e(E(y(s), E(1)) = e(E(h(s)), E(t(s))の両辺を比較し一致する時、e の双線形性より (vi/o (s) + vmid (s))w(s) −y(s)) = h(s)t(s) が成立する。
2. 線形結合チェック?

e(E(αh(s)), E(1)) = e(E(h(s)), E(α)),?

e(E(βv v(s)), E(γ)) = e(E(v(s)), E(βv γ))を含む、α に関する 8 ペアと β に関する 3 ペアの Pairing 写像を用いたチェックを行う。
■ゼロ知識証明の安全性など

アルゴリズムを支える根拠と安全性を述べる。Proof の知識証明 π は回路のサイズに関わらず巡回群 G の 8 つの元で構成され、サイズは一定となる。さらに、多項式自身でなく、ランダム s での評価値 h(s) が知識証明に使用されている。これは Schwartz-Zipple 補題により、異なる多項式をランダムな点で評価すると高い確率で異なる値となることが示されており、このようなランダム点での評価値を用いることができる。さらに、多項式の秘匿評価手法により CRS の E(si ) を使うことで s 自身を知らずとも E(h(s)) が計算可能である。

Verify において、線形結合チェックが加えられている。これは、証明者は h(x) や
vmid (x) を、証拠（の係数）を持たずとも、等式が成立する任意の多項式として作ることができる。この不正な攻撃に対応するために、検証者は h(s) が {si }i∈[d]の線形結合から作られていることの確認が必要である。Knowledge of Coeﬃcient（KC）に基づくと、e(E(αh(s)), E(1)) = e(E(h(s)), E(α)) が成立する時に、この98線形結合性が確認できる。そして、検証は一度の知識証明の送付で達成しており、非対話型である。

3.3.5 Oblivious Random Access Machine（ORAM）■ORAM の特徴

外部サーバにデータを預ける際、暗号化していればデータの内容は漏洩しないが、あるデータへのアクセスの偏りが発生した場合、サーバはそのア
クセスの偏りから該当データの情報を推測できてしまう可能性がある。ORAM では、暗号化データに対して読み込み書き込みを行うたびに、格納位置をシャッフ
ルするとともに再暗号化することで各アクセス間の関係を秘匿し、サーバに対してアクセスパターンを秘匿できる。クライアントは格納位置に関する情報を保持することによって、目的の暗号化データの格納位置を知ることができる。
同様にサーバに対するプライバシ保護を目的とする高機能暗号技術である第3.3.6 章に記載の Private Information Retrieval（PIR）と第 3.3.7 章に記載の検索可能暗号との違いは以下の通りである。

 サーバへのクエリ内容：検索可能暗号では格納したデータがあるキーワードを含んでいるかどうかをクエリするのに対し、ORAM と PIR ではクライア
ントがアクセスしたいデータそのものについてクエリする。

 格納したデータの暗号文：検索可能暗号と PIR では基本的にサーバに格納されたデータやその暗号文は（データの更新処理などが行われない限り）ク
エリによって変わることが無いのに対し、ORAM では毎回のクエリごとにデータの更新と暗号文の再暗号化、格納位置のシャッフルが行われる。

 秘匿できる情報：検索可能暗号では検索に該当するデータの頻度などの情報は秘匿しないのに対し、ORAM と PIR では頻度を含めたアクセスパターンを秘匿する。

 クライアントとサーバの処理：検索可能暗号と PIR ではクエリに応じてサーバが暗号化データベースに対して検索処理を行うのに対し、ORAM では暗号化データベースの一部をサーバから受け取りクライアントが検索処理（およびにシャッフルと再暗号化）を行う。
このように、検索可能暗号はアクセスパターンの秘匿までは必要のない状況、PIR
は通信量とサーバの計算量が増えてもクライアントの計算量を抑えたい状況、

ORAM はある程度クライアントは計算量を要するが通信量を抑えたい状況で使い分けることが望ましい。

99

ORAM の概念は、Goldreich [52] によって初めて提案された。元々はソフトウェア保護の文脈で CPU によるメモリアクセスパターンの秘匿を目的として考案されたが、その後、CPU をクライアント、メモリをサー■ORAM の歴史と方式の比較

バに置き換えることにより、暗号化データベースのアクセスパターン秘匿への適用が主な応用先となった。Goldreich と Ostrovsky による初期の方式 [52, 53, 54]
では、データブロック数 N に対してアクセスごとの償却通信計算量は O(log4 N )であったが、最悪通信計算量は Ω(log N ) であった。
その後、Shi ら [55] や Kushilevitz ら [56] によって、木構造を用いてデータを管理することによって最悪通信計算量がそれぞれ O(log3 N/ log log N ) と O(log4 N )となる方式が提案された。通信計算量の観点で効率の良い ORAM 方式として、

Stefanov ら [57] による Path ORAM が知られており、データブロック数 N に対して通信計算量は O(log3 N ) でよい。ただし、Path ORAM では、クライアント
が position map と呼ばれるテーブルとスタッシュと呼ばれるローカルなメモリに情報を格納するため、クライアントの記憶容量は N に依存したサイズが必要である。
近年はクライアントの記憶容量や通信計算量を漸近的に減らす研究が進ん で い る 。Patel ら [58] は O(log N ) ビ ッ ト の ク ラ イ ア ン ト 記 憶 容 量 か つO(log2 N log log N ) の償却通信計算量の方式を提案した。Asharov ら [59] はこれを改良し、O(log2 N ) の償却通信計算量の方式を提案した。さらに、Asharov
ら [60] により O(log N ) ビットのクライアント記憶容量かつ O(log2 N ) の最悪通信計算量の方式が提案された。この方式は漸近的には効率的であるものの、オーダー表記に隠れた定数倍が大きいため実用は現実的ではない。

ORAM の拡張として、サーバを複数台に分けてデータを格納することによって、単一サーバの ORAM より効率が良い分散 ORAM [61] が知られている。また、通常の ORAM ではクライアントは単一だが、複数のクライアントを含むことができる並行 ORAM [62] も知られている。
■代表的な方式のアルゴリズム

具体的な ORAM の実現方法として、木構造を用いた

Path ORAM [57] を紹介する。
 サーバのセットアップ： 高さ L の二分木を生成する。各ノードにそれぞれZ 個のブロックを割り当て、暗号化データを格納する。もしあるノードに入るブロックが Z 個未満になる場合は、真のブロックとは識別できないダミーのブロックを格納することで常に Z 個のブロックで満たされるようにする。
 クライアントのセットアップ： それぞれのブロックと葉ノードを紐づけた
100position map と呼ばれるテーブルを生成する。position map は、ブロックが根ノードから紐づけられた葉ノードの経路上のいずれかにあることを保証
し、あるブロック a が左から x 番目の葉ノードと紐づけられているならば、

a は根ノードから x 番目の葉ノードへの経路上のいずれかにあることになる。初期状態においてブロックは全て空の状態で、各ブロックはそれぞれランダムに選ばれた葉ノードと紐付けられて、その葉ノードの経路上に配置される。また、いくつかのブロックを保存できるスタッシュと呼ばれるメモリを用意する。

 アクセス：
1. 処理 op ∈ {read, write}、ブロック a、データ d に対して、クライアント
は position map からブロック a に対応した葉ノード x を選択し、x をサーバに送信する。その後 position map の a に対応した葉ノードをラン
ダムな葉ノード x′ に上書きする。
2. サーバは受け取った x から根ノードへの経路上にあるブロックを全てク
ライアントに送る。

3. クライアントはサーバから受け取ったブロックをスタッシュに保存し、スタッシュにある暗号化データを全て復号する。a を用い参照したい
データを探し出し、op = write ならば内容を d に更新する。
4. クライアントは全てのデータを再暗号化し、position map と x の最小共通祖先ノードに格納する。参照した a は、x と x′ の最小共通祖先ノードに格納される。この時ノードに空きが出来た場合、ダミーのブロックを格納する。入るべきノードがすべて埋まってしまいスタッシュに残ったブロックは、そのままスタッシュに一時保存する。

3.3.6 Private Information Retrieval（PIR）■PIR の特徴および他の関連技術との差異

クライアントがサーバ上のデータを検索する際、クライアントは検索のためのクエリをサーバに送信し、そのレスポンスとして、クライアントはサーバから検索結果を受け取る。これら一連の作業において検索履歴や検索結果、サーバに保存されたデータ自体の秘匿性をどのように考えるかによって様々な方式が提案されている。秘匿情報検索（Private Information

Retrieval，PIR）は、サーバ上のデータは、暗号化されず平文のまま保存されている状況で、クライアントがどのデータにアクセスしたか、サーバに秘匿することを目的とする。サーバに預けたデータをクエリする際に、そのアクセス情報を秘101

匿する暗号技術としては、PIR の他に第 3.3.5 章に記載された Oblivious Random

Access Machine（ORAM）や第 3.3.7 章に記載された検索可能暗号がある。これ
らの暗号技術と PIR の具体的な相違点は以下の通りである。
 サーバが保持する情報：PIR ではデータを暗号化しない状態で保持する一方、ORAM や検索可能暗号ではデータを暗号化した状態で保持する。言い換えれば、PIR では元々サーバが管理するデータを、ORAM 及び検索可能
暗号ではクライアントが管理するデータを扱うことを想定している。

 格納した暗号化データの取り扱い： PIR では基本的にサーバに格納されたデータやその暗号文はクエリによって変わることが無いのに対し、ORAM
や検索可能暗号では毎回のクエリごとにデータの更新と暗号文の再暗号化等が行われる。特に ORAM では格納位置のシャッフルも行われる。

 サーバへのクエリ内容：ORAM と PIR ではクライアントがアクセスしたい
データそのものについてクエリするが、検索可能暗号では格納したデータがあるキーワードを含んでいるかどうかをクエリする。

 サーバに対して秘匿できる情報：いずれの技術もクエリ内容を秘匿する。
特に、クエリに対してどのデータが返されたかに関する情報を秘匿する。

ORAM と PIR では頻度を含めた全ての情報を秘匿するが、検索可能暗号
では検索に該当するデータの頻度などの一部の情報が漏洩することを許容する。

PIR の具体的な設定は以下の通りである。クライアント U と t 個のサーバ
DB1 , DB2 , . . . , DBt がある。各サーバは同じデータ x = (x1 , x2 , . . . , xn ) ∈ {0, 1}n
をもっており、結託はしないものとする。U が xi を検索するために各サーバにクエリを送信し、サーバがレスポンスを返す。必要に応じてこれを繰り返すことでクライアントは xi を得る。安全性要件として、クライアントが送信するクエリは、
クライアントが検索しようとしているデータのインデックス i をサーバに漏らさないことを要請する。この安全性要件に対して、PIR では、情報理論的安全性、計算量的安全性を満たすプロトコルがそれぞれ提案されている。
このような設定のもとで自明なプロトコルは、t = 1 として、クライアントはクエリを生成せず、サーバが全てのデータ x1 , x2 , . . . , xn をサーバに送ることである。従って、PIR を考えるとき、この自明な方式よりは効率的な手法であることが求められる。

PIR は Chor らによって最初に提案された [63, 64]。ここで提案された方式は情報理論的安全性を満たす。彼らは PIR を情報理論的に達成するために■PIR の歴史

102

は（自明な方式を除いて）サーバ 1 台では不可能であることを示し、結託しない

2 台のサーバが同じデータのコピーをもっていれば PIR が実現できることを示した。この結果から、計算量的安全性のもとで、サーバの数を 1 台まで減らせるかが重要な課題となったが、これは Kushilevitz ら [65] によって肯定的に解決された。この方式でのサーバの計算時間は Ω(n) であり、平方剰余を用いていた。近年の方式では完全準同形暗号を用いて、さらに前処理を含めた複数ラウンドのプロトコルで劣線形時間で実行できるプロトコルが知られている [66, 67]。また符号に基づく PIR も Holzbaur らによって提案されている [68, 69]。
情報理論的な観点からは、t 個のサーバからダウンロードするデータ 1 ビットに対して、検索可能なビット数（通信レート）の最大値（通信容量）に興味がある。例えば、PIR の特徴および他の関連技術との差異の項で示した自明な方式のレートは 1/n である。Sun らはこの最大値が 1/

Pk−1

u=0 n

−u

であることを示し、実際にこの容量を与えるプロトコルを示した [70]。この研究に端を発して、情報理論的な PIR の研究は符号理論などの情報理論的な技術と関連して活発になってきた。例えば、t 台のサーバに同一のコピーを置かずに、サーバに置くデータサイズの削減を目指した Coded PIR [71] は、Katz らによる Locally decodable code[72] を用いて構成される。また、複数のサーバからの応答のうち、いくつかが破損したり改竄されている場合にも正しく情報が得られるロバスト PIR に関する研究も行われている。ロバスト PIR は Beimel と Stahl によって提案され [73]、Belekamp–Welch アルゴリズムによる効率化が Kurosawa によって提案されている [74]。
■代表的方式

本節では、情報理論的に安全な方式として [64] を、計算量的に安全な方式として単一サーバの PIR として初の方式である [65] を紹介する。
情報理論的に安全な 2 サーバ PIR [64][64] では、結託しない 2 台のサーバ DB1 , DB2 を準備し、それぞれが n ビットのデータ x := (x1 , x2 , . . . , xn ) ∈ {0, 1}n を保持しているものとする。ここでクライ
アントが xi の値を知りたいとするとき、以下のようなプロトコルを実行する。
自然数 n に対して、[n] := {1, 2 . . . , n} と定める。
1) 2[n] 上の一様分布から集合 S ⊆ [n] を選ぶ。
2) S1 := S として、s ∈ S であるなら、S2 := S\{i}、s ̸∈ S であるなら
S2 := S ∪ {i} として集合 S1 , S2 をそれぞれ DB1 , DB2 に送る。
3) i = 1, 2 に対して、集合 Si を受け取った DBi は ri = ⊕j∈Si xj をクライアン
トに返送する。ここで ⊕ は XOR を表す。
103

4) クライアントは r1 ⊕ r2 として xi を求める。
プロトコルの健全性は方式からほぼ明らかである。また、集合 S が 2[n] から一様分布に従って選ばれているため、i が S に属す確率は 1/2 である。従って、i がS1 に属す確率も 1/2 であり、S2 に属する確率も 1/2 となる。このことから、i の
情報は DB1 , DB2 のどちらにも情報理論的な意味で漏洩しない。
計算量的に安全な単一サーバ PIR [65]

情報理論的な設定の下で、サーバの数を 1 つにすることができないが [64]、計算量的安全性のもとではサーバを 1 台にすることができる。以下に、Kushilevitz ら[65] によって初めて提案された単一サーバによる PIR プロトコルを示す。
本方式は一人のクライアントとサーバ DB のみで構成され、サーバには s 行 t
列の二値行列 x ∈ {0, 1}s×t が格納されているものとする。クライアントが行列 Mの第 a, b 成分、Ma,b (1 ≤ a ≤ s, 1 ≤ b ≤ t) をの値を知りたいとするとき、以下のようなプロトコルを実行する。

1) 自然数 k に対して、クライアント U は k/2 ビット素数をランダムに 2 つ選
び、その積を N とする。
2) クライアント U は t 個の自然数 y1 , y2 , . . . , yt ∈ {y ∈ Z∗N | ( Ny ) = 1} を、ybは平方非剰余、それ以外は平方剰余であるように一様ランダムに選ぶ。ここ
で

·
·



は Jacobi 記号である。

3) 行列 M の第 i, j 成分 Mi,j ∈ {0, 1}, 1 ≤ i ≤ s, 1 ≤ j ≤ t に対して、サーバ DB は Mi,j = 0 のときに wi,j := yj2 、Mi,j = 1 のときに wi,j := yj としQtて W := (wi,j )(i,j)∈[s]×[t] を作成する。DB はさらに、W から zi := j=1 wi,j ,i = 1, 2, . . . , s を計算する。
4) サーバは z1 , z2 , . . . , zt をクライアントに送る。
5) クライアントは za を取り出し、za が N を法として平方剰余なら Ma,b = 0、
平方非剰余であるなら Ma,b = 1 とする。
構成法から、Ma,b = 1 のときに限って za は N を法として平方剰余となる。ク
ライアントは N の 2 つの素因数を用いて、任意の y ∈ Z∗N が N を法とした平方（非）剰余であるかを多項式時間で判定できるため、Ma,b の値が計算できる。一方で、サーバは N の 2 つの素因数を知らないため、平方剰余仮定により yj や zi が平方剰余であるか否かを判定できない。このことから、直観的にはサーバが a, b
を特定出来ないことがわかる。

104

3.3.7 検索可能暗号
検索可能暗号とは、サーバに保存されている（暗号化）文書に対して、クライアン
トが検索したいキーワード及び暗号化文書の内容を秘匿しながらも、当該キーワー
ドを含む（暗号化）文書のみを効率的に検索できる高機能暗号技術である。特に関連する高機能暗号技術として、第 3.3.5 章に記載された Oblivious Random Access

Machine（ORAM）や第 3.3.6 章に記載された Private Information Retrieval（PIR）がある。以下に各技術の違いをまとめる。

 サーバが保持する情報：PIR ではデータを暗号化しない状態で保持する一方、ORAM や検索可能暗号ではデータを暗号化した状態で保持する。言い換えれば、PIR では元々サーバが管理するデータを、ORAM 及び検索可能
暗号ではクライアントが管理するデータを扱うことを想定している。

 格納した暗号化データの取り扱い：PIR では基本的にサーバに格納されたデータやその暗号文はクエリによって変わることが無いのに対し、ORAM
や検索可能暗号では毎回のクエリごとにデータの更新と暗号文の再暗号化等が行われる。特に ORAM では格納位置のシャッフルも行われる。

 サーバへのクエリ内容：検索可能暗号では格納したデータがあるキーワードを含んでいるかどうかをクエリするのに対し、PIR と ORAM ではクライア
ントがアクセスしたいデータそのものについてクエリする。

 サーバに対して秘匿できる情報：いずれの技術もクエリ内容を秘匿する。特に、クエリに対してどのデータが返されたかに関する情報を秘匿する。しかし、検索可能暗号では検索に該当するデータの頻度などの一部の情報は秘匿しないのに対し、PIR と ORAM では頻度を含めた全ての情報を秘匿する。

ORAM は一般に検索可能暗号よりも強い安全性を保証できる代わりに効率性の理論限界が知られており、検索可能暗号ではサーバ自身もサーバに保存された内容を知り得ないという意味で PIR とは異なる。検索可能暗号では、サーバ上の暗号化された文書に対して、実用上問題ないと考えられる程度の多少の情報の漏洩を許しつつ、ORAM の理論限界を超えた効率的な検索機能を達成可能である。
■検索可能暗号の分類と歴史検索可能暗号は、公開鍵暗号に基づく方式と共通鍵暗号に基づく方式に分類できる。公開鍵ベース方式 [75, 76]（Public-key Encryption

with Keyword Search，PEKS）では公開鍵を用いて暗号化が可能であり、任意のクライアントがサーバに（暗号化）文書を格納可能となる。PEKS は Boneh ら [75]によって提案され、Abdalla ら [76] によって任意の匿名 ID ベース暗号方式を効率
105

的に PEKS に変換できることが示され、基本的な構成枠組みが完成した。以降、当初は考えられていなかった種々の攻撃に対する安全性 [77, 78] や複数キーワー
ドを扱う方式 [79] 等の研究が進められている。一方で、共通鍵ベース方式 [80, 81]（Searchable Symmetric Encryption，SSE）では秘密鍵を知っている特定のクライ
アントしか（暗号化）文書を格納できないものの、処理が高速であるという特長がある。特に、暗号文一つ一つと検索キーワードの一致を判定するアルゴリズムを考え、そして全ての暗号文にそのアルゴリズムを実行することを想定する PEKS とは異なり、SSE では暗号化データベース全体に対して検索を行うアルゴリズムを考えており、検索処理全体の効率性を意識して設計されている。そのような効率性の観点から、SSE に関する研究が現在の検索可能暗号研究の主流となっている。

SSE はその概念自体が Song ら [82] によって提案された後、Curtmola ら [80, 81]
によってそのモデルと安全性が定式化され、具体的な方式も提案された。以降、SSE 方式の効率性改善だけでなく、理論限界の解析 [83, 84, 85] や、正しく結果を返さない不正なサーバを検知することで外部プロトコルと組み合わせた時の安全性を保証する方式 [86]、複数キーワードを扱う方式 [87]、一般的な情報検索を扱う方式 [88] 等の様々な研究が続けられているが、最も盛んに研究が進められているのは、暗号化データベースの動的な更新（任意のタイミングでの文書ファイル・
キーワードの追加/削除）を可能とする Dynamic SSE [89] である。実システム運用を考えると、暗号化データベースの更新機能は重要となる。
■(Dynamic) SSE 方式の特徴と比較上で述べた通り、（Dynamic）SSE ではあらかじ

め “漏洩を許す情報” を定め、検索処理や更新処理から “許した漏洩” 以上の情報を漏らさないことを保証する。特に Dynamic SSE では、許す漏洩の程度によってフォワード安全性 [90] やバックワード安全性 [91] が明示的に定義される。前者
は “文書がデータベースに追加された時、それ以前の検索処理からは追加された文書に関する情報がサーバに漏れない” ことを保証し、検索可能暗号本来の目的である “暗号化したまま検索を行う” ためには、フォワード安全性を満たすことが実用上重要である。後者のバックワード安全性は “文書がデータベースから削除された後、以降の検索処理から削除された文書の情報がサーバに漏れない” ことを保証し、近年最も盛んに研究されている Dynamic SSE の研究テーマである。しかし、その安全性の強さから効率的な実現が難しく構成が複雑になること、バックワー
ド安全性が必要かどうかは応用先に強く依存すると考えられることから、具体的な構成については本ガイドラインでは割愛する。
表 3.1 にいくつかの代表的な Dynamic SSE 方式を示す。表中の記法は次の通り。n はデータベース中の全文書ファイル数を表し、N はデータベース中の（ファ106表 3.1

方式比較。方式名があるものは方式名を、方式名がない場合は著者名を記載している。

計算量はいずれもクライアント側のものであり、◎は漸近的に最適である（原理上これ以上の効率化ができない）ことを表す。FP と BP はそれぞれフォワード安全性とバックワード安全性を表す。

データベース

更新計算量

検索計算量

FP

BP

備考

◎：O(N )◎：O(µ)△：O(n)✓–

シンプルな構成[90]◎：O(N )◎：O(µ)◎：O(nw )

✓

–

[93]

◎：O(N )◎：O(µ)◎：O(nw )

✓

–

[94]

e)
○：O(N

○：O(uw )○：O(uw )

✓

✓

サイズ

[80, 81]（[92]）

公開鍵暗号技術が構成に必要
検索時に少し多く情報漏洩を許す
比較的シンプルな構成

イル識別子, キーワード） のペアの数である（データベースの表現については後述する）。通常、削除処理によってデータベースから削除ファイルに対応するペアが削除されるが、多くのバックワード安全な方式では当該ペアを削除せずに “当該ペアが削除された” という情報を新たにデータベースに追加することで削除したとみなす（検索時にクライアントがその情報を確認し、当該ペアを取り除くことで正しく検索結果を取り出すことができる）。そのため、データベースサイズは増大e (≥ N ) で書く。µ はその更新処理によってデータベースに追加/
し、表中では N
削除されるキーワードの数を表す。nw はデータベース中の検索キーワード w を含むファイル数を表し、uw はこれまでに w に対して行われてきた更新処理（追加及び削除）の総数を表す。すなわち、nw ≤ uw が成り立つ。
なお、ほとんどの Dynamic SSE 方式においてクライアント側で秘密鍵以外の秘密情報を記憶しておく必要がある。そのような情報のサイズも比較対象ではある
ものの、ここでは割愛する。
■代表的な（Dynamic）SSE 方式の紹介

具体的な検索可能暗号の実現方法として、代表的かつシンプルな方式を紹介する。なお、構成要素技術として、疑似ランダム関数（Pseudo-Random Function，PRF）π を用いる。PRF π は、秘密鍵 k と任意の値 x を入力に取り、y を出力する。この時、y は同じ長さの乱数と見分けがつ
かず、疑似乱数として扱うことができる。また、データベースの記法についてもまとめる。識別子 id を持つ文書ファイル fid に対し、 形態素解析等を用いてキー107

ワードを抽出した集合を Wid とする。ここで、識別子 id は文書ファイル fid とは全く関係のない値（たとえば文書管理番号や文書ファイルのハッシュ値）であるとする。（Dynamic） SSE で考えるデータベースは、文書ファイル (id, Wid ) を基に作られた（ファイル識別子, キーワード） のペア (id, w) の集合とする。
以下では、Curtmola らによる SSE 方式である SSE-2 [80, 81] を紹介する。より正確には、オリジナルの方式 [80, 81] には誤り及び冗長な点が含まれるため、その点を修正し、かつ Dynamic SSE に拡張した方式 [92]（表 3.1 の一つ目の方式）を示す。なお、本方式はフォワード安全性を満たす。

 セットアップ及びデータベース生成：クライアントは、PRF 鍵 k をランダムに選び、空の配列 Index を暗号化データベースとして用意しておく。
 文書ファイルの追加：追加したい文書ファイルを fid = (id, Wid ) とする。クライアントは、全ての w ∈ Wid に対して、addr := π(k, w∥id) を計算する。
クライアントは計算した全てのアドレスと識別子 id をサーバに送り、サーバは全てのアドレス addr に対し、Index[addr] に id を格納し、暗号化データ
ベースを更新する。クライアントは別途追加した id を記憶しておく。
 文書ファイルの削除：削除したい文書ファイルの識別子 id に対し、クライア
ントは id をサーバに送る。サーバは Index の格納値を調べ、id が格納されているアドレスを全て空にし、暗号化データベースを更新する。クライアント
は記憶していた id を削除する。

 検索：検索したいキーワード q に対し、クライアントは記憶している全ての識別子 id に対して、トラップドア τid := π(k, q∥id) を計算し、計算した
トラップドアを全てサーバに送る。サーバは、受け取った各 τid に対して、
Index[τid ] の格納値を確認する。もし何かしらの値（すなわち id）が格納されていれば、それを集合 Xq に含める（Xq は最初に空集合として初期化しておく）。最終的にサーバはクライアントに Xq を渡し、クライアントは Xq を検索結果として受理する。
上記の構成において、文書ファイルの追加をセットアップ時のみに行い、それ以降追加も削除も行わなければ、Dynamic ではない通常の SSE 方式となる。

参考文献[1] A. Shamir: “How to Share a Secret”, Commun. ACM, 22, 11, pp. 612–613(1979).
[2] G. R. Blakley: “Safeguarding cryptographic keys”, MARK 1979, pp. 313–
108

317 (1979).
[3] M. Itoh, A. Saito and T. Nishizeki: “Secret Sharing Scheme Realizing General Access Structure”, IEEE Globecom 1987, pp. 99–102 (1987).
[4] B. Chor, G. Goldwasser, S. Micali and B. Awerbuch: “Veriﬁable Secret
Sharing Simultaneity in the Presence of Faults”, FOCS 1985, ACM, pp.
383–395 (1985).
[5] M. Ben-Or, S. Goldwasser and a. Wigderson: “Completeness Theorems for
Non-Cryptographic Fault Tolerant Distributed Computation”, STOC 1988,
ACM, pp. 1–10 (1988).
[6] M. Naor and A. Shamir: “Visual Cryptography”, EUROCRYPT 1994,
Springer-Verlag, pp. 1–12 (1994).
[7] M. Hillery, V. Buzěk and A. Berthiaume: “Quantum Secret Sharing”, Los
Alamos e-print archive, quant-ph/9806063, (1998).
[8] R. Cleve, D. Gottesman and H.-K. Lo: “How to Share a Quantum Secret”,
Physical Review Letters, 83, 3, pp. 648–651 (1999).
[9] A. Shamir: “How to share a secret”, Commun. ACM, 22, 11, pp. 612–613(1979).
[10] E. Karnin, J. Greene and M. E. Hellman: “On Secret Sharing Systems”,
IEEE Trans. Information Theory, 29, 1, pp. 35–41 (1983).
[11] S. Martı́n, C. Padró and A. Yang: “Secret Sharing, Rank Inequalities andInformation Inequalities”, CRYPTO 2013, Springer-Verlag, pp. 277–288(2013).
[12] M. Karchmer and A. Wigderson: “On Span Programs”, Annual Structurein Complexity Theory Conference, pp. 102–111 (1993).
[13] G. R. Blakley and C. Meadows: “Security of ramp schemes”, CRYPTO
1984, Springer-Verlag, pp. 242–268 (1984).
[14] 山本：“(k, L, n) しきい値秘密分散システム”, 電子通信学会論文誌, J68-A,
9, pp. 945–952 (1985).
[15] H. Krawczyk: “Secret sharing made short”, CRYPTO 1993, SpringerVerlag, pp. 136–146 (1993).
[16] S. Shin, S. Yamada, G. Hanaoka, Y. Ishida, A. Kunii, J. Oketani, S. Kunii
and K. Tomomura: “How to Extend CTRT for AES-256 and AES-192”,
IEICE Trans., E105-A(8), pp. 1121–1133 (2022).
[17] “ZENMU-AONT に関する論文が 国際会議で best paper premium award を109受賞”, https://www.atpress.ne.jp/news/191661.

[18] “ISO/IEC 19592-2:2017 Information technology - Security techniques - Secret sharing - Part 2: Fundamental mechanisms”.
[19] M. Iwamoto and H. Yamamoto: “Strongly Secure Ramp Secret Sharing
Schemes for General Access Structures”, Information Processing Letters,
97, 2, pp. 52–57 (2006).
[20] J. Benaloh and J. Leichter: “Generalized Secret Sharing and Monotone
Functions”, CRYPTO 1988, Springer New York, pp. 27–35 (1988).
[21] G. S. Vernam: “Cipher Printing Telegraph Systems for Secret Wire andRadio Telegraphic Communications”, J. of American Institute for ElectricalEngineering, 45, pp. 109–115 (1926).
[22] D. Beaver, S. Micali and P. Rogaway: “The Round Complexity of Secure
Protocols (Extended Abstract)”, STOC 1990, ACM, pp. 503–513 (1990).
[23] Y. Lindell, B. Pinkas, N. P. Smart and A. Yanai: “Eﬃcient Constant-RoundMulti-party Computation Combining BMR and SPDZ”, J. of Cryptology,
32, 3, pp. 1026–1069 (2019).
[24] O. Goldreich, S. Micali and A. Wigderson: “How to Play any Mental Gameor A Completeness Theorem for Protocols with Honest Majority”, STOC
1987, ACM, pp. 218–229 (1987).
[25] M. Ben-Or, O. Goldreich, S. Goldwasser, J. Håstad, J. Kilian, S. Micali
and P. Rogaway: “Everything Provable is Provable in Zero-Knowledge”,
CRYPTO 1988, Springer-Verlag, pp. 37–56 (1988).
[26] T. Araki, J. Furukawa, Y. Lindell, A. Nof and K. Ohara: “High-Throughput
Semi-Honest Secure Three-Party Computation with an Honest Majority”,
ACM CCS 2016, pp. 805–817 (2016).
[27] N. Attrapadung, G. Hanaoka, T. Matsuda, H. Morita, K. Ohara, J. C. N.
Schuldt, T. Teruya and K. Tozawa: “Oblivious Linear Group Actions andApplications”, ACM CCS 2021, pp. 630–650 (2021).
[28] Y. Lindell and A. Nof: “A Framework for Constructing Fast MPC overArithmetic Circuits with Malicious Adversaries and an Honest-Majority”,
ACM CCS 2017, pp. 259–276 (2017).
[29] R. Cramer, I. Damgård and Y. Ishai: “Share Conversion, Pseudorandom Secret-Sharing and Applications to Secure Computation”, TCC 2005,
Springer-Verlag, pp. 342–362 (2005).

110[30] NTT: “秘密計算基盤（Trust-SC）V3.0「算師（R)」｜ NTT R&D Website”.
https://www.rd.ntt/research/SI0005.html.
[31] R. Kikuchi, D. Ikarashi, T. Matsuda, K. Hamada and K. Chida: “Eﬃcient
Bit-Decomposition and Modulus-Conversion Protocols with an Honest Majority”, ACISP 2018, Springer-Verlag, pp. 64–82 (2018).
[32] D. Beaver: “Eﬃcient Multiparty Protocols Using Circuit Randomization”,
CRYPTO 1991, Springer-Verlag, pp. 420–432 (1991).
[33] I. Damgård, V. Pastro, N. P. Smart and S. Zakarias: “Multiparty Computation from Somewhat Homomorphic Encryption”, CRYPTO 2012, SpringerVerlag, pp. 643–662 (2012).
[34] N. P. Smart and T. Tanguy: “TaaS: Commodity MPC via Triples-as-aService”, CCSW@CCS 2019, ACM, pp. 105–116 (2019).
[35] ZenmuTech: “デ ー タ を 秘 匿 化 し た ま 計 算 ｜ ZenmuTech”. https://zenmutech.com/products/secure-computation/.
[36] 石田, 國井, 桶谷, 大畑, 松田, アッタラパドゥン, 花岡：“Query Ahead: 平易な記述が可能な秘匿 DB クエリーシステムの設計と実装”, SCIS 2020 (2020).
[37] A. C. Yao: “How to Generate and Exchange Secrets (Extended Abstract)”,
FOCS 1986, IEEE Computer Society, pp. 162–167 (1986).
[38] M. Bellare, V. T. Hoang and P. Rogaway: “Foundations of Garbled Circuits”, ACM CCS 2012, pp. 784–796 (2012).
[39] M. O. Rabin: “How To Exchange Secrets with Oblivious Transfer”. ePrint
187/2005.
[40] S. Zahur, M. Rosulek and D. Evans: “Two Halves Make a Whole - Reducing
Data Transfer in Garbled Circuits Using Half Gates”, EUROCRYPT 2015,
Springer-Verlag, pp. 220–250 (2015).
[41] V. Kolesnikov and T. Schneider: “Improved Garbled Circuit: Free XOR
Gates and Applications”, ICALP 2008, Springer-Verlag, pp. 486–498 (2008).
[42] M. Naor, B. Pinkas and R. Sumner: “Privacy preserving auctions and mechanism design”, ACM EC 1999, pp. 129–139 (1999).
[43] B. Pinkas, T. Schneider, N. P. Smart and S. C. Williams: “Secure TwoParty Computation Is Practical”, ASIACRYPT 2009, Springer-Verlag, pp.
250–267 (2009).
[44] S. Goldwasser, S. Micali and C. Rackoﬀ: “The Knowledge Complexity ofInteractive Proof Systems”, SIAM J. Computing, 18, 1, pp. 186–208 (1989).

111

[45] B. Manuel, Feldman and P. M. Silvio: “Non-Interactive Zero-Knowledge
and Its Applications”, STOC 1988, ACM, pp. 103–112 (1988).
[46] C.-P. Schnorr: “Eﬃcient Identiﬁcation and Signatures for Smart Cards”,
CRYPTO 1989, Springer-Verlag, pp. 239–252 (1989).
[47] R. Gennaro, C. Gentry, B. Parno and M. Raykova: “Quadratic Span Programs and Succinct NIZKs without PCPs”, EUROCRYPT 2013, SpringerVerlag, pp. 626–645 (2013).
[48] B. Parno, J. Howell, C. Gentry and M. Raykova: “Pinocchio: Nearly Practical Veriﬁable Computation”, IEEE S&P 2013 (2013).
[49] J. Groth: “On the Size of Pairing-Based Non-interactive Arguments”, EUROCRYPT 2016, Springer-Verlag, pp. 305–326 (2016).
[50] E. Ben-Sasson, I. Bentov, Y. Horesh and M. Riabzev: “Scalable Zero Knowledge with No Trusted Setup”, CRYPTO 2019, Springer-Verlag, p. 701–732(2019).
[51] B. Bünz, J. Bootle, D. Boneh, A. Poelstra, P. Wuille and G. Maxwell:“Bulletproofs: Short Proofs for Conﬁdential Transactions and More ”, IEEE
S&P 2018, pp. 315–334 (2018).
[52] O. Goldreich: “Towards a Theory of Software Protection and Simulation
by Oblivious RAMs”, STOC 1987, ACM, pp. 182–194 (1987).
[53] R. Ostrovsky: “Eﬃcient computation on oblivious RAMs”, STOC 1990,
ACM, pp. 514–523 (1990).
[54] O. Goldreich and R. Ostrovsky: “Software protection and simulation on
oblivious RAMs”, 43 (3), pp. 431–473 (1996).
[55] E. Shi, T.-H. H. Chan, E. Stefanov and M. Li: “Oblivious RAM with
O((log N )3 ) worst-case cost”, ASIACRYPT 2011, Springer-Verlag, pp. 197–
214 (2011).
[56] E. Kushilevitz, S. Lu and R. Ostrovsky: “On the (In)Security of Hash-Based
Oblivious RAM and A New Balancing Scheme”, SODA 2012, pp. 143–156(2012).
[57] E. Stefanov, M. van Dijk, E. Shi, C. W. Fletcher, L. Ren, X. Yu and S. Devadas: “Path ORAM: an extremely simple oblivious RAM protocol”, ACM
CCS 2013, pp. 299–310 (2013).
[58] S. Patel, G. Persiano, M. Raykova and K. Yeo: “PanORAMa: Oblivious
RAM with Logarithmic Overhead”, FOCS 2018, ACM, pp. 871–882 (2018).

112

[59] G. Asharov, I. Komargodski, W.-K. Lin, K. Nayak, E. Peserico and
E. Shi: “OptORAMa: Optimal Oblivious RAM”, EUROCRYPT (2) 2020,
Springer-Verlag, pp. 403–432 (2020).
[60] G. Asharov, I. Komargodski, W.-K. Lin and E. Shi: “Oblivious RAM with
Worst-Case Logarithmic Overhead”, CRYPTO (4) 2021, Springer-Verlag,
pp. 610–640 (2021).
[61] S. Lu and R. Ostrovsky: “Distributed Oblivious RAM for Secure Two-Party
Computation”, TCC 2013, Springer-Verlag, pp. 377–396 (2013).
[62] E. Boyle, K.-M. Chung and R. Pass: “Oblivious parallel ram and applications”, TCC 2016, Springer-Verlag, pp. 175–204 (2016).
[63] B. Chor, E. Kushilevitz, O. Goldreich and M. Sudan: “Private Information
Retrieval”, FOCS, IEEE, pp. 41–50 (1995).
[64] B. Chor, E. Kushilevitz, O. Goldreich and M. Sudan: “Private Information
Retrieval”, J. ACM, 45, 6, pp. 965–981 (1998).
[65] E. Kushilevitz and R. Ostrovsky: “Replication Is Not Needed: Single
Database, Computationally-Private Information Retrieval”, FOCS 1997,
IEEE, pp. 364–373 (1997).
[66] H. Corrigan-Gibbs and D. Kogan: “Private Information Retrieval with
Sublinear Online Time”, EUROCRYPT 2020, Springer-Verlag, pp. 44–75(2020).
[67] H. Corrigan-Gibbs, A. Henzinger and D. Kogan: “Single-Server Private Information Retrieval with Sublinear Amortized Time”, EUROCRYPT 2022,
Springer International Publishing, pp. 3–33 (2022).
[68] L. Holzbaur, C. Hollanti and A. Wachter-Zeh: “Computational Code-BasedSingle-Server Private Information Retrieval”, IEEE ISIT 2020, pp. 1065–
1070 (2020).
[69] G. N. Alfarano, K. Khathuria and V. Weger: “A Survey on Single Server
Private Information Retrieval in A Coding Theory Perspective”, Applicable
Algebra in Engineering, Communication and Computing (2021).
[70] H. Sun and S. A. Jafar: “The Capacity of Private Information Retrieval”,
IEEE Trans. Information Theory, 63, 7, pp. 4075–4088 (2017).
[71] D. Augot, F. Levy-dit Vehel and A. Shikfa: “A Storage-Eﬃcient and Robust
Private Information Retrieval Scheme Allowing Few Servers”, CANS 2014,
Springer International Publishing, pp. 222–239 (2014).

113

[72] J. Katz and L. Trevisan: “On The Eﬃciency of +Local Decoding Proceduresfor Error-Correcting Codes”, STOC 2000, ACM, pp. 80–86 (2000).
[73] A. Beimel and Y. Stahl: “Robust Information-Theoretic Private Information Retrieval”, J. of Cryptology, 20, 3, pp. 295–321 (2007).
[74] K. Kurosawa: “How to Correct Errors in Multi-server PIR”, ASIACRYPT
2019, Springer-Verlag, pp. 564–574.
[75] D. Boneh, G. Di Crescenzo, R. Ostrovsky and G. Persiano: “Public Key
Encryption with Keyword Search”, EUROCRYPT 2004, Springer-Verlag,
pp. 506–522 (2004).
[76] M. Abdalla, M. Bellare, D. Catalano, E. Kiltz, T. Kohno, T. Lange,
J. Malone-Lee, G. Neven, P. Paillier and H. Shi: “Searchable Encryption
Revisited: Consistency Properties, Relation to Anonymous IBE, and Extensions”, J. of Cryptology, 21, 3, pp. 350–391 (2007).
[77] Q. Tang: “Towards Forward Security Properties for PEKS and IBE”, Information Security and Privacy, ACISP 2015, Springer-Verlag, pp. 127–144(2015).
[78] R. Chen, Y. Mu, G. Yang, F. Guo and X. Wang: “A New General Framework for Secure Public Key Encryption with Keyword Search”, Information
Security and Privacy, ACISP 2015, Springer-Verlag, pp. 59–76 (2015).
[79] P. Golle, J. Staddon and B. Waters: “Secure Conjunctive Keyword Searchover Encrypted Data”, ACNS 2004, Springer-Verlag, pp. 31–45 (2004).
[80] R. Curtmola, J. Garay, S. Kamara and R. Ostrovsky: “Searchable Symmetric Encryption: Improved Deﬁnitions and Eﬃcient Constructions”, ACM
CCS 2006, pp. 79–88 (2006).
[81] R. Curtmola, J. A. Garay, S. Kamara and R. Ostrovsky: “Searchable Symmetric Encryption: Improved Deﬁnitions and Eﬃcient Constructions”, J.
of Computer Security, 19, 5, pp. 895–934 (2011).
[82] D. X. Song, D. Wagner and A. Perrig: “Practical Techniques for Searches
on Encrypted Data”, IEEE S&P 2000, pp. 44–55 (2000).
[83] G. Asharov, G. Segev and I. Shahaf: “Tight Tradeoﬀs in Searchable Symmetric Encryption”, J. of Cryptology, 34, 9, pp. 1–37 (2021).
[84] G. Asharov, M. Naor, G. Segev and I. Shahaf: “Searchable Symmetric Encryption: Optimal Locality in Linear Space via Two-Dimensional Balanced
Allocations”, SIAM J. Computing, 50, 5, pp. 1501–1536 (2021).

114

[85] D. Cash and S. Tessaro: “The Locality of Searchable Symmetric Encryption”, EUROCRYPT 2014, Springer-Verlag, pp. 351–368 (2014).
[86] K. Kurosawa and Y. Ohtaki: “UC-Secure Searchable Symmetric Encryption”, Financial Cryptography and Data Security, FC 2012, Springer-Verlag,
pp. 285–298 (2012).
[87] D. Cash, S. Jarecki, C. Jutla, H. Krawczyk, M.-C. Roşu and M. Steiner:“Highly-Scalable Searchable Symmetric Encryption with Support for
Boolean Queries”, CRYPTO 2013, Springer-Verlag, pp. 353–373 (2013).
[88] M. Chase and S. Kamara: “Structured Encryption and Controlled Disclosure”, ASIACRYPT 2010, Springer-Verlag, pp. 577–594 (2010).
[89] S. Kamara, C. Papamanthou and T. Roeder: “Dynamic Searchable Symmetric Encryption”, ACM CCS 2012, pp. 965–976 (2012).
[90] R. Bost: “Σoφoς: Forward Secure Searchable Encryption”, ACM CCS 2016,
pp. 1143–1154 (2016).
[91] R. Bost, B. Minaud and O. Ohrimenko: “Forward and Backward Private
Searchable Encryption from Constrained Cryptographic Primitives”, ACM
CCS 2017, pp. 1465–1482 (2017).
[92] Y. Watanabe, T. Nakai, K. Ohara, T. Nojima, Y. Liu, M. Iwamoto and
K. Ohta: “How to Make a Secure Index for Searchable Symmetric Encryption, Revisited”, IEICE Trans., E105-A(12), pp. 1559–1577 (2022).
[93] M. Etemad, A. Küpçü, C. Papamanthou and D. Evans: “Eﬃcient Dynamic
Searchable Encryption with Forward Privacy”, Privacy Enhancing Technologies (PoPETs), Vol. 2018(1), pp. 5–20 (2018).
[94] J. G. Chamani, D. Papadopoulos, C. Papamanthou and R. Jalili: “NewConstructions for Forward and Backward Private Symmetric Searchable
Encryption”, ACM CCS 2018, pp. 1038–1055 (2018).

115

第4章

おわりに
本ガイドラインに記載した内容は、2022 年 9 月以前に公開された情報に基づいている。2022 年 9 月以降も多くの高機能暗号に関連する情報が、各社の広報、学会、標準化団体において公開されてきているが、発表されたばかりであり、安全性の評価が完全には行われていない方式もある。本ガイドラインで記載した高機能
暗号は、2022 年 9 月時点で、主要国際学会で発表されており、有力な攻撃法が発見されておらず、かつ、十分な性能を持つと考えられる方式を選んでいる。
高機能暗号の特徴であるが、機能が異なれば、異なる暗号となる。このため、多くの種類の高機能暗号があり、それらすべて本ガイドラインに掲載することはできない。主要と考えられる高機能暗号に絞って掲載することになった。
また、高機能暗号は多種多様であるが故に、導入するためには専門的な知識が要求される。この知識を有し、かみ砕いて説明でき、ケースに応じて応用するスキルを有する人材の確保は課題となっている。さらに、既存システムとの整合性を考慮し、例えば、組織内の端末にソフトウェアとして導入できるか、マネージメン
トシステムと連携できるか、Web ブラウザ上で動作ができるか、インターフェー
スはどのような形態がよいか等、これらは実際のシステム開発者や利用者と密に連携をとりつつ開発することが必要となる。
本ガイドラインが、用途に適した高機能暗号を選択するため、および、研究者、システム開発者、利用者にとっての指針となれば幸いである。

116

CRYPTREC 暗号技術ガイドライン（高機能暗号）[CRYPTREC GL-2005-2022]
不許複製

禁無断転載

発行日：2023 年 3 月 31 日（第１版）
発行者
・ 〒184-8795
東京都小金井市貫井北町四丁目２番１号
国立研究開発法人

情報通信研究機構（サイバーセキュリティ研究所

セキュリティ基盤研究室）

NATIONAL INSTITUTE OF INFORMATION AND COMMUNICATIONS TECHNOLOGY
4-2-1 NUKUI-KITAMACHI, KOGANEITOKYO, 184-8795 JAPAN・ 〒113-6591
東京都文京区本駒込二丁目２８番８号
独立行政法人情報処理推進機構(セキュリティセンター セキュリティ技術評価部 暗号グループ）
INFORMATION-TECHNOLOGY PROMOTION AGENCY, JAPAN
2-28-8 HONKOMAGOME, BUNKYO-KU
TOKYO, 113-6591 JAPAN