特許第6467091号(P6467091)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社LIFULL Seniorの特許一覧

特許6467091情報処理装置、情報処理プログラム、及び情報処理方法
<>
  • 特許6467091-情報処理装置、情報処理プログラム、及び情報処理方法 図000002
  • 特許6467091-情報処理装置、情報処理プログラム、及び情報処理方法 図000003
  • 特許6467091-情報処理装置、情報処理プログラム、及び情報処理方法 図000004
  • 特許6467091-情報処理装置、情報処理プログラム、及び情報処理方法 図000005
  • 特許6467091-情報処理装置、情報処理プログラム、及び情報処理方法 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6467091
(24)【登録日】2019年1月18日
(45)【発行日】2019年2月6日
(54)【発明の名称】情報処理装置、情報処理プログラム、及び情報処理方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20190128BHJP
   H04L 9/14 20060101ALI20190128BHJP
   G06F 12/00 20060101ALI20190128BHJP
【FI】
   H04L9/00 601A
   H04L9/00 641
   G06F12/00 520A
   G06F12/00 537H
   G06F12/00 545A
【請求項の数】3
【全頁数】15
(21)【出願番号】特願2018-117707(P2018-117707)
(22)【出願日】2018年6月21日
【審査請求日】2018年7月25日
【早期審査対象出願】
(73)【特許権者】
【識別番号】517041349
【氏名又は名称】株式会社LIFULL Senior
(74)【代理人】
【識別番号】110000958
【氏名又は名称】特許業務法人 インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【弁理士】
【氏名又は名称】奥 和幸
(74)【代理人】
【識別番号】100173510
【弁理士】
【氏名又は名称】美川 公司
(72)【発明者】
【氏名】望月 義隆
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2013−255169(JP,A)
【文献】 特開2007−312128(JP,A)
【文献】 特開2003−348065(JP,A)
【文献】 国際公開第2009/125830(WO,A1)
【文献】 米国特許出願公開第2012/0047339(US,A1)
【文献】 張 一凡 ほか,秘密分散技術を用いた非集中化ストレージサービスの提案,マルチメディア,分散,協調とモバイル(DICOMO2016)シンポジウム論文集,日本,一般社団法人情報処理学会,2016年 6月29日,Vol.2016 No.1,2D−5,pp.359−365
【文献】 小坂 暢幸,究極のセキュリティ データベースの暗号化 指針と具体案 第5回,月刊自動認識,日本,日本工業出版株式会社,2007年 7月 2日,第20巻 第8号(通巻262号),pp.70−74
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 12/00
H04L 9/14
(57)【特許請求の範囲】
【請求項1】
鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管部が分散された分散システムにアクセス可能な情報処理装置であって、
何れかの前記シード値の保管場所を示すインデックス情報を取得するインデックス取得手段と、
前記インデックス情報に基づいて、データベースへの登録単位であるレコード単位、または前記レコード単位且つカラム単位で前記複数の保管部から前記保管されたそれぞれのシード値を取得するシード値取得手段と、
前記レコード単位、または前記レコード単位且つカラム単位で取得されたそれぞれのシード値を元に、前記レコード単位、または前記レコード単位且つカラム単位で鍵データを生成する鍵生成手段と、
前記レコード単位、または前記レコード単位且つカラム単位で生成された鍵データを用いて、前記レコード単位、または前記レコード単位且つカラム単位で、所定のデータを暗号化または暗号化されたデータを復号する処理手段と、
前記処理手段により暗号化されたデータと、当該データの暗号化に用いられた前記インデックス情報とを前記レコード毎に対応付けてデータベースに登録する登録手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管部が分散された分散システムにアクセス可能なコンピュータを、
何れかの前記シード値の保管場所を示すインデックス情報を取得するインデックス取得手段と、
前記インデックス情報に基づいて、データベースへの登録単位であるレコード単位、または前記レコード単位且つカラム単位で前記複数の保管部から前記保管されたそれぞれのシード値を取得するシード値取得手段と、
前記レコード単位、または前記レコード単位且つカラム単位で取得されたそれぞれのシード値を元に、前記レコード単位、または前記レコード単位且つカラム単位で鍵データを生成する鍵生成手段と、
前記レコード単位、または前記レコード単位且つカラム単位で生成された鍵データを用いて、前記レコード単位、または前記レコード単位且つカラム単位で、所定のデータを暗号化または暗号化されたデータを復号する処理手段と
前記処理手段により暗号化されたデータと、当該データの暗号化に用いられた前記インデックス情報とを前記レコード毎に対応付けてデータベースに登録する登録手段として機能させることを特徴とする情報処理プログラム。
【請求項3】
鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管部が分散された分散システムにアクセス可能なコンピュータにより実行される情報処理方法であって、
何れかの前記シード値の保管場所を示すインデックス情報を取得するステップと、
前記インデックス情報に基づいて、データベースへの登録単位であるレコード単位、または前記レコード単位且つカラム単位で前記複数の保管部から前記保管されたそれぞれのシード値を取得するステップと、
前記レコード単位、または前記レコード単位且つカラム単位で取得されたそれぞれのシード値を元に、前記レコード単位、または前記レコード単位且つカラム単位で鍵データを生成するステップと、
前記レコード単位、または前記レコード単位且つカラム単位で生成された鍵データを用いて、前記レコード単位、または前記レコード単位且つカラム単位で、所定のデータを暗号化または暗号化されたデータを復号するステップと、
前記暗号化されたデータと、当該データの暗号化に用いられた前記インデックス情報とを前記レコード毎に対応付けてデータベースに登録するステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動的に鍵データを生成して所定のデータを暗号化する方法等の技術分野に関する。
【背景技術】
【0002】
ネットワーク技術とコンピュータ技術の発展に伴い、近年ではより暗号化技術が重要な項目として位置付けられている。特許文献1には、クラウド計算機環境のように多人数がアクセス可能な分散計算機システムにおいて、各分散ノードが実施する分散処理の過程におけるデータセキュリティを一貫して保ちつつ、暗号鍵を柔軟に変更することができるデータ処理システムが開示されている。このデータ処理システムは、アプリケーションプログラムの入出力データと鍵との間の対応関係を記述したプロセス識別子を鍵管理データベースによって管理しており、各分散ノードは、鍵管理データベースが管理している対応関係にしたがって必要な鍵を鍵管理データベースから取得して、アプリケーションプログラムの入出力データを暗号化または復号するようになっている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】国際公開2015/162688号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、鍵データを保管しているシステムのいずれか1つでも機密上の脆弱性を有する場合、鍵データが漏洩する可能性がある。また、万が一、鍵データが漏洩した場合、この鍵データにより暗号化データが復号される可能性がある。
【0005】
そこで、本発明は、以上の点等に鑑みてなされたものであり、鍵データの管理上のセキュリティを向上させることが可能な情報処理装置、情報処理プログラム、及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管部が分散された分散システムにアクセス可能な情報処理装置であって、何れかの前記シード値の保管場所を示すインデックス情報を取得するインデックス取得手段と、記インデックス情報に基づいて、データベースへの登録単位であるレコード単位、または前記レコード単位且つカラム単位で前記複数の保管部から前記保管されたそれぞれのシード値を取得するシード値取得手段と、前記レコード単位、または前記レコード単位且つカラム単位で取得されたそれぞれのシード値を元に、前記レコード単位、または前記レコード単位且つカラム単位で鍵データを生成する鍵生成手段と、前記レコード単位、または前記レコード単位且つカラム単位で生成された鍵データを用いて、前記レコード単位、または前記レコード単位且つカラム単位で、所定のデータを暗号化または暗号化されたデータを復号する処理手段と、前記処理手段により暗号化されたデータと、当該データの暗号化に用いられた前記インデックス情報とを前記レコード毎に対応付けてデータベースに登録する登録手段と、を備えることを特徴とする。
【0009】
請求項に記載の発明は、鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管部が分散された分散システムにアクセス可能なコンピュータを、何れかの前記シード値の保管場所を示すインデックス情報を取得するインデックス取得手段と、前記インデックス情報に基づいて、データベースへの登録単位であるレコード単位、または前記レコード単位且つカラム単位で前記複数の保管部から前記保管されたそれぞれのシード値を取得するシード値取得手段と、前記レコード単位、または前記レコード単位且つカラム単位で取得されたそれぞれのシード値を元に、前記レコード単位、または前記レコード単位且つカラム単位で鍵データを生成する鍵生成手段と、前記レコード単位、または前記レコード単位且つカラム単位で生成された鍵データを用いて、前記レコード単位、または前記レコード単位且つカラム単位で、所定のデータを暗号化または暗号化されたデータを復号する処理手段と、前記処理手段により暗号化されたデータと、当該データの暗号化に用いられた前記インデックス情報とを前記レコード毎に対応付けてデータベースに登録する登録手段として機能させることを特徴とする。
【0010】
請求項に記載の発明は、鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管部が分散された分散システムにアクセス可能なコンピュータにより実行される情報処理方法であって、何れかの前記シード値の保管場所を示すインデックス情報を取得するステップと、前記インデックス情報に基づいて、データベースへの登録単位であるレコード単位、または前記レコード単位且つカラム単位で前記複数の保管部から前記保管されたそれぞれのシード値を取得するステップと、前記レコード単位、または前記レコード単位且つカラム単位で取得されたそれぞれのシード値を元に、前記レコード単位、または前記レコード単位且つカラム単位で鍵データを生成するステップと、前記レコード単位、または前記レコード単位且つカラム単位で生成された鍵データを用いて、前記レコード単位、または前記レコード単位且つカラム単位で、所定のデータを暗号化または暗号化されたデータを復号するステップと、前記暗号化されたデータと、当該データの暗号化に用いられた前記インデックス情報とを前記レコード毎に対応付けてデータベースに登録するステップと、を含むことを特徴とする。
【発明の効果】
【0011】
本発明によれば、鍵データの管理上のセキュリティを向上させることができる。
【図面の簡単な説明】
【0012】
図1】通信システムSの概要構成の一例を示す図である。
図2】(A)は、IDリストの一例を示す図であり、(B)は、あるレコードのデータを暗号化するための鍵データの生成に用いられるインデックス情報の一例を示す図である。
図3】管理システムMSにより実行されるレコード登録処理の一例を示すフローチャートである。
図4】管理システムMSにより実行されるレコード取得処理の一例を示すフローチャートである。
図5】管理システムMSにより実行されるレコード更新処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の一実施形態について詳細に説明する。なお、以下に説明する実施の形態は、通信システムに対して本発明を適用した場合の実施形態である。
【0014】
[1.通信システムSの構成及び機能]
先ず、図1等を参照して、本実施形態に係る通信システムSの構成及び機能について説明する。図1は、通信システムSの概要構成の一例を示す図である。図1に示すように、通信システムSは、分散システムDIS、DBシステムDBS、及び管理システムMS等を備えて構成されている。
【0015】
分散システムDISには、鍵データを生成するための元となる1つ以上のシード値を保管する複数の保管システム(保管部の一例)Dn(n=1,2,3・・・k)が分散されている。ここで、鍵データは、例えば共通鍵暗号方式の暗号鍵であり(復号鍵でもある)、再現可能な複数のバイト列から構成される。シード値は、例えば乱数生成器により生成された乱数(ランダムな値)であるとよい。図1の例では、保管システムDnには、それぞれ、値の異なる複数のシード値が保管されている。保管システムDnに保管されるそれぞれのシード値のデータ長は同一(固定長)であるとよい。1つの保管システムDnに保管されるシード値の数は、特に限定されるものではないが、例えば数十〜数千の間の数となる。また、保管システムDnに保管されているシード値のうち古くなったシード値は削除されるように構成してもよく、また、新たなシード値が追加して保管されるように構成してもよい。なお、図1の例では、保管システムDnは、それぞれ、CPU(Central Processing Unit)、及びシード値を保管するための記憶部(例えば、ハードディスク)等を有するサーバコンピュータを主体として構成され、物理的に分離していることを想定しているが、シード値を保管する複数の保管部(記憶部)が1つのサーバコンピュータ内に備えられて分散(物理的に分離)されていてもよい(言い換えれば、分散システムDISは、複数のシード値を保管するストレージであってもよい)。なお、保管システムDnには、それぞれ、固有のシステムID(識別情報)が付与されており、保管システムDnに保管されるシード値には、それぞれ、固有のシードIDが付与されている。
【0016】
DBシステムDBSは、DB(データベース)を備えている。図1の例では、DBシステムDBSは、CPU、及びDBに用いられる記憶部等を有するサーバコンピュータを主体として構成されることを想定しており、また、DBは、データをテーブル形式(つまり、レコード(行)とカラム(列)から構成される形式)で登録(格納)するリレーショナルデータベースであることを想定している。レコードは、DBへの登録単位(最小単位)である。1レコードは、例えば1件分のデータに相当し、1件分のデータは、カラム(例えば、顧客等の氏名、住所、電話番号、メールアドレス等のカラム名)毎に区分される。図1の例では、DBに登録されている各レコードRC1〜RC8は、鍵データを生成するために必要な情報(後述するインデックス情報等)を格納する鍵生成情報保管部と、鍵データにより暗号化されたデータ(つまり、暗号化データ)を格納する暗号情報保管部とから構成され、各レコードRC1〜RC8には、レコード固有情報等が付与されている。例えば、レコードに顧客等の情報(例えば、個人情報)が格納される場合、レコード固有情報は、顧客等に固有のIDであってもよい。なお、図1の例では、1つのレコードにおいて、鍵生成情報保管部と暗号情報保管部とが1対1で対応しているが、両者の関係を定義できれば、これに限定されない。例えば、複数に分割された鍵生成情報保管部と、1つの暗号情報保管部とから1つのレコードが構成されてもよいし、1つの鍵生成情報保管部と、複数に分割された暗号情報保管部とから1つのレコードが構成されてもよい。また、鍵生成情報保管部と、暗号情報保管部とが複数のレコードに分割されてもよい。
【0017】
管理システムMSは、鍵生成処理部M1、暗号・復号処理部M2、及びレコード処理部M3を備えている。なお、システムの可用性を確保するため、管理システムMSは、同一の機能(つまり、鍵生成処理部M1、暗号・復号処理部M2、及びレコード処理部M3)を備える複数のノードにより構成(冗長化して構成)されてもよい。図1の例では、管理システムMSは、CPU、及び記憶部等を有するサーバコンピュータ(本発明の情報処理装置の一例)を主体として構成されることを想定しており、各保管システムDn、及びDBシステムDBSとの間で、例えばローカルエリアネットワークを介して通信可能になっている。なお、管理システムMSとDBシステムDBSとは、1台のコンピュータシステムに統合されてもよい。また、管理システムMSは、Webサーバ、及びオペレータ端末との間で、例えばローカルエリアネットワークを介して通信可能になっている。管理システムMSの記憶部には、オペレーティングシステム、アプリケーションプログラム、及び各種データが記憶されている。各種データには、DBシステムDBSのアドレス情報、分散システムDISのアドレス情報、及び分散システムDISのIDリストが含まれる。DBシステムDBSのアドレス情報は、DBシステムDBSへアクセスするための宛先アドレスを示す。分散システムDISのアドレス情報は、分散システムDISにおける各保管システムDnへアクセスするための宛先アドレスを示す。分散システムDISのIDリストは、分散システムDISにおける各保管システムDnのシステムID、及び各保管システムDnに保管されるシード値のシードIDを示す。なお、各保管システムDnの宛先アドレスとシステムIDとは対応付けられている。
【0018】
図2(A)は、IDリストの一例を示す図である。図2(A)に示すように、IDリストには、各保管システムDnのシステムID、及び各保管システムDnに保管されるシード値のシードIDが記述されている。なお、保管システムDnに保管されるシード値のシードIDは、システムIDに対応付けられているので、保管システムDn間でシードIDは重複してもよい(例えば、保管システムD1におけるシード値のシードIDと、保管システムD2におけるシード値のシードIDとは重複してもよい)。
【0019】
鍵生成処理部M1、暗号・復号処理部M2、及びレコード処理部M3は、それぞれ、オペレーティングシステム上で実行されるアプリケーションプログラム(本発明の情報処理プログラムの一例)の一機能として動作するソフトウェアモジュールである。鍵生成処理部M1は、本発明におけるインデックス取得手段、シード値取得手段、及び鍵生成手段の一例である。暗号・復号処理部M2は、本発明の処理手段の一例である。レコード処理部M3は、本発明における登録手段の一例である。鍵生成処理部M1は、DBシステムDBSにおけるDBに登録されるべきデータを暗号化するための鍵データ、または、当該DBに登録されている暗号化データを復号するための鍵データを生成する。ここで、データの暗号化は、レコード毎(または、レコード毎且つカラム毎)に行われる。そのため、鍵データは、レコード毎(または、レコード毎且つカラム毎)に異なるように生成される。なお、全レコードにおける一部の複数レコード間で鍵データが共通(例えば、10レコード単位で鍵データが共通)であってもよい。鍵生成処理部M1は、鍵データの生成にあたり、鍵データを生成するための元となる複数のシード値のそれぞれの保管場所(所在)を示すインデックス情報を取得する。なお、DBに登録されるべきデータを暗号化する場合、インデックス情報は、管理システムMSの内部または外部で予め生成されることで取得される。一方、DBに登録されている暗号化データを復号する場合、インデックス情報は、当該暗号化データを格納する暗号情報保管部に対応付けられた鍵生成情報保管部から取得される。
【0020】
図2(B)は、あるレコードのデータを暗号化するための鍵データの生成に用いられるインデックス情報の一例を示す図である。図2(B)の例では、シード値の保管場所は、システムIDとシードIDとの組により示されており、これにより、鍵データを生成するための元となるシード値がどの保管システムDnに保管されているかを特定することができる。つまり、図2(B)に示すインデックス情報から、鍵データを生成するための元となるシード値は、保管システムD2(システムID“002”)におけるシードID“0103”、シードID“0104”、シードID“0107”、及びシードID“0113”のそれぞれに対応するシード値、並びに、保管システムD3(システムID“003”)におけるシードID“0304”、シードID“0314”、シードID“0347”、及びシードID“0377”のそれぞれに対応するシード値等であることが分かる。なお、図2(B)の例は、レコード毎に(つまり、レコード単位で)データを暗号化するための鍵データの生成に用いられるインデックス情報を示すが、別の例として、レコード毎且つカラム毎に(つまり、レコード単位且つカラム単位で)データを暗号化するための鍵データの生成に用いられるインデックス情報は、例えば、カラム名(カラムIDでもよい)とシステムIDとシードIDとの組をカラム毎に区別して示すことになる。
【0021】
鍵生成処理部M1は、取得したインデックス情報に基づいて、分散システムDISに分散して保管されたそれぞれのシード値を複数の保管システムDnから取得する。そして、鍵生成処理部M1は、取得されたそれぞれのシード値を元に鍵データを生成(つまり、取得されたそれぞれのシード値を使用して鍵データを生成)する。例えば、鍵生成処理部M1は、取得した複数のシード値を所定の順序で連結し、連結されたシード値を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値(ハッシュ値)を鍵データとして得る。ここで、所定の順序とは、例えば、図2(B)に示すインデックス情報に記述されるシードIDの順序(“0103”,“0104”,“0107”,“0113”,“0304”,“0314”,“0347”,“0377”・・・の順)である。つまり、この場合のインデックス情報には、シード値の連結順序を示す情報が含まれることになる。暗号学的ハッシュ関数としては、例えば、SHA−256が用いられる。SHA−256は、任意長の長さのデータを入力すると、256ビットのハッシュ値を出力するものである。なお、鍵生成処理部M1は、上述したように、暗号学的ハッシュ関数から出力された戻り値を取得し、取得した戻り値から鍵データの長さに相当する所定長のバイト列を切り出し(例えば、予め定められたバイト位置(先頭位置でもよい)から切り出す)、切り出した値を鍵データとして得てもよい。或いは、鍵生成処理部M1は、取得した複数のシード値を所定の順序で連結し、暗号学的ハッシュ関数を用いることなく、連結したシード値から鍵データの長さに相当する所定長のバイト列を切り出し、切り出した値を鍵データとして得てもよい。
【0022】
暗号・復号処理部M2は、鍵生成処理部M1により生成されたレコード毎(または、レコード毎且つカラム毎)の鍵データを用いて、DBに登録されるべき所定のデータをレコード毎(または、レコード毎且つカラム毎)に、所定の暗号方式(暗号アルゴリズム)にしたがって暗号化する。ここで、暗号方式としては、例えば、共通鍵暗号方式であるAES(Advanced Encryption Standard)またはDES(Data Encryption Standard)が用いられる。また、暗号・復号処理部M2は、鍵生成処理部M1により生成されたレコード毎(または、レコード毎且つカラム毎)の鍵データを用いて、DBに登録されている暗号化データをレコード毎(または、レコード毎且つカラム毎)に、上記暗号方式にしたがって復号する。
【0023】
DBに登録されるべきデータが暗号化された場合、レコード処理部M3は、その暗号化データを格納する暗号情報保管部と、当該暗号化に用いられた鍵データの生成に用いられたインデックス情報を格納する鍵生成情報保管部とから構成されるレコードを生成し、生成したレコードを、DBシステムDBSにおけるDBに登録させる。一方、DBから取得されたレコード中の暗号化データが復号された場合、レコード処理部M3は、復号されたデータを、管理システムMSとの間でセキュリティ通信路が形成されたWebサーバまたはオペレータ端末へ送信する。
【0024】
[2.通信システムSの動作]
次に、通信システムSの動作について説明する。
【0025】
(2.1 レコード登録処理)
先ず、図3を参照して、レコードがDBに新規登録される場合のレコード登録処理について説明する。図3は、管理システムMSにより実行されるレコード登録処理の一例を示すフローチャートである。図3に示す処理は、例えば、管理システムMSとの間でセキュリティ通信路が形成されたWebサーバまたはオペレータ端末からのレコード登録要求を受信した場合に開始される。レコード登録要求には、新たに追加される所定件数分のデータが付加されている。このようなデータは、例えば、Webサーバがクライアント端末から受信したデータ、または、オペレータ端末に入力されたデータである。
【0026】
図3に示す処理が開始されると、鍵生成処理部M1は、鍵データを生成するための元となる複数のシード値のそれぞれの保管場所を示すインデックス情報を取得する(ステップS1)。例えば、鍵生成処理部M1は、IDリストに記述されているシステムID及びシードIDの中から、システムIDとシードIDとの組(換言すると、どの保管システムDn内のどのシード値を使用するかを示す組)をレコード毎(つまり、レコード登録要求に示される件数分のレコード毎)に区別して選定し、選定した組を記述するインデックス情報をレコード毎に生成する。なお、レコード毎且つカラム毎に鍵データを生成する場合、システムIDとシードIDとの組は、レコード毎且つカラム毎に区別されて選定される。
【0027】
ここで、システムIDとシードIDとの組の選定方法の具体例について説明する。例えば、鍵生成処理部M1は、IDリスト中の複数のシステムIDの中から1つのシステムIDをランダムで選定し、選定したシステムIDに対応付けられている(IDリスト中で対応付けられている)複数のシードIDの中から予め定められた数(複数)のシードIDをランダムで選定するという処理を、予め設定された回数(2回以上)行うことで1レコード(または、1レコードの1カラム)分の組を選定する。換言すると、複数の保管システムDnの中から2つ以上の保管システムDnがランダムで選定され、選定された保管システムDn毎に保管されている複数のシード値の中から予め定められた数のシード値が選定される。このような選定がレコード登録要求に示される件数(または、当該件数×カラム数)分、行われる。これにより、選定されるシステムID及びシードIDが、レコード内またはレコード間で分散される(1つのシステムIDやシードIDに集中しない)ようにすることができ、セキュリティを向上させることができる。このような選定において、1回選定されたシステムID及びシードIDは、以降、所定回数選定されないように構成してもよい。
【0028】
次いで、鍵生成処理部M1は、ステップS1で取得されたインデックス情報に基づいて、分散システムDISに分散して保管されたそれぞれのシード値を複数の保管システムDnからレコード毎(または、レコード毎且つカラム毎)に取得(収集)する(ステップS2)。例えば、鍵生成処理部M1は、ステップS1で取得したインデックス情報に示されるシステムID毎に、システムIDに対応する保管システムDnにアクセス(上記アドレス情報を用いてアクセス)してインデックス情報に示されるシードIDを含むシード値要求を送信することで、対象となる各保管システムDnに保管されるシード値を各保管システムDnから取得する。なお、分散システムDISが例えば1つのサーバコンピュータにより構成される場合、鍵生成処理部M1は、分散システムDISにアクセスしてインデックス情報を含むシード値要求を送信することで、対象となる各保管システムDnに保管されるシード値を分散システムDISから取得することになる。
【0029】
次いで、鍵生成処理部M1は、ステップS2でレコード毎(または、レコード毎且つカラム毎)に取得されたそれぞれのシード値を元に鍵データをレコード毎(または、レコード毎且つカラム毎)に生成(つまり、動的に生成)する(ステップS3)。例えば、上述したように、鍵生成処理部M1は、取得した複数のシード値を所定の順序で連結し、連結されたシード値を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値を鍵データとして得る。これにより、鍵データが生成される。
【0030】
別の例として、鍵生成処理部M1は、上述したように連結したシード値に、暗号強度を高めるためのソルト値を更に連結し、連結されたシード値とソルト値を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値を鍵データとして得てもよい。ここで、ソルト値の例として、データを暗号化するための鍵データを生成する直前に鍵生成処理部M1が生成する乱数、或いはデータを暗号化するための鍵データの生成する直前に鍵生成処理部M1が取得するタイムスタンプなどが挙げられる。鍵データの生成にソルト値を用いることによって、より一層、ハッシュ空間で戻り値を分散させる(つまり、戻り値の衝突を防ぐ)ことができ、暗号強度を高めることができる。
【0031】
或いは、鍵生成処理部M1は、上述したように連結したシード値に、暗号強度を高めるためのソルト値に加えて、暗号強度を高めるための固有値を更に連結(ソルト値を連結せず、シード値に固有値を連結してもよい)し、連結されたシード値とソルト値と固有値(または、連結されたシード値と固有値)を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値を鍵データとして得てもよい。ここで、固有値の例として、管理システムMSまたはアプリケーションプログラムに固有の文字列(外部から取得できない文字列)が挙げられる。鍵データの生成に固有値を用いることによっても、暗号強度を高めることができる。なお、鍵データがレコード毎且つカラム毎に生成される場合、固有値は、暗号対象となるデータが保持されるカラムのカラム名(カラムIDでもよい)であってもよい。
【0032】
次いで、暗号・復号処理部M2は、ステップS3で生成されたレコード毎(または、レコード毎且つカラム毎)の鍵データを用いて、レコード登録要求に付加された所定件数分のデータをレコード毎(または、レコード毎且つカラム毎)に所定の暗号方式にしたがって暗号化する(ステップS4)。次いで、レコード処理部M3は、ステップS4で暗号化された暗号化データを格納する暗号情報保管部と、ステップS3において鍵データの生成に用いられたインデックス情報を格納する鍵生成情報保管部とから構成されるレコード(登録用のレコード)を、レコード登録要求に付加された所定件数分、生成する(ステップS5)。なお、ステップS3における鍵データの生成の際にソルト値が用いられた場合、鍵生成情報保管部には、インデックス情報及びソルト値が格納される。
【0033】
次いで、レコード処理部M3は、DBシステムDBSにアクセスしてステップS5で生成されたレコードが付加された登録要求を送信することで、当該生成されたレコードをDBに登録させる(ステップS6)。これにより、例えば、図1に示すように、鍵生成情報保管部と暗号情報保管部とから構成されるレコードが新たにDBに登録される。或いは、複数に分割された鍵生成情報保管部と1つの暗号情報保管部とから構成されるレコード、或いは1つの鍵生成情報保管部と複数に分割された暗号情報保管部とから構成されるレコードが新たにDBに登録される。
【0034】
(2.2 レコード取得処理)
次に、図4を参照して、レコードがDBから取得される場合のレコード取得処理について説明する。図4は、管理システムMSにより実行されるレコード取得処理の一例を示すフローチャートである。図4に示す処理は、例えば、管理システムMSとの間でセキュリティ通信路が形成されたWebサーバまたはオペレータ端末からのレコード取得要求を受信した場合に開始される。レコード取得要求には、例えば取得対象となるレコードのレコード固有情報が含まれている。レコード固有情報は、例えば、Webサーバがクライアント端末から受信した情報、または、オペレータ端末に入力された情報である。
【0035】
図4に示す処理が開始されると、レコード処理部M3は、DBシステムDBSにアクセスして上記レコード取得要求を送信することで、上記レコード固有情報に対応するレコードであって鍵生成情報保管部と暗号情報保管部とから構成されるレコードをDBから取得する(ステップS11)。これにより、鍵データを生成するための元となる複数のシード値のそれぞれの保管場所を示すインデックス情報(または、インデックス情報及びソルト値)と、当該インデックス情報に対応付けられた暗号化データとが取得されることになる。次いで、鍵生成処理部M1は、ステップS11で取得されたインデックス情報に基づいて、分散システムDISに分散して保管されたそれぞれのシード値を複数の保管システムDnからレコード毎(または、レコード毎且つカラム毎)に取得する(ステップS12)。
【0036】
次いで、鍵生成処理部M1は、ステップS12でレコード毎(または、レコード毎且つカラム毎)に取得されたそれぞれのシード値を元に鍵データをレコード毎(または、レコード毎且つカラム毎)に生成(つまり、動的に生成)する(ステップS13)。例えば、鍵生成処理部M1は、取得した複数のシード値を所定の順序で連結し、連結されたシード値を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値を鍵データとして得る。なお、鍵データの生成にソルト値を用いる場合、鍵生成処理部M1は、上述したように連結したシード値に、ステップS11で取得されたソルト値を更に連結し、連結されたシード値とソルト値を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値を鍵データとして得る。或いは、鍵データの生成に固有値を用いる場合、鍵生成処理部M1は、上述したように連結したシード値(または、連結されたシード値とソルト値)に、上述した固有値(例えば、管理システムMSまたはアプリケーションプログラムに固有の文字列)を更に連結し、連結されたシード値と固有値(または、連結されたシード値とソルト値と固有値)を引数として暗号学的ハッシュ関数に入力することにより当該暗号学的ハッシュ関数から出力された戻り値を鍵データとして得る。
【0037】
次いで、暗号・復号処理部M2は、ステップS13で生成されたレコード毎(または、レコード毎且つカラム毎)の鍵データを用いて、ステップS11で取得された暗号化データをレコード毎(または、レコード毎且つカラム毎)に所定の暗号方式にしたがって復号する(ステップS14)。次いで、レコード処理部M3は、ステップS14で復号されたデータを、レコード取得要求元へ送信する(ステップS15)。
【0038】
なお、上述したレコード登録処理及びレコード取得処理では、鍵データ生成の度に各シード値が保管システムDnから取得される例を示したが、各シード値は事前に保管システムDnから取得されて管理システムMSのメモリ内に一定時間キャッシュ(記憶)されるようにしておき(つまり、一定時間経過後にシード値は消失)、鍵生成処理部M1は、当該記憶されたそれぞれのシード値を元に鍵データを生成するように構成してもよい。この構成によれば、処理の高速化を図ることができる。
【0039】
(2.3 レコード更新処理)
次に、図5を参照して、シード値の更新される場合のレコード更新処理について説明する。図5は、管理システムMSにより実行されるレコード更新処理の一例を示すフローチャートである。なお、管理システムMSが複数のノードにより構成される場合、レコード更新処理は、当該複数のノードのうち、何れか1つのマスターノードにより実行され、その結果が他のノードにより共有されるとよい。また、レコード更新処理の前提として、管理システムMSは、情報管理手段として、管理システムMSのメモリ内に各シード値の状態情報及び日時情報を例えばシードIDに対応付けて記憶し管理しているものとする。ここで、シード値の状態情報は、例えば、「利用可能」、「利用停止」、及び「廃止」の状態(ステータス)のうち、何れか1つの状態を示す。「利用可能」とは、そのシード値を使用した暗号化及び復号が許可されている状態である。「利用停止」とは、そのシード値を使用した復号のみが許可され、当該シード値を使用した暗号化が許可されていない状態である。「廃止」とは、そのシード値が廃止(つまり、暗号化及び復号のいずれにも使用不可)された状態である。また、シード値の日時情報は、例えば、当該シード値が生成された日時(以下、「生成日時」という)を示す。或いは、シード値が事前に保管システムDnから取得されて管理システムMSのメモリ内に一定時間キャッシュされるケースでは、シード値の日時情報は、例えば、当該シード値がキャッシュされた日時(以下、「キャッシュ日時」という)を示す。
【0040】
図5に示す処理は、例えば、管理システムMSが有するタイマーを用いて所定期間間隔で実行される。図5に示す処理が開始されると、レコード処理部M3は、更新対象特定手段として、上記状態情報が「利用可能」を示しているシード値のうち、上記日時情報が示す生成日時またはキャッシュ日時が所定条件を満たすシード値を更新対象として特定(例えば、シードIDで特定)する(ステップS31)。ここで、所定条件の例として、例えば、(i)生成日時またはキャッシュ日時が最も古いものから所定順位以内に入ること(最も古いもの1つだけでもよい)、(ii)生成日時またはキャッシュ日時から現在時刻までの時間が所定時間(例えば、数か月)以上であること、などが挙げられる。次いで、レコード処理部M3は、状態情報変更手段として、更新対象のシード値(つまり、ステップS31で更新対象として特定されたシード値)の状態情報を、「利用可能」から「利用停止」に変更する(ステップS32)。
【0041】
次いで、レコード処理部M3は、更新対象のシード値(つまり、状態情報が「利用停止」に変更されたシード値)のシードIDが記述されたインデックス情報を含む鍵生成情報保管部と暗号化データを含む暗号情報保管部とから構成されるレコード(つまり、「利用停止」状態に変更されたシード値が使用された鍵データにより暗号化されている1または複数のレコード)をDBから取得する(ステップS33)。なお、シード値が事前に保管システムDnから取得されて管理システムMSのメモリ内に一定時間キャッシュされるケースでは、ステップS33の処理は、状態情報が「利用停止」に変更されてから一定時間(例えば、キャッシュされているシード値が消失されるまでの時間+α)経過後に実行されることになる。
【0042】
次いで、鍵生成処理部M1は、ステップS33で取得されたインデックス情報に基づいて、分散システムDISに分散して保管されたそれぞれのシード値(「利用可能」状態にあるシード値ばかりでなく、「利用停止」状態に変更されたシード値も含む)を複数の保管システムDnからレコード毎(または、レコード毎且つカラム毎)に取得する(ステップS34)。なお、シード値が事前に保管システムDnから取得されて管理システムMSのメモリ内に一定時間キャッシュされるケースでは、ステップS34において、キャッシュされているシード値の中から、ステップS33で取得されたインデックス情報に基づいて、使用されるシード値がレコード毎(または、レコード毎且つカラム毎)に取得されることになる。
【0043】
次いで、鍵生成処理部M1は、ステップS34でレコード毎(または、レコード毎且つカラム毎)に取得されたそれぞれのシード値を元に鍵データをレコード毎(または、レコード毎且つカラム毎)に生成する(ステップS35)。なお、ステップS35の処理では、ステップS13の処理と同様、ソルト値または固有値が用いられる場合もある。次いで、暗号・復号処理部M2は、ステップS35で生成された、レコード毎(または、レコード毎且つカラム毎)の鍵データを用いて、ステップS33で取得された暗号化データをレコード毎(または、レコード毎且つカラム毎)に所定の暗号方式にしたがって復号する(ステップS36)。
【0044】
次いで、鍵生成処理部M1は、鍵データ(つまり、ステップS36で復号されたデータを再暗号化するための鍵データ)を生成するための元となる複数のシード値(「利用可能」状態にあるシード値)のそれぞれの保管場所を示すインデックス情報を再取得する(ステップS37)。例えば、鍵生成処理部M1は、IDリストに記述されているシステムID及びシードIDの中から、システムIDとシードID(「利用可能」状態にあるシード値のシードID)との組をレコード毎に区別して選定(例えば、上述したように、ランダムで選定)し、選定した組を記述するインデックス情報をレコード毎に生成する。
【0045】
次いで、鍵生成処理部M1は、ステップS37で再取得されたインデックス情報(「利用可能」状態にある複数のシード値のそれぞれの保管場所を示すインデックス情報)に基づいて、分散システムDISに分散して保管されたそれぞれのシード値を複数の保管システムDnからレコード毎(または、レコード毎且つカラム毎)に再取得する(ステップS38)。次いで、鍵生成処理部M1は、ステップS38でレコード毎(または、レコード毎且つカラム毎)に再取得されたそれぞれのシード値を元に鍵データをレコード毎(または、レコード毎且つカラム毎)に再生成する(ステップS39)。上述したように、シード値が変更されたので、ステップS39で生成される鍵データは、ステップS35で生成された鍵データとは異なる。なお、ステップS39の処理では、ステップS13の処理と同様、ソルト値または固有値が用いられる場合もある。
【0046】
次いで、暗号・復号処理部M2は、ステップS39で再生成された、レコード毎(または、レコード毎且つカラム毎)の鍵データを用いて、ステップS36で復号されたデータをレコード毎(または、レコード毎且つカラム毎)に所定の暗号方式にしたがって再暗号化する(ステップS40)。次いで、レコード処理部M3は、ステップS40で再暗号化された暗号化データを格納する暗号情報保管部と、ステップS39において鍵データの再生成に用いられたインデックス情報を格納する鍵生成情報保管部とから構成されるレコード(更新用のレコード)を再生成する(ステップS41)。なお、ステップS39における鍵データの生成の際にソルト値が用いられた場合、鍵生成情報保管部には、インデックス情報及びソルト値が格納される。次いで、レコード処理部M3は、DBシステムDBSにアクセスしてステップS41で再生成されたレコードが付加された更新要求を送信することで、当該再生成されたレコードにより、DBに登録されているレコードを更新(上書き)させる(ステップS42)。こうして、レコードが更新されると、更新対象のシード値(つまり、ステップS31で更新対象として特定されたシード値)の状態情報が、「利用停止」から「廃止」に変更される。このように、状態情報が「廃止」に変更されたシード値は、上述したレコード登録処理によりレコードが新規登録される場合に使用されない。
【0047】
以上説明したように、上記実施形態によれば、管理システムMSは、鍵データを生成するための元となるシード値の保管場所を示すインデックス情報に基づいて、分散保管されたそれぞれのシード値を複数の保管システムDnから取得し、取得されたそれぞれのシード値を元に鍵データを動的に生成し、生成された鍵データを用いて、所定のデータを暗号化または暗号化されたデータを復号するように構成したので、鍵データの管理上のセキュリティを向上させることができる。すなわち、本実施形態によれば、鍵データ自体は保管されていないので、鍵データの漏洩を防止することができる。また、本実施形態では、鍵データの元になるシード値が分散保管されているので、全てのシード値が漏洩する可能性は極めて低く、万が一、鍵データの元になる全てのシード値が漏洩した場合であっても、インデックス情報及び鍵データの生成アルゴリズムが漏洩しなければ、鍵データを再現することは極めて困難である。仮に、鍵データの元になる全てのシード値、インデックス情報及び鍵データの生成アルゴリズムが漏洩した場合であっても、レコード毎(または、レコード毎且つカラム毎)に鍵データが生成されるので、その影響を最小限に抑えることができる。
【0048】
また、上記実施形態では、DBに登録された複数のレコードのそれぞれに含まれるインデックス情報により特定可能な各シード値の日時情報を少なくとも管理し、当該日時情報が示す日時が所定条件を満たす(例えば、生成日時またはキャッシュ日時が最も古い)シード値を更新対象として特定するように構成したので、更新対象のシード値を元に生成された鍵データにより暗号化された暗号化データを含むレコードの更新処理を適宜行うことが可能となり、セキュリティを維持することができる。すなわち、管理システムMSは、更新対象のシード値を特定できるインデックス情報と暗号化データとを含むレコードをDBから取得し、取得されたインデックス情報により特定できた複数のシード値を元に鍵データを生成し、生成された鍵データを用いて、当該暗号化データを復号する。そして、管理システムMSは、復号されたデータを再暗号化するための鍵データを生成するための元となる複数のシード値(上記更新対象のシード値を除く)のそれぞれの保管場所を示すインデックス情報を再取得し、再取得されたインデックス情報に基づいて、それぞれのシード値を複数の保管システムDnから再取得し、再取得されたそれぞれのシード値を元に鍵データを再生成し、再生成された鍵データを用いて、上記復号されたデータを再暗号化し、再暗号化された暗号化データと、鍵データの再生成に用いられたインデックス情報とを含むレコードにより、既にDBに登録されているレコードを更新する。
【0049】
なお、以上のように本発明の一実施形態を説明したが、本発明は上記実施形態に限定されるものではなく(もちろん上述したシステム以外にも適用可能である)、本発明の要旨を逸脱しない範囲で上記実施形態から種々構成等に変更を加えてもよく、その場合も本発明の技術的範囲に含まれる。例えば、本発明は、ファイルに格納されるデータを暗号化または復号する場合にも適用可能である。なお、再現可能な複数のバイト列から構成されるデータの例として暗号の初期ベクトルがあるが、このような初期ベクトルを生成する場合にも、本発明を適用することで、分散保管されたそれぞれのシード値を元に初期ベクトルを生成するように構成してもよい。
【符号の説明】
【0050】
M1 鍵生成処理部
M2 暗号・復号処理部
M3 レコード処理部
DIS 分散システム
DBS DBシステム
MS 管理システム
S 通信システム
【要約】
【課題】鍵データの管理上のセキュリティを向上させることが可能な情報処理装置、情報処理プログラム、及び情報処理方法を提供する。
【解決手段】管理システムMSは、鍵データを生成するための元となるシード値の保管場所を示すインデックス情報に基づいて、分散保管されたそれぞれのシード値を複数の保管システムDnから取得し、取得されたそれぞれのシード値を元に鍵データを動的に生成し、生成された鍵データを用いて、所定のデータを暗号化する。
【選択図】図1
図1
図2
図3
図4
図5