(57)【要約】【課題】暗号化した状態で遺伝子情報の検索を可能とすることを目的とする。【解決手段】暗号化装置２００は、記憶装置に記憶させる遺伝子情報である対象遺伝子を暗号化して暗号化遺伝子を生成するとともに、所定の遺伝子情報である基準遺伝子と、対象遺伝子とを比較して差分情報を生成し、生成した差分情報を埋め込んで暗号化した暗号化タグを生成する。データセンタ４００は、暗号化遺伝子と暗号化タグとを関連付けて記憶装置に記憶する。検索装置３００は、差分情報を検索キーワードとして、差分情報を埋め込んで暗号化した検索クエリを生成し、生成した検索クエリをデータセンタ４００へ送信する。データセンタ４００は、検索クエリに指定された差分情報を含む暗号化タグを特定し、関連付けられた暗号化遺伝子を抽出して検索装置３００へ送信する。【選択図】図１
2014191670.tif 000002
【特許請求の範囲】
【請求項１】
遺伝子情報を記憶装置に記憶させる遺伝子情報記憶装置であり、
所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得部と、
前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力部と、
前記基準遺伝子取得部が取得した基準遺伝子と、前記遺伝子入力部が入力した対象遺伝子とを比較して差分情報を生成する差分生成部と、
前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化部と、
前記差分生成部が生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成部と、
前記データ暗号化部が生成した暗号化遺伝子と、前記暗号化タグ生成部が生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶部と
を備えることを特徴とする遺伝子情報記憶装置。
【請求項２】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報記憶装置は、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、前記差分生成部が生成した差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換部
を備え、
前記暗号化タグ生成部は、前記差分情報置換部が置き換えた差分情報を暗号化して暗号化タグを生成する
ことを特徴とする請求項１に記載の遺伝子情報記憶装置。
【請求項３】
前記差分情報置換部は、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、前記差分生成部が生成した差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする請求項２に記載の遺伝子情報記憶装置。
【請求項４】
前記暗号化タグ生成部は、暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式に基づき、前記暗号化遺伝子を検索可能なユーザの属性情報と差分情報とを前記暗号属性として設定して、乱数値を暗号化して前記暗号化タグを生成する
ことを特徴とする請求項１から３までのいずれかに記載の遺伝子情報記憶装置。
【請求項５】
前記暗号化方式に基づき、前記暗号化遺伝子を復号可能なユーザの属性情報を前記暗号属性として設定して、前記対象遺伝子を暗号化して前記暗号化遺伝子を生成する
ことを特徴とする請求項４に記載の遺伝子情報記憶装置。
【請求項６】
データ管理装置が管理する記憶装置に記憶された遺伝子情報を検索する遺伝子情報検索装置であり、
検索したい遺伝子情報と所定の遺伝子情報である基準遺伝子との差分情報を入力する差分情報入力部と、
前記差分情報入力部が入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成部と、
前記検索クエリ生成部が生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得部と
を備えることを特徴とする遺伝子情報検索装置。
【請求項７】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報検索装置は、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換部
を備え、
前記検索クエリ生成部は、前記差分情報置換部が置き換えた差分情報を埋め込んだ検索クエリを生成する
ことを特徴とする請求項６に記載の遺伝子情報検索装置。
【請求項８】
前記差分情報置換部は、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする請求項７に記載の遺伝子情報検索装置。
【請求項９】
前記遺伝子情報検索装置は、さらに、
暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式における前記秘密鍵であって、ユーザの属性情報が前記鍵属性として設定された秘密鍵を管理するユーザ秘密鍵管理部
を備え、
前記検索クエリ生成部は、前記ユーザ秘密鍵管理部が管理する秘密鍵の鍵属性として、前記差分情報を追加して前記検索クエリを生成する
ことを特徴とする請求項６から８までのいずれかに記載の遺伝子情報検索装置。
【請求項１０】
前記遺伝子情報取得部は、前記暗号化方式により、復号可能なユーザの属性情報を前記暗号属性として設定して、前記遺伝子情報を暗号化した暗号化遺伝子を、前記差分情報を含む遺伝子情報として取得し、
前記遺伝子情報検索装置は、さらに、
前記ユーザ秘密鍵管理部が管理する秘密鍵により、前記暗号化遺伝子を復号する復号部を備えることを特徴とする請求項９に記載の遺伝子情報検索装置。
【請求項１１】
遺伝子情報を記憶装置に記憶させる遺伝子情報記憶プログラムであり、
所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得処理と、
前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力処理と、
前記基準遺伝子取得処理で取得した基準遺伝子と、前記遺伝子入力処理で入力した対象遺伝子とを比較して差分情報を生成する差分生成処理と、
前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化処理と、
前記差分生成処理で生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成処理と、
前記データ暗号化処理で生成した暗号化遺伝子と、前記暗号化タグ生成処理で生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶処理と
をコンピュータに実行させることを特徴とする遺伝子情報記憶プログラム。
【請求項１２】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報記憶プログラムは、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、前記差分生成処理で生成した差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換処理
をコンピュータに実行させ、
前記暗号化タグ生成処理では、前記差分情報置換処理で置き換えた差分情報を暗号化して暗号化タグを生成する
ことを特徴とする請求項１１に記載の遺伝子情報記憶プログラム。
【請求項１３】
前記差分情報置換処理では、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、前記差分生成処理で生成した差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする請求項１２に記載の遺伝子情報記憶プログラム。
【請求項１４】
前記暗号化タグ生成処理では、暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式に基づき、前記暗号化遺伝子を検索可能なユーザの属性情報と差分情報とを前記暗号属性として設定して、乱数値を暗号化して前記暗号化タグを生成する
ことを特徴とする請求項１１から１３までのいずれかに記載の遺伝子情報記憶プログラム。
【請求項１５】
前記暗号化方式に基づき、前記暗号化遺伝子を復号可能なユーザの属性情報を前記暗号属性として設定して、前記対象遺伝子を暗号化して前記暗号化遺伝子を生成する
ことを特徴とする請求項１４に記載の遺伝子情報記憶プログラム。
【請求項１６】
データ管理装置が管理する記憶装置に記憶された遺伝子情報を検索する遺伝子情報検索プログラムであり、
検索したい遺伝子情報と所定の遺伝子情報である基準遺伝子との差分情報を入力する差分情報入力処理と、
前記差分情報入力処理で入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成処理と、
前記検索クエリ生成処理で生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得処理と
をコンピュータに実行させることを特徴とする遺伝子情報検索プログラム。
【請求項１７】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報検索プログラムは、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換処理
をコンピュータに実行させ、
前記検索クエリ生成処理では、前記差分情報置換処理で置き換えた差分情報を埋め込んだ検索クエリを生成する
ことを特徴とする請求項１６に記載の遺伝子情報検索プログラム。
【請求項１８】
前記差分情報置換処理では、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする請求項１７に記載の遺伝子情報検索プログラム。
【請求項１９】
前記遺伝子情報検索プログラムは、さらに、
暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式における前記秘密鍵であって、ユーザの属性情報が前記鍵属性として設定された秘密鍵を管理するユーザ秘密鍵管理処理
をコンピュータに実行させ、
前記検索クエリ生成処理では、前記ユーザ秘密鍵管理処理で管理する秘密鍵の鍵属性として、前記差分情報を追加して前記検索クエリを生成する
ことを特徴とする請求項１６から１８までのいずれかに記載の遺伝子情報検索プログラム。
【請求項２０】
前記遺伝子情報取得処理では、前記暗号化方式により、復号可能なユーザの属性情報を前記暗号属性として設定して、前記遺伝子情報を暗号化した暗号化遺伝子を、前記差分情報を含む遺伝子情報として取得し、
前記遺伝子情報検索プログラムは、さらに、
前記ユーザ秘密鍵管理処理で管理する秘密鍵により、前記暗号化遺伝子を復号する復号処理
をコンピュータに実行させることを特徴とする請求項１９に記載の遺伝子情報検索プログラム。
【請求項２１】
遺伝子情報を記憶装置に記憶させる遺伝子情報記憶方法であり、
処理装置が、所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得工程と、
入力装置が、前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力工程と、
処理装置が、前記基準遺伝子取得工程で取得した基準遺伝子と、前記遺伝子入力工程で入力した対象遺伝子とを比較して差分情報を生成する差分生成工程と、
処理装置が、前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化工程と、
処理装置が、前記差分生成工程で生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成工程と、
処理装置が、前記データ暗号化工程で生成した暗号化遺伝子と、前記暗号化タグ生成工程で生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶工程と
を備えることを特徴とする遺伝子情報記憶方法。
【請求項２２】
データ管理装置が管理する記憶装置に記憶された遺伝子情報を検索する遺伝子情報検索方法であり、
入力装置が、検索したい遺伝子情報と所定の遺伝子情報である基準遺伝子との差分情報を入力する差分情報入力工程と、
処理装置が、前記差分情報入力工程で入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成工程と、
処理装置が、前記検索クエリ生成工程で生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得工程と
を備えることを特徴とする遺伝子情報検索方法。
【請求項２３】
データ管理装置が管理する記憶装置に遺伝子情報を記憶させる遺伝子情報記憶装置と、前記遺伝子情報記憶装置が記憶させた遺伝子情報から検索キーワードを含む遺伝子情報を検索する遺伝子情報検索装置とを備える遺伝子情報検索システムであり、
前記遺伝子情報記憶装置は、
所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得部と、
前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力部と、
前記基準遺伝子取得部が取得した基準遺伝子と、前記遺伝子入力部が入力した対象遺伝子とを比較して差分情報を生成する差分生成部と、
前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化部と、
前記差分生成部が生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成部と、
前記データ暗号化部が生成した暗号化遺伝子と、前記暗号化タグ生成部が生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶部と
を備え、
前記遺伝子情報検索装置は、
検索したい遺伝子情報と前記基準遺伝子との差分情報を前記検索キーワードとして入力する差分情報入力部と、
前記差分情報入力部が入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成部と、
前記検索クエリ生成部が生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得部と
備えることを特徴とする遺伝子情報検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＤＮＡ配列を解析した結果として得られるゲノムや遺伝子の解析情報である遺伝子情報を暗号化して記憶装置に記憶する記憶技術に関する。また、この発明は、前記記憶技術により記憶された遺伝子情報を、暗号化された状態で検索する技術に関する。
【背景技術】
【０００２】
近年生命工学は著しい発達をしており、ゲノム配列の読み取り能力も発達している。そのため、人間一人分の全ゲノム配列を解読するコストは低下し、多くの人のゲノム配列が解読されるようになってきている。
個人のゲノム配列やその発現情報などの関連情報を含む遺伝子情報は究極の個人情報と言われており、本人以外への情報開示は安全に行われなければならない。ゲノムＤＮＡ及びＲＮＡ配列の読み取り装置から出力され、解析されて意味のある情報になった遺伝子情報は、すみやかに暗号化されて、所有者の同意なしには解読されないようにしなければならない。
【０００３】
データベースに蓄積されたデータと検索キーワードとを暗号化した状態で、データベースに蓄積されたデータから検索キーワードを含むデータを検索可能とする秘匿検索方式がある（非特許文献１参照）。
この秘匿検索方式では、データベースにデータを蓄積する際、そのデータを検索する場合に用いられると想定される検索キーワードをタグとして抽出しておく。そして、データとタグとをそれぞれ暗号化し、暗号化したデータに暗号化したタグを添付してデータベースに蓄積する。
データベースに蓄積されたデータから検索キーワードを含むデータを検索する場合、暗号化された検索キーワードが入力される。そして、暗号化された検索キーワードに対応する暗号化されたタグが検索される。検索キーワードに対応するタグが見つかった場合、そのタグが添付されたデータが検索キーワードを含むデータであると特定される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｂｏｎｅｈ、Ｄｉ  Ｃｒｅｓｃｅｎｚｏ、Ｏｓｔｒｏｖｓｋｉ、ａｎｄ  Ｐｅｒｓｉａｎｏ“Ｐｕｂｌｉｃ  ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ｋｅｙｗｏｒｄ  ｓｅａｒｃｈ”  ＥＵＲＯＣＲＹＰＴ  ２００４、ｐｐ５０６−５２２
【非特許文献２】Ａｌｌｉｓｏｎ  Ｌｅｗｋｏ、Ｔａｔｓｕａｋｉ  Ｏｋａｍｏｔｏ、Ａｍｉｔ  Ｓａｈａｉ、Ｋａｔｓｕｙｕｋｉ  Ｔａｋａｓｈｉｍａ、Ｂｒｅｎｔ  Ｗａｔｅｒｓ、“Ｆｕｌｌｙ  Ｓｅｃｕｒｅ  Ｆｕｎｃｔｉｏｎａｌ  Ｅｎｃｒｙｐｔｉｏｎ：Ａｔｔｒｉｂｕｔｅ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ（Ｈｉｅｒａｒｃｈｉｃａｌ）Ｉｎｎｅｒ  Ｐｒｏｄｕｃｔ  Ｅｎｃｒｙｐｔｉｏｎ”、ＥＵＲＯＣＲＹＰＴ２０１０、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  Ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、２０１０、Ｖｏｌｕｍｅ  ６１１０／２０１０．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
これまでは、暗号化された遺伝子情報を検索する場合、検索が実行される時に、一時的に遺伝子情報が復号化され、検索されていた。
秘匿検索方式を用いた場合であっても、暗号化された遺伝子情報に平文で生成された検索インデックスが付与され、この検索インデックスを用いて検索されていた。また、１つの遺伝子情報に対して膨大な数の検索インデックスが付与されており、検索に膨大な時間がかかっていた。
したがって、遺伝子情報を蓄積しているコンピュータの特権ユーザであれば、復号化されている時間または検索インデックスに自由にアクセスすることができる。そのため、遺伝子情報が完全に第三者に対して隠蔽された状態とは言えない。
この発明は、遺伝子情報を第三者に対して隠蔽した状態で遺伝子情報の検索を可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る遺伝子情報記憶装置は、
遺伝子情報を記憶装置に記憶させる遺伝子情報記憶装置であり、
所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得部と、
前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力部と、
前記基準遺伝子取得部が取得した基準遺伝子と、前記遺伝子入力部が入力した対象遺伝子とを比較して差分情報を生成する差分生成部と、
前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化部と、
前記差分生成部が生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成部と、
前記データ暗号化部が生成した暗号化遺伝子と、前記暗号化タグ生成部が生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶部と
を備えることを特徴とする。
【０００７】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報記憶装置は、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、前記差分生成部が生成した差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換部
を備え、
前記暗号化タグ生成部は、前記差分情報置換部が置き換えた差分情報を暗号化して暗号化タグを生成する
ことを特徴とする。
【０００８】
前記差分情報置換部は、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、前記差分生成部が生成した差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする。
【０００９】
前記暗号化タグ生成部は、暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式に基づき、前記暗号化遺伝子を検索可能なユーザの属性情報と差分情報とを前記暗号属性として設定して、乱数値を暗号化して前記暗号化タグを生成する
ことを特徴とする。
【００１０】
前記暗号化方式に基づき、前記暗号化遺伝子を復号可能なユーザの属性情報を前記暗号属性として設定して、前記対象遺伝子を暗号化して前記暗号化遺伝子を生成する
ことを特徴とする。
【００１１】
この発明に係る遺伝子情報検索装置は、
データ管理装置が管理する記憶装置に記憶された遺伝子情報を検索する遺伝子情報検索装置であり、
検索したい遺伝子情報と所定の遺伝子情報である基準遺伝子との差分情報を入力する差分情報入力部と、
前記差分情報入力部が入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成部と、
前記検索クエリ生成部が生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得部と
を備えることを特徴とする。
【００１２】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報検索装置は、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換部
を備え、
前記検索クエリ生成部は、前記差分情報置換部が置き換えた差分情報を埋め込んだ検索クエリを生成する
ことを特徴とする。
【００１３】
前記差分情報置換部は、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする。
【００１４】
前記遺伝子情報検索装置は、さらに、
暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式における前記秘密鍵であって、ユーザの属性情報が前記鍵属性として設定された秘密鍵を管理するユーザ秘密鍵管理部
を備え、
前記検索クエリ生成部は、前記ユーザ秘密鍵管理部が管理する秘密鍵の鍵属性として、前記差分情報を追加して前記検索クエリを生成する
ことを特徴とする。
【００１５】
前記遺伝子情報取得部は、前記暗号化方式により、復号可能なユーザの属性情報を前記暗号属性として設定して、前記遺伝子情報を暗号化した暗号化遺伝子を、前記差分情報を含む遺伝子情報として取得し、
前記遺伝子情報検索装置は、さらに、
前記ユーザ秘密鍵管理部が管理する秘密鍵により、前記暗号化遺伝子を復号する復号部を備えることを特徴とする。
【００１６】
この発明に係る遺伝子情報記憶プログラムは、
遺伝子情報を記憶装置に記憶させる遺伝子情報記憶プログラムであり、
所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得処理と、
前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力処理と、
前記基準遺伝子取得処理で取得した基準遺伝子と、前記遺伝子入力処理で入力した対象遺伝子とを比較して差分情報を生成する差分生成処理と、
前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化処理と、
前記差分生成処理で生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成処理と、
前記データ暗号化処理で生成した暗号化遺伝子と、前記暗号化タグ生成処理で生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶処理と
をコンピュータに実行させることを特徴とする。
【００１７】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報記憶プログラムは、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、前記差分生成処理で生成した差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換処理
をコンピュータに実行させ、
前記暗号化タグ生成処理では、前記差分情報置換処理で置き換えた差分情報を暗号化して暗号化タグを生成する
ことを特徴とする。
【００１８】
前記差分情報置換処理では、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、前記差分生成処理で生成した差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする。
【００１９】
前記暗号化タグ生成処理では、暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式に基づき、前記暗号化遺伝子を検索可能なユーザの属性情報と差分情報とを前記暗号属性として設定して、乱数値を暗号化して前記暗号化タグを生成する
ことを特徴とする。
【００２０】
前記暗号化方式に基づき、前記暗号化遺伝子を復号可能なユーザの属性情報を前記暗号属性として設定して、前記対象遺伝子を暗号化して前記暗号化遺伝子を生成する
ことを特徴とする。
【００２１】
この発明に係る遺伝子情報検索プログラムは、
データ管理装置が管理する記憶装置に記憶された遺伝子情報を検索する遺伝子情報検索プログラムであり、
検索したい遺伝子情報と所定の遺伝子情報である基準遺伝子との差分情報を入力する差分情報入力処理と、
前記差分情報入力処理で入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成処理と、
前記検索クエリ生成処理で生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得処理と
をコンピュータに実行させることを特徴とする。
【００２２】
前記差分情報には、複数の種別の情報が含まれており、
前記遺伝子情報検索プログラムは、さらに、
前記差分情報に含まれる所定の種別については、その種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属するブロックを識別する識別情報に置き換える差分情報置換処理
をコンピュータに実行させ、
前記検索クエリ生成処理では、前記差分情報置換処理で置き換えた差分情報を埋め込んだ検索クエリを生成する
ことを特徴とする。
【００２３】
前記差分情報置換処理では、各ブロックに属する値の一部が他のブロックにも属するように、前記種別が取り得る値を複数のブロックに分け、差分情報におけるその種別の値を、その値が属する各ブロックを識別する識別情報に置き換える
ことを特徴とする。
【００２４】
前記遺伝子情報検索プログラムは、さらに、
暗号化データに設定された暗号属性と、秘密鍵に設定された鍵属性とが対応していない場合に、前記暗号化データを前記秘密鍵で復号できない暗号化方式における前記秘密鍵であって、ユーザの属性情報が前記鍵属性として設定された秘密鍵を管理するユーザ秘密鍵管理処理
をコンピュータに実行させ、
前記検索クエリ生成処理では、前記ユーザ秘密鍵管理処理で管理する秘密鍵の鍵属性として、前記差分情報を追加して前記検索クエリを生成する
ことを特徴とする。
【００２５】
前記遺伝子情報取得処理では、前記暗号化方式により、復号可能なユーザの属性情報を前記暗号属性として設定して、前記遺伝子情報を暗号化した暗号化遺伝子を、前記差分情報を含む遺伝子情報として取得し、
前記遺伝子情報検索プログラムは、さらに、
前記ユーザ秘密鍵管理処理で管理する秘密鍵により、前記暗号化遺伝子を復号する復号処理
をコンピュータに実行させることを特徴とする。
【００２６】
この発明に係る遺伝子情報記憶方法は、
遺伝子情報を記憶装置に記憶させる遺伝子情報記憶方法であり、
処理装置が、所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得工程と、
入力装置が、前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力工程と、
処理装置が、前記基準遺伝子取得工程で取得した基準遺伝子と、前記遺伝子入力工程で入力した対象遺伝子とを比較して差分情報を生成する差分生成工程と、
処理装置が、前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化工程と、
処理装置が、前記差分生成工程で生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成工程と、
処理装置が、前記データ暗号化工程で生成した暗号化遺伝子と、前記暗号化タグ生成工程で生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶工程と
を備えることを特徴とする。
【００２７】
この発明に係る遺伝子情報検索方法は、
データ管理装置が管理する記憶装置に記憶された遺伝子情報を検索する遺伝子情報検索方法であり、
入力装置が、検索したい遺伝子情報と所定の遺伝子情報である基準遺伝子との差分情報を入力する差分情報入力工程と、
処理装置が、前記差分情報入力工程で入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成工程と、
処理装置が、前記検索クエリ生成工程で生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得工程と
を備えることを特徴とする。
【００２８】
この発明に係る遺伝子情報検索システムは、
データ管理装置が管理する記憶装置に遺伝子情報を記憶させる遺伝子情報記憶装置と、前記遺伝子情報記憶装置が記憶させた遺伝子情報から検索キーワードを含む遺伝子情報を検索する遺伝子情報検索装置とを備える遺伝子情報検索システムであり、
前記遺伝子情報記憶装置は、
所定の遺伝子情報である基準遺伝子を取得する基準遺伝子取得部と、
前記記憶装置に記憶させる遺伝子情報である対象遺伝子を入力する遺伝子入力部と、
前記基準遺伝子取得部が取得した基準遺伝子と、前記遺伝子入力部が入力した対象遺伝子とを比較して差分情報を生成する差分生成部と、
前記対象遺伝子を暗号化して暗号化遺伝子を生成するデータ暗号化部と、
前記差分生成部が生成した差分情報を埋め込んだ暗号化タグを生成する暗号化タグ生成部と、
前記データ暗号化部が生成した暗号化遺伝子と、前記暗号化タグ生成部が生成した暗号化タグとを関連付けて、前記記憶装置に記憶させるデータ記憶部と
を備え、
前記遺伝子情報検索装置は、
検索したい遺伝子情報と前記基準遺伝子との差分情報を前記検索キーワードとして入力する差分情報入力部と、
前記差分情報入力部が入力した差分情報を埋め込んだ検索クエリを生成する検索クエリ生成部と、
前記検索クエリ生成部が生成した検索クエリを前記データ管理装置へ送信して、前記差分情報を含む遺伝子情報を取得する遺伝子情報取得部と
備えることを特徴とする。
【発明の効果】
【００２９】
この発明によれば、データベースに蓄積された遺伝子情報及び検索インデックスであるタグと、検索キーワードとして用いられる遺伝子情報とのどちらも暗号化した状態で、検索キーワードを含む遺伝子情報をデータベースから抽出することができる。したがって、遺伝子情報が完全に第三者に対して隠蔽された状態となる。
特に、この発明によれば、基準遺伝子との差分情報を検索インデックス及び検索キーワードとする。そのため、検索インデックスの数が少なくて済み、検索を高速に行うことができる。
【図面の簡単な説明】
【００３０】
【図１】遺伝子検索システム１０の構成図。
【図２】鍵管理サーバ１００の構成図。
【図３】暗号化装置２００の構成図。
【図４】検索装置３００の構成図。
【図５】データセンタ４００の構成図。
【図６】階層的内積述語暗号を用いた暗号方式の説明図。
【図７】階層的内積述語暗号を用いた秘匿検索方式の説明図。
【図８】初期設定処理の流れを示すフローチャート。
【図９】エンコードしたＳＮＶ情報の構成図。
【図１０】ＳＮＶ情報における位置情報のブロック化の説明図。
【図１１】ＳＮＶ情報における信頼度のブロック化の説明図。
【図１２】エンコードしたＳＶ情報の構成図。
【図１３】ＳＶ情報におけるＣＮＶゲインのブロック化の説明図。
【図１４】エンコードしたＮＣ情報の構成図。
【図１５】タグＩＤの階層構造の説明図。
【図１６】復号者ＩＤの階層構造の説明図。
【図１７】ユーザＩＤ情報データベースの説明図。
【図１８】ユーザ秘密鍵発行処理の流れを示すフローチャート。
【図１９】患者ゲノム配列の暗号化処理の流れを示すフローチャート。
【図２０】タグ付き暗号化データの説明図。
【図２１】暗号化データの記憶例を示す図。
【図２２】患者の電子カルテの暗号化処理の流れを示すフローチャート。
【図２３】検索処理の流れを示すフローチャート。
【図２４】アクセス権限管理テーブルの説明図。
【図２５】鍵管理サーバ１００、暗号化装置２００、検索装置３００、データセンタ４００のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【００３１】
実施の形態１．
図１は、遺伝子検索システム１０の構成図である。
遺伝子検索システム１０は、鍵管理サーバ１００、複数の暗号化装置２００、複数の検索装置３００、データセンタ４００（データ管理装置）を備える。鍵管理サーバ１００、暗号化装置２００、検索装置３００、データセンタ４００は、ネットワーク５００を介して接続される。
鍵管理サーバ１００は、暗号化用ユーザ秘密鍵や秘匿検索用ユーザ秘密鍵などのユーザ秘密鍵を生成し、暗号化装置２００や検索装置３００へ配布するサーバである。なお、暗号化用ユーザ秘密鍵は暗号化データの復号に用いる鍵であり、秘匿検索用ユーザ秘密鍵は秘匿検索に用いる鍵である。
暗号化装置２００は、データセンタ４００に保管する情報を暗号化するための端末である。暗号化装置２００は、主に、病院の医師や、ゲノム解読センタの社員や患者などのユーザによって利用される端末である。
検索装置３００は、データセンタ４００に保管された情報を検索して取得するために用いられる端末である。検索装置３００は、主に、製薬会社などの研究者や、病院の医師などのユーザによって利用される。
データセンタ４００は、患者から集めたゲノム情報や、患者の病歴が記載された電子カルテなどを保管するサーバである。データセンタ４００は、患者や医師や研究者などのユーザからの要求によってゲノム情報や電子カルテなどを検索・閲覧するサービスを提供する。
ネットワーク５００は、例えばインターネットのような公衆回線網である。
【００３２】
図２は、鍵管理サーバ１００の構成図である。
鍵管理サーバ１００は、マスター鍵生成部１１０、鍵記憶部１２０、ユーザ秘密鍵生成部１３０、データ送受信部１４０、ユーザＩＤ記憶部１５０を備える。
マスター鍵生成部１１０は、処理装置により、秘匿検索を利用するユーザ全員が共通で利用する公開パラメータを生成するとともに、ユーザ秘密鍵を生成する元になるマスター鍵を生成する。
鍵記憶部１２０は、マスター鍵生成部１１０が生成したマスター鍵や公開パラメータを記憶装置に記憶する。
ユーザ秘密鍵生成部１３０は、処理装置により、ユーザにユニークに割り当てられたユーザＩＤを用いて、マスター鍵からユーザ秘密鍵を生成する。
データ送受信部１４０は、公開パラメータを暗号化装置２００、検索装置３００、データセンタ４００へネットワーク５００を介して送信する。また、データ送受信部１４０は、ユーザ秘密鍵を検索装置３００へネットワーク５００を介して送信する。また、データ送受信部１４０は、ユーザの要求に応じて、ユーザＩＤを暗号化装置２００、検索装置３００、データセンタ４００のユーザに対して送信する。
ユーザＩＤ記憶部１５０は、各ユーザのユーザＩＤを記憶装置に記憶する。ユーザＩＤは、ユーザの氏名、所属、ログインＩＤ、メールアドレスなどの属性情報である。ユーザＩＤ記憶部１５０は、現時点での属性情報だけでなく、過去の属性情報も履歴として記憶しておいてもよい。
【００３３】
図３は、暗号化装置２００の構成図である。
暗号化装置２００は、基準遺伝子取得部２１０、対象遺伝子入力部２２０、公開パラメータ記憶部２３０、差分情報生成部２４０、差分情報エンコード部２５０、データ暗号化部２６０、暗号化タグ生成部２７０、タグ付き暗号化データ生成部２８０を備える。
基準遺伝子取得部２１０は、一般に公開されている所定のゲノム配列を基準ゲノム配列（基準遺伝子）として取得する。
対象遺伝子入力部２２０は、データセンタ４００に保管する患者ゲノム配列（対象遺伝子）を取得する。また、対象遺伝子入力部２２０は、患者ゲノム配列とともに、その患者ゲノム配列の患者を示す患者ＩＤを取得する。
公開パラメータ記憶部２３０は、鍵管理サーバ１００が生成した公開パラメータを受信し、記憶装置に記憶する。
差分情報生成部２４０は、処理装置により、患者ゲノム配列と基準ゲノム配列とを比較して、複数の差分情報を生成する。
差分情報エンコード部２５０は、処理装置により、差分情報生成部２４０が生成した各差分情報を、暗号化したまま検索を行うのに適した形に符号化してエンコード差分情報を生成する。暗号化したまま検索を行うのに適した形については、後述する。
データ暗号化部２６０は、処理装置により、対象遺伝子入力部２２０が入力した患者ゲノム配列を暗号化して、暗号化データ（暗号化遺伝子）を生成する。
暗号化タグ生成部２７０は、処理装置により、差分情報エンコード部２５０が生成したエンコード差分情報を暗号化して、暗号化タグを生成する。
タグ付き暗号化データ生成部２８０は、処理装置により、データ暗号化部２６０が生成した暗号化データと、暗号化タグ生成部２７０が生成した複数の暗号化タグと、患者ＩＤとを結合してタグ付き暗号化データを生成する。タグ付き暗号化データ生成部２８０は、生成したタグ付き暗号化データの保管をデータセンタ４００に依頼する。
【００３４】
図４は、検索装置３００の構成図である。
検索装置３００は、差分情報入力部３１０、ユーザ秘密鍵記憶部３２０、差分情報エンコード部３３０、検索クエリ生成部３４０、遺伝子情報取得部３５０、データ復号部３６０を備える。
差分情報入力部３１０は、入力装置により、基準ゲノム配列との差分情報を検索キーワードとして含む検索要求を入力する。
ユーザ秘密鍵記憶部３２０は、鍵管理サーバ１００がユーザに個別に発行したユーザ秘密鍵と、公開パラメータとを記憶装置に記憶する。
差分情報エンコード部３３０は、差分情報エンコード部２５０と同じ機能である。差分情報エンコード部３３０は、処理装置により、差分情報入力部３１０が入力した検索要求に含まれる差分情報を暗号化したまま検索を行うのに適した形に符号化してエンコード差分情報を生成する。
検索クエリ生成部３４０は、処理装置により、ユーザ秘密鍵記憶部３２０が記憶したユーザ秘密鍵及び公開パラメータと、差分情報エンコード部３３０が生成したエンコード差分情報から、検索クエリを生成する。
遺伝子情報取得部３５０は、検索クエリ生成部３４０が生成した検索クエリをデータセンタ４００へネットワーク５００を介して送信する。そして、遺伝子情報取得部３５０は、検索要求に含まれる差分情報を含む（あるいは、類似する差分情報を含む）患者ゲノム配列が暗号化された暗号化データをデータセンタ４００からネットワーク５００を介して受信する。また、遺伝子情報取得部３５０は、暗号化データとともに、患者ＩＤを受信する。
データ復号部３６０は、処理装置により、データセンタ４００から受信した暗号化データを、ユーザ秘密鍵記憶部３２０が記憶したユーザ秘密鍵を用いて復号し、患者ゲノム配列を取得する。
【００３５】
図５は、データセンタ４００の構成図である。
データセンタ４００は、保管要求処理部４１０、暗号化データ記憶部４２０、暗号化タグ記憶部４３０、検索要求処理部４４０、公開パラメータ記憶部４５０、アクセス権限記憶部４６０を備える。
保管要求処理部４１０は、暗号化装置２００からタグ付き暗号化データを受信する。保管要求処理部４１０は、受信したタグ付き暗号化データを解析し、暗号化データと複数の暗号化タグと患者ＩＤとに分解する。保管要求処理部４１０は、分解した暗号化データと各暗号化タグとに共通の管理番号を割り振り、暗号化データを患者ＩＤ及び管理番号とともに暗号化データ記憶部４２０へ送信し、各暗号化タグを患者ＩＤ及び管理番号とともに暗号化タグ記憶部４３０へ送信する。
暗号化データ記憶部４２０は、保管要求処理部４１０から受信した暗号化データを、患者ＩＤ及び管理番号と関連付けて記憶装置に記憶する。
暗号化タグ記憶部４３０は、保管要求処理部４１０から受信した暗号化タグを、患者ＩＤ及び管理番号と関連付けて記憶装置に記憶する。
検索要求処理部４４０は、検索装置３００から検索クエリを受信する。検索要求処理部４４０は、処理装置により、受信した検索クエリと、暗号化タグ記憶部４３０が記憶した暗号化タグとについて比較処理を行う。この比較処理によって、暗号化タグに含まれる患者ゲノム配列の差分情報が、検索クエリに含まれる患者ゲノム配列の差分情報（検索要求）で指定された条件に合致するかどうかが判定される。その後、検索要求処理部４４０は、検索にヒットした暗号化タグと関連付けられた暗号化データを暗号化データ記憶部４２０から取得し、検索装置３００へ返送する。なお、暗号化タグと関連付けられた暗号化データとは、暗号化タグと同一の管理番号が付された暗号化データである。
公開パラメータ記憶部４５０は、鍵管理サーバ１００が生成した公開パラメータを受信し、記憶装置に記憶する。
アクセス権限記憶部４６０は、患者が誰に対して患者ゲノム配列の開示を許可しているかを管理する。
【００３６】
遺伝子検索システム１０で利用する暗号方式について説明する。
遺伝子検索システム１０では、非特許文献２等に記載された階層的内積述語暗号と呼ばれる暗号方式と、同じく階層的内積述語暗号を用いた暗号化したままキーワード検索が可能な秘匿検索方式とを用いる。
【００３７】
図６は、階層的内積述語暗号を用いた暗号方式の説明図である。
この暗号方式は、マスター鍵生成アルゴリズム、秘密鍵生成アルゴリズム、委譲鍵生成アルゴリズム、暗号化アルゴリズム、復号アルゴリズムによって構成される。
【００３８】
最初に、マスター鍵生成アルゴリズムを用いて、暗号化用マスター鍵と暗号化用公開パラメータとが生成される。暗号化用マスター鍵は、復号ユーザの暗号化用ユーザ秘密鍵を生成するために使われる秘密鍵である。暗号化用公開パラメータは、暗号化する際に用いられる公開情報であり、暗号化するユーザに対して広く配布される。
なお、この処理の際には、条件式の構成を事前に決定しておき、その条件式をパラメータとして与える必要がある。非特許文献２等の既存の階層的内積述語暗号の文献では、条件式の構成を与えるのではなく、条件式をベクトルとして表記した場合の次元数を与えるように記載しているが、分かりやすさの観点から、ここでは条件式を与える、としておく。以下同様である。
【００３９】
次に、秘密鍵生成アルゴリズムを用いて、暗号化用条件式から復号ユーザに対して配布する暗号化用ユーザ秘密鍵が発行される。暗号化用条件式は、復号ユーザがどの様な属性を持つ文書を復号できるかが決定され、その条件がＡＮＤ／ＯＲの論理演算を用いた条件式として記述されたものである。
【００４０】
次に、暗号化アルゴリズムを用いて、データが暗号化される。その際、暗号化データに付加する暗号化用属性を指定して、これを暗号化データに埋め込む。
【００４１】
最後に、復号アルゴリズムを用いて、暗号化データが復号される。復号時には、暗号化用ユーザ秘密鍵を指定するが、暗号化用ユーザ秘密鍵に埋め込まれた条件式を満たすような暗号化用属性が付与された暗号化データのみ復号ができる。条件式を満たさないような暗号化データに関しては一切復号できない。
【００４２】
なお、階層的内積述語暗号には、鍵委譲という特徴も存在する。これは、暗号化用ユーザ秘密鍵を生成する際に条件式を一部だけ設定し、条件式の一部を未指定の状態にする。この未指定の条件式に、追加で条件式を設定する仕組みが鍵委譲である。
具体的には、委譲鍵生成アルゴリズムを用いて、暗号化用ユーザ秘密鍵に対して追加で設定する暗号化用追加条件式を指定し、暗号化用委譲秘密鍵を生成する。この暗号化用委譲秘密鍵は、暗号化用ユーザ秘密鍵と同様に暗号化データの復号に利用することができる。
【００４３】
少し言い方を変えると、秘密鍵生成アルゴリズムでは、復号ユーザの属性情報が鍵属性として設定された暗号化用ユーザ秘密鍵が発行される。また、暗号化アルゴリズムでは、復号可能なユーザの属性情報が暗号属性として設定された暗号化データが生成される。そして、復号アルゴリズムでは、暗号化用ユーザ秘密鍵に設定された鍵属性と、暗号化データに設定された暗号属性とが対応している場合にのみ、暗号化データを暗号化用ユーザ秘密鍵で復号できる。
また、委譲鍵生成アルゴリズムでは、暗号化用ユーザ秘密鍵にさらに属性情報を追加設定して、その暗号化用ユーザ秘密鍵で復号可能な暗号化データの一部のみを復号可能な下位の暗号化用ユーザ秘密鍵を生成する。
【００４４】
図７は、階層的内積述語暗号を用いた秘匿検索方式の説明図である。
この秘匿検索方式は、マスター鍵生成アルゴリズム、秘密鍵生成アルゴリズム、委譲鍵生成アルゴリズム、暗号化タグ生成アルゴリズム、一致判定アルゴリズムで構成される。
【００４５】
最初に、マスター鍵生成アルゴリズムを用いて、秘匿検索用マスター鍵と秘匿検索用公開パラメータとが生成される。秘匿検索用マスター鍵は、検索ユーザの秘匿検索用ユーザ秘密鍵を生成するために使われる秘密鍵である。秘匿検索用公開パラメータは、検索する際に用いられる公開情報であり、検索するユーザに対して広く配布される。
なお、条件式の記述に関しては、暗号化方式と同様である。
【００４６】
次に、秘密鍵生成アルゴリズムを用いて、秘匿検索用条件式から検索ユーザに対して配布する秘匿検索用ユーザ秘密鍵が発行される。秘匿検索用条件式は、検索ユーザがどの様な属性を持つ文書を検索できるかが指定され、さらに、どの様な条件式で検索キーワードを指定できるかと言う枠組みだけが決定され、その条件がＡＮＤ／ＯＲの論理演算を用いた条件式として記述されたものである。検索キーワード自体は、後に委譲鍵生成アルゴリズムで設定できるようにしておく。
【００４７】
次に、暗号化タグ生成アルゴリズムを用いて、検索処理に用いられる暗号化タグが生成される。始めに任意の乱数値が生成され、検索を許可するユーザを制限するために属性が決定され、キーワードが決定される。乱数値と属性とキーワードとを入力として暗号化タグ生成アルゴリズムを用いて暗号化タグが生成される。具体的には、乱数値を暗号化アルゴリズムで暗号化し、暗号化乱数と乱数値の組みを暗号化タグとする。
【００４８】
次に、委譲鍵生成アルゴリズムを用いて、検索クエリが生成される。具体的には、秘匿検索用ユーザ秘密鍵のうち、後でキーワードが指定できるように値が未指定となっている部分に対して検索キーワードを埋め込むことにより、検索クエリが生成される。この検索クエリは、暗号化方式の暗号化委譲秘密鍵に対応するものである。
【００４９】
最後に、一致判定アルゴリズムを用いて、受領した検索クエリと暗号化タグの両者に含まれるキーワードが同一であるかどうかの一致判定が行われる。具体的には、暗号化タグの中から暗号化乱数を取り出し、暗号化用委譲秘密鍵に相当する検索クエリを用いて復号する。そして、復号結果が暗号化タグに含まれる乱数値と同一であった場合、すなわち検索クエリで正しく復号できた場合、キーワードが同一であったと判断する。なぜなら、検索クエリ（暗号化用委譲秘密鍵に相当）に含まれるキーワードと、暗号化乱数を生成する時に指定したキーワードが同一でなければ、正しく乱数値を復号できないからである。
【００５０】
上述した暗号方式と同様に少し言い方を変えると、秘密鍵生成アルゴリズムでは、検索ユーザの属性情報が鍵属性として設定された秘匿検索用ユーザ秘密鍵が発行される。また、暗号化アルゴリズムでは、検索可能なユーザの属性情報と、キーワードとが暗号属性として設定された暗号化データが生成される。委譲鍵生成アルゴリズムでは、秘匿検索用ユーザ秘密鍵にさらに検索キーワードを鍵属性として追加設定して、検索クエリを生成する。
そして、復号アルゴリズムでは、検索クエリに設定された鍵属性情報と、暗号化タグに設定された属性情報とが対応している場合にのみ、暗号化タグから乱数値を復号できる。つまり、検索クエリに設定されたユーザの属性情報と、暗号化タグに設定されたユーザの属性情報とが対応しており、検索クエリに設定された検索キーワードと、暗号化タグに設定されたキーワードとが対応している場合にのみ、暗号化タグから乱数値を復号できる。
【００５１】
遺伝子検索システム１０の処理について説明する。
遺伝子検索システム１０は、初期設定処理、ユーザ秘密鍵発行処理、暗号化処理、検索処理を実行する。なお、暗号化処理には、患者ゲノム配列の暗号化処理と、患者の電子カルテの暗号化処理とが含まれる。
【００５２】
図８は、初期設定処理の流れを示すフローチャートである。
初期設定処理は、鍵管理サーバ１００で実行される処理であり、遺伝子検索システム１０を利用する前に１回実行される処理である。
【００５３】
（Ｓ１０１：エンコード方法決定処理）
マスター鍵生成部１１０は、処理装置により、患者ゲノム配列の差分情報をエンコードする方法を決定する。このエンコードする方法を決定する際に、どの様に検索されるかという検索式についても考慮する。
主要な差分情報として、ＳＮＶ（Ｓｉｎｇｌｅ  Ｎｕｃｌｅｏｔｉｄｅ  Ｖａｒｉａｎｔ）や、ＳＶ（Ｓｔｒｕｃｔｕｒａｌ  Ｖａｒｉａｎｔｓ）や、ＮＣ（Ｎｏｖｅｌ  Ｃｏｎｔｉｇ）がある。そこで、この３つを例として、そのエンコード方法と検索方法について説明する。
【００５４】
図９は、エンコードしたＳＮＶ情報の構成図である。
ＳＮＶ情報は、ゲノム配列の中で塩基１個が変化していることを示す。ＳＮＶ情報は、患者ＩＤ、染色体番号、位置情報、置換情報１、置換情報２、信頼度で構成される。
患者ＩＤは、別途管理される電子カルテと対応付けるために割り振られた識別番号である。患者ＩＤは、カルテと対応付けられる番号であればよいため、病院で患者に付与した識別番号だけでなく、カルテ保管時にランダムに番号を振って、その値が設定されてもよい。
染色体番号は、ＳＮＶが検出された染色体の番号である。ヒトゲノムの場合、例えば１，２，・・・，２２，Ｘ，Ｙ，Ｍ等の値が設定される。
位置情報は、ＳＮＶが検出された位置に関する情報である。位置は、塩基配列の何番目かという数値で表され、ヒトゲノムの場合は１から３０億ぐらいの値となる。一般に、位置などの数値情報の検索は範囲を指定して検索される。しかし、上述した秘匿検索方式では範囲検索が実施困難なため、ブロック化を行うことで高速化を図る。例えば、図１０は、検索時に指定される範囲が一般的に５０００以下に抑えられる場合のエンコード方法を示したものである。位置７７７７にＳＮＶが検出された場合、ブロック１とブロック２とが該当する位置と考え、位置情報には「１」と「２」と言う２つの値が設定される。
置換情報１と置換情報２は、ゲノム情報の変化を示す情報である。これは、例えばＳＮＶとしてＧで表される塩基が挿入されていた場合は「Ｇ追加」、Ａで表される塩基が消えていた場合は「Ａ削除」など表記するように定められ、その値が設定される。置換情報が２つあるのは、例えば、Ｇで表される塩基がＡで表される塩基に変化していた場合、置換情報１にはＧ削除、置換情報２にはＡ追加等として表されるためである。
信頼度は、そのＳＮＶ情報の信頼性を表す情報であり、０から１００までの実数で表される。これも位置情報と同様に、ブロック化して検索の高速化を図る。例えば図１１の様に、信頼度を１０％単位で区切り、その対応する値を設定する。例えば、信頼度が７．４４％の場合、対応するブロックの値０が設定される。
【００５５】
検索の場合、上記の患者ＩＤから信頼度までの値のうち、条件として指定したいものを幾つか指定し、さらに未指定の場所はどの値とでも一致とみなす“＊”（ワイルドカード）を指定することで差分情報（検索要求）を生成する。そして、ＳＮＶ情報の各要素について、暗号化タグと検索クエリとの間で全てが一致した場合に検索にヒットする、と言う様なルールを決定する。
【００５６】
また、各要素がどの様な条件で一致するかも決定する。
例えば、患者ＩＤが指定された場合、患者ＩＤが同一のものを一致とみなす。染色体番号も同様に、検索したい染色体番号を指定し、同一のものを一致とみなす。位置情報の場合、例えば７０００〜１２０００の範囲を検索したいとしたら、その範囲を含むブロックとしてブロック２を特定し、検索式には「２」を指定する。そして、ＳＮＶ情報の位置情報として設定されている２つの値のいずれか一方と同一である場合、一致とみなす。置換情報の場合、ＳＮＶ情報に指定した値と同様のルールで検索したい値を設定し、両者が同一であった場合に一致とみなす。信頼度も同様に、同じ値が指定されている場合に一致とみなす。
以上のように、ＳＮＶ情報のエンコード方法と、どの様に検索を実施できるかという方式を決定する。
【００５７】
図１２は、エンコードしたＳＶ情報の構成図である。
ＳＮＶ情報は塩基１つが変化していることを示したが、ＳＶ情報は連続する複数の塩基配列が変化していることを示す。ＳＶ情報は、患者ＩＤ、染色体番号、開始位置情報、終了位置情報、変異種別、ＣＮＶゲイン、組換染色体番号、組換染色体開始位置情報、組換染色体終了位置情報、分類ＩＤ（挿入配列）、バージョン（挿入配列）、染色体番号（挿入配列）、開始位置情報（挿入配列）、終了位置情報（挿入配列）で構成される。
患者ＩＤ、染色体番号は、図９に示したＳＮＶと同一であるので、説明は省略する。
開始位置情報は、変化が開始している位置を示す情報である。ＳＮＶ情報の位置情報と同様の手順で位置情報がブロック化されて、ブロックを示す値を設定される。
終了位置情報は、変化が終了している位置を示す情報である。ＳＮＶ情報の位置情報と同様の手順で位置情報がブロック化されて、ブロックを示す値が設定される。
変異種別は、ＳＶの種別を示す情報である。例えば、遺伝子配列の繰り返し回数の追加／削減を示す「ＣＮＶゲイン」や「ＣＮＶロス」、塩基配列の反転を示す「Ｉｎｖｅｒｓｉｏｎ」、塩基配列の大規模挿入を示す「Ｉｎｓｅｒｔｉｏｎ」、塩基配列の大規模欠損を示す「Ｄｅｌｅｔｉｏｎ」、他染色体との組換を示す「組換え」などの値が設定される。
ＣＮＶゲインは、変位種別として、「ＣＮＶゲイン」と「ＣＮＶロス」とが設定された場合に利用される。ＣＮＶゲインは、変異種別として「ＣＮＶゲイン」が設定された場合は、繰り返し回数が何回増えているか、「ＣＮＶロス」が設定された場合は、繰り返し回数が何回減ったかを示す情報が設定される。この値も整数値が含まれるため、ブロック化して値を設定する。例えば、図１３に示すようにブロック化するというルールが定められ、ＣＮＶゲインが１５であった場合、対応するブロックの番号「３」が設定される。
組換染色体番号は、変異種別として「組換え」が指定された場合に利用される。組換染色体番号は、組み換えられた他染色体の番号が設定される。設定可能な値は、染色体番号と同一である。
組換染色体開始位置情報と組換染色体終了位置情報とは、変異種別として「組換え」が指定された場合に利用される。組換染色体開始位置情報と組換染色体終了位置情報とは、他染色体のどの塩基配列と組み換えが発生したかを示すため、他染色体における組み換えの開始位置と終了位置とを示す情報である。設定可能な値は、開始位置情報と終了位置情報と同一である。
分類ＩＤ（挿入配列）は、変異種別として「Ｉｎｓｅｒｔｉｏｎ」が指定された場合に利用される。分類ＩＤ（挿入配列）は、挿入された塩基配列が、他のどの生物のものかを示す番号が設定される。
バージョン（挿入配列）は、上記の分類ＩＤを決定するのに用いたゲノム・データベースのバージョンを示すための数値である。
染色体番号（挿入配列）、開始位置情報（挿入配列）、終了位置情報（挿入配列）は、他生物のどの部分の塩基配列が挿入されたかを示す情報で、設定される値は染色体番号や開始位置情報や終了位置情報と同一の手法でエンコードされる。但し、ゲノム配列の長さは生物種によって異なるため、分類ＩＤ毎に異なるブロックの区切り方を用意することが好ましい。
【００５８】
また、検索の場合、上記の患者ＩＤから終了位置情報（挿入配列）までの値のうち、条件として指定したいものを幾つか指定し、さらに未指定の場所はどの値とでも一致とみなす“＊”（ワイルドカード）を指定することで差分情報（検索要求）を生成し、これをもとに検索クエリを生成する。そして、ＳＶ情報の各要素について、暗号化タグと検索クエリとの間で全てが一致した場合に検索にヒットする、と言う様なルールを決定する。
【００５９】
また、各要素がどの様な条件で一致するかも決定する。
患者ＩＤ、染色体番号は、ＳＮＶ情報の場合と同一である。開始位置情報、終了位置情報、組換染色体開始位置情報、組換染色体終了位置情報、開始位置情報（挿入配列）、終了位置情報（挿入配列）は、ＳＮＶ情報の位置情報と同一で扱えばよい。変異種別は、どの種類の変異種別を検索したいかを検索クエリに指定し、同一の値が設定されたＳＶ情報を一致とみなす。ＣＮＶゲインは、例えば１０から３０までの間にあるものを検索したい場合、その対応するブロックの番号「３」を指定する。そして、ＳＶ情報に含まれるＣＮＶゲインと同一であった場合、一致とみなす。組換染色体番号、染色体番号（挿入配列）は、染色体番号と同一で扱えばよい。分類ＩＤ、バージョンは、検索クエリに検索したい分類ＩＤとバージョンを入れ、ＳＶ情報と同一の場合に一致とみなす。
以上のように、ＳＶ情報のエンコード方法と、どの様に検索を実施できるかという方式を決定する。
【００６０】
図１４は、エンコードしたＮＣ情報の構成図である。
ＮＣ情報は、基準ゲノムにマッピングできなかった塩基を示す。塩基が基準ゲノムにマッピングできなかったのは、多くの場合は、ウイルスに感染しているなどで特殊なゲノムが検知された場合と考えられる。そのため、ＮＣ情報は、患者ＩＤに加え、分類ＩＤ（挿入配列）、バージョン（挿入配列）、染色体番号（挿入配列）、開始位置情報（挿入配列）、終了位置情報（挿入配列）で構成される。
値の設定の方法や、検索の方法はＳＶ情報と同一であるため、説明は省略する。
【００６１】
（Ｓ１０２：方式決定処理）
マスター鍵生成部１１０は、処理装置により、利用する秘匿検索方式や、データ本体を暗号化する暗号方式を決定する。ここでは、複数の検索キーワードを指定できる秘匿検索方式を必要としているため、上述した階層的内積述語暗号を用いた秘匿検索方式を用いる。同様に、暗号方式も上述した階層的内積述語暗号を用いた暗号方式を用いる。
そして、マスター鍵生成部１１０は、秘匿検索方式の利用方法を決定する。ここでは、タグＩＤの階層構造を決定する。例えば、図１５に示す様に、タグＩＤは３要素で構成され、検索可能なユーザが所属するグループのグループ名を格納するグループ名欄、氏名などを格納するユーザ名欄、患者ゲノム配列の差分情報を格納する差分情報欄で構成する。検索の際は、グループ名、ユーザ名、差分情報の全てが合致と判断された場合にのみ、検索にヒットしたとみなすルールとする。
同様に、マスター鍵生成部１１０は、データ本体を暗号化するための暗号化方式の利用方法を決定する。ここでは、復号者ＩＤの階層構造を決定する。例えば、図１６に示す様に、復号者ＩＤは２要素で構成され、復号可能なユーザが所属するグループのグループ名を格納するグループ名欄、氏名等を格納するユーザ名欄で構成する。復号の際は、グループ名、ユーザ名の全てが合致したものだけが復号できるルールとする。
【００６２】
（Ｓ１０３：ユーザＩＤ記憶処理）
ユーザＩＤ記憶部１５０は、ユーザＩＤを保管するユーザＩＤ情報データベースを構築する。ユーザＩＤ情報データベースは、ユーザ秘密鍵を生成するために必要な情報と、暗号化装置２００がデータを暗号化する際に、相手のグループ名／ユーザ名を特定するために必要な情報とが記憶されるものである。
例えば、図１７に示すように、ユーザＩＤ情報データベースには、グループ名である会社名、ユーザ名である氏名、所属情報、有効期間等が格納される。また、ユーザＩＤ情報データベースには、最新の状況だけでなく、過去の履歴を全て格納するようにしてもよい。
【００６３】
（Ｓ１０４：マスター鍵生成処理）
マスター鍵生成部１１０は、処理装置により、秘匿検索方式のマスター鍵生成アルゴリズムを実行して、秘匿検索用マスター鍵と秘匿検索用公開パラメータとを生成する。同様に、マスター鍵生成部１１０は、処理装置により、暗号化方式のマスター鍵生成アルゴリズムを実行して暗号化用マスター鍵と暗号化用公開パラメータとを生成する。
以降、秘匿検索用マスター鍵と暗号化用マスター鍵をまとめてマスター鍵、秘匿検索用公開パラメータと暗号化用公開パラメータをまとめて公開パラメータと呼ぶ。
【００６４】
（Ｓ１０５：マスター鍵記憶処理）
鍵記憶部１２０は、マスター鍵生成部１１０が生成したマスター鍵と公開パラメータとを記憶装置に記憶する。
【００６５】
（Ｓ１０６：公開パラメータ公開処理）
データ送受信部１４０は、鍵記憶部１２０が記憶した公開パラメータを暗号化装置２００、検索装置３００、データセンタ４００に対してネットワーク５００を介して公開する。
なお、公開された公開パラメータは、暗号化装置２００では、公開パラメータ記憶部２３０に記憶され、検索装置３００では、ユーザ秘密鍵記憶部３２０に記憶され、データセンタ４００では、公開パラメータ記憶部４５０に記憶される。
【００６６】
以上の手順によって、遺伝子検索システム１０のセットアップが完了する。
なお、Ｓ１０３で生成したユーザＩＤ情報データベースは、システムの運用において、ユーザの人事異動や入社や退社があるたびに内容がメンテナンスされる。
【００６７】
図１８は、ユーザ秘密鍵発行処理の流れを示すフローチャートである。
ユーザ秘密鍵発行処理は、主に、鍵管理サーバ１００と検索装置３００とで実行される処理であり、新規ユーザを追加した場合や、ユーザの所属するグループ名が変わった時などに実行される。
【００６８】
（Ｓ２０１：ユーザＩＤ取得処理）
ユーザ秘密鍵生成部１３０は、ユーザＩＤ記憶部１５０が保持しているユーザＩＤ情報データベースから、ユーザ秘密鍵を発行するユーザのグループ名とユーザ名とを取得する。
【００６９】
（Ｓ２０２：ユーザ秘密鍵生成処理）
ユーザ秘密鍵生成部１３０は、処理装置により、検索クエリを生成するために用いる秘匿検索用ユーザ秘密鍵と、暗号化データを復号するために用いる暗号化用ユーザ秘密鍵とを生成する。
秘匿検索方式では、秘匿検索用ユーザ秘密鍵を生成する際にタグＩＤ階層構造を指定する必要がある。ここでは、Ｓ２０１で取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に設定し、差分情報は後で検索するユーザが設定できるように委譲可能な要素として指定する事で、秘匿検索用ユーザ秘密鍵を生成できる。
同様に、暗号化方式で暗号化用ユーザ秘密鍵を生成する際に復号者ＩＤ階層構造を指定する必要がある。ここでは、Ｓ２０１で取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に指定する事で、暗号化用ユーザ秘密鍵を生成できる。
上記で生成した秘匿検索用ユーザ秘密鍵、暗号化用ユーザ秘密鍵をまとめてユーザ秘密鍵と呼ぶ。
【００７０】
（Ｓ２０３：ユーザ秘密鍵送信処理）
データ送受信部１４０は、Ｓ２０２で生成したユーザ秘密鍵を、検索装置３００へ送信する。
【００７１】
（Ｓ２０４：ユーザ秘密鍵受信処理）
ユーザ秘密鍵記憶部３２０は、Ｓ２０３にて送信されたユーザ秘密鍵を受信し、記憶装置に記憶する。
【００７２】
図１９は、患者ゲノム配列の暗号化処理の流れを示すフローチャートである。
患者ゲノム配列の暗号化処理は、主に、暗号化装置２００とデータセンタ４００とで実行される処理であり、患者ゲノム配列を暗号化してデータセンタ４００に保管する時に実行される。
【００７３】
（Ｓ３０１：差分情報抽出処理）
基準遺伝子取得部２１０は、例えばインターネットで公開されている基準ゲノム配列を取得する。また、対象遺伝子入力部２２０は、入力装置により、患者ゲノム配列を入力する。
差分情報生成部２４０は、処理装置により、患者ゲノム配列と基準ゲノム配列とを比較することで、ＳＮＶやＳＶやＮＣ等の差分情報を生成する。この差分情報を生成する方法としては、ＣｈＩＰ−ｓｅｑ法またはＲＮＡ−ｓｅｑ法またはＭｅＤＩＰ−ｓｅｑ法または変異解析法またはバイサルファイト法などが知られており、それらの一般的な手法を用いる。
【００７４】
（Ｓ３０２：ユーザ決定処理）
データ暗号化部２６０は、暗号化装置２００を操作するユーザに、暗号化データを復号可能なユーザのグループ名及びユーザ名を入力させる。同様に、暗号化タグ生成部２７０は、暗号化データを検索可能なユーザのグループ名及びユーザ名を入力させる。
ここで入力されるグループ名やユーザ名は一つである必要はなく、復号又は検索可能なユーザが複数名いる場合は複数入力することもできる。なお、ここで利用する秘匿検索方式や暗号化方式は、グループ名やユーザ名として誰でもよい事を意味するワイルドカードを受け取ることも可能である。
【００７５】
（Ｓ３０３：データ暗号化処理）
データ暗号化部２６０は、処理装置により、Ｓ３０２で入力された復号可能なグループ名及びユーザ名を用いて、Ｓ３０１で入力された患者ゲノム配列を暗号化する。
具体的には、データ暗号化部２６０は、ランダムにセッション鍵を生成し、そのセッション鍵でＡＥＳやＣａｍｅｌｌｉａ（登録商標）等の共通鍵暗号を用いて患者ゲノム配列を暗号化し、暗号化データ本体を生成する。次に、データ暗号化部２６０は、復号者ＩＤ階層構造のグループ名とユーザ名に、Ｓ３０２で入力された復号可能なグループ名及びユーザ名をそれぞれ指定して、これを暗号化用公開鍵として、Ｓ１０２で決定した暗号化方式を用いてセッション鍵を暗号化し、暗号化セッション鍵を生成する。そして、データ暗号化部２６０は、前述の２個の暗号化結果（暗号化データ本体と暗号化セッション鍵）を組み合わせることで、暗号化データを生成する。
生成した暗号化データのデータ構造を図２０の符号６０３部分に示す。なお、Ｓ３０２にて複数のグループ名とユーザ名を受領している場合、グループ名とユーザ名の各組に対して暗号化セッション鍵を生成する必要がある。
【００７６】
（Ｓ３０４：差分情報エンコード処理）
差分情報エンコード部２５０は、処理装置により、Ｓ３０１で生成された各差分情報を、Ｓ１０１で決定されたエンコード方法に従ってエンコードして、エンコード差分情報を生成する。また、差分情報エンコード部２５０は、ユーザから患者ＩＤを入力させ、エンコード差分情報に含める。
【００７７】
（Ｓ３０５：暗号化タグ生成処理）
暗号化タグ生成部２７０は、エンコード差分情報を暗号化して暗号化タグを生成する。
具体的には、暗号化タグ生成部２７０は、処理装置により、タグＩＤ階層構造のグループ名とユーザ名にＳ３０２で入力させた検索可能なグループ名及びユーザ名を指定し、差分情報欄にＳ３０４にてエンコードしたエンコード差分情報を指定して、秘匿検索方式で乱数値を暗号化して暗号化タグを生成する。また、暗号化タグ生成部２７０は、乱数値を平文のまま暗号化タグに含める。
なお、上記処理は差分情報１個に対する処理であるため、この処理は各エンコード差分情報に対して実施される。例えば、ＳＮＶ、ＳＶ、ＮＣの各エンコード差分情報に対して実施される。また、Ｓ３０２にてグループ名及びユーザ名の組が複数の入力された場合、グループ名とユーザ名の各組に対して暗号化タグが生成される。
【００７８】
（Ｓ３０６：保管依頼処理）
タグ付き暗号化データ生成部２８０は、処理装置により、Ｓ３０３で生成された暗号化データと、Ｓ３０５で生成された暗号化タグと、Ｓ３０４で入力された患者ＩＤとを結合してタグ付き暗号化データを生成する（図２０の符号６０１）。そして、タグ付き暗号化データ生成部２８０は、生成したタグ付き暗号化データをデータセンタ４００へ送信して、保管を依頼する。
この時、データセンタ４００でタグ付き暗号化データの保管を容易にするため、タグ付き暗号化データ生成部２８０は、Ｓ３０２で入力された復号可能なグループ名及びユーザ名と、検索可能なグループ名及びユーザ名とを共に送信する。図２０で示したタグ付き暗号化データの構成では、復号可能なグループ名及びユーザ名と、検索可能なグループ名及びユーザ名とをタグ付き暗号化データに含めている。
【００７９】
（Ｓ３０７：暗号化データ保管処理）
保管要求処理部４１０は、処理装置により、暗号化装置２００から受信したタグ付き暗号化データを分解し、暗号化データと複数の暗号化タグと患者ＩＤとを取り出す。そして、保管要求処理部４１０は、暗号化データ記憶部４２０に暗号化データを患者ＩＤとともに保管させる。
なお、暗号化データ記憶部４２０は、タグ付き暗号化データに含まれるグループ名とユーザ名毎に暗号化データを分けて保管し、さらに保管した暗号化データに管理番号を付与して、後で管理番号から暗号化データを一意に特定できる様にする。暗号化データが複数のグループ名やユーザ名と関連付けられている場合、各グループ名とユーザ名に対して暗号化データを関連付けて保管する。複数のグループ名とユーザ名に関連付けられている場合、暗号化データは１個だけ格納し、他は参照情報のみを保管する様にすることでディスク容量の節約が可能である。
図２１は、暗号化データの保管例を示す図である。図２１に示す様に、保管要求処理部４１０は、グループ名が“Ａ製薬会社”でユーザ名が“＊”（ワイルドカード）である暗号化データと患者ＩＤと管理番号とをまとめて管理し、さらにグループ名が“Ｂ病院”でユーザ名が“＊”である暗号化データと患者ＩＤと管理番号とをまとめて管理する。また、Ａ製薬会社とＢ病院の両方に開示されるデータがあった場合、例えば管理番号０００００１に患者ＩＤと暗号化データ本体を関連付けて保管し、管理番号１００００２には患者ＩＤに加え、暗号化データとして管理番号０００００２を参照する様なポインタを保管する。
【００８０】
（Ｓ３０８：暗号化タグ保管処理）
保管要求処理部４１０は、Ｓ３０７で取り出した複数の暗号化タグを、対応する暗号化データの管理番号及び患者ＩＤと共に暗号化タグ記憶部４３０に保管させる。暗号化タグ記憶部４３０は、タグ付き暗号化データに含まれるグループ名とユーザ名毎に分けて、暗号化タグと管理番号と患者ＩＤとを保管する。
【００８１】
図２２は、患者の電子カルテの暗号化処理の流れを示すフローチャートである。
患者の電子カルテの暗号化処理は、主に、暗号化装置２００とデータセンタ４００とで実行される処理であり、電子カルテを暗号化してデータセンタ４００に保管する時に実行される。
【００８２】
（Ｓ４０１：ユーザ決定処理）
データ暗号化部２６０は、暗号化装置２００を操作するユーザに、電子カルテを復号可能なユーザのグループ名及びユーザ名を入力させる。
ここで入力されるグループ名やユーザ名は一つである必要はなく、復号可能なユーザが複数名いる場合は複数入力することもできる。
【００８３】
（Ｓ４０２：データ暗号化処理）
データ暗号化部２６０は、ユーザに患者ＩＤと電子カルテとを入力させる。そして、データ暗号化部２６０は、処理装置により、Ｓ４０１で入力されたグループ名及びユーザ名を用いて、電子カルテを暗号化する。具体的な暗号化方法は、Ｓ３０３で患者ゲノム配列を暗号化した流れと同一のため、詳細は省略する。
【００８４】
（Ｓ４０３：保管依頼処理）
データ暗号化部２６０は、Ｓ４０２にて生成した暗号化データを、誰の電子カルテかを示す患者ＩＤと、復号可能なユーザのグループ名及びユーザ名と共にデータセンタ４００へ送信して、保管を依頼する。
【００８５】
（Ｓ４０４：暗号化データ保管処理）
保管要求処理部４１０は、暗号化装置２００から受領した暗号化データを、患者ＩＤと関連付けて暗号化データ記憶部４２０に保管させる。
【００８６】
図２３は、検索処理の流れを示すフローチャートである。
検索処理は、主に、検索装置３００とデータセンタ４００とで実行される処理であり、データセンタ４００に保管された暗号化患者ゲノム配列を取得する時に実行される。
【００８７】
（Ｓ５０１：差分情報入力処理）
差分情報入力部３１０は、検索装置３００を操作するユーザに、基準ゲノム配列との差分情報を検索キーワードとして含む検索要求を入力させる。
ここで入力される差分情報は、患者ゲノムから抽出した差分情報の様にすべての要素が指定されている必要はなく、例えば染色体番号だけを指定したものや、位置情報だけを指定したものなどでよい。
【００８８】
（Ｓ５０２：差分情報エンコード処理）
差分情報エンコード部３３０は、処理装置により、Ｓ５０１で入力された差分情報をエンコードして、エンコード差分情報を生成する。この処理は、ステップＳ３０４の処理と同一であるため詳細は省略する。但し、指定されていない要素は“＊”としておく点だけ注意が必要である。
【００８９】
（Ｓ５０３：検索クエリ生成処理）
検索クエリ生成部３４０は、処理装置により、Ｓ５０２で生成されたエンコード差分情報と、ユーザ秘密鍵記憶部３２０で記憶されているユーザ秘密鍵を用いて、検索クエリを生成する。そして、検索クエリ生成部３４０は、生成した検索クエリをデータセンタ４００へ送信する。
この時、ユーザ自身のグループ名及びユーザ名も送信する。なお、グループ名やユーザ名の信頼性を検証するため、検索端末を操作するユーザのユーザ認証も行う。
【００９０】
（Ｓ５０４：暗号化タグ抽出処理）
検索要求処理部４４０は、処理装置により、暗号化タグ記憶部４３０に記憶された全ての暗号化タグの中から、Ｓ５０３で検索クエリとともに送信されたグループ名及びユーザ名で検索が可能な暗号化タグを全て取得する。また、検索要求処理部４４０は、アクセス権限記憶部４６０から該当するグループ名及びユーザ名のユーザがアクセス可能な患者ＩＤのリストを取り出し、その患者ＩＤに対応する暗号化タグのみに取得した暗号化タグを絞込む。
なお、アクセス権限記憶部４６０は、図２４に示すようなアクセス権限管理テーブルを持っており、グループ名及びユーザ名をアクセス者情報として、検索できる患者ゲノム配列に対応する患者ＩＤを特定して、その患者ＩＤに対応する暗号化タグを出力すればよい。
【００９１】
（Ｓ５０５：一致判定処理）
検索要求処理部４４０は、処理装置により、Ｓ５０４で絞り込んだ暗号化タグに対して秘匿検索方式の一致判定処理を行い、暗号化タグに含まれる差分情報が、Ｓ５０３で送信された検索クエリに含まれる差分情報で指定された条件に合致するか否かを判定する。
秘匿検索方式の一致判定処理は、１個の暗号化タグと、１個の検索クエリとの比較しか実施できない。そのため、一致判定処理をＳ５０４にて取得した全ての暗号化タグに対して実施する。そして、判定処理の結果、一致と判定された暗号化タグに関連付けられた管理番号を特定する。
【００９２】
（Ｓ５０６：暗号化データ取得処理）
検索要求処理部４４０は、Ｓ５０５で特定された管理番号に対応する暗号化データを、暗号化データ記憶部４２０から全て取得し、対応する患者ＩＤと共に検索装置３００へ送信する。
【００９３】
（Ｓ５０７：暗号化データ復号処理）
データ復号部３６０は、処理装置により、Ｓ５０６でデータセンタ４００から受信した暗号化データを、ユーザ秘密鍵記憶部３２０に記憶された暗号化用ユーザ秘密鍵を用いて、暗号化方式の復号処理を実行することにより復号する。データ復号部３６０は、この処理を、受信した全ての暗号化データに対して実施する。
【００９４】
以上の手順により、検索装置３００はユーザから検索したい差分情報を受け取り、その差分情報に合致する暗号化データをデータセンタ４００から取得し、それを復号して患者ゲノム配列を閲覧することができる。また、必要に応じて、暗号化データに対応する患者ＩＤをデータセンタ４００へ送信し、対応する電子カルテなどを入手することもできる。
【００９５】
以上のように、実施の形態１に係る遺伝子検索システム１０では、患者ゲノムを秘匿検索方式を用いて暗号化してデータセンタ４００に保管し、また検索要求も秘匿検索技術で暗号化してデータセンタ４００に検索を依頼している。そのため、データセンタ４００では患者ゲノムの中身を一切知ることができないにもかかわらず、検索というサービスを提供することができる。
【００９６】
また、ヒトゲノム情報は３０億塩基からなる非常に膨大なデータである。そのため、ヒトゲノム情報を全てタグとしてしまうと、暗号化によってさらにデータサイズが増加することもあり、ディスク容量やネットワーク容量を圧迫する原因となってしまう。
しかし、実施の形態１に係る遺伝子検索システム１０では、一般公開されている基準ゲノム配列との差分情報に絞ってタグとしたので、ディスク使用量やネットワーク容量を大きく削減することができる。
【００９７】
また、実施の形態１に係る遺伝子検索システム１０では、ＳＮＶの位置情報や信頼度などの数値情報をブロック化することで、秘匿検索にて実現困難であった範囲検索を、一致検索を用いて実現した。そのため、ゲノム検索で利用する範囲検索にも対応することができる。
特に、図１０に示したＳＮＶの位置情報では、各ブロックが重複するようにした。つまり、ブロック１とブロック２とは、位置５０００から１００００が重複しており、ブロック２とブロック３とでは、位置１００００から１５０００が重複している。これにより、検索時に指定される範囲が５０００以下の場合には、全てのブロックを用いて検索を行い、検索時に指定される範囲が１００００以下の場合には、奇数のブロックだけで検索を行えばより高速に処理をすることが可能となる。
【００９８】
また、実施の形態１に係る遺伝子検索システム１０では、染色体番号や位置情報などの複数の検索条件が指定された場合でも、個別に条件の一致判定を行うのではなく、内積述語暗号を用いて全ての検索条件が成立するかどうかを一括で判定する。そのため、部分的に検索にヒットしたことがサーバには分からず、セキュリティが高い。
【００９９】
また、実施の形態１に係る遺伝子検索システム１０では、暗号化データと共に患者ＩＤを含めるようにした。そのため、検索結果として入手した患者ＩＤから、関連する電子カルテなどの情報を引き出すことができる。したがって、該当する塩基変異が発生している場合、どの様な病気に関連しているかも研究することが可能となる。
【０１００】
また、実施の形態１に係る遺伝子検索システム１０では、患者ゲノム配列の差分情報を暗号化する際に、タグＩＤ階層構造や復号者ＩＤ階層構造に対して、グループ名やユーザ名を含めるようにした。そのため、検索や復号ができる研究者や医者を制限することができる。例えば、グループ名に「Ａ製薬会社」、ユーザ名にワイルドカード「＊」を指定すれば、その患者の情報はＡ製薬会社の社員に制限することができる。また、グループ名もユーザ名もワイルドカード「＊」にして暗号化することで、そのシステムに登録された医者や研究者であれば、その患者の情報を利用することができるようになる。
【０１０１】
また、実施の形態１に係る遺伝子検索システム１０では、暗号によるアクセス制御とは別に、データセンタ４００がアクセス権限管理テーブルを保管し、この情報に基づくアクセス制御も可能とした。そのため、患者からの要望によって、「ゲノム配列のみ閲覧可能」とか「カルテの閲覧が可能」などを細かく管理することができる。つまり、この情報を元にして、患者ゲノム配列からの検索要求を許可するかどうかを判定するようにしたため、きめ細かなアクセス制御が可能となる。
【０１０２】
また、実施の形態１に係る遺伝子検索システム１０では、検索者のユーザ秘密鍵に対してグループ名やユーザ名を含めるようにした。そのため、そのユーザ秘密鍵から生成された検索クエリに含まれるグループ名やユーザ名を確認することで、認証を行うことも可能である。
【０１０３】
なお、上記説明では、会社単位でアクセス制限を行う場合の例を示した。しかし、このアクセス制御の単位は一例である。例えば、医者や看護婦などの国家資格の条件を入れてもよいし、国家プロジェクトへの参加者かどうかのフラグを立ててもよい。これらのＩＤ階層構造は一例であるため、色々な要素を追加したり、削除したりすることもできる。
【０１０４】
また、上記説明では、国が唯一の鍵管理サーバ１００を管理し、医者の代理でゲノム分析を行ったシーケンサ操作者が暗号化装置２００を利用する場合を想定していた。しかし、利用システムに応じて、システム構成は柔軟に変更することができる。例えば、シーケンサ操作者から検知結果を受け取った医者が暗号化装置２００を操作して患者ゲノム配列を暗号化してもよい。
【０１０５】
また、上記説明では、検索装置３００にユーザ秘密鍵を保管して、検索クエリ生成や暗号化データの復号も実施させるようにした。しかし、より安全性を高めるために、ユーザ秘密鍵の管理を検索装置３００ではなくＩＣカードなどのデバイスを用いて実施してもよい。この場合、ＩＣカード内で安全にユーザ秘密鍵が管理されるため、セキュリティの向上が図れる。
【０１０６】
また、上記説明では、検索端末で利用する秘匿検索用ユーザ秘密鍵は、ＳＮＶ情報やＳＶ情報やＮＣ情報などの検索で共通に使えるような鍵として生成した。しかし、各差分情報は長さが異なるため、共通の秘匿検索用ユーザ秘密鍵を用いるのではなく、ＳＮＶ情報秘匿検索用ユーザ秘密鍵やＳＶ情報秘匿検索用ユーザ秘密鍵やＮＣ情報秘匿検索用ユーザ秘密鍵など、用途に応じて秘匿検索用ユーザ秘密鍵を個別に生成してもよい。この場合、秘匿検索用ユーザ秘密鍵の長さが各情報の長さに最適化したものとなるため、演算時間が高速化される。
【０１０７】
また、上記説明では、グループ名やユーザ名を示す際に「Ａ製薬会社」や「田中」などの文字列を使って表現した。これは、実施例としての分かりやすさを優先したためで、実際には文字列だけでなく番号などのＩＤを利用してもよい。染色体番号などの他の要素も同様である。
【０１０８】
また、上記説明では、秘匿検索方式や暗号方式として階層的内積述語暗号を用いた場合の例を示した。しかし、同様の機能を持った暗号であれば、階層的内積述語暗号に限る必要はない。また、秘匿検索方式と暗号方式で、異なる方式を利用してもよい。
【０１０９】
また、上記説明では、ユーザＩＤ記憶部１５０において、ユーザの過去の属性情報も管理できるようにした。これは管理上必要な場合にのみ実施すればよく、現時点の属性情報のみ管理するようにしてもよい。
【０１１０】
また、上記説明では、全員が共通で１つの基準ゲノム配列を使用することを仮定して実施するケースを示した。しかし、異なる基準ゲノムを用いて実施することも可能である。この場合、暗号化する際は全ての基準ゲノム配列に対して差分情報を生成し、検索する場合はいずれかひとつの基準ゲノム配列との差分情報を検索クエリとすることも可能であるし、暗号化する際に一つの基準ゲノム配列との差分情報を生成し、検索する場合にすべての基準ゲノム配列との差分情報を検索クエリにすることも可能である。
【０１１１】
また、上記説明では、位置情報や信頼度やＣＮＶゲインなど範囲検索を必要とするものに関しては、ブロック化を行うことで、キーワードの完全一致で判定ができるようにした。しかし、検索したい範囲は用途によって異なることが想定されるため、必ずしも完全一致で検索できるようにする必要はない。例えば、暗号化時はブロック１０に属することを指定しつつも、検索時はブロック１０またはブロック１１の様に複数ブロックを検索範囲として指定するようにしてもよい。
【０１１２】
また、上記説明では、鍵管理サーバ１００が１台しか無いケースを想定した。しかし、秘匿検索方式や暗号化方式として用いた階層的内積述語暗号は、鍵管理サーバ１００を階層化して複数に分散して運用することも可能である。そのため、ここでも、鍵管理サーバ１００を複数に階層化して運用することも可能である。
【０１１３】
また、上記説明では、差分情報としてＳＮＶ情報や、ＳＶ情報や、ＮＣ情報を暗号化する例を示した。しかし、同様の仕組みによって、前記以外の差分情報を暗号化することも可能である。
【０１１４】
図２５は、鍵管理サーバ１００、暗号化装置２００、検索装置３００、データセンタ４００のハードウェア構成の一例を示す図である。
図２５に示すように、鍵管理サーバ１００、暗号化装置２００、検索装置３００、データセンタ４００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、ＬＣＤ９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０（固定ディスク装置）の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置９２０は、所定の固定ディスクインタフェースを介して接続される。
【０１１５】
ＲＯＭ９１３、磁気ディスク装置９２０は、不揮発性メモリの一例である。ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３とＲＡＭ９１４と磁気ディスク装置９２０とは、記憶装置（メモリ）の一例である。また、キーボード９０２、通信ボード９１５は、入力装置の一例である。また、通信ボード９１５は、通信装置の一例である。さらに、ＬＣＤ９０１は、表示装置の一例である。
【０１１６】
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【０１１７】
プログラム群９２３には、上記の説明において「マスター鍵生成部１１０」、「ユーザ秘密鍵生成部１３０」、「データ送受信部１４０」、「基準遺伝子取得部２１０」、「対象遺伝子入力部２２０」、「差分情報生成部２４０」、「差分情報エンコード部２５０」、「データ暗号化部２６０」、「暗号化タグ生成部２７０」、「タグ付き暗号化データ生成部２８０」、「差分情報入力部３１０」、「差分情報エンコード部３３０」、「検索クエリ生成部３４０」、「遺伝子情報取得部３５０」、「データ復号部３６０」、「保管要求処理部４１０」、「検索要求処理部４４０」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「鍵記憶部１２０」、「ユーザＩＤ記憶部１５０」、「公開パラメータ記憶部２３０」、「ユーザ秘密鍵記憶部３２０」、「暗号化データ記憶部４２０」、「暗号化タグ記憶部４３０」、「公開パラメータ記憶部４５０」、「アクセス権限記憶部４６０」等に記憶される情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０１１８】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【０１１９】
１０  遺伝子検索システム、１００  鍵管理サーバ、１１０  マスター鍵生成部、１２０  鍵記憶部、１３０  ユーザ秘密鍵生成部、１４０  データ送受信部、１５０  ユーザＩＤ記憶部、２００  暗号化装置、２１０  基準遺伝子取得部、２２０  対象遺伝子入力部、２３０  公開パラメータ記憶部、２４０  差分情報生成部、２５０  差分情報エンコード部、２６０  データ暗号化部、２７０  暗号化タグ生成部、２８０  タグ付き暗号化データ生成部、３００  検索装置、３１０  差分情報入力部、３２０  ユーザ秘密鍵記憶部、３３０  差分情報エンコード部、３４０  検索クエリ生成部、３５０  遺伝子情報取得部、３６０  データ復号部、４００  データセンタ、４１０  保管要求処理部、４２０
暗号化データ記憶部、４３０  暗号化タグ記憶部、４４０  検索要求処理部、４５０  公開パラメータ記憶部、４６０  アクセス権限記憶部、５００  ネットワーク。
【図１】
2014191670.tif 000003
【図２】
2014191670.tif 000004
【図３】
2014191670.tif 000005
【図４】
2014191670.tif 000006
【図５】
2014191670.tif 000007
【図６】
2014191670.tif 000008
【図７】
2014191670.tif 000009
【図８】
2014191670.tif 000010
【図９】
2014191670.tif 000011
【図１０】
2014191670.tif 000012
【図１１】
2014191670.tif 000013
【図１２】
2014191670.tif 000014
【図１３】
2014191670.tif 000015
【図１４】
2014191670.tif 000016
【図１５】
2014191670.tif 000017
【図１６】
2014191670.tif 000018
【図１７】
2014191670.tif 000019
【図１８】
2014191670.tif 000020
【図１９】
2014191670.tif 000021
【図２０】
2014191670.tif 000022
【図２１】
2014191670.tif 000023
【図２２】
2014191670.tif 000024
【図２３】
2014191670.tif 000025
【図２４】
2014191670.tif 000026
【図２５】
2014191670.tif 000027