(57)【要約】【課題】匿名性を維持し、かつ、管理が容易なアドレスを含むトランザクションを扱うブロックチェーンを提供する。【解決手段】ブロックチェーンネットワークを構成する複数の処理ノード及びブロックチェーンネットワークへ接続する接続装置を備える計算機システムであって、処理ノードは情報を保持し、接続装置は、処理ノードにトランザクションを送信する接続処理部を有し、接続処理部は、確率的暗号化方式に基づいてキーワードから検索可能暗号文を生成する暗号処理部を含み、前記暗号処理部は、前記キーワードから、前記トランザクションの送信元又は送信先を示すアドレスとして使用する前記検索可能暗号文を生成し、前記検索可能暗号文を含む前記トランザクションを生成する。【選択図】  図１
2019146088.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンを用いたサービスを提供するためのブロックチェーンネットワークを構成する複数の処理ノード及び前記ブロックチェーンネットワークへ接続する接続装置を備える計算機システムであって、
前記複数の処理ノードは、前記サービスにおける取引情報の履歴を含むトランザクションを管理するための情報であって、前記複数のトランザクションを含むブロックが時系列順に連結された情報である台帳情報を保持し、
前記接続装置は、前記トランザクションを生成し、少なくとも一つの前記処理ノードに前記トランザクションを送信する接続処理部を有し、
前記接続処理部は、確率的暗号化方式に基づいてキーワードから検索可能暗号文を生成する暗号処理部を含み、
前記暗号処理部は、前記キーワードから、前記トランザクションの送信元又は送信先を示すアドレスとして使用する前記検索可能暗号文を生成し、
前記接続処理部は、前記検索可能暗号文を含む前記トランザクションを生成することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記暗号処理部は、前記検索可能暗号文を用いて、前記トランザクションに関連するデータの暗号化及び復号化に使用する暗号鍵を生成することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記処理ノードは、前記台帳情報を管理するサービス処理部を有し、
前記サービス処理部は、前記トランザクションの検索処理を実行する検索処理部を含み、
前記接続処理部は、
第一キーワードから生成された検索可能暗号文を含むトランザクションを検索するための検索クエリを生成し、
前記少なくとも一つの処理ノードに前記検索クエリを送信し、
前記検索処理部は、
前記検索クエリに基づいて検索処理を実行することによって、前記第一キーワードから生成された検索可能暗号文を含むトランザクションを検索し、
前記検索の結果を前記接続装置に応答することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記ブロックは、当該ブロックに含まれる前記トランザクションを特定するためのフィルタを含み、
前記接続処理部は、前記第一キーワードを用いて、前記第一キーワードから生成された検索可能暗号文を含むトランザクションを含むブロックを特定するための検索フィルタを生成し、
前記検索処理部は、
前記ブロックに含まれる前記フィルタ及び前記検索フィルタを比較することによって、前記第一キーワードから生成された検索可能暗号文を含むトランザクションを含むブロックを特定し、
前記特定されたブロックに対して前記検索クエリに基づく検索処理を実行することを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記接続処理部は、
前記キーワードを用いて、前記フィルタを生成するためのフィルタ生成情報を生成し、
前記検索可能暗号文及び前記フィルタ生成情報を含む前記トランザクションを生成し、
前記サービス処理部は、
新規ブロックに含める複数のトランザクションを決定し、
前記決定された複数のトランザクションに含まれる前記フィルタ生成情報を用いて前記フィルタを生成し、
前記フィルタを含む前記新規ブロックを生成し、前記新規ブロックを前記台帳情報に登録することを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記接続処理部は、
前記キーワードを暗号化し、
前記暗号化されたキーワードを用いて前記フィルタ生成情報を生成することを特徴とする計算機システム。
【請求項７】
請求項５に記載の計算機システムであって、
前記接続処理部は、
前記フィルタ生成情報を加工し、
前記検索可能暗号文及び前記加工されたフィルタ生成情報を含む前記トランザクションを生成することと特徴とする計算機システム。
【請求項８】
複数の処理ノードから構成され、ブロックチェーンを用いたサービスを提供するためのブロックチェーンネットワークに接続する接続装置であって、
前記複数の処理ノードは、前記サービスにおける取引情報の履歴を含むトランザクションを管理するための情報であって、前記複数のトランザクションを含むブロックが時系列順に連結された情報である台帳情報を保持し、
前記接続装置は、前記トランザクションを生成し、少なくとも一つの前記処理ノードに前記トランザクションを送信する接続処理部を有し、
前記接続処理部は、確率的暗号化方式に基づいてキーワードから検索可能暗号文を生成する暗号処理部を含み、
前記暗号処理部は、前記キーワードから、前記トランザクションの送信元又は送信先を示すアドレスとして使用する前記検索可能暗号文を生成し、
前記接続処理部は、前記検索可能暗号文を含む前記トランザクションを生成することを特徴とする接続装置。
【請求項９】
請求項８に記載の接続装置であって、
前記暗号処理部は、前記検索可能暗号文を用いて、前記トランザクションに関連するデータの暗号化及び復号化に使用する暗号鍵を生成することを特徴とする接続装置。
【請求項１０】
請求項９に記載の接続装置であって、
前記接続処理部は、
第一キーワードから生成された検索可能暗号文を含むトランザクションを検索するための検索クエリを生成し、
前記少なくとも一つの処理ノードに前記検索クエリを送信することを特徴とする接続装置。
【請求項１１】
請求項１０に記載の接続装置であって、
前記ブロックは、当該ブロックに含まれる前記トランザクションを特定するためのフィルタを含み、
前記接続処理部は、
前記第一キーワードを用いて、前記第一キーワードから生成された検索可能暗号文を含むトランザクションを含むブロックを特定するための検索フィルタを生成することを特徴とする接続装置。
【請求項１２】
請求項１１に記載の接続装置であって、
前記接続処理部は、
前記キーワードを用いて、前記フィルタを生成するためのフィルタ生成情報を生成し、
前記検索可能暗号文及び前記フィルタ生成情報を含む前記トランザクションを生成し、
前記台帳情報には、前記複数のトランザクションに含まれる前記フィルタ生成情報を用いて生成された前記フィルタを含むブロックが格納されることを特徴とする接続装置。
【請求項１３】
複数の処理ノードから構成され、ブロックチェーンを用いたサービスを提供するためのブロックチェーンネットワークに接続する接続装置が実行するデータ処理方法であって、
前記複数の処理ノードは、前記サービスにおける取引情報の履歴を含むトランザクションを管理するための情報であって、前記複数のトランザクションを含むブロックが時系列順に連結された情報である台帳情報を保持し、
前記接続装置が、前記トランザクションの送信元又は送信先を示すアドレスとして、確率的暗号化方式に基づいてキーワードから検索可能暗号文を生成するステップと、
前記接続装置が、前記検索可能暗号文を含む前記トランザクションを生成し、少なくとも一つの前記処理ノードに前記トランザクションを送信するステップと、を含むことを特徴とするデータ処理方法。
【請求項１４】
請求項１３に記載のデータ処理方法であって、
前記接続装置が、前記検索可能暗号文を用いて、前記トランザクションに関連するデータの暗号化及び復号化に使用する暗号鍵を生成するステップを含むことを特徴とするデータ処理方法。
【請求項１５】
請求項１４に記載のデータ処理方法であって、
前記接続装置が、第一キーワードから生成された検索可能暗号文を含むトランザクションを検索するための検索クエリを生成するステップと、
前記接続装置が、前記少なくとも一つの処理ノードに前記検索クエリを送信するステップと、を含むことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーンのトランザクションの処理方法に関する。
【背景技術】
【０００２】
近年、ビットコイン（登録商標、以下同じ）をはじめとした様々な仮想通貨の利用が進んでいる。仮想通貨を実現する技術としてブロックチェーンが用いられている。
【０００３】
ブロックチェーンは、ユーザの取引内容を含む処理依頼リクエストを一定数集めてブロックを生成し、ブロックを連結してデータを管理する技術である。本明細書では、処理依頼リクエストをトランザクションと記載する。
【０００４】
ブロックには、一つ前のブロックに格納されるトランザクションから算出されたハッシュ値が含まれる。ブロックチェーンでは、ハッシュ値を使ってブロックを連結することによって、ブロックに格納された情報の改ざんを困難にしている。
【０００５】
また、ブロックチェーンは、ピアツーピアのネットワーク（ブロックチェーンネットワーク）として実現され、ブロックチェーンネットワークを構成する全てのノードが、連結されたブロックを保持することで、情報の改ざんをさらに困難にしている。
【０００６】
各ノードは同一の情報を保持するため、可用性及び耐障害性の高いシステムを構築できる。前述のような特徴を持つことから、金融分野をはじめ、様々な分野でブロックチェーンの利用が検討されている。
【０００７】
ブロックに格納されるトランザクションは、全てのノードによって共有されるため、どのノードからも閲覧できる。このため、ブロックに格納されるトランザクションは秘匿性を持たない。
【０００８】
しかし、用途によっては取引自体を秘匿したい場合がある。そこで、例えば、ビットコインでは、トランザクションの送信先又は送信元を示すアドレスを匿名化することで取引の秘匿化に対応している。具体的には、ビットコインを扱うシステムでは、ユーザが保持する公開鍵からハッシュ値を算出する等して、アドレスを生成している。
【０００９】
非特許文献１には、取引内容又は用途に応じて異なる秘密鍵及び公開鍵の鍵ペアを生成し、各鍵ペアを管理し、また、取引内容又は用途に応じて鍵ペアを使い分けて複数のアドレスを生成することが記載されている。複数個の鍵ペアを生成することによって、同じユーザが異なるアドレスを利用できる。したがって、ブロックに格納されたトランザクションが第三者によって参照された場合でも、どのユーザのトランザクションであるかを秘匿することが可能になる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第２０１２／０７７５４１号
【非特許文献】
【００１１】
【非特許文献１】Pieter Wuille、“Hierarchical Deterministic Wallets”、［ｏｎｌｉｎｅ］、２０１２年２月１１日、［平成３０年２月１４日］、インターネット＜URL:https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki＞
【発明の概要】
【発明が解決しようとする課題】
【００１２】
非特許文献１に記載の方法では、ユーザが鍵ペアの情報を管理する必要がある。匿名性を高めるために取引内容又は用途ごとに鍵ペアを生成した場合、鍵ペアの管理が煩雑になり、また、管理するデータ量も増加するという課題がある。ブロックチェーンネットワークへの接続サービスを提供する業者の場合、全ユーザの複数の鍵ペアの情報を管理する必要があるため、管理するデータ量の増加は顕著な課題となる。
【００１３】
本発明は、匿名性を維持し、かつ、管理が容易なアドレスを含むトランザクションを扱うブロックチェーンを提供する。
【課題を解決するための手段】
【００１４】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ブロックチェーンを用いたサービスを提供するためのブロックチェーンネットワークを構成する複数の処理ノード及び前記ブロックチェーンネットワークへ接続する接続装置を備える計算機システムであって、前記複数の処理ノードは、前記サービスにおける取引情報の履歴を含むトランザクションを管理するための情報であって、前記複数のトランザクションを含むブロックが時系列順に連結された情報である台帳情報を保持し、前記接続装置は、前記トランザクションを生成し、少なくとも一つの前記処理ノードに前記トランザクションを送信する接続処理部を有し、前記接続処理部は、確率的暗号化方式に基づいてキーワードから検索可能暗号文を生成する暗号処理部を含み、前記暗号処理部は、前記キーワードから、前記トランザクションの送信元又は送信先を示すアドレスとして使用する前記検索可能暗号文を生成し、前記接続処理部は、前記検索可能暗号文を含む前記トランザクションを生成する。
【発明の効果】
【００１５】
本発明の一形態によれば、一つのキーワードから複数の暗号化されたアドレスを生成できる。これによって、匿名性を維持しつつ、管理が容易なアドレスを含むトランザクションを扱うブロックチェーンを実現できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１６】
【図１】実施例１のシステムの構成の一例を示す図である。
【図２】実施例１の接続装置の構成の一例を示す図である。
【図３】実施例１の処理ノードの構成の一例を示す図である。
【図４】実施例１のユーザ管理情報の一例を示す図である。
【図５】実施例１の台帳情報の一例を示す図である。
【図６】実施例１のシステムにおけるトランザクションの生成処理の流れを説明するシーケンス図である。
【図７】実施例１の接続装置が実行するアドレスの生成処理の一例を説明するフローチャートである。
【図８】実施例１の接続装置がフィルタ生成情報を生成する処理の一例を説明するフローチャートである。
【図９】実施例１の処理ノードがフィルタを生成する処理の一例を説明するフローチャートである。
【図１０】実施例１のシステムにおけるトランザクションの検索処理の流れを説明するシーケンス図である。
【図１１】実施例１の処理ノードが実行する検索処理の一例を説明するフローチャートである。
【図１２】実施例２のユーザ管理情報の一例を示す図である。
【図１３】実施例２の接続装置が実行するアドレス生成処理の一例を説明するフローチャートである。
【図１４】実施例３の接続装置が実行する鍵ペアの生成処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を用いて本発明の実施例を説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１８】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【００１９】
本明細書等における「第一」、「第二」、「第三」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【００２０】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例１】
【００２１】
図１は、実施例１のシステムの構成の一例を示す図である。
【００２２】
実施例１のシステムは、少なくとも一つの接続装置１００及び複数の処理ノード１０１から構成される。少なくとも一つの接続装置１００及び複数の処理ノード１０１は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して互いに接続される。
【００２３】
複数の処理ノード１０１は、ブロックチェーンを用いたサービスを提供するためのブロックチェーンネットワーク１１０を構成する。接続装置１００は、ブロックチェーンネットワーク１１０への接続サービスを提供する。ユーザ１５０は、接続装置１００を利用して、ブロックチェーンネットワーク１１０によって提供されるサービスを利用する。実施例１では仮想通貨の取引サービスが提供されるものとする。
【００２４】
接続装置１００が接続する処理ノード１０１は、ユーザ１５０が自身で構築した処理ノード１０１でもよいし、また、他のユーザ１５０が構築した処理ノード１０１でもよい。
【００２５】
ブロックチェーンネットワーク１１０に接続する方法としては二つの方法がある。
【００２６】
一つの接続方法は、ユーザ１５０自身が保持する接続装置１００を用いてブロックチェーンネットワーク１１０に接続する方法である。当該の接続方法は、例えば、ユーザ１５０が保持するパーソナルコンピュータ及びスマートフォン等の端末に、接続装置１００の機能を実現するソフトウェアをインストールすることによって実現できる。
【００２７】
もう一つの接続方法は、銀行及び証券会社等の接続サービスの提供者が保持する接続装置１００を介してブロックチェーンネットワーク１１０に接続する方法がある。当該の接続方法は、例えば、接続サービスの提供者と契約したユーザ１５０に対して、接続サービスの提供者が保持する接続装置１００を介したブロックチェーンネットワーク１１０への接続サービスを提供することによって実現できる。なお、接続サービスの提供者は、複数の接続装置１００を保持する。また、ブロックチェーンネットワーク１１０は、提供者が保持する処理ノード１０１を用いて構築されたものでもよい。
【００２８】
なお、上記の二つの接続方法は利用形態の規模が異なるが基本的な構成は同一である。
【００２９】
図２は、実施例１の接続装置１００の構成の一例を示す図である。
【００３０】
接続装置１００は、ＣＰＵ２０１、メモリ２０２、ストレージインタフェース２０３、ネットワークインタフェース２０４、入出力インタフェース２０５、耐タンパ装置２０６、及び記憶装置２０７を有する。
【００３１】
ＣＰＵ２０１、メモリ２０２、ストレージインタフェース２０３、ネットワークインタフェース２０４、入出力インタフェース２０５、及び耐タンパ装置２０６は、内部バスを介して互いに接続される。また、記憶装置２０７は、ストレージインタフェース２０３に接続される。
【００３２】
ＣＰＵ２０１は、メモリ２０２に格納されるプログラムを実行する。ＣＰＵ２０１は、プログラムにしたがって処理を実行することによって任意の機能部（モジュール）として稼働する。
【００３３】
メモリ２０２は、ＣＰＵ２０１が実行するプログラム及び情報を格納する。実施例１のメモリ２０２は、接続処理部２１０を実現するプログラムを格納する。接続処理部２１０は、ブロックチェーンネットワーク１１０への接続サービスを制御する。接続処理部２１０は、暗号処理部２１１を含む。また、メモリ２０２は、トランザクションの暗号化及び復号化等に使用するサービス用の暗号鍵、及び確率的暗号化方式で使用する暗号鍵を保持する。
【００３４】
暗号処理部２１１は、確率的暗号化方式の暗号化処理を実行する。後述するように、暗号処理部２１１によって生成された暗号文が、トランザクションの発行元又は発行先を示すアドレスとして用いられる。ここで、確率的暗号化方式は、平文からランダムな暗号文を生成する暗号化のアルゴリズムである。確率的暗号化方式では、平文及び暗号文が一対多の対応関係を有する。暗号処理部２１１によって生成された暗号文は検索可能な暗号文である。確率的暗号化方式に基づいて検索可能暗号を生成する手法としては、例えば、特許文献１に記載の手法を採用する。
【００３５】
本明細書では、確率的暗号化方式に基づいて生成された暗号文を検索可能暗号文とも記載する。
【００３６】
なお、「発明が解決しようとする課題」で記載した課題の他にも以下のような課題が存在する。ブロックに格納されたトランザクションの中から、特定のユーザのトランザクションを取得する場合、当該ユーザが管理するアドレス毎にトランザクションを検索する必要がある。したがって、トランザクションの効率的な検索が難しいという課題がある。後述するように、検索可能暗号文をアドレスとして用いることによって当該課題も解決することができる。
【００３７】
ストレージインタフェース２０３は、記憶装置２０７に接続するためのインタフェースである。ネットワークインタフェース２０４は、ネットワークを介して、処理ノード１０１等の他の装置と接続するためのインタフェースである。入出力インタフェース２０５は、キーボード及びマウス等の入力装置、並びに、ディスプレイ等の出力装置と接続するためのインタフェースである。
【００３８】
耐タンパ装置２０６は、ブロックチェーンネットワーク１１０を用いたサービスにおいて、秘密かつ安全に扱う必要がある情報を格納し、また、安全な処理を実行するために利用される耐タンパ領域を提供する装置である。例えば、暗号処理部２１１は耐タンパ領域を用いて処理を実行する。
【００３９】
耐タンパ領域は接続装置１００に実装される専用のハードウェアを用いて実現されているがこれに限定されない。例えば、オフラインでの接続装置１００の利用、又は接続装置１００とは異なる機器でデータを管理する等、安全性が担保される運用によって耐タンパ領域を実現してもよい。また、各インタフェースを介して接続される装置を利用して耐タンパ領域を実現してもよい。
【００４０】
なお、サービスにおけるリスクが許容される場合、接続装置１００は、耐タンパ装置２０６等を用いて実現される耐タンパ領域を利用しなくてもよい。
【００４１】
記憶装置２０７は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置である。実施例１の記憶装置２０７はユーザ管理情報２２０を格納する。
【００４２】
ユーザ管理情報２２０は、ユーザ１５０に関する情報を格納する。ユーザ管理情報２２０は、アドレスの生成に用いられる情報である。ユーザ管理情報２２０の詳細は図４を用いて説明する。
【００４３】
図３は、実施例１の処理ノード１０１の構成の一例を示す図である。
【００４４】
処理ノード１０１は、接続装置１００と同一の装置構成であり、ＣＰＵ３０１、メモリ３０２、ストレージインタフェース３０３、ネットワークインタフェース３０４、入出力インタフェース３０５、耐タンパ装置３０６、及び記憶装置３０７を有する。
【００４５】
実施例１のメモリ３０２は、サービス処理部３１０を実現するプログラムを格納する。サービス処理部３１０は、後述する台帳情報３２０を管理し、ブロックチェーンネットワーク１１０を利用したサービスの処理を制御する。サービス処理部３１０は、検索処理部３１１を含む。検索処理部３１１は、暗号処理部２１１によって生成されたアドレスに基づくトランザクションの検索処理を実行する。
【００４６】
実施例１の記憶装置３０７は、接続装置１００が送信したトランザクションを管理するための台帳情報３２０を格納する。台帳情報３２０の詳細は図５を用いて説明する。
【００４７】
図４は、実施例１のユーザ管理情報２２０の一例を示す図である。
【００４８】
ユーザ管理情報２２０は、ユーザＩＤ４０１、検索語４０２、及び利用目的４０３から構成されるエントリを含む。一つのエントリが一人のユーザ１５０に対応する。なお、エントリの構造は一例であってこれに限定されない。例えば、エントリは、処理に必要な各種管理情報を格納するフィールドを含んでもよい。
【００４９】
ユーザＩＤ４０１は、ユーザ１５０の識別情報を格納するフィールドである。検索語４０２は、アドレスとして使用する検索可能暗号文を生成するためのキーワード（検索語）を格納するフィールドである。利用目的４０３は、ユーザ１５０のサービスの利用目的を格納するフィールドである。
【００５０】
実施例１では、検索語及び利用目的が対応づけられており、ユーザ１５０は、検索語を記憶することなく、利用目的に応じたトランザクションを発行できる。これによって、ユーザ１５０の利便性を向上させることができる。
【００５１】
実施例１のユーザ管理情報２２０は、記憶装置２０７に格納されているが、必要に応じて耐タンパ領域（耐タンパ装置２０６）に格納されてもよい。
【００５２】
図５は、実施例１の台帳情報３２０の一例を示す図である。
【００５３】
台帳情報３２０は、時系列順に連結された複数のブロック５００から構成される。各ブロック５００は、時系列が前のブロック５００と接続される。ブロック５００は、接続されるブロック５００に含まれるデータから算出されたハッシュ値を含む。また、ブロック５００は、フィルタ５１０及びトランザクション情報５２０を含む。
【００５４】
フィルタ５１０は、ブロック５００に格納される複数のトランザクションの中から特定のトランザクションを検索するために用いられる情報である。
【００５５】
トランザクション情報５２０は、ユーザ１５０の取引内容を示すトランザクションを管理するための情報である。トランザクション情報５２０は、送信元５２１、送信先５２２、値５２３、及びフィルタ生成情報５２４から構成されるエントリを含む。一つのエントリが一つのトランザクションに対応する。
【００５６】
送信元５２１、送信先５２２、値５２３は、取引内容を格納するフィールドである。実施例１では、仮想通貨の取引サービスを想定しているため、仮想通貨の送信元、送信先、仮想通貨の値（金額）を格納するフィールドを設けている。なお、前述の取引内容は一例であってこれらに限定されない。
【００５７】
送信元５２１は、検索語から生成された検索可能暗号文であるアドレスを格納するフィールドである。
【００５８】
送信先５２２は、送信先のユーザ１５０等から予め取得したアドレスを格納するフィールドである。送信先５２２に格納されるアドレスは、検索可能暗号文でなくてもよい。実施例１では、送信先のユーザ１５０は、アドレスを通知する場合に、後述する処理によって生成された検索可能暗号文をアドレスとして通知する。
【００５９】
値５２３は、仮想通貨の取引金額を格納するフィールドである。
【００６０】
フィルタ生成情報５２４は、フィルタ５１０を生成するために使用するフィルタ生成情報を格納するフィールドである。
【００６１】
図６は、実施例１のシステムにおけるトランザクションの生成処理の流れを説明するシーケンス図である。
【００６２】
送信元のユーザ１５０及び送信先のユーザ１５０の間で、予め送信先のユーザ１５０のアドレスを取得する（ステップＳ１００）。アドレスを取得する方法は、例えば、メール及びＷｅｂサイトの掲示等を用いて取得する方法が考えられる。なお、本発明はアドレスを取得する方法に限定されない。
【００６３】
送信元のユーザ１５０は、接続装置１００に対して送信リクエストを入力する（ステップＳ１０１）。送信リクエストは、ユーザ１５０が保持する端末を操作して入力されてもよいし、また、接続装置１００に接続される入力装置を操作して入力されてもよい。
【００６４】
送信リクエストには、アドレスを生成するために使用する検索語又は検索語を特定するための利用目的に関する情報のいずれかが含まれる。また、送信リクエストには、送金取引における金額及び送信の宛先を示す情報が含まれる。
【００６５】
次に、接続装置１００は、送信リクエストを受信した場合、確率的暗号方式の暗号鍵（第一暗号鍵）を用いて、検索語から検索可能暗号をアドレスとして生成する（ステップＳ１０２）。アドレスの生成処理の詳細は図７を用いて説明する。
【００６６】
次に、接続装置１００は、確率的暗号方式の暗号鍵（第二暗号鍵）を用いて、検索語からフィルタ生成情報を生成する（ステップＳ１０３）。具体的には、接続装置１００は、ブルームフィルタ又はアキュームレータの生成処理と同様の処理を行ってフィルタ生成情報を生成する。フィルタ生成情報の生成処理の詳細は図８を用いて説明する。
【００６７】
次に、接続装置１００は、アドレス及びフィルタ生成情報を含むトランザクションを生成し（ステップＳ１０４）、また、サービス用の秘密鍵を用いてトランザクションに対して電子署名を行うことによって、署名済のトランザクションを生成する（ステップＳ１０５）。トランザクションにはフィルタ生成情報が含まれる。
【００６８】
次に、接続装置１００は、ブロックチェーンネットワーク１１０へ署名済のトランザクションを送信する（ステップＳ１０６）。具体的には、ブロックチェーンネットワーク１１０を構成する処理ノード１０１に署名済のトランザクションが送信される。また、接続装置１００は、送信元のユーザ１５０に送信完了を通知する（ステップＳ１０７）。
【００６９】
処理ノード１０１は、署名済のトランザクションを受信した場合、当該トランザクションを検証する（ステップＳ１０８）。具体的には、処理ノード１０１は、送信元のユーザ１５０から配布されたサービス用の公開鍵を用いて署名済のトランザクションを検証する。
【００７０】
処理ノード１０１は、検証が成功した場合、トランザクションを台帳情報３２０に登録する（ステップＳ１０９）。
【００７１】
トランザクションがブロック５００に格納されることによって、送信元のユーザ１５０から送信先のユーザ１５０への送金取引が確定する。したがって、送信先のユーザ１５０には送金取引が確定した旨は明示的には通知されない。送信先のユーザ１５０が、トランザクション及びブロック５００を監視している場合、ブロックチェーンネットワーク１１０を構成する処理ノード１０１から通知を受け取ることによって送金取引を確認できる。
【００７２】
なお、ブロック５００の生成時に実行されるフィルタの生成処理の詳細は図９を用いて説明する。
【００７３】
なお、フィルタ５１０を含める必要がない場合、接続装置１００は、フィルタ生成情報を生成しなくてもよく、また、処理ノード１０１は、ブロック５００の生成時にフィルタを生成しなくてもよい。
【００７４】
図７は、実施例１の接続装置１００が実行するアドレスの生成処理の一例を説明するフローチャートである。
【００７５】
以下で説明する処理は、送信リクエストを受信した接続処理部２１０によって呼び出された暗号処理部２１１によって実行される。
【００７６】
暗号処理部２１１は、検索語を特定する（ステップＳ２０１）。
【００７７】
具体的には、暗号処理部２１１は、送信リクエストに検索語が含まれるか否かを判定する。送信リクエストに検索語が含まれる場合、暗号処理部２１１は当該検索語をそのまま用いる。送信リクエストに検索語が含まれない場合、暗号処理部２１１は、送信リクエストを解析し、解析結果に基づいてユーザ管理情報２２０を参照し、ユーザの識別情報及び利用目的等に基づいて検索語を特定する。
【００７８】
次に、暗号処理部２１１は、第一暗号鍵を用いて検索語から検索可能暗号文を生成する（ステップＳ２０２）。
【００７９】
接続処理部２１０は、暗号処理部２１１によって生成された検索可能暗号文をブロックチェーンで用いるアドレスとして使用する。検索可能暗号文は確率的暗号化方式に基づいて生成されるため、一つの検索語に対してランダムなアドレスを生成することができる。これによって送信元の匿名化を実現できる。
【００８０】
銀行及び証券会社等のサービス提供者がブロックチェーンネットワーク１１０への接続サービスを提供する場合、サービス提供者は、ユーザ１５０に対してユーザＩＤ等の識別情報を割り当てていることが想定される。そこで、ユーザＩＤを検索語として利用することによって、検索可能なアドレスを複数個生成することができる。これによって、ブロックチェーンネットワーク１１０におけるユーザのアドレスの匿名化を実現できる。
【００８１】
従来の接続装置１００は複数のアドレスを保持する必要があったが、実施例１の接続装置１００は複数のアドレスを保持する必要がない。
【００８２】
また、実施例１では、接続装置１００がユーザ管理情報２２０に検索語を登録することによって、ユーザ１５０が検索語を指定することなく匿名化されたアドレスを生成することができる。なお、ユーザＩＤ及びユーザ管理情報２２０に登録された検索語を合成した入力に基づいてアドレスが生成されてもよい。これによって、ユーザ１５０の利便性を向上させることができる。
【００８３】
図８は、実施例１の接続装置１００がフィルタ生成情報を生成する処理の一例を説明するフローチャートである。
【００８４】
以下で説明する処理は、送信リクエストを受信した接続処理部２１０によって呼び出された暗号処理部２１１によって実行される。なお、フィルタ生成情報の生成処理は、アドレスの生成処理と同期してもよいし、同期していなくてもよい。
【００８５】
暗号処理部２１１は、検索語を特定する（ステップＳ３０１）。
【００８６】
暗号処理部２１１は、検索語の暗号化が必要であるか否かを判定する（ステップＳ３０２）。検索語の暗号化が必要であるか否かは予め設定されているものとする。
【００８７】
検索語の暗号化を行う理由は、検索語及びフィルタ生成情報の対応関係を秘匿するためである。決定性暗号を用いて検索語を暗号化する場合、暗号化された検索語及びフィルタ生成情報の対応関係を公開する必要がある。しかし、検索語の暗号化に使用した暗号鍵が漏洩しない限り、検索語が他者に知られる可能性は低い。
【００８８】
なお、安全性を向上させるために、決定的暗号で使用する暗号鍵は、確率的暗号化方式で使用する暗号鍵とは別の鍵として耐タンパ装置２０６で管理することが望ましい。
【００８９】
検索語の暗号化が必要でないと判定された場合、暗号処理部２１１は、ステップＳ３０４に進む。
【００９０】
検索語の暗号化が必要であると判定された場合、暗号処理部２１１は、検索語を暗号化する（ステップＳ３０３）。その後、暗号処理部２１１は、ステップＳ３０４に進む。
【００９１】
ステップＳ３０４では、暗号処理部２１１は、フィルタ生成情報の加工が必要であるか否かを判定する（ステップＳ３０４）。フィルタ生成情報の加工が必要であるか否かは予め設定されているものとする。
【００９２】
フィルタを加工する理由は、検索語及びフィルタ生成情報の対応関係を秘匿するためである。
【００９３】
フィルタ生成情報の加工が必要でないと判定された場合、暗号処理部２１１は、平文の検索語又は暗号文の検索語を用いてフィルタ生成情報を生成する（ステップＳ３０５）。その後、暗号処理部２１１は、生成されたフィルタを接続処理部２１０に出力し、処理を終了する。
【００９４】
フィルタ生成情報は、ブルームフィルタ及びアキュームレータを生成する処理と同様の処理に基づいて生成される。
【００９５】
フィルタ生成情報の加工が必要であると判定された場合、暗号処理部２１１は、平文の検索語又は暗号文の検索語を用いてフィルタ生成情報を生成する（ステップＳ３０６）。さらに、暗号処理部２１１は、生成されたフィルタ生成情報を加工する（ステップＳ３０７）。その後、暗号処理部２１１は、加工されたフィルタ生成情報を接続処理部２１０に出力し、処理を終了する。
【００９６】
フィルタ生成情報の加工方法としては、例えば、検索語に関連しない場所にある「０」及び「１」いずれかである部分を逆の値に変換する方法が考えられる。ただし、同一のフィルタ生成情報を加工した場合に、加工後のフィルタ生成情報が同一とならないように値を変更する場所は固定されていない。
【００９７】
なお、前述した加工方法は一例であってこれに限定されない。トランザクションの重要度に応じて複数の加工方法が選択できるように構成されてもよい。
【００９８】
なお、加工方法及び加工の程度を示す情報は、暗号処理部２１１に含めてもよいし、メモリ２０２に格納してもよい。また、外部の装置が管理してもよい。
【００９９】
図９は、実施例１の処理ノード１０１がフィルタ５１０を生成する処理の一例を説明するフローチャートである。
【０１００】
以下で説明する処理は、サービス処理部３１０がブロック５００を生成するときに実行される。なお、ブロック５００を生成するタイミングは、例えば、一定数のトランザクションが蓄積された場合等が考えられる。
【０１０１】
サービス処理部３１０は、ブロック５００に含めるトランザクションに含まれるフィルタ生成情報を取得する（ステップＳ４０１）。なお、ブロック５００に含めるトランザクションは任意のアルゴリズムによって決定される。
【０１０２】
次に、サービス処理部３１０は、取得したフィルタ生成情報を用いてフィルタ５１０を生成する（ステップＳ４０２）。その後、サービス処理部３１０はフィルタ５１０の生成処理を終了する。
【０１０３】
例えば、サービス処理部３１０は、取得したフィルタ生成情報を合成するためのＡＮＤ演算又はＸＯＲ演算等のビット演算を実行して、フィルタ５１０を生成する。なお、前述のフィルタ５１０の生成方法は一例であってこれに限定されない。
【０１０４】
サービス処理部３１０は、フィルタ５１０を生成した後、生成されたフィルタ５１０及び複数のトランザクションを含むブロック５００を生成し、台帳情報３２０に追加する。
【０１０５】
本来、フィルタ生成情報をフィルタ５１０として使用できることが望ましい。しかし、生成されたフィルタ５１０は常に同じデータとなることから、検索語が類推される可能性がある。確率的暗号方式で暗号化したフィルタ生成情報をフィルタ５１０として使用する方法も考えられるが、暗号文に含まれる情報を保持しつつ、複数のフィルタ生成情報を用いてフィルタ５１０を生成することは難しい。そのため、接続装置１００は、一定レベルの偽陽性を許容したフィルタを生成する。
【０１０６】
図１０は、実施例１のシステムにおけるトランザクションの検索処理の流れを説明するシーケンス図である。
【０１０７】
ユーザ１５０は、接続装置１００に対して検索リクエストを入力する（ステップＳ５０１）。検索リクエストは、ユーザ１５０の識別情報及び検索対象のトランザクションの生成時に使用した検索語が含まれる。
【０１０８】
なお、検索リクエストには、検索語の代わりに利用目的が含まれてもよい。この場合、接続装置１００は、ユーザ管理情報２２０を参照し、検索語を特定してもよい。
【０１０９】
接続装置１００は、検索リクエストを受信した場合、検索クエリを生成する（ステップＳ５０２）。
【０１１０】
具体的には、暗号処理部２１１は、検索リクエストに含まれる検索語及び第一暗号鍵を用いて検索可能暗号文を生成する。接続装置１００は、検索キーとして生成された暗号文を含む検索クエリを生成する。
【０１１１】
次に、接続装置１００は、検索フィルタを生成する（ステップＳ５０３）。
【０１１２】
具体的には、接続処理部２１０は、フィルタ生成情報を検索フィルタとして生成する。フィルタ生成情報の生成処理は、図８で説明した処理と同一であるため説明を省略する。
【０１１３】
なお、トランザクションに含まれるフィルタ生成情報が暗号化された検索語を用いて生成されている場合、接続装置１００は、暗号化された検索語を用いて検索フィルタを生成する。また、トランザクションに含まれるフィルタ生成情報が加工されている場合、接続装置１００は、同様の作成手順にしたがって加工されたフィルタ生成情報を検索フィルタとして生成する。
【０１１４】
なお、ブロック単位の検索を行わない場合、接続装置１００は、検索フィルタを生成しなくてもよい。
【０１１５】
次に、接続装置１００は、処理ノード１０１に検索クエリ及び検索フィルタを含む検索指示を送信する（ステップＳ５０４）。
【０１１６】
処理ノード１０１は、検索指示を受信した場合、検索処理を実行する（ステップＳ５０５）。検索処理の詳細は図１１を用いて説明する。
【０１１７】
処理ノード１０１は、検索結果を接続装置１００に送信する（ステップＳ５０６）。接続装置１００は、受信した検索結果をユーザ１５０に通知する（ステップＳ５０７）。
【０１１８】
処理ノード１０１がトランザクションを検索できた場合、検索結果には検索されたトランザクションが含まれ、処理ノード１０１がトランザクションを検索できなかった場合、検索結果には失敗を示す値が含まれる。
【０１１９】
検索対象のトランザクションの検索処理は、通常、台帳情報３２０に含まれる全てのトランザクションに対して行われる。ブロックチェーンを構成するブロックは複数のトランザクションから構成されるため、検索対象のトランザクションを含むブロック５００を特定した後に、トランザクション単位の検索を行うと、効率的な検索処理となる。前述の検索処理を実現するために従来技術では、ブルームフィルタ及びアキュームレータ等を用いて検索対象のトランザクションを含むブロック５００を特定している。
【０１２０】
しかし、実施例１では、確率的暗号方式で生成された検索可能暗号文をアドレスとして用いているため、ブロック５００の生成時に、トランザクションに含まれるアドレスからフィルタを生成しても、ブロック単位の検索ができない。そこで、実施例１の処理ノード１０１は、ブロック５００の生成時に専用のフィルタ（フィルタ５１０）を生成し、また、ブロック５００の検索時に専用のフィルタ（検索フィルタ）を生成する。
【０１２１】
図１１は、実施例１の処理ノード１０１が実行する検索処理の一例を説明するフローチャートである。
【０１２２】
以下の処理は、検索指示を受け付けたサービス処理部３１０によって呼び出された検索処理部３１１によって実行される。
【０１２３】
検索処理部３１１は、検索指示に含まれる検索フィルタを用いて検索対象のトランザクションを含む対象ブロック５００を検索し（ステップＳ６０１）、対象ブロック５００が存在するか否かを判定する（ステップＳ６０２）。
【０１２４】
具体的には、検索処理部３１１は、ブロック５００に含まれるフィルタ５１０及び検索フィルタのマッチング処理を実行する。なお、フィルタを用いて対象ブロック５００を検索する方法は、ブルームフィルタ及びアキュームレータ等を用いた検索方法と同様のものであるため詳細な説明は省略する。
【０１２５】
対象ブロック５００が存在しない場合、検索処理部３１１は、失敗を示す値を含む検索結果を出力する（ステップＳ６０６）。その後、検索処理部３１１は検索処理を終了する。
【０１２６】
対象ブロック５００が存在する場合、検索処理部３１１は、検索クエリに基づいて、対象ブロック５００から検索対象のトランザクションを検索し（ステップＳ６０３）、検索対象のトランザクションが存在するか否かを判定する（ステップＳ６０４）。
【０１２７】
検索クエリに基づくトランザクションの検索方法は、例えば、特許文献１に記載の方法を用いる。同一の検索語から生成されたアドレスはそれぞれ異なる値であるが、検索可能暗号文に基づく検索クエリによって、一度の検索で複数のトランザクションを検索できる。
【０１２８】
実施例１では、検索語の類推を困難にするために偽陽性を許容したフィルタ５１０が用いられる。そのため、対象ブロック５００に検索対象のトランザクションが含まれない可能性がある。そこで、検索処理部３１１は、対象ブロック５００に含まれる全てのトランザクションを処理対象とする。
【０１２９】
対象ブロック５００に検索対象のトランザクションが存在しない場合、検索処理部３１１は、失敗を示す値を含む検索結果を出力する（ステップＳ６０６）。その後、検索処理部３１１は検索処理を終了する。
【０１３０】
対象ブロック５００に検索対象のトランザクションが存在する場合、検索処理部３１１は、検索されたトランザクションを含む検索結果を出力する（ステップＳ６０５）。
【０１３１】
実施例１のアドレスは検索可能暗号文である。したがって、検索処理部３１１は、検索クエリに含まれる暗号文、すなわち、検索語から生成されたアドレスを含む全てのトランザクションを検索することができる。接続サービスの提供者が他のシステムと連携する場合、例えば、銀行がユーザ１５０からのリクエストをうけてブロックチェーンネットワーク１１０で管理される仮想通貨を当該ユーザ１５０の銀行口座に振り替える場合、処理ノード１０１は、当該ユーザ１５０の全てのトランザクションを一回又は従来の検索処理より少ない回数で検索できる。
【０１３２】
なお、対象ブロック５００を検索する場合、接続装置１００は、フィルタ生成情報を生成し、フィルタ生成情報を検索フィルタとして検索指示に含めてもよい。この方式の場合、同一の検索語から生成される検索フィルタは全て異なるため情報漏洩のリスクを抑えることができる。
【０１３３】
以上で説明したように、実施例１のシステムは、確率的暗号化方式で生成された検索可能暗号文をアドレスとして使用することによって、ユーザ１５０及びサービス提供者が複数のアドレスを管理する必要がない。
【０１３４】
また、確率的暗号化方式で生成されたアドレスは、検索可能暗号文であることから、検索語に基づいて特定のユーザの特定の用途に関連するトランザクションを一度に検索することができる。
【０１３５】
また、効率的な検索処理を実現するために偽陽性を許容したフィルタを用いることによって、検索語の情報を漏らすことなくブロック単位でトランザクションを検索できる。
【０１３６】
実施例１によれば、匿名性を維持し、かつ、管理が容易なアドレスを含むトランザクションを扱うブロックチェーンを提供できる。
【０１３７】
なお、実施例１では、仮想通貨の取引サービスを提供するブロックチェーンネットワーク１１０を想定しているため、検索可能暗号文の対象をアドレスとしている。ただし、実施例１で説明した構成及び処理は、サービスに応じて様々な項目に対して適用することができる。
【実施例２】
【０１３８】
実施例２では、アドレスの生成方法が異なる。以下、実施例１との差異を中心に実施例２について説明する。
【０１３９】
実施例２のシステム構成は、実施例１のシステム構成と同一である。また、実施例２の接続装置１００のハードウェア構成及びモジュールの構成は、実施例１の接続装置１００と同一である。実施例２の処理ノード１０１の構成は、実施例１の処理ノード１０１と同一である。
【０１４０】
実施例２では、接続装置１００が保持するユーザ管理情報２２０が一部異なる。図１２は、実施例２のユーザ管理情報２２０の一例を示す図である。
【０１４１】
ユーザ管理情報２２０は、ユーザＩＤ１２０１、秘密鍵１２０２、公開鍵１２０３、検索語１２０４、及び利用目的１２０５から構成されるエントリを含む。一つのエントリが一人のユーザ１５０に対応する。ユーザＩＤ１２０１、検索語１２０４、及び利用目的１２０５は、ユーザＩＤ４０１、検索語４０２、及び利用目的４０３と同一のフィールドである。
【０１４２】
秘密鍵１２０２は、秘密鍵を格納するフィールドである。公開鍵１２０３は、秘密鍵に対応する公開鍵を格納するフィールドである。
【０１４３】
ユーザ管理情報２２０にて検索語及び鍵を管理することによって、ユーザ１５０の利便性を高めることができる。
【０１４４】
従来の仮想通貨の取引サービスで利用されるアドレスは、ユーザ１５０又はサービス提供者が管理する公開鍵と一対一の関係になっている。これは、公開鍵に対してハッシュ演算を実行したデータをアドレスとして扱っているためである。
【０１４５】
実施例２では、接続装置１００は、従来技術で生成されたアドレス（入力用アドレス）及び検索語を入力として検索可能暗号文を生成する。
【０１４６】
実施例２の接続処理部２１０は、予め、秘密鍵及び当該秘密鍵に対応する公開鍵を生成する。接続処理部２１０は、ユーザ管理情報２２０の秘密鍵１２０２及び公開鍵１２０３に、生成された秘密鍵及び公開鍵を格納する。
【０１４７】
なお、秘密鍵及び公開鍵を生成するタイミングは、ユーザ１５０が接続サービスを契約した時、及び、ユーザ１５０が初めて接続サービスの利用を開始した時等が考えられる。なお、実施例２では、秘密鍵及び公開鍵を生成するタイミングに限定されない。
【０１４８】
図１３は、実施例２の接続装置１００が実行するアドレス生成処理の一例を説明するフローチャートである。なお、公開鍵及び秘密鍵は当該処理の開始前に生成されているものとする。
【０１４９】
暗号処理部２１１は、検索語を特定し（ステップＳ７０１）、また、公開鍵を用いて入力アドレスを生成する（ステップＳ７０２）。ステップＳ７０１及びステップＳ７０２の処理は、同時に実行してもよいし、また、実行順番を入れ替えてもよい。
【０１５０】
入力用アドレスの生成処理は公知の技術を用いればよいため詳細な説明は省略するが、例えば、以下のような手順にしたがって入力用アドレスが生成される。
【０１５１】
（生成方法１）接続処理部２１０は、公開鍵を第一ハッシュ関数に入力し、第一ハッシュ値を算出する。接続処理部２１０は、第一ハッシュ値を第二ハッシュ関数に入力し、第二ハッシュ値を算出する。接続処理部２１０は、第二ハッシュ値にプレフィックスを追加して、第三ハッシュ関数に入力し、再度、出力された値を第三ハッシュ関数に入力して、第三ハッシュ値を取得する。接続処理部２１０は、第三ハッシュ値にチェックサムを追加し、所定のフォーマットにエンコードする。以上の処理によって得られた値が入力用アドレスとなる。
【０１５２】
（生成方法２）接続処理部２１０は、公開鍵を第一ハッシュ関数に入力し、文字列を取得する。接続処理部２１０は、文字列に対してデータの削除及び追加等の加工し、文字列の先頭に所定のデータを追加する。以上の処理によって得られた値が入力用アドレスとなる。
【０１５３】
次に、暗号処理部２１１は、第一暗号鍵を用いて検索語及び入力アドレスから検索可能暗号文を生成する（ステップＳ７０３）。
【０１５４】
検索可能暗号文を生成する方法は、例えば、以下のようなものが考えられる。（１）暗号処理部２１１は、検索語及び入力アドレスを足し合わせて一つのデータを生成し、当該データを入力として検索可能暗号文を生成する。（２）暗号処理部２１１は、検索語及び入力アドレスに対してビット演算を実行して一つのデータを生成し、当該データを入力として検索可能暗号文を生成する。（３）暗号処理部２１１は、入力アドレスを暗号処理に使用するシードとして用いて検索語を暗号化する。
【０１５５】
なお、前述の生成方法は一例であってこれに限定されない。ただし、システム内の接続装置１００が利用する生成方法は統一する。
【０１５６】
なお、実施例２では、公開鍵から生成された入力アドレス及び検索語を用いて検索可能暗号文が生成されていたがこれに限定されない。例えば、アルゴリズムを変更して、公開鍵及び検索語を入力として検索可能暗号文を生成するようにしてもよい。
【０１５７】
実施例２では、検索クエリに含める検索可能暗号文も図１３で示した方法と同様の方法で生成される。
【０１５８】
実施例２の処理ノード１０１が実行する検索処理は実施例１と同一である。
【０１５９】
実施例２によれば、一つの公開鍵（公開鍵及び秘密鍵のペア）から複数のアドレスを生成することができる。これによって、管理する鍵の数の増加を抑止し、かつ、匿名性の向上による情報保護が可能となる。
【０１６０】
また、実施例２で説明したアドレスの生成方法は、従来技術のアドレス（入力用アドレス）の生成方法に組み込むことが可能である。したがって、従来のシステムに迅速かつ容易に本発明を適用することができる。
【実施例３】
【０１６１】
実施例３では、ブロックチェーンネットワーク１１０において使用するサービス用の公開鍵及び秘密鍵の生成方法が従来と異なる。
【０１６２】
従来技術では、ユーザ１５０又は接続装置１００は複数の鍵ペアを管理する必要があった。実施例３では接続装置１００が処理に必要な場合に検索可能暗号文から鍵ペアを生成する。以下、実施例１との差異を中心に実施例３について説明する。
【０１６３】
実施例３のシステム構成は、実施例１のシステム構成と同一である。また、実施例３の接続装置１００の構成は、実施例１の接続装置１００と同一である。実施例３の処理ノード１０１の構成は、実施例１の処理ノード１０１と同一である。
【０１６４】
図１４は、実施例３の接続装置１００が実行する鍵ペアの生成処理の一例を説明するフローチャートである。
【０１６５】
以下の処理は、暗号鍵が必要となる処理を実行する接続処理部２１０によって呼び出された暗号処理部２１１によって実行される。なお、実施例３は、暗号鍵が必要となる処理の種別及び実行タイミングに限定されない。
【０１６６】
暗号処理部２１１は、検索語を特定し（ステップＳ８０１）、第一暗号鍵を用いて検索語から検索可能暗号文を生成する（ステップＳ８０２）。
【０１６７】
次に、暗号処理部２１１は、検索可能暗号文を用いて鍵ペア（秘密鍵及び公開鍵）を生成する（ステップＳ８０３）。
【０１６８】
鍵ペアの作成方法としては、例えば、ＩＤ−Ｂａｓｅｄ暗号を利用する。ＩＤ−Ｂａｓｅｄ暗号は、メールアドレス等の所定の識別子を公開鍵として利用する暗号化方式である。ＩＤ−Ｂａｓｅｄ暗号では、信頼できる鍵生成局が存在する。ユーザ１５０は、当該鍵生成局に対して秘密鍵等の処理に必要な情報の生成を依頼する。
【０１６９】
上記の方式を採用する場合、接続処理部２１０が鍵生成局を実現する機能を備えるようにすればよい。これによって、接続処理部２１０は、検索可能暗号文から秘密鍵及び公開鍵を生成できる。
【０１７０】
なお、鍵生成局を実現する機能によって使用される情報は、メモリ２０２、耐タンパ装置２０６、及び記憶装置２０７の少なくともいずれかに格納される。
【０１７１】
実施例３によれば、接続装置１００は、必要に応じて検索可能暗号文から鍵ペアを生成できる。したがって、ユーザ１５０又は接続装置１００は、用途毎に使い分ける複数の鍵ペアを管理する必要がない。
【０１７２】
また、実施例３では、接続装置１００が恒常的に鍵ペアを保持していないため、暗号鍵の漏洩等、セキュリティの問題発生等を抑止できる。したがって、安全なシステムの運用が可能となる。
【０１７３】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１７４】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１７５】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１７６】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１７７】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１７８】
１００  接続装置
１０１  処理ノード
１１０  ブロックチェーンネットワーク
１５０  ユーザ
２０１、３０１  ＣＰＵ
２０２、３０２  メモリ
２０３、３０３  ストレージインタフェース
２０４、３０４  ネットワークインタフェース
２０５、３０５  入出力インタフェース
２０６、３０６  耐タンパ装置
２０７、３０７  記憶装置
２１０  接続処理部
２１１  暗号処理部
２２０  ユーザ管理情報
３１０  サービス処理部
３１１  検索処理部
３２０  台帳情報
５００  ブロック
５１０  フィルタ
５２０  トランザクション情報
５２１  送信元
５２２  送信先
５２３  値
５２４  フィルタ生成情報
【図１】
2019146088.tif 000003
【図２】
2019146088.tif 000004
【図３】
2019146088.tif 000005
【図４】
2019146088.tif 000006
【図５】
2019146088.tif 000007
【図６】
2019146088.tif 000008
【図７】
2019146088.tif 000009
【図８】
2019146088.tif 000010
【図９】
2019146088.tif 000011
【図１０】
2019146088.tif 000012
【図１１】
2019146088.tif 000013
【図１２】
2019146088.tif 000014
【図１３】
2019146088.tif 000015
【図１４】
2019146088.tif 000016