JP6078688B2 - データ処理システム、データ処理方法 - Google Patents
データ処理システム、データ処理方法 Download PDFInfo
- Publication number
- JP6078688B2 JP6078688B2 JP2016514579A JP2016514579A JP6078688B2 JP 6078688 B2 JP6078688 B2 JP 6078688B2 JP 2016514579 A JP2016514579 A JP 2016514579A JP 2016514579 A JP2016514579 A JP 2016514579A JP 6078688 B2 JP6078688 B2 JP 6078688B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- data
- application program
- distributed
- worker
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 184
- 238000003672 processing method Methods 0.000 title claims 2
- 238000000034 method Methods 0.000 claims description 201
- 230000008569 process Effects 0.000 claims description 188
- 238000007726 management method Methods 0.000 description 71
- 238000004364 calculation method Methods 0.000 description 18
- 238000013500 data storage Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000004220 aggregation Methods 0.000 description 10
- 230000002776 aggregation Effects 0.000 description 10
- 238000000605 extraction Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000003064 k means clustering Methods 0.000 description 4
- 239000013589 supplement Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
本発明は、データを分散処理するシステムに関する。
近年、ビッグデータというキーワードのもとで多くの企業が大量の電子データを利活用するようになった。これは、クラウド計算機環境と、分散並列処理のミドルウェアの普及という2つの大きな理由が背景にある。
大量のデータを処理するための計算機環境として、クラウド計算機環境が利用されている。クラウド計算機環境は、一般に、リソースが伸縮可能という特徴があり、必要な時に必要なだけの計算資源を割り当て、必要がない場合には計算資源を解放することにより、リソースを有効活用できる。そのため、クラウド計算機環境は、一時的に大量の計算処理能力が必要なデータ処理に適している。
分散並列処理のミドルウェアとして分散バッチ処理のApache Hadoop、分散ストリーミング処理のミドルウェアとしてJubatusやApache Stormなどのオープンソースソフトウェアが登場し、一般的なPCサーバを用いて分散並列計算をする技術が普及した。
クラウド計算機環境上に、分散並列処理のシステムを構築する場合、バッチ処理でApache Hadoopを利用し、その後、ストリーミング処理でApache Stormを利用するなど、データ処理の特性に合わせて柔軟にシステムを組み合わせることができる。これにより、大量のデータを短時間で処理するために必要な計算資源やシステム構築のためのコストを、大幅に引き下げることができる。
一方で、クラウド計算機環境上での分散並列処理が普及するにつれ、セキュリティの重要性が高まっている。従来から、クラウド計算機環境は、クラウド上のデータに対するアクセス制御機能を提供しており、ほかのユーザが自分のデータにアクセスできないようにすることができる。しかしクラウド環境の管理者は一般に、管理プログラムを利用して、一般ユーザがアクセスすることができないデータであっても閲覧することができる。
クラウド管理者からのデータアクセスを防ぐためには、データを暗号化することが必要である。クラウド環境側でデータを暗号化する機能が提供されている場合もある。しかしながら、全てのクラウド環境が暗号化機能を備えているわけではない。
下記特許文献1は、第3者による不正を防止する技術として、第3者によるプログラムの改変を検知することができるマイクロプロセッサを開示している。同文献記載のマイクロプロセッサは、プログラムをプロセス単位で実行し、プロセス識別情報とプロセス認証情報とを対応付けて保持する。プロセス識別情報とプロセスの認証情報がマッチしなければ、プログラムが改変されていることを意味し、改変されたプログラムを実行する前に検知することができる。
クラウド計算機環境のように、ユーザ、計算機環境の管理者を含めて多人数がアクセスする分散計算機システムにおいては、第3者がデータを閲覧できなくするため、データを分散処理可能な形態で暗号化する必要がある。
多段階に渡る分散並列処理においては、暗号化されたデータと鍵の対応を各段に対して追跡する必要があり、管理コストが大きい。従来のデータ暗号化を伴う分散並列処理システムは、個々の分散ノードが暗号化・復号化の鍵の管理をしており、それぞれを連携させるための仕組みがない。
分散処理システムに関する上記のような前提の下、単に各分散ノードが暗号化と復号化を実施するのみでは、データが平文のままノード間を流れる箇所が発生する。これを防ぎ分散処理の始めから終わりまで一貫してセキュリティを保つには、各ノードが実施する分散処理の過程において、データ暗号化処理や鍵管理処理(データと鍵の対応関係を管理する処理)を追加することが必要になると考えられる。したがって、分散処理の実装が煩雑になってしまう。
また、分散処理システムの用途として、外部データソースから集められたデータを処理し、データソースとは異なる別の外部データ記憶装置に対して処理結果を送信する場合が想定される。暗号化によってデータセキュリティを保ちつつこのようなデータフローに対応するためには、柔軟に鍵を変更することができる鍵管理方法が必要となる。
本発明は、上記のような課題に鑑みてなされたものであり、分散処理の過程においてデータセキュリティを一貫して保ちつつ、暗号鍵を柔軟に変更することができるデータ処理システムを提供することを目的とする。
本発明に係るデータ処理システムは、アプリケーションプログラムの入出力データと暗号鍵との間の対応関係を管理する鍵管理データベースを備え、各分散ワーカ計算機は、前記鍵管理データベースが保持している暗号鍵を用いて、前記アプリケーションプログラムの入出力データを暗号化または復号化する。
本発明に係るデータ処理システムによれば、分散処理の過程においてデータセキュリティを保ちつつ、分散ノードがデータを暗号化または復号化するために用いる暗号鍵を柔軟に管理することができる。
以下に説明する本発明の実施形態において、要素の数等に言及する場合、特に指定された場合および原理的に明らかに特定される場合を除き、その特定の数に限定されることはなく、特定の数以上でも以下でもよい。
さらに、以下の実施形態において、その構成要素は、特に指定された場合および原理的に明らかに必要とされる場合を除き、必ずしも必須のものではない。また、同様に以下の実施形態において、構成要素の形状や位置関係について言及するときは、特に明示する場合や原理的に明らかにそうでないと考えられる場合を除き、実質的にその形状等に近似または類似するものを含むものとする。このことは上記数値および範囲に関しても同様である。
<実施の形態1>
図1は、本発明の実施形態1に係るデータ処理システム1000の構成図である。データ処理システム1000は、データを分散処理するシステムであり、分散計算機システム100とローカル計算機200を有する。分散計算機システム100は、1以上の計算機(図1においては1台の計算機152および2台の計算機153)によってデータを分散処理するシステムである。ローカル計算機200は、分散計算機システム100に対して分散処理を依頼する端末である。ローカル計算機200と分散計算機システム100は、ネットワーク300によって接続されている。
図1は、本発明の実施形態1に係るデータ処理システム1000の構成図である。データ処理システム1000は、データを分散処理するシステムであり、分散計算機システム100とローカル計算機200を有する。分散計算機システム100は、1以上の計算機(図1においては1台の計算機152および2台の計算機153)によってデータを分散処理するシステムである。ローカル計算機200は、分散計算機システム100に対して分散処理を依頼する端末である。ローカル計算機200と分散計算機システム100は、ネットワーク300によって接続されている。
ローカル計算機200は、鍵管理データベース210、鍵生成部220、実行命令部230、プロセス識別子処理部240、暗号化部250、復号化部260、データ記憶装置280、1以上のユーザプログラム270(図1においては第1〜第3の3つ)を有する。
鍵管理データベース210は、暗号化または復号化において用いる鍵と、その鍵によって暗号化または復号化されるデータとの間の対応関係を管理する。鍵管理データベース210が管理する鍵は、例えばパスワードなどの手段により正当な利用者のみが利用できるようにアクセスを制限する。鍵とデータとの間の対応関係は、(a)プログラムに対して入力するデータとそのデータを処理するために用いる鍵との間の対応関係、または(b)データを処理するプログラムの識別子とそのプログラムが暗号化または復号化において用いる鍵との間の対応関係、によって記述することができる。ここでいうプログラムとは、具体的にはユーザプログラム270のことである。鍵管理データベース210の具体例については後述する。
鍵生成部220は、暗号化または復号化において用いる鍵を生成する。本発明において暗号化アルゴリズムの制限はなく、ブロック暗号とストリーム暗号いずれも利用することができる。また、共通鍵暗号や公開鍵暗号を利用することもできる。暗号化方式によっては鍵のほかに初期化ベクトルが必要な場合もあるが、以下ではそのような付随情報も含めて鍵と呼ぶ。以下では記載の便宜上、暗号鍵と復号鍵を区別せず一体的に鍵と称する。
プロセス識別子処理部240は、鍵管理データベース210が鍵とプログラムとの間の対応関係を管理するために用いるプログラム識別子を生成する。また、プログラム識別子がどのプログラムに対応するのかを解釈する役割も有する。鍵管理データベース210はさらに鍵とデータとの間の対応関係も管理するので、プロセス識別子処理部240はそのデータの識別子についても同様の処理を実施することもできるし、後述するようにデータのファイルパスをそのデータの識別子として代用してもよい。
プロセス(またはデータ)の識別子としては、例えばユーザプログラム270のハッシュ値(MD5、SHAなど)を用いることができる。ハッシュ値は人間にとっての可読性が低く文字列長が長いため、ハッシュ値よりも簡易な別名(エイリアス)を付けて識別子として用いてもよい。以下では説明の簡易のため、プログラムの名称をプログラム識別子として用いる。
本質的には同じ処理を実装したプログラムであっても、例えば不具合修正などにともなうバージョンアップによって異なるプロセス識別子が割り当てられる可能性がある。そこで、同じプログラムに対して同じ識別子を付与したい場合は、例えばプログラムの署名に論理的な対応表を付加するなどの手段により、同じプログラムに対して常に同じプロセス識別子が割り当てられるようにすることもできる。
プロセス識別子処理部240は、プロセス経路をプロセス識別子として用いることもできる。例えばプログラムAが処理したデータをプログラムBが処理する部分構造が頻出する場合、これらプログラムの入出力関係をまとめてプログラム識別子ABとすることができる。この場合のプロセス識別子ABは、プログラムAとBの合成関数を識別する識別子としてみることができる。
復号化部260は、データを記憶装置から読み出して復号化し、対応するユーザプログラム270に復号化後のデータを引き渡す。暗号化部250は、ユーザプログラム270が出力するデータを受け取って暗号化し、ほかのユーザプログラム270へ引き渡すか、または記憶装置に格納する。
ユーザプログラム270は、分散計算機システム100上で実行する処理を記述したプログラムである。例えば3つの分散ワーカ部140がそれぞれ実行する処理を第1〜第3ユーザプログラム270として記述することができる。
実行命令部230は、分散計算機システム100に対してデータ処理を依頼する。分散計算機システム100が計算機のハードウェア環境のみを提供し、実行すべきプログラムを備えていない(例えばIaaS:Infrastructure as a Serviceタイプのクラウド環境)場合は、実行命令部230は分散計算機システム100が実行すべきプログラムを分散計算機システム100に対して送信する。本実施形態1においては、プロセス識別子処理部240、暗号化部250、復号化部260、ユーザプログラム270はソフトウェアとして実装され、分散計算機システム100はこれらソフトウェアを備えていないものとする。
分散計算機システム100は、管理端末151、計算機152および153、データ記憶装置160を備える。管理端末151は、分散計算機システム100の管理者が管理作業を実施するため用いる端末である。計算機152は、鍵生成部110と認証部120を実行する。2台の計算機153は、それぞれ分散マスタ部130と分散ワーカ部140を実行する。鍵生成部110と認証部120は、分散計算機システム100があらかじめ備えていてもよいし、ユーザプログラム270などと併せてローカル計算機200から送信してもよい。
鍵生成部110は、鍵生成部220と同様の機能を備える。認証部120は、鍵管理データベース210が管理している鍵と各対応関係についてのデータを受け取り、各計算機153が実行するプログラムに対してその鍵を引き渡す。認証部120は、計算機153が鍵を受け取る権限を有するか否かを認証する役割も有する。認証部120は、例えばWebサービスにおけるサーバとして実装することができる。認証部120と各計算機153との間の通信路は、例えばSSL(Secure Socket Layer)などの公知の暗号化技術により暗号化することができる。認証部120自身の正当性は、サーバ証明書により証明することができる。
分散マスタ部130は、分散計算機システム100が実行する分散処理を管理する機能部である。分散ワーカ部140は、分散計算機システム100が実行する各分散処理(すなわちローカル計算機200から受け取るユーザプログラム270)を実際に実行する機能部である。図1においては1つの分散ワーカ部140を例示したが、分散ワーカ部140およびこれを実行する計算機153の個数は任意であり、また1台の計算機153が複数の分散ワーカ部140を実行することもできるし、1台の計算機153内で分散マスタ部130と分散ワーカ部140を実行することもできる。分散マスタ部130と分散ワーカ部140は分散計算機システム100によってあらかじめ提供されていることを想定するが、ローカル計算機200から分散計算機システム100へインストールすることもできる。
図2は、管理端末151のハードウェア構成図である。計算機152、153、およびローカル計算機200は同様のハードウェア構成を備えるので、ここでは管理端末151の構成についてのみ説明する。
管理端末151は、CPU(Central Processing Unit)1511、メモリ1512、ローカルファイルシステム1513、入力装置1514、出力装置1515、ネットワークデバイス15160、バス1517を備える。各機能部はバス170によって接続されている。ネットワークを介してリモートから管理端末151を操作する場合、入力装置1514と出力装置1515は省略してもよい。また、ローカルファイルシステム1513は、ハードディスクドライブ、ソリッドステートドライブなどの記憶装置内の記憶領域上に形成されたファイル格納領域である。ネットワークデバイス1516は通信インターフェースである。CPU1511は、ローカルファイルシステム1513が格納しているプログラムを実行する。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはCPU1511などの演算装置である。
図3は、鍵管理データベース210の構成とデータ例を示す図である。説明のため、入力データと暗号化データの例を併記した。
図3(A)は分散処理過程の最初に実行されるユーザプログラム270に対して入力されるデータの例を示す。入力データはレコード毎に区分してデータ記憶装置160または280上に格納される。ここでは機械学習における分散処理を想定し、1レコードが1つの数値ベクトルを表す例を示した。
図3(B)は、入力データの各レコードを暗号化したデータの例を示す。暗号化データの各レコードのヘッダには、暗号化部250によってプロセス識別子が付与されている。図3に示す例においては暗号化以外のプロセスを経ていないため、入力データの識別子「Data1」をプロセス識別子として用いている。
図3(C)は、鍵管理データベース210の構成とデータ例を示す。鍵管理データベース210は、環境ID211、優先度212、プロセス識別子213、暗号鍵214を有する。説明の簡易のため暗号鍵と復号鍵が共通である暗号方式を仮定したが、暗号方式に応じて復号鍵を別途設けることもできる。
環境ID211は、ユーザプログラム270を実行する環境(すなわち計算機)を区別するIDである。プロセス識別子213が同じであっても、環境ID211が異なれば、異なる暗号鍵214を指定することができる。環境ID211は省略することもできる。以下では説明の便宜上、鍵管理データベース210から鍵を取得するとき用いるクエリキーにおいては環境ID211を省略するが、クエリキーとして環境ID211を追加的に指定してもよい。優先度212は、プロセス識別子213と暗号鍵214のペアの優先度を示す。ここでは数値が小さいほど優先度が高く、大きいほど優先度が小さいものとする。認証部120が鍵管理データベース210から暗号鍵を取得する際には、指定した条件にマッチするプロセス識別子213のなかで優先度212が最も高いものに対応する暗号鍵214を用いる。
プロセス識別子213は、ユーザプログラム270に対して入力されるデータまたはユーザプログラム270の識別子を記述する。分散処理の過程において複数のユーザプログラム270が多段的に実行される場合は、ユーザプログラム270間の入出力関係をプロセス識別子213によって表現することができる。この入出力関係は例えば、プログラミング言語Lispで用いられるS式として表現することができる。
図3(C)に示すデータ例においては、ユーザプログラム270はまずData1を暗号鍵1によって暗号化し(1行目)、さらに暗号化されたData1を入力としてremoveZeroという処理が実行される(2行目)ことが分かる。removeZeroの出力は暗号鍵2によって暗号化される。removeZeroの処理結果に対してさらにsortFeatureという処理を実行する場合、プロセス識別子は(sortFeature (removeZero Data1))となる。記号ANYは任意のデータを表す。例えば(sortFeature ANY)は、任意のデータに対してsortFeatureを実行することを意味する。図3(C)においては、(sortFeature ANY)の優先度は3であるため、(removeZero Data1)が先に適用され、その結果に対してさらに(sortFeature ANY)が適用される。
復号鍵は、復号処理を開始する前に準備する必要がある。暗号鍵は必ずしも暗号処理を開始する前に準備する必要はなく、鍵管理データベース210において暗号鍵が指定されていないプロセスについては鍵生成部220または110が暗号鍵を自動生成し、これを鍵管理データベース210に反映すればよい。
図4は、プロセスとプロセス識別子の1例を示す図である。図4において、Data1(400)は分散処理過程における最初の入力データであり、処理A410、処理B420、処理C430がこの順で実行されるとともに互いにデータを入出力し、Data2(440)を出力する分散処理を例示した。プロセス識別子415は、Data1(400)を処理A410が処理した結果に割り当てられるプロセス識別子である。プロセス識別子425は、処理B420が処理Aの出力を処理した結果に割り当てられるプロセス識別子である。プロセス識別子435は、処理C430が処理B420の出力を処理した結果に割り当てられるプロセス識別子である。
図5は、図4に示す分散処理フローを前提とする鍵管理データベース210のデータ例を示す図である。説明の簡易のため、環境ID211は省略した。
図5(A)は鍵管理データベース210のデータ例を示し、図5(B)はプロセス識別子処理部240が図5(A)にしたがって各プロセス識別子に対して鍵を割り当てた結果を示す。鍵管理データベース210は、処理の順とは逆順にプロセス識別子を保持している。つまり、処理C430の処理結果の優先度が最も高く、Data1の優先度が最も低い。Data1の暗号鍵のみあらかじめ提供されており、そのほかの暗号鍵は指定されていない。
図5(B)において、復号化部260がData1を復号化するために用いるキー1は初めから定義されている。プロセス識別子処理部240は、処理A410に対応する新たなプロセス識別子(処理A Data1)を生成する。鍵管理データベース210を参照すると、生成した識別子に対応する(処理A ANY)の暗号鍵は未指定であるため、鍵生成部110または220は新たに暗号鍵を生成する。(処理B (処理A Data1))、(処理C (処理B (処理A Data1)))についても同様にプロセス識別子と暗号鍵が生成される。以上の結果、暗号化部250はData2を暗号鍵「自動生成3」により暗号化する。
図5(C)は鍵管理データベース210の別データ例を示し、図5(D)はプロセス識別子処理部240が図5(C)にしたがって各プロセス識別子に対して鍵を割り当てた結果を示す。鍵管理データベース210は、Data1の優先度を最も高く指定している。この場合、全てのプロセス識別子においてData1が優先される。したがって、プロセス識別子と暗号鍵の対応は図5(D)のようになり、Data2は暗号鍵「キー1」により暗号化される。
図4〜図5に示すように、鍵管理データベース210が格納しているデータと暗号鍵との間の対応関係および各プロセスと暗号鍵との間の対応関係を編集することにより、各ユーザプログラム270と暗号鍵との間の対応関係を柔軟に変更することができる。鍵管理データベース210が格納する対応関係は、ローカル計算機200が分散計算機システム100に対して処理を依頼する前に、例えばローカル計算機200のユーザが適当な操作インターフェースを介して図4に例示するような各プロセスの処理順とともに定義すればよい。
図6は、データ処理システム1000の動作を説明するフローチャートである。ここでは、分散ワーカ部140による分散計算結果を別の分散ワーカ部140が集約し、集約の結果に基づいて改めて分散計算と集約を反復的に繰り返すようなデータ処理を仮定している。このような処理は、具体的にはk−meansクラスタリングや線形サポートベクタマシンを分散処理化した際に見られる。以下図6の各ステップについて説明する。
(図6:ステップS600〜S605)
ローカル計算機200のユーザは、鍵管理データベース210および各機能部を起動してローカル計算機200を初期化する(S600)。ローカル計算機200のユーザは、分散計算機システム100上の計算機152および153を起動する(S605)。
ローカル計算機200のユーザは、鍵管理データベース210および各機能部を起動してローカル計算機200を初期化する(S600)。ローカル計算機200のユーザは、分散計算機システム100上の計算機152および153を起動する(S605)。
(図6:ステップS610)
暗号化部250は、ローカル計算機200のデータ記憶装置220が格納している、分散計算機システム1000に対して処理を依頼する入力データのファイルパスをキーにして、その入力データを暗号化するために用いる暗号鍵を取得する。暗号化部250は、取得した暗号鍵によってその入力データを暗号化する。暗号化部250は、暗号化された入力データを分散計算機システム100のデータ記憶装置160に格納する。本ステップの詳細は後述の図7で説明する。
暗号化部250は、ローカル計算機200のデータ記憶装置220が格納している、分散計算機システム1000に対して処理を依頼する入力データのファイルパスをキーにして、その入力データを暗号化するために用いる暗号鍵を取得する。暗号化部250は、取得した暗号鍵によってその入力データを暗号化する。暗号化部250は、暗号化された入力データを分散計算機システム100のデータ記憶装置160に格納する。本ステップの詳細は後述の図7で説明する。
(図6:ステップS615)
ユーザは、ローカル計算機200上の操作インターフェースを介して、分散計算機システム1000に対してデータ処理を依頼する。実行命令部230はその依頼を分散計算機システム100に対して送信する。
ユーザは、ローカル計算機200上の操作インターフェースを介して、分散計算機システム1000に対してデータ処理を依頼する。実行命令部230はその依頼を分散計算機システム100に対して送信する。
(図6:ステップS620)
認証部120は、実行命令部230から処理依頼を受け取ると、適当な認証処理を実施する。実行命令部230は認証を受けた後、分散マスタ部130と分散ワーカ部140を起動する。実行命令部230はさらに、各分散ワーカ部140に対してそれぞれ割り当てるユーザプログラム270とともに、プロセス識別子処理部240、暗号化部250、復号化部260を分散計算機システム100に対して配布する。図6に示す例においては、分散ワーカ部140が実施する分散処理は、分散処理と集約処理に分かれている。例えば第1ユーザプログラム270は分散ワーカ処理を実装し、第2ユーザプログラム270は集約ワーカ処理を実装する、などのように各ユーザプログラム270の役割を区分することができる。
認証部120は、実行命令部230から処理依頼を受け取ると、適当な認証処理を実施する。実行命令部230は認証を受けた後、分散マスタ部130と分散ワーカ部140を起動する。実行命令部230はさらに、各分散ワーカ部140に対してそれぞれ割り当てるユーザプログラム270とともに、プロセス識別子処理部240、暗号化部250、復号化部260を分散計算機システム100に対して配布する。図6に示す例においては、分散ワーカ部140が実施する分散処理は、分散処理と集約処理に分かれている。例えば第1ユーザプログラム270は分散ワーカ処理を実装し、第2ユーザプログラム270は集約ワーカ処理を実装する、などのように各ユーザプログラム270の役割を区分することができる。
(図6:ステップS625:その1)
各分散ワーカ部140はそれぞれ、ユーザプログラム270、プロセス識別子処理部240、暗号化部250、復号化部260を初期化する。プロセス識別子処理部240は、ユーザプログラム270のプロセス識別子を計算し、保持する。分散計算を実施する分散ワーカ部140に対して割り当てられた第1ユーザプログラム270は、入力データをデータ記憶装置160から読み取る。データの読み出しはレコード単位で実施され、1つのレコードが複数の分散ワーカ部140に分割されることはない。復号化部260は、レコードに紐づけられたプロセス識別子をキーにして、鍵管理データベース210が管理している復号鍵を取得して入力データを復号化し、第1ユーザプログラム270へ引き渡す。プロセス識別子処理部240は、第1ユーザプログラム270が入力データを処理した結果に対応するプロセス識別子を生成する。暗号化部250は、そのプロセス識別子をキーにして、鍵管理データベース210から暗号鍵を取得する。暗号化部250はその暗号鍵を用いて、第1ユーザプログラム270による処理結果を暗号化し、レコードのヘッダに新しいプロセス識別子を追加する。
各分散ワーカ部140はそれぞれ、ユーザプログラム270、プロセス識別子処理部240、暗号化部250、復号化部260を初期化する。プロセス識別子処理部240は、ユーザプログラム270のプロセス識別子を計算し、保持する。分散計算を実施する分散ワーカ部140に対して割り当てられた第1ユーザプログラム270は、入力データをデータ記憶装置160から読み取る。データの読み出しはレコード単位で実施され、1つのレコードが複数の分散ワーカ部140に分割されることはない。復号化部260は、レコードに紐づけられたプロセス識別子をキーにして、鍵管理データベース210が管理している復号鍵を取得して入力データを復号化し、第1ユーザプログラム270へ引き渡す。プロセス識別子処理部240は、第1ユーザプログラム270が入力データを処理した結果に対応するプロセス識別子を生成する。暗号化部250は、そのプロセス識別子をキーにして、鍵管理データベース210から暗号鍵を取得する。暗号化部250はその暗号鍵を用いて、第1ユーザプログラム270による処理結果を暗号化し、レコードのヘッダに新しいプロセス識別子を追加する。
(図6:ステップS625:その2)
分散計算処理が多段に渡っている場合、分散ワーカ部140は、第1ユーザプログラム270による処理結果(暗号化済)を次段の分散ワーカ部140へ引き渡す。図6に示す例においては、集約処理を実施する分散ワーカ部140(第2ユーザプログラム270)に対して引き渡すことになる。分散ワーカ部140が1度利用した鍵は再利用される可能性が高いため、分散ワーカ部140はこれをメモリ上にキャッシュしてもよい。
分散計算処理が多段に渡っている場合、分散ワーカ部140は、第1ユーザプログラム270による処理結果(暗号化済)を次段の分散ワーカ部140へ引き渡す。図6に示す例においては、集約処理を実施する分散ワーカ部140(第2ユーザプログラム270)に対して引き渡すことになる。分散ワーカ部140が1度利用した鍵は再利用される可能性が高いため、分散ワーカ部140はこれをメモリ上にキャッシュしてもよい。
(図6:ステップS630)
集約処理を実施する分散ワーカ部140は、分散計算処理を実施する分散ワーカ部140から分散計算結果を受け取る。ステップS625と同様に、プロセス識別子をキーにして、復号化、第2ユーザプログラム270による処理、および暗号化が実施される。ステップS620〜S630の詳細は後述の図8で説明する。
集約処理を実施する分散ワーカ部140は、分散計算処理を実施する分散ワーカ部140から分散計算結果を受け取る。ステップS625と同様に、プロセス識別子をキーにして、復号化、第2ユーザプログラム270による処理、および暗号化が実施される。ステップS620〜S630の詳細は後述の図8で説明する。
(図6:ステップS635)
集約処理を実施する分散ワーカ部140は、終了判定(分散計算処理が完了したか否かの判定)を実施する。終了と判定された場合はステップS640に進み、終了と判定されなかった場合はステップS625に戻って残レコードに対して同様の処理を実施する。
集約処理を実施する分散ワーカ部140は、終了判定(分散計算処理が完了したか否かの判定)を実施する。終了と判定された場合はステップS640に進み、終了と判定されなかった場合はステップS625に戻って残レコードに対して同様の処理を実施する。
(図6:ステップS640)
分散マスタ部130は、分散ワーカ部140による処理が全て完了すると、実行命令部230に対して終了通知を発信する。実行命令部230は、分散マスタ部130より終了通知を受信する。実行命令部230は、分散計算機システム100のデータ記憶装置160に保存されている計算結果を取得し、ローカル計算機200のデータ装置280に格納する。計算結果は暗号化されているため、これを閲覧するためには復号化が必要である。復号化部260は、計算結果のレコードヘッダに記載されているプロセス識別子をキーにして鍵管理データベース210から復号鍵を取得し、その鍵を用いて計算結果を復号する。
分散マスタ部130は、分散ワーカ部140による処理が全て完了すると、実行命令部230に対して終了通知を発信する。実行命令部230は、分散マスタ部130より終了通知を受信する。実行命令部230は、分散計算機システム100のデータ記憶装置160に保存されている計算結果を取得し、ローカル計算機200のデータ装置280に格納する。計算結果は暗号化されているため、これを閲覧するためには復号化が必要である。復号化部260は、計算結果のレコードヘッダに記載されているプロセス識別子をキーにして鍵管理データベース210から復号鍵を取得し、その鍵を用いて計算結果を復号する。
(図6:ステップS645)
ユーザは、分散マスタ部130と分散ワーカ部140を終了し、計算機152と153をシャットダウンする。ユーザは、ローカル計算機200上で起動されているプロセスを終了させ、シャットダウンする。
ユーザは、分散マスタ部130と分散ワーカ部140を終了し、計算機152と153をシャットダウンする。ユーザは、ローカル計算機200上で起動されているプロセスを終了させ、シャットダウンする。
図7は、ステップS610の詳細を説明するシーケンス図である。以下図7の各ステップについて説明する。
(図7:ステップS701)
ユーザは、分散計算機システム100に対してデータ処理を依頼する際に、ローカル計算機200の適当なインターフェースを介して、依頼する処理の順番や各処理に対応する暗号鍵などを指定し、鍵管理データベース210に格納する。既存の暗号鍵が存在しない場合は、鍵生成部220によって新たな鍵を生成し、対応するプロセス識別子とともに鍵管理データベース210に格納する。
ユーザは、分散計算機システム100に対してデータ処理を依頼する際に、ローカル計算機200の適当なインターフェースを介して、依頼する処理の順番や各処理に対応する暗号鍵などを指定し、鍵管理データベース210に格納する。既存の暗号鍵が存在しない場合は、鍵生成部220によって新たな鍵を生成し、対応するプロセス識別子とともに鍵管理データベース210に格納する。
(図7:ステップS702〜S703)
ユーザは、データ記憶装置280上における入力データのファイルパス、およびデータ記憶装置160上における出力データのファイルパスを指定して、分散計算機システム100に対して処理を依頼するデータを送信するようローカル計算機200に対して指示する(S702)。暗号化部250は、入力データのファイルパスをキーにして鍵管理データベース210から暗号鍵を取得し、その鍵を用いて入力データをレコード毎に暗号化し、プロセス識別子をレコードのヘッダに付加した上で、データ記憶装置160に暗号化済データを格納する(S703)。
ユーザは、データ記憶装置280上における入力データのファイルパス、およびデータ記憶装置160上における出力データのファイルパスを指定して、分散計算機システム100に対して処理を依頼するデータを送信するようローカル計算機200に対して指示する(S702)。暗号化部250は、入力データのファイルパスをキーにして鍵管理データベース210から暗号鍵を取得し、その鍵を用いて入力データをレコード毎に暗号化し、プロセス識別子をレコードのヘッダに付加した上で、データ記憶装置160に暗号化済データを格納する(S703)。
(図7:ステップS702〜S703:補足)
実行命令部230および暗号化部250は、本シーケンス図に示す処理が完了すると、自身が保持している暗号鍵(のコピー)を消去する。これにより、暗号鍵が不正に流出する可能性を抑制することができる。各機能部が計算機の揮発性メモリ(例えばRandom Access Memory)上に鍵を保持している場合は、計算機またはプログラムを終了することにより鍵は自動的に消去される。不揮発性記憶装置上に鍵を保持している場合は、明示的に削除する必要がある。他の機能部が鍵のコピーを消去する場合も同様である。
実行命令部230および暗号化部250は、本シーケンス図に示す処理が完了すると、自身が保持している暗号鍵(のコピー)を消去する。これにより、暗号鍵が不正に流出する可能性を抑制することができる。各機能部が計算機の揮発性メモリ(例えばRandom Access Memory)上に鍵を保持している場合は、計算機またはプログラムを終了することにより鍵は自動的に消去される。不揮発性記憶装置上に鍵を保持している場合は、明示的に削除する必要がある。他の機能部が鍵のコピーを消去する場合も同様である。
図8は、ステップS620〜S630の詳細を説明するシーケンス図である。以下図8の各ステップについて説明する。なお図8の太線矢印は暗号化通信路を示す。
(図8:ステップS801)
実行命令部230は、分散計算機システム100に対してデータ処理を依頼する際に、認証部120による認証を受ける。認証に成功すると、実行命令部230と認証部120は暗号化通信路を確立する。
実行命令部230は、分散計算機システム100に対してデータ処理を依頼する際に、認証部120による認証を受ける。認証に成功すると、実行命令部230と認証部120は暗号化通信路を確立する。
(図8:ステップS802)
実行命令部230は、入力データとユーザプログラム270それぞれのプロセス識別子をキーにして、全ての必要な鍵を鍵管理データベース210から取得する。実行命令部230は、認証部120との間で確立した暗号化通信路を通してプロセス識別子と鍵を認証部120に対して送信する。認証部120に対して鍵を送信する前に、ローカル計算機200のユーザがパスワードなどによって鍵自体を暗号化してもよい。この場合、ユーザは認証部120に対して鍵を送信した後、分散ワーカ部140を起動する前に、適当なユーザインターフェースを介して鍵を復号するためのパスワードを入力し、認証部120が復号化された鍵を使用できるようにする必要がある。認証部120は、実行命令部230から受け取った鍵とプロセス識別子を保持する。
実行命令部230は、入力データとユーザプログラム270それぞれのプロセス識別子をキーにして、全ての必要な鍵を鍵管理データベース210から取得する。実行命令部230は、認証部120との間で確立した暗号化通信路を通してプロセス識別子と鍵を認証部120に対して送信する。認証部120に対して鍵を送信する前に、ローカル計算機200のユーザがパスワードなどによって鍵自体を暗号化してもよい。この場合、ユーザは認証部120に対して鍵を送信した後、分散ワーカ部140を起動する前に、適当なユーザインターフェースを介して鍵を復号するためのパスワードを入力し、認証部120が復号化された鍵を使用できるようにする必要がある。認証部120は、実行命令部230から受け取った鍵とプロセス識別子を保持する。
(図8:ステップS803)
実行命令部230は、分散マスタ部130と分散ワーカ部140を起動する。実行命令部230は、ユーザプログラム270、プロセス識別子処理部240、暗号化部250、および復号化部260を分散マスタ部130に対して送信し、分散マスタ部130に対してジョブを起動するよう指示する。このとき各ユーザプログラム270の処理順や入出力関係などのジョブ情報についても併せて指定することができる。
実行命令部230は、分散マスタ部130と分散ワーカ部140を起動する。実行命令部230は、ユーザプログラム270、プロセス識別子処理部240、暗号化部250、および復号化部260を分散マスタ部130に対して送信し、分散マスタ部130に対してジョブを起動するよう指示する。このとき各ユーザプログラム270の処理順や入出力関係などのジョブ情報についても併せて指定することができる。
(図8:ステップS804)
分散マスタ部130は、各分散ワーカ部140に対して、対応するユーザプログラム270を割り当てるとともに、プロセス識別子処理部240、暗号化部250、および復号化部260を割り当てる。分散マスタ部130は分散ワーカ部140による分散処理を開始する。分散計算処理を実施する分散ワーカ部140は、以下のステップS805を開始する。集約処理を実施する分散ワーカ部140は、以下のステップS808を開始する。
分散マスタ部130は、各分散ワーカ部140に対して、対応するユーザプログラム270を割り当てるとともに、プロセス識別子処理部240、暗号化部250、および復号化部260を割り当てる。分散マスタ部130は分散ワーカ部140による分散処理を開始する。分散計算処理を実施する分散ワーカ部140は、以下のステップS805を開始する。集約処理を実施する分散ワーカ部140は、以下のステップS808を開始する。
(図8:ステップS805)
プロセス識別子処理部240は、分散ワーカ部140に対して割り当てられたユーザプログラム270のプロセス識別子を計算し、保持する。分散ワーカ部140は、入力データのレコードを取得すると、レコードのヘッダからプロセス識別子を取得し、そのプロセス識別子をキーにして認証部120に対して復号鍵と暗号鍵を要求する。
プロセス識別子処理部240は、分散ワーカ部140に対して割り当てられたユーザプログラム270のプロセス識別子を計算し、保持する。分散ワーカ部140は、入力データのレコードを取得すると、レコードのヘッダからプロセス識別子を取得し、そのプロセス識別子をキーにして認証部120に対して復号鍵と暗号鍵を要求する。
(図8:ステップS806)
認証部120は、キーとして指定されたプロセス識別子と、分散ワーカ部140を実行している計算機153のノード情報とに基づいて、認証を実施する。認証許可する場合、認証部120は分散ワーカ部140に対して復号鍵と暗号鍵を送信する。認証許可しない場合、認証部120はその旨を分散ワーカ部140に対して通知し、分散ワーカ部140はその旨のログを出力するなどして処理を終了する。あるいは、認証部120が備えるユーザインターフェースを介して、ローカル計算機200のユーザに対して認証不成立を通知し、データ処理を継続するか否か、ユーザが鍵を直接指定するか否か、などをユーザによる判断にゆだねることもできる。
認証部120は、キーとして指定されたプロセス識別子と、分散ワーカ部140を実行している計算機153のノード情報とに基づいて、認証を実施する。認証許可する場合、認証部120は分散ワーカ部140に対して復号鍵と暗号鍵を送信する。認証許可しない場合、認証部120はその旨を分散ワーカ部140に対して通知し、分散ワーカ部140はその旨のログを出力するなどして処理を終了する。あるいは、認証部120が備えるユーザインターフェースを介して、ローカル計算機200のユーザに対して認証不成立を通知し、データ処理を継続するか否か、ユーザが鍵を直接指定するか否か、などをユーザによる判断にゆだねることもできる。
(図8:ステップS806:補足その1)
認証部120は、プロセス識別子に対応する鍵が存在しない場合は、鍵生成部110により新たな鍵を生成する。認証部120は、この新しいプロセス識別子と鍵との間の対応関係を保持しておき、データ処理が終了したとき鍵管理データベース210にこれを反映する。特にユーザの指定がない限り、新しく生成された鍵には、もっとも高い優先度が与えられる。優先度が低いと、新しく生成された鍵が使われない可能性があるためである。新しく生成された鍵は、以前のどのプロセス識別子とも対応付けられていないため、優先度を高くしても以前のプロセス識別子との間で競合などの問題は生じない。
認証部120は、プロセス識別子に対応する鍵が存在しない場合は、鍵生成部110により新たな鍵を生成する。認証部120は、この新しいプロセス識別子と鍵との間の対応関係を保持しておき、データ処理が終了したとき鍵管理データベース210にこれを反映する。特にユーザの指定がない限り、新しく生成された鍵には、もっとも高い優先度が与えられる。優先度が低いと、新しく生成された鍵が使われない可能性があるためである。新しく生成された鍵は、以前のどのプロセス識別子とも対応付けられていないため、優先度を高くしても以前のプロセス識別子との間で競合などの問題は生じない。
(図8:ステップS806:補足その2)
認証部120は、新たな鍵を生成するか、それとも既存の鍵を流用するかについて、ユーザインターフェースを介してユーザに問い合わせることもできる。分散処理過程において新しいプロセス識別子が発生する例としては、例えば同じプログラムを再帰呼び出しする回数が入力データに依拠して変わる場合が考えられる。この場合におけるユーザインターフェースの具体例については後述する。
認証部120は、新たな鍵を生成するか、それとも既存の鍵を流用するかについて、ユーザインターフェースを介してユーザに問い合わせることもできる。分散処理過程において新しいプロセス識別子が発生する例としては、例えば同じプログラムを再帰呼び出しする回数が入力データに依拠して変わる場合が考えられる。この場合におけるユーザインターフェースの具体例については後述する。
(図8:ステップS806:補足その3)
計算機153のノード情報とは、例えば計算機153のIPアドレスやホスト名である。認証は、あらかじめ定められたルールによって自動的に実施することができる。例えば、分散計算過程において利用する計算機153のIPアドレスをあらかじめ認証部120が保持しておき、本ステップにおいて鍵を依頼した分散ワーカ部140のノード情報がこれに合致するか否かにより認証を実施することができる。そのほか、認証部120のユーザインターフェースを介して、鍵を要求した計算機153のノード情報とプロセス識別子を提示し、ユーザがマニュアル操作により認証することもできる。さらに、ユーザによるマニュアル認証を初回のみ実施し、その後は上記のような自動ルールによって認証することもできる。計算機153がサーバ証明書を保持している場合は、サーバ証明書を用いた認証も可能である。
計算機153のノード情報とは、例えば計算機153のIPアドレスやホスト名である。認証は、あらかじめ定められたルールによって自動的に実施することができる。例えば、分散計算過程において利用する計算機153のIPアドレスをあらかじめ認証部120が保持しておき、本ステップにおいて鍵を依頼した分散ワーカ部140のノード情報がこれに合致するか否かにより認証を実施することができる。そのほか、認証部120のユーザインターフェースを介して、鍵を要求した計算機153のノード情報とプロセス識別子を提示し、ユーザがマニュアル操作により認証することもできる。さらに、ユーザによるマニュアル認証を初回のみ実施し、その後は上記のような自動ルールによって認証することもできる。計算機153がサーバ証明書を保持している場合は、サーバ証明書を用いた認証も可能である。
(図8:ステップS807)
復号化部260は、取得した復号鍵を用いて、データ記憶装置160が格納している入力データをレコード毎に復号化する。ユーザプログラム270は、復号化されたレコードを処理(分散計算)する。暗号化部250は、ユーザプログラム270が出力する出力データをレコード毎に暗号化し、プロセス識別子をレコードのヘッダに追加し、次の処理を実施するユーザプログラム270(ここでは集約処理を実施する分散ワーカ部140)に対して引き渡す。
復号化部260は、取得した復号鍵を用いて、データ記憶装置160が格納している入力データをレコード毎に復号化する。ユーザプログラム270は、復号化されたレコードを処理(分散計算)する。暗号化部250は、ユーザプログラム270が出力する出力データをレコード毎に暗号化し、プロセス識別子をレコードのヘッダに追加し、次の処理を実施するユーザプログラム270(ここでは集約処理を実施する分散ワーカ部140)に対して引き渡す。
(図8:ステップS808)
集約処理を実施する分散ワーカ部140、および認証部120は、ステップS805〜S807と同様の処理を実施する。集約処理を実施する分散ワーカ部140は、分散計算結果が集束したか否かを判定し、集束したと判定する場合は処理完了した旨を分散マスタ部130に対して通知する。
集約処理を実施する分散ワーカ部140、および認証部120は、ステップS805〜S807と同様の処理を実施する。集約処理を実施する分散ワーカ部140は、分散計算結果が集束したか否かを判定し、集束したと判定する場合は処理完了した旨を分散マスタ部130に対して通知する。
(図8:ステップS809)
分散マスタ部130は、データ処理が完了した旨を実行命令部230に対して通知する。認証部120は、新たに作成した鍵を保持している場合は、対応するプロセス識別子とともにこれを鍵管理データベース210に反映する。分散計算機システム100(ここでは認証部120および分散ワーカ部140)は、自身が保持している鍵(のコピー)を消去する。実行命令部230は、データ記憶装置160より最終処理結果を取得する。
分散マスタ部130は、データ処理が完了した旨を実行命令部230に対して通知する。認証部120は、新たに作成した鍵を保持している場合は、対応するプロセス識別子とともにこれを鍵管理データベース210に反映する。分散計算機システム100(ここでは認証部120および分散ワーカ部140)は、自身が保持している鍵(のコピー)を消去する。実行命令部230は、データ記憶装置160より最終処理結果を取得する。
<実施の形態1:まとめ>
以上のように、本実施形態1に係るデータ処理システム1000は、ユーザプログラム270の入出力データと鍵との間の対応関係を記述したプロセス識別子を鍵管理データベース210によって管理し、分散計算機システム100が分散処理を実施する際には、鍵管理データベース210が管理しているその対応関係にしたがって各ユーザプログラム270に対応する鍵を使用する。これにより、ユーザプログラム270が分散処理過程において使用する鍵をユーザがマニュアル作業によって管理する必要がなくなるので、ユーザの利便性を損なうことなく、ノード間のデータ送受信を暗号化することができる。
以上のように、本実施形態1に係るデータ処理システム1000は、ユーザプログラム270の入出力データと鍵との間の対応関係を記述したプロセス識別子を鍵管理データベース210によって管理し、分散計算機システム100が分散処理を実施する際には、鍵管理データベース210が管理しているその対応関係にしたがって各ユーザプログラム270に対応する鍵を使用する。これにより、ユーザプログラム270が分散処理過程において使用する鍵をユーザがマニュアル作業によって管理する必要がなくなるので、ユーザの利便性を損なうことなく、ノード間のデータ送受信を暗号化することができる。
また、本実施形態1に係るデータ処理システム1000は、ユーザプログラム270の入出力データと鍵との間の対応関係を鍵管理データベース210に集約して管理する。鍵管理データベース210を暗号化するなどによって保護することにより、分散計算機システム100の管理者であってもその内容を閲覧することができなくなるので、鍵(および鍵によって暗号化されるデータ)を同管理者から保護することができる。
また、本実施形態1に係るデータ処理システム1000は、ユーザプログラム270とは別に、各ユーザプログラム270が使用する鍵を管理する機能(鍵管理データベース210と認証部120)、暗号化部250、および復号化部260を提供する。したがってユーザプログラム270の作成者は、これらに相当する処理をユーザプログラム270内に記述する必要がないので、ユーザプログラム270の開発負担を抑制しつつ上記効果を発揮することができる。
<実施の形態2>
実施形態1においては、ローカル計算機200が鍵管理データベース210を保持し、認証部120は鍵管理データベース210からプロセス識別子や鍵を取得することを説明した。鍵管理データベース210は必ずしもローカル計算機200が保持する必要はなく例えば認証部120が鍵管理データベース210の機能を兼用してもよい。この場合、認証部120が新しい鍵を生成したとき鍵管理データベース210との間で同期を取る必要がなくなるので、構成や処理が簡易になる利点がある。一方で認証部120が全ての鍵を管理するため、認証部120における鍵管理の安全性を確保することが求められる。例えば認証部120が保持する鍵を暗号化した上で、その暗号鍵はローカル計算機200上で保持する、などの対処を施すことが望ましい。
実施形態1においては、ローカル計算機200が鍵管理データベース210を保持し、認証部120は鍵管理データベース210からプロセス識別子や鍵を取得することを説明した。鍵管理データベース210は必ずしもローカル計算機200が保持する必要はなく例えば認証部120が鍵管理データベース210の機能を兼用してもよい。この場合、認証部120が新しい鍵を生成したとき鍵管理データベース210との間で同期を取る必要がなくなるので、構成や処理が簡易になる利点がある。一方で認証部120が全ての鍵を管理するため、認証部120における鍵管理の安全性を確保することが求められる。例えば認証部120が保持する鍵を暗号化した上で、その暗号鍵はローカル計算機200上で保持する、などの対処を施すことが望ましい。
実施形態1において、暗号化部250と復号化部260はデータをレコード毎に暗号化または復号化することを説明したが、処理の効率化の観点から、暗号化部250は複数のレコードを束ねて暗号化し、復号化部260は束ねられた複数のレコードを復号化した上でレコード単位に展開するようにしてもよい。具体的には、暗号化部250は複数のレコードを束ねてより大きな単位でレコードを生成し、データを暗号化する。復号化部260は、データを復号化して得られた複数のレコードをいったんバッファに格納し、ユーザプログラム270に対してレコード毎にデータを引き渡す。これにより、複数のレコードを束ねたより大きなレコードに対して、1つのプロセス識別子を追加することができる。したがって、データ本体のデータ量に比べて、メタデータであるプロセス識別子のデータ量を小さくすることができる。
<実施の形態3>
本発明の実施形態3では、実施形態1〜2で説明したデータ処理システム1000を文書クラスタリングアプリケーションに対して適用した例を説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主に本実施形態3におけるアプリケーション固有の部分について説明する。
本発明の実施形態3では、実施形態1〜2で説明したデータ処理システム1000を文書クラスタリングアプリケーションに対して適用した例を説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主に本実施形態3におけるアプリケーション固有の部分について説明する。
図9は、本実施形態3に係るデータ処理システム1000のアプリケーション構成図である。本実施形態3において、分散計算機システム100は、外部にある過去報告書910、支社A報告書915、および支社B報告書920を入力データとして受け取り、統計値A950と統計値B955とを外部にあるデータ記憶装置に出力する。分散ワーカ部140が実施するユーザプログラム270は、バッチ処理部900とストリーム処理部905に分かれている。
バッチ処理部900は、過去報告書910をクラスタリングし、文書を分類するモデル940をつくる。ストリーム処理部905は、日々提出される支社A報告書915と支社B報告書920をリアルタイムに分類し、それぞれのカテゴリに属する文書数をカウントする。
クラスタリング手法としては、k−meansクラスタリングを想定している。k−meansクラスタリングは、教師なしクラスタリング手法であり、あらかじめ定められたk個のカテゴリに数値ベクトデータセットを分類する。k−meansクラスタリングのモデルは、クラスタの重心位置である。その処理内容は、クラスタ判定930とクラスタ更新935の2つのステップの繰り返しであらわされる。クラスタ判定930は、データセットの数値ベクトルを1つ取り出し、現在のクラスタ重心位置のうちもっとも近いクラスタ重心を求め、その数値ベクトルが属するクラスタを判定する処理である。クラスタ判定930は初期モデル923を用いる。クラスタ更新935は、あるクラスタに属する数値ベクトルを入力とし、その重心位置を計算することによりクラスタ重心を更新する処理である。クラスタ判定930は、数値ベクトルごとに独立に計算できるため、分散処理することができる。
バッチ処理部900は、素性抽出925、クラスタ判定930、クラスタ更新935をユーザプログラム270によって実装している。素性抽出925は、1つの文書を受け取り、その特徴を表す1つの数値ベクトルを返す。クラスタ判定930は、文書を表す数値ベクトルとクラスタ重心を表す数値ベクトルを入力として受け取り、文書がどのクラスタに属しているかを判定する。クラスタ更新935は、文書を表す数値ベクトルとその文書が属するクラスタを入力として受け取り、新しいクラスタ重心を計算する。
ストリーム処理905は、モデル940と支社A報告書915と支社B報告書920を受け取り、支社Aの統計値A950、支社Bの統計値B955を出力する。ストリーミング処理905は、素性抽出とクラスタカウント945をユーザプログラム270によって実装している。素性抽出は、素性抽出925と同様の処理である。クラスタカウント945は、文書を表す数値ベクトルと、クラスタ重心を表す数値ベクトルを入力として受け取り、クラスタに属する文書数をカウントする。
図10は、本実施形態3における鍵管理データベース210のデータ例である。記載の簡易のため、環境ID211は省略した。以下図10にしたがって、本実施形態3におけるデータアクセス制限に関する要件について説明する。
管理部門の分析者は、分類モデル940を作るため、全ての過去文書にアクセスできる必要がある。各支社の報告書は機密情報を含むため、部外者に見られないようにする必要がある。また、同じ支社の報告書と統計値はその支社のユーザが閲覧できるようにし、異なる支社の報告書と統計値は閲覧できないように制限する必要がある。このため支社の文書作成者はそれぞれの地域で異なった鍵を持っている。分散計算機システム100の管理者は、データ処理システム1000を利用する企業にとっては部外者であるため、データを秘匿する必要がある。
図10に示す鍵管理データベース210のデータ例は、上記アクセス制限要件を実現するために構成したものである。図10において、プロセス識別子「支社A報告書」と「支社B報告書」にはそれぞれ優先度1と優先度2が割り当てられている。統計値B955の暗号化鍵が「支社Bキー」となることを、以下に説明する。
統計値B955のプロセス識別子は、(クラスタカウント (素性抽出 支社B報告書) モデル)である。最初のプロセス識別子(クラスタカウント 引数1 引数2)にマッチするプロセス識別子は(クラスタカウント ANY ANY)である。このプロセス識別子の優先度は3である。このプロセス識別子に対応する鍵が候補として保持される。
(クラスタカウント ANY NY)の引数は、(素性抽出 ANY)と「モデル」である。両者の優先度は6と7であり、(クラスタカウント ANY ANY)の優先度3と比較して優先度が低いため、これらに対応する鍵は採用されない。
(素性抽出 ANY)の引数は「支社B報告書」である。「支社B報告書」の優先度は2であり、(クラスタカウント ANY ANY)の優先度3と比較して優先度が高いため、「支社B報告書」に対応する鍵「支社Bキー」が最終的に採用される。
<実施の形態4>
本発明の実施形態4では、実施形態1〜2で説明したデータ処理システム1000をストリーミング処理に対して適用した例を説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主に本実施形態4におけるアプリケーション固有の部分について説明する。
本発明の実施形態4では、実施形態1〜2で説明したデータ処理システム1000をストリーミング処理に対して適用した例を説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主に本実施形態4におけるアプリケーション固有の部分について説明する。
図11は、本実施形態4に係るデータ処理システム1000のアプリケーション構成図である。本実施形態4において、分散計算機システム100は、Data1(1100)、Data2(1110)、Data3(1120)を入力データとして外部データ記憶装置から受け取り、Data4(1130)を出力として別の外部データ記憶装置に対して出力する。分散計算機システム100の分散ワーカ部140は、入力側処理A1135、入力側処理A1135のプロセス識別子1140、出力側処理A1145、出力側処理A1145のプロセス識別子1150、処理B1155、処理B1155のプロセス識別子1160、処理C1165、処理C1165のプロセス識別子1170によって構成されている。
図12は、本実施形態4における鍵管理データベース210のデータ例である。記載の簡易のため、環境ID211は省略した。以下図12にしたがって、本実施形態4における鍵の優先度について説明する。
図11に示す例においては、入力されるData1(1100)を処理する時点と、Data4(1130)を出力する時点の双方において、処理Aが使われている。出力側処理A1145は、入力側処理A1135とは異なる鍵を用いる必要がある。そこで図12に示すように、優先度1の項目として(処理A (処理C ANY ANY ANY))を追加する。そうすると、出力側処理A1145のプロセス識別子1150は、(処理A (処理C ANY ANY ANY))にマッチするため、公開用キーが利用される。一方で、入力側処理A1135のプロセス識別子1140は(処理A (処理C ANY ANY ANY))にマッチせず、(処理A ANY)にマッチするため、自動生成1が用いられる。
<実施の形態5>
本発明の実施形態5では、データ処理システム1000の仕組みを冗長化に適用した例について説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主に冗長化に関する事項を説明する。
本発明の実施形態5では、データ処理システム1000の仕組みを冗長化に適用した例について説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主に冗長化に関する事項を説明する。
図13は、本実施形態5における分散ワーカ部140の処理フローを示す図である。処理A1210はData1(1200)を入力として受け取って処理結果を処理B1220へ出力し、処理B1220は処理結果を処理C1230へ出力し、処理C1230は処理結果をData2(1250)として出力する。処理A1210〜処理C1230はそれぞれ異なる計算機153に対して割り当てられる。計算機1240は分散計算機システム100内のスタンバイ計算機である。
処理B1220を実行する計算機153に障害が発生し、計算機1240がフェイルオーバによって処理B1220を引き継いだと仮定する。この場合であっても、処理B1220の出力のプロセス識別子は障害発生前と変わらず(処理B (処理A Data1))である。したがって、プロセス識別子をキーにして鍵を管理することにより、障害発生前後において鍵管理データベース210を編集する必要はない。
これに対して、計算機のIDをプロセス識別子として用いる場合、例えば計算機2が処理B1220を処理することを表すプロセス識別子は(計算機2 (計算機1 Data1))であるが、計算機2が計算機4へフェイルオーバすると(計算機4 (計算機1 Data1))となり、識別子が変更されてしまうので、鍵管理データベース210を再編集する必要があり、フェイルオーバ発生時の手続きが煩雑になる。特に、並列処理を実施する場合は、多くの対応関係を管理する必要があり現実的ではない。本発明によれば、フェイルオーバ発生時におけるこのような課題を抑制することができる。
<実施の形態6>
本発明の実施形態6では、認証部120が提供するユーザインターフェースの例について説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主にユーザインターフェースに関する事項を説明する。
本発明の実施形態6では、認証部120が提供するユーザインターフェースの例について説明する。データ処理システム1000の構成は実施形態1〜2と同様であるため、以下では主にユーザインターフェースに関する事項を説明する。
図14は、ステップS806において認証部120が提供するユーザインターフェースの画面例である。ここでは処理A1430がData1(1400)を処理し、処理B1440がData2(1410)とData3(1420)を処理し、処理C1450が処理A1430と処理B1440による処理結果をさらに処理する例を示した。
図14に示す例において、処理A1460が新たなプロセス識別子として登場したとする。認証部120のユーザインターフェースは、指定画面1470を提示する。ユーザは指定画面1470を用いて処理A1460のプロセス識別子と鍵を入力することができる。鍵は鍵管理データベース210が保持しているプロセス識別子と鍵の対応関係のなかから選択することができる。
図15は、本実施形態6における鍵管理データベース210のデータ例である。ユーザインターフェースに何も入力しない場合は、処理A1430と同じ鍵である自動生成1が処理A1460においても採用される。これは(処理A ANY)に相当する。ユーザインターフェースは、処理A1430をハイライトし、処理A1430と同じ鍵を利用することをユーザに提示する。ユーザが(処理A (処理C ANY ANY))を指定すると、新しい鍵として自動生成4が生成され、処理1460の鍵として用いられる。
上記のほか、ステップS806においては必ず新規鍵を生成するようにして、ユーザへ確認しないようにすることもできる。
本発明は上記した実施形態の形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に格納することができる。
例えば、鍵生成部220、実行命令部230、プロセス識別子処理部240、暗号化部250、復号化部260のうちいずれか1以上をハードウェアとして分散計算機システム100上またはローカル計算機200上にあらかじめ実装しておくこともできる。
100:分散計算機システム、110:鍵生成部、120:認証部、130:分散マスタ部、140:分散ワーカ部、151:管理端末、152〜153:計算機、160:データ記憶装置、200:ローカル計算機、210:鍵管理データベース、220:鍵生成部、230:実行命令部、240:プロセス識別子処理部、250:暗号化部、260:復号化部、270:ユーザプログラム、280:データ記憶装置、300:ネットワーク、1000:データ処理システム。
Claims (12)
- 1以上のアプリケーションプログラムを分散して実行する1以上のワーカ計算機を有する分散計算機システム、
前記分散計算機システムに対して前記アプリケーションプログラムを実行するよう依頼するローカル計算機、
前記アプリケーションプログラムに対して入力する入力データと前記入力データを暗号化するために用いる第1暗号鍵との間の第1対応関係、および前記アプリケーションプログラムが出力する出力データを暗号化するために用いる第2暗号鍵と前記出力データを出力する前記アプリケーションプログラムとの間の第2対応関係を管理する鍵管理データベース、
を有し、
前記ローカル計算機は、
前記第1暗号鍵を用いて前記入力データを暗号化した上で前記分散計算機システムに対して送信し、前記暗号化された入力データを入力として用いて前記アプリケーションプログラムを実行するよう前記分散計算機システムに対して依頼し、
前記分散計算機システムは、
前記アプリケーションプログラムを実行するよう前記ローカル計算機から依頼されると、前記アプリケーションプログラムを前記ワーカ計算機に対して割り当てるとともに、前記アプリケーションプログラムの識別子および前記入力データの識別子をキーにして前記鍵管理データベースから前記第1および第2暗号鍵を取得し、
前記ワーカ計算機は、
取得した前記第1暗号鍵を用いて前記入力データを復号化して前記アプリケーションプログラムに対して入力し、取得した前記第2暗号鍵を用いて前記アプリケーションプログラムが出力する前記出力データを暗号化する
ことを特徴とするデータ処理システム。 - 前記ワーカ計算機は、
前記入力データを復号化し終えると前記第1暗号鍵を前記ワーカ計算機の記憶装置上から消去し、前記出力データを暗号化し終えると前記第2暗号鍵を前記ワーカ計算機の記憶装置上から消去し、
前記分散計算機システムは、
前記ワーカ計算機が前記アプリケーションプログラムを実行し終えると、前記鍵管理データベースから取得した前記第1および第2暗号鍵を消去する
ことを特徴とする請求項1記載のデータ処理システム。 - 前記分散計算機システムは、前記ワーカ計算機が前記アプリケーションプログラムを実行し終えるまで、取得した前記第1および第2暗号鍵を揮発性メモリ上に一時的に格納しておき、前記ワーカ計算機が前記アプリケーションプログラムを実行し終えると前記揮発性メモリ上から前記第1および第2暗号鍵を消去する
ことを特徴とする請求項2記載のデータ処理システム。 - 前記鍵管理データベースは、
前記ワーカ計算機が複数の前記アプリケーションプログラムを多段的に実行する場合における各前記アプリケーションプログラム間の入出力関係を、前記第1および第2対応関係として記述しており、
前記分散計算機システムは、
前記ワーカ計算機に対して割り当てる前記アプリケーションプログラムの前記入出力関係をクエリキーにして前記鍵管理データベースから前記第1および第2暗号鍵を取得する
ことを特徴とする請求項1記載のデータ処理システム。 - 前記分散計算機システムは、
前記アプリケーションプログラムを実行する過程において前記入出力関係に当てはまらないサブプロセスを実行する必要がある場合は、前記第1または第2暗号鍵を新たに生成して前記ワーカ計算機に対して引き渡し、生成した前記第1または第2暗号鍵と前記サブプロセスとの間の前記第1または第2対応関係を前記鍵管理データベースに格納する
ことを特徴とする請求項4記載のデータ処理システム。 - 前記鍵管理データベースは、前記第1および第2対応関係それぞれの優先度を管理しており、
前記ワーカ計算機は、前記第1または第2暗号鍵を新たに生成した場合は、その暗号鍵を最も高い前記優先度で前記鍵管理データベースに登録し、
前記分散計算機システムは、前記クエリキーに対応する前記第1または第2暗号鍵が前記鍵管理データベース内に複数存在する場合は、そのなかで前記優先度が最も高いものを取得する
ことを特徴とする請求項5記載のデータ処理システム。 - 前記分散計算機システムは、
前記アプリケーションプログラムを前記ワーカ計算機に対して割り当てる前に、前記ワーカ計算機が前記アプリケーションプログラムを実行する権限があるか否かを認証し、認証許可する場合のみ前記アプリケーションプログラムを割り当てる
ことを特徴とする請求項1記載のデータ処理システム。 - 前記データ処理システムは、前記第1および第2対応関係の少なくともいずれかを指定するユーザインターフェースを備える
ことを特徴とする請求項1記載のデータ処理システム。 - 前記データ処理システムは、前記第1および第2対応関係の少なくともいずれかを指定するユーザインターフェースを備え、
前記ワーカ計算機は、前記アプリケーションプログラムを実行する過程において、前記入出力関係に当てはまらないサブプロセスとして前段において実行したものと同一の前記アプリケーションプログラムを実行する必要がある場合は、前段において実行した前記アプリケーションプログラムに対応する前記第1または第2暗号鍵を流用するか否かを前記ローカル計算機に対して問い合わせ、
前記ローカル計算機は、前記ユーザインターフェースを介して、前記ワーカ計算機からの前記問い合わせに対して回答する
ことを特徴とする請求項4記載のデータ処理システム。 - 前記鍵管理データベースは、前記第1対応関係として、前記第1暗号鍵を用いる前記ワーカ計算機の識別子を管理するとともに、前記第2対応関係として、前記第2暗号鍵を用いる前記ワーカ計算機の識別子を管理し、
前記分散計算機システムは、前記クエリキーに加えて前記アプリケーションプログラムを割り当てる前記ワーカ計算機の識別子を用いて前記第1および第2暗号鍵を取得する
ことを特徴とする請求項1記載のデータ処理システム。 - 前記ワーカ計算機は、複数の前記出力データを一括して暗号化し、一括して暗号化された複数の前記入力データを復号化して個々の前記入力データを取得する
ことを特徴とする請求項1記載のデータ処理システム。 - 1以上のアプリケーションプログラムを分散して実行する1以上のワーカ計算機を有する分散計算機システム、
前記分散計算機システムに対して前記アプリケーションプログラムを実行するよう依頼するローカル計算機、
前記アプリケーションプログラムに対して入力する入力データと前記入力データを暗号化するために用いる第1暗号鍵との間の第1対応関係、および前記アプリケーションプログラムが出力する出力データを暗号化するために用いる第2暗号鍵と前記出力データを出力する前記アプリケーションプログラムとの間の第2対応関係を管理する鍵管理データベース、
を有するデータ処理システムを用いてデータを処理する方法であって、
前記ローカル計算機が、
前記第1暗号鍵を用いて前記入力データを暗号化した上で前記分散計算機システムに対して送信し、前記暗号化された入力データを入力として用いて前記アプリケーションプログラムを実行するよう前記分散計算機システムに対して依頼するステップ、
前記分散計算機システムが、
前記アプリケーションプログラムを実行するよう前記ローカル計算機から依頼されると、前記アプリケーションプログラムを前記ワーカ計算機に対して割り当てるとともに、前記アプリケーションプログラムの識別子および前記入力データの識別子をキーにして前記鍵管理データベースから前記第1および第2暗号鍵を取得するステップ、
前記ワーカ計算機が、
取得した前記第1暗号鍵を用いて前記入力データを復号化して前記アプリケーションプログラムに対して入力し、取得した前記第2暗号鍵を用いて前記アプリケーションプログラムが出力する前記出力データを暗号化するステップ、
を有することを特徴とするデータ処理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/061276 WO2015162688A1 (ja) | 2014-04-22 | 2014-04-22 | データ処理システム、データ処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6078688B2 true JP6078688B2 (ja) | 2017-02-08 |
JPWO2015162688A1 JPWO2015162688A1 (ja) | 2017-04-13 |
Family
ID=54331882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016514579A Expired - Fee Related JP6078688B2 (ja) | 2014-04-22 | 2014-04-22 | データ処理システム、データ処理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6078688B2 (ja) |
WO (1) | WO2015162688A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106911625B (zh) * | 2015-12-22 | 2020-04-24 | 国民技术股份有限公司 | 一种安全输入法的文本处理方法、装置和系统 |
JP6903529B2 (ja) | 2017-09-11 | 2021-07-14 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001086395A2 (en) * | 2000-05-09 | 2001-11-15 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
US20130042115A1 (en) * | 2011-08-09 | 2013-02-14 | CloudPassage, Inc. | Systems and methods for implementing security in a cloud computing environment |
US20130117563A1 (en) * | 2011-11-09 | 2013-05-09 | Safer Point Ltd | Securing information in a cloud computing system |
-
2014
- 2014-04-22 JP JP2016514579A patent/JP6078688B2/ja not_active Expired - Fee Related
- 2014-04-22 WO PCT/JP2014/061276 patent/WO2015162688A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001086395A2 (en) * | 2000-05-09 | 2001-11-15 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
US20130042115A1 (en) * | 2011-08-09 | 2013-02-14 | CloudPassage, Inc. | Systems and methods for implementing security in a cloud computing environment |
US20130117563A1 (en) * | 2011-11-09 | 2013-05-09 | Safer Point Ltd | Securing information in a cloud computing system |
Non-Patent Citations (1)
Title |
---|
JPN7016003840; WHEN, Y. et al.: 'Multi-Processor Architectural Support for Protecting Virtual Machine Privacy in Untrusted Cloud Envi' Proceedings of the ACM International Conference on Computing Frontiers , 201305, Articl No.25 * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2015162688A1 (ja) | 2017-04-13 |
WO2015162688A1 (ja) | 2015-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11431495B2 (en) | Encrypted file storage | |
US11270006B2 (en) | Intelligent storage devices with cryptographic functionality | |
US7792300B1 (en) | Method and apparatus for re-encrypting data in a transaction-based secure storage system | |
US7320076B2 (en) | Method and apparatus for a transaction-based secure storage file system | |
US10951396B2 (en) | Tamper-proof management of audit logs | |
US10503917B2 (en) | Performing operations on intelligent storage with hardened interfaces | |
US11728974B2 (en) | Tenant-based database encryption | |
US20180020008A1 (en) | Secure asynchronous communications | |
US11489660B2 (en) | Re-encrypting data on a hash chain | |
US11755499B2 (en) | Locally-stored remote block data integrity | |
US20150143107A1 (en) | Data security tools for shared data | |
JP2023551124A (ja) | 自己監査ブロックチェーン | |
US9906510B2 (en) | Virtual content repository | |
CN111756684B (zh) | 传输关键数据的方法、系统和非暂时性计算机可读存储介质 | |
JP6078688B2 (ja) | データ処理システム、データ処理方法 | |
Tian et al. | A trusted control model of cloud storage | |
Vanitha et al. | Secured data destruction in cloud based multi-tenant database architecture | |
Blochberger | Key-value Storage with Cryptographic Client-separation | |
Vishal Reddy et al. | SecHDFS-AWS: A Novel Approach to Design Efficient and Secure Data Storage Model Over HDFS Enabled Amazon Cloud |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20161220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170116 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6078688 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |