(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-26
(45)【発行日】2024-02-05
(54)【発明の名称】暗号化方法、端末装置、暗号化システム及びプログラム
(51)【国際特許分類】
H04L 9/08 20060101AFI20240129BHJP
【FI】
H04L9/08 C
H04L9/08 E
(21)【出願番号】P 2022543280
(86)(22)【出願日】2021-05-13
(86)【国際出願番号】 JP2021018302
(87)【国際公開番号】W WO2022038845
(87)【国際公開日】2022-02-24
【審査請求日】2022-09-12
(31)【優先権主張番号】P 2020140089
(32)【優先日】2020-08-21
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】520320479
【氏名又は名称】アーモンド株式会社
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100130281
【氏名又は名称】加藤 道幸
(72)【発明者】
【氏名】新原 秀二
【審査官】金沢 史明
(56)【参考文献】
【文献】特開平08-161284(JP,A)
【文献】米国特許出願公開第2018/0123797(US,A1)
【文献】韓国特許第10-2099570(KR,B1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
端末装置が実行する暗号化方法であって、
前記端末装置が、対象データの暗号化が要求された場合、サーバ装置から学習データを取得する学習データ取得ステップと、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成ステップと、
前記端末装置が、前記鍵生成ステップで生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化ステップと
、
前記端末装置が、前記暗号化ステップで暗号化された前記対象データである暗号化データの復号が要求された場合、前記サーバ装置から前記学習データを再取得する学習データ再取得ステップと、
前記端末装置が、前記学習データ再取得ステップで取得された前記学習データに基づく前記学習を再度行い、前記学習の結果に基づいて前記暗号鍵を再生成する鍵再生成ステップと、
前記端末装置が、前記鍵再生成ステップで生成された前記暗号鍵を用いて前記暗号化データを前記対象データに復号する復号ステップと、
前記端末装置が、前記暗号化データに特定の演算を施すことにより、前記暗号化データに固有な固有情報を生成する固有情報生成ステップと、
前記端末装置が、前記固有情報生成ステップで生成された前記固有情報を前記サーバ装置に送信する固有情報送信ステップと、を含み、
前記学習データ再取得ステップでは、前記端末装置が、前記暗号化データの復号が要求された場合、前記固有情報により特定される前記学習データを前記サーバ装置から再取得する、
暗号化方法。
【請求項2】
端末装置が実行する暗号化方法であって、
前記端末装置が、対象データの暗号化が要求された場合、サーバ装置から学習データを取得する学習データ取得ステップと、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成ステップと、
前記端末装置が、前記鍵生成ステップで生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化ステップと、を含み、
前記鍵生成ステップでは、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく前記学習を行って学習モデルを生成し、生成された前記学習モデルに前記学習データを入力して得られた出力データに予め定められた処理を施すことにより前記暗号鍵を生成する、
暗号化方法。
【請求項3】
端末装置が実行する暗号化方法であって、
前記端末装置が、対象データの暗号化が要求された場合、サーバ装置から学習データを取得する学習データ取得ステップと、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成ステップと、
前記端末装置が、前記鍵生成ステップで生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化ステップと、を含み、
前記暗号化ステップでは、
前記端末装置が、前記対象データの一部と前記暗号鍵の一部との間で排他的論理和を計算することにより1次データを生成し、生成された前記1次データの全体と前記暗号鍵の全体との間で排他的論理和を更に計算することにより前記対象データを暗号化する、
暗号化方法。
【請求項4】
端末装置が実行する暗号化方法であって、
前記端末装置が、対象データの暗号化が要求された場合、サーバ装置から学習データを取得する学習データ取得ステップと、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成ステップと、
前記端末装置が、前記鍵生成ステップで生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化ステップと、を含み、
前記学習データ取得ステップでは、
前記端末装置が、前記サーバ装置から互いに異なる複数個の学習データを取得し、
前記鍵生成ステップでは、
前記端末装置が、前記学習データ取得ステップで取得された前記複数個の学習データのそれぞれに基づく学習を行い、前記学習の結果に基づいて複数個の暗号鍵を生成し、
前記暗号化ステップでは、
前記端末装置が、前記対象データを複数個の分割データに分割し、前記複数個の分割データを、それぞれ前記鍵生成ステップで生成された前記複数個の暗号鍵を用いて暗号化する、
暗号化方法。
【請求項5】
端末装置が実行する暗号化方法であって、
前記端末装置が、対象データの暗号化が要求された場合、サーバ装置から学習データを取得する学習データ取得ステップと、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成ステップと、
前記端末装置が、前記鍵生成ステップで生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化ステップと、を含み、
前記対象データは、複数の行及び複数の列を有するテーブルのデータであり、
前記暗号化ステップでは、
前記端末装置が、前記テーブルにおける前記複数の行のそれぞれのデータを、行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化する、
暗号化方法。
【請求項6】
サーバ装置と通信可能な端末装置であって、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部と、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部と、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部と、を備え
、
前記学習データ取得部は、前記暗号化部により暗号化された前記対象データである暗号化データの復号が要求された場合、前記サーバ装置から前記学習データを再取得し、
前記鍵生成部は、前記学習データ取得部により再取得された前記学習データに基づく前記学習を再度行い、前記学習の結果に基づいて前記暗号鍵を再生成し、
前記鍵生成部により再生成された前記暗号鍵を用いて前記暗号化データを前記対象データに復号する復号部と、
前記暗号化データに特定の演算を施すことにより、前記暗号化データに固有な固有情報を生成する固有情報生成部と、
前記固有情報生成部により生成された前記固有情報を前記サーバ装置に送信する固有情報送信部と、を更に備え、
前記学習データ取得部は、前記暗号化データの復号が要求された場合、前記固有情報により特定される前記学習データを前記サーバ装置から再取得する、
端末装置。
【請求項7】
サーバ装置と通信可能な端末装置であって、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部と、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部と、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部と、を備え、
前記鍵生成部は、前記学習データ取得部により取得された前記学習データに基づく前記学習を行って学習モデルを生成し、生成された前記学習モデルに前記学習データを入力して得られた出力データに予め定められた処理を施すことにより前記暗号鍵を生成する、
端末装置。
【請求項8】
サーバ装置と通信可能な端末装置であって、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部と、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部と、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部と、を備え、
前記暗号化部は、前記対象データの一部と前記暗号鍵の一部との間で排他的論理和を計算することにより1次データを生成し、生成された前記1次データの全体と前記暗号鍵の全体との間で排他的論理和を更に計算することにより前記対象データを暗号化する、
端末装置。
【請求項9】
サーバ装置と通信可能な端末装置であって、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部と、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部と、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部と、を備え、
前記学習データ取得部は、前記サーバ装置から互いに異なる複数個の学習データを取得し、
前記鍵生成部は、前記学習データ取得部により取得された前記複数個の学習データのそれぞれに基づく学習を行い、前記学習の結果に基づいて複数個の暗号鍵を生成し、
前記暗号化部は、前記対象データを複数個の分割データに分割し、前記複数個の分割データを、それぞれ前記鍵生成部により生成された前記複数個の暗号鍵を用いて暗号化する、
端末装置。
【請求項10】
サーバ装置と通信可能な端末装置であって、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部と、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部と、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部と、を備え、
前記対象データは、複数の行及び複数の列を有するテーブルのデータであり、
前記暗号化部は、前記テーブルにおける前記複数の行のそれぞれのデータを、行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化する、
端末装置。
【請求項11】
請求項
6から10のいずれか1項に記載の端末装置と、前記サーバ装置と、を備える暗号化システムであって、
前記サーバ装置は、
前記端末装置から暗号化の要求を受信した場合、前記端末装置に前記学習データを発行する学習データ発行部、を備える、
暗号化システム。
【請求項12】
前記サーバ装置は、
インターネット上に公開されているデジタルデータを収集するデータ収集部、を更に備え、
前記学習データ発行部は、前記データ収集部により収集された前記デジタルデータのうちから、前記学習データを発行する、
請求項
11に記載の暗号化システム。
【請求項13】
前記端末装置からログインが要求された場合、前記端末装置にチャレンジキーを発行し、前記端末装置において前記チャレンジキーから生成された端末側アンサーキーと、前記サーバ装置において前記チャレンジキーから生成されたサーバ側アンサーキーと、が一致した場合に、前記ログインを認証するサーバ側認証部、を更に備える、
請求項
11又は12に記載の暗号化システム。
【請求項14】
サーバ装置と通信可能なコンピュータを、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部、として機能させ
、
前記学習データ取得部は、前記暗号化部により暗号化された前記対象データである暗号化データの復号が要求された場合、前記サーバ装置から前記学習データを再取得し、
前記鍵生成部は、前記学習データ取得部により再取得された前記学習データに基づく前記学習を再度行い、前記学習の結果に基づいて前記暗号鍵を再生成し、
前記鍵生成部により再生成された前記暗号鍵を用いて前記暗号化データを前記対象データに復号する復号部、
前記暗号化データに特定の演算を施すことにより、前記暗号化データに固有な固有情報を生成する固有情報生成部、
前記固有情報生成部により生成された前記固有情報を前記サーバ装置に送信する固有情報送信部、として更に機能させ、
前記学習データ取得部は、前記暗号化データの復号が要求された場合、前記固有情報により特定される前記学習データを前記サーバ装置から再取得する、
プログラム。
【請求項15】
サーバ装置と通信可能なコンピュータを、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部、として機能させ、
前記鍵生成部は、前記学習データ取得部により取得された前記学習データに基づく前記学習を行って学習モデルを生成し、生成された前記学習モデルに前記学習データを入力して得られた出力データに予め定められた処理を施すことにより前記暗号鍵を生成する、
プログラム。
【請求項16】
サーバ装置と通信可能なコンピュータを、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部、として機能させ、
前記暗号化部は、前記対象データの一部と前記暗号鍵の一部との間で排他的論理和を計算することにより1次データを生成し、生成された前記1次データの全体と前記暗号鍵の全体との間で排他的論理和を更に計算することにより前記対象データを暗号化する、
プログラム。
【請求項17】
サーバ装置と通信可能なコンピュータを、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部、として機能させ、
前記学習データ取得部は、前記サーバ装置から互いに異なる複数個の学習データを取得し、
前記鍵生成部は、前記学習データ取得部により取得された前記複数個の学習データのそれぞれに基づく学習を行い、前記学習の結果に基づいて複数個の暗号鍵を生成し、
前記暗号化部は、前記対象データを複数個の分割データに分割し、前記複数個の分割データを、それぞれ前記鍵生成部により生成された前記複数個の暗号鍵を用いて暗号化する、
プログラム。
【請求項18】
サーバ装置と通信可能なコンピュータを、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部、として機能させ、
前記対象データは、複数の行及び複数の列を有するテーブルのデータであり、
前記暗号化部は、前記テーブルにおける前記複数の行のそれぞれのデータを、行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化方法、端末装置、暗号化システム及びプログラムに関する。
【背景技術】
【0002】
情報を暗号化する技術が知られている。例えば、特許文献1は、複数の通信装置が暗号鍵を共有する鍵交換技術において、長期秘密鍵が漏洩したとしても、暗号鍵を取得することができない鍵交換技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような暗号化技術において、セキュリティ向上の観点から、暗号鍵の漏洩をより確実に防止することが求められている。特に、暗号化と復号とで同一の暗号鍵が共有される方式では、暗号鍵の漏洩のリスクがより大きい。そのため、暗号鍵の共有と漏洩防止とを両立させることが課題となっている。
【0005】
本発明は、以上のような課題を解決するためのものであり、暗号鍵の共有と漏洩防止とを両立させることが可能な暗号化方法等を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点に係る暗号化方法の一態様は、
端末装置が実行する暗号化方法であって、
前記端末装置が、対象データの暗号化が要求された場合、サーバ装置から学習データを取得する学習データ取得ステップと、
前記端末装置が、前記学習データ取得ステップで取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成ステップと、
前記端末装置が、前記鍵生成ステップで生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化ステップと、
前記端末装置が、前記暗号化ステップで暗号化された前記対象データである暗号化データの復号が要求された場合、前記サーバ装置から前記学習データを再取得する学習データ再取得ステップと、
前記端末装置が、前記学習データ再取得ステップで取得された前記学習データに基づく前記学習を再度行い、前記学習の結果に基づいて前記暗号鍵を再生成する鍵再生成ステップと、
前記端末装置が、前記鍵再生成ステップで生成された前記暗号鍵を用いて前記暗号化データを前記対象データに復号する復号ステップと、
前記端末装置が、前記暗号化データに特定の演算を施すことにより、前記暗号化データに固有な固有情報を生成する固有情報生成ステップと、
前記端末装置が、前記固有情報生成ステップで生成された前記固有情報を前記サーバ装置に送信する固有情報送信ステップと、を含み、
前記学習データ再取得ステップでは、前記端末装置が、前記暗号化データの復号が要求された場合、前記固有情報により特定される前記学習データを前記サーバ装置から再取得する。
【0007】
上記目的を達成するため、本発明の第2の観点に係る端末装置の一態様は、
サーバ装置と通信可能な端末装置であって、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部と、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部と、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部と、を備え、
前記学習データ取得部は、前記暗号化部により暗号化された前記対象データである暗号化データの復号が要求された場合、前記サーバ装置から前記学習データを再取得し、
前記鍵生成部は、前記学習データ取得部により再取得された前記学習データに基づく前記学習を再度行い、前記学習の結果に基づいて前記暗号鍵を再生成し、
前記鍵生成部により再生成された前記暗号鍵を用いて前記暗号化データを前記対象データに復号する復号部と、
前記暗号化データに特定の演算を施すことにより、前記暗号化データに固有な固有情報を生成する固有情報生成部と、
前記固有情報生成部により生成された前記固有情報を前記サーバ装置に送信する固有情報送信部と、を更に備え、
前記学習データ取得部は、前記暗号化データの復号が要求された場合、前記固有情報により特定される前記学習データを前記サーバ装置から再取得する。
【0008】
上記目的を達成するため、本発明の第3の観点に係る暗号化システムは、
上記に記載の端末装置と、前記サーバ装置と、を備える暗号化システムであって、
前記サーバ装置は、
前記端末装置から暗号化の要求を受信した場合、前記端末装置に前記学習データを発行する学習データ発行部、を備える。
【0009】
上記目的を達成するため、本発明の第4の観点に係るプログラムの一態様は、
サーバ装置と通信可能なコンピュータを、
対象データの暗号化が要求された場合、前記サーバ装置から学習データを取得する学習データ取得部、
前記学習データ取得部により取得された前記学習データに基づく学習を行い、前記学習の結果に基づいて暗号鍵を生成する鍵生成部、
前記鍵生成部により生成された前記暗号鍵を用いて前記対象データを暗号化する暗号化部、として機能させ、
前記学習データ取得部は、前記暗号化部により暗号化された前記対象データである暗号化データの復号が要求された場合、前記サーバ装置から前記学習データを再取得し、
前記鍵生成部は、前記学習データ取得部により再取得された前記学習データに基づく前記学習を再度行い、前記学習の結果に基づいて前記暗号鍵を再生成し、
前記鍵生成部により再生成された前記暗号鍵を用いて前記暗号化データを前記対象データに復号する復号部、
前記暗号化データに特定の演算を施すことにより、前記暗号化データに固有な固有情報を生成する固有情報生成部、
前記固有情報生成部により生成された前記固有情報を前記サーバ装置に送信する固有情報送信部、として更に機能させ、
前記学習データ取得部は、前記暗号化データの復号が要求された場合、前記固有情報により特定される前記学習データを前記サーバ装置から再取得する。
【発明の効果】
【0010】
本発明によれば、暗号鍵の共有と漏洩防止とを両立させることができる。
【図面の簡単な説明】
【0011】
【
図1】本発明の実施形態1に係る暗号化システムの概略構成を示す図である。
【
図2】実施形態1に係る端末装置のハードウェア構成を示す図である。
【
図3】実施形態1に係るサーバ装置のハードウェア構成を示す図である。
【
図4】実施形態1に係る暗号化システムの機能的な構成を示す図である。
【
図5】実施形態1における学習の手順を示す図である。
【
図6】実施形態1における暗号化の手順を示す図である。
【
図7A】実施形態1におけるデータ指紋の生成手順を示す第1の図である。
【
図7B】実施形態1におけるデータ指紋の生成手順を示す第2の図である。
【
図7C】実施形態1におけるデータ指紋の生成手順を示す第3の図である。
【
図8】実施形態1において、指紋DBに記憶されるデータの例を示す図である。
【
図9】実施形態1に係る暗号化システムにおいて実行される暗号化処理の流れを示すシーケンス図である。
【
図10】実施形態1に係る暗号化システムにおいて実行される復号処理の流れを示すシーケンス図である。
【
図11】本発明の実施形態2に係る暗号化システムの機能的な構成を示す図である。
【
図12】実施形態2に係る暗号化システムにおいて実行される認証処理の流れを示すシーケンス図である。
【
図13】実施形態2において、認証DBに記憶されるデータの例を示す図である。
【
図14】実施形態3において、サーバ装置から端末装置に学習データが送信される様子を示す図である。
【
図15】実施形態4において、対象データが複数個に分割されて暗号化される様子を示す図である。
【
図16】実施形態5において、テーブルのデータが暗号化される様子を示す図である。
【
図17】実施形態6において、テーブルのデータが暗号化される様子を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について、図面を参照して説明する。なお、図中同一又は相当する部分には同一符号を付す。
【0013】
(実施形態1)
図1に、実施形態1に係る暗号化システム1の概略を示す。暗号化システム1は、デジタルデータをその内容が他者から読み取られないようにするために暗号化する機能と、暗号化されたデジタルデータを元のデジタルデータに復号する機能と、を備えたシステムである。暗号化システム1は、AI(Artificial Intelligence)を用いてワンタイムパッドの暗号鍵を生成し、生成した暗号鍵を用いてデジタルデータを暗号化及び復号する。ここで、ワンタイムパッドとは、1回限りの乱数列を使用して生成された暗号鍵により暗号化及び復号を行う暗号鍵の運用方式である。
図1に示すように、暗号化システム1は、端末装置10と、サーバ装置20と、を備える。
【0014】
端末装置10は、例えば、パーソナルコンピュータ、タブレット端末、スマートフォン等のような端末装置であって、ユーザに操作されるクライアント端末である。端末装置10は、インターネット等の広域ネットワークを介してサーバ装置20と通信可能に接続されている。
図2に示すように、端末装置10は、制御部11と、記憶部12と、操作受付部13と、表示部14と、通信部15と、を備える。
【0015】
制御部11は、CPU(Central Processing Unit)、ROM(Read Only Memory)及びRAM(Random Access Memory)を備える。CPUは、マイクロプロセッサ等を備えており、様々な処理や演算を実行する中央演算処理部である。制御部11において、CPUが、ROMに記憶されている制御プログラムを読み出して、RAMをワークメモリとして用いながら、端末装置10全体の動作を制御する。
【0016】
記憶部12は、フラッシュメモリ、ハードディスク等の不揮発性メモリを備えており、いわゆる二次記憶装置又は補助記憶装置としての役割を担う。記憶部12は、制御部11が各種処理を行うために使用するプログラム及びデータを記憶する。また、記憶部12は、制御部11が各種処理を行うことにより生成又は取得するデータを記憶する。
【0017】
操作受付部13は、キーボード、マウス、ボタン、タッチパッド、タッチパネル等の入力装置を備えており、ユーザからの操作入力を受け付ける。
【0018】
表示部14は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等の表示装置を備えており、制御部11による制御のもとで様々な画像を表示する。
【0019】
通信部15は、端末装置10の外部の機器と通信するための通信インタフェースを備える。例えば、通信部15は、LAN(Local Area Network)、USB(Universal Serial Bus)等の周知の通信規格に則って、サーバ装置20を含む外部の機器と通信する。
【0020】
図1に戻って、サーバ装置20は、例えばクラウドサーバであって、暗号化システム1を管理する装置である。サーバ装置20は、例えば、暗号化システム1を管理する業者等の施設内に設置されている。
図3に示すように、サーバ装置20は、制御部21と、記憶部22と、通信部25と、を備える。
【0021】
制御部21は、CPU、ROM及びRAMを備える。CPUは、マイクロプロセッサ等を備えており、様々な処理や演算を実行する中央演算処理部である。制御部21において、CPUが、ROMに記憶されている制御プログラムを読み出して、RAMをワークメモリとして用いながら、サーバ装置20全体の動作を制御する。
【0022】
記憶部22は、フラッシュメモリ、ハードディスク等の不揮発性メモリを備えており、いわゆる二次記憶装置又は補助記憶装置としての役割を担う。記憶部22は、制御部21が各種処理を行うために使用するプログラム及びデータを記憶する。また、記憶部22は、制御部21が各種処理を行うことにより生成又は取得するデータを記憶する。
【0023】
通信部25は、サーバ装置20の外部の機器と通信するための通信インタフェースを備える。例えば、通信部25は、LAN(Local Area Network)、USB(Universal Serial Bus)等の周知の通信規格に則って、端末装置10を含む外部の機器と通信する。
【0024】
なお、
図1では1台の端末装置10のみ示しているが、サーバ装置20は、広域ネットワークを介して複数の端末装置10と通信部25を介して通信可能に接続されている。サーバ装置20は、複数の端末装置10のそれぞれと通信部25を介して通信し、複数の端末装置10のそれぞれにおけるデータの暗号化を管理する。
【0025】
次に、
図4を参照して、暗号化システム1の機能的な構成について説明する。
【0026】
図4に示すように、端末装置10は、機能的に、学習データ取得部110と、鍵生成部120と、暗号化部130と、指紋生成部140と、指紋送信部150と、復号部160と、を備える。端末装置10の制御部11において、CPUは、ROMに記憶されたプログラムをRAMに読み出して、そのプログラムを実行して制御することにより、これら各部として機能する。
【0027】
サーバ装置20は、機能的に、学習データ発行部210と、データ収集部220と、登録部230と、を備える。サーバ装置20の制御部21において、CPUは、ROMに記憶されたプログラムをRAMに読み出して、そのプログラムを実行して制御することにより、これら各部として機能する。
【0028】
また、サーバ装置20は、学習DB(データベース)240と、指紋DB250と、を備える。これら各データベースは、記憶部22内の適宜の領域に構築される。
【0029】
暗号化システム1は、(1)対象データを暗号化する暗号化処理と、(2)暗号化処理により暗号化された対象データを復号する復号処理と、を実行する。以下、(1)暗号化処理と(2)復号処理とのそれぞれについて順に説明する。
【0030】
(1)暗号化処理
まず、対象データを暗号化する暗号化処理について説明する。
【0031】
端末装置10のユーザは、対象データの暗号化を望む場合、操作受付部13を操作することにより、端末装置10に予めインストールされている専用のアプリケーションソフトウェアを起動させる。そして、ユーザは、起動したアプリケーションソフトウェアにログインし、暗号化の対象となる対象データを指定する。これにより、ユーザは、対象データの暗号化を要求する。
【0032】
端末装置10において、学習データ取得部110は、対象データの暗号化が要求された場合、サーバ装置20から学習データを取得する。ここで、対象データは、暗号化の対象となるデジタルデータである。対象データは、例えば文書(テキスト)、画像、映像、音声、音楽等のデータであって、デジタルデータであればどのようなデータであっても良い。
【0033】
また、学習データは、対象データを暗号化する暗号鍵のベースになるデジタルデータである。対象データの暗号化が要求された場合、学習データ取得部110は、サーバ装置20から学習データを取得するために、通信部15を介してサーバ装置20と通信し、サーバ装置20に暗号化の要求を送信する。
【0034】
サーバ装置20において、学習データ発行部210は、端末装置10から暗号化の要求を受信した場合、端末装置10に学習データを発行する。具体的に説明すると、学習データ発行部210は、学習DB240に記憶されているデータのうちから、予め定められたデータサイズ以上のデータを学習データとして取得する。
【0035】
学習DB240は、暗号鍵のベースになるデジタルデータを記憶しているデータベースである。具体的に説明すると、学習DB240は、暗号鍵のベースになるデジタルデータとして、様々な文字列を含むテキストデータ(文字列データ)を記憶している。例えば、学習DB240は、数1000ワードを含むテキストデータを記憶している。学習DB240に記憶されている文章データは、インターネット上に公開されているテキストが蓄積されたデータである。
【0036】
データ収集部220は、インターネット上に公開されているデジタルデータを収集し、収集したデジタルデータを学習DB240に格納する。具体的に説明すると、データ収集部220は、通信部25を介してインターネットにアクセスし、様々なウェブサイト、SNS(Social Networking Service)等で公開されている記事、論文、日記等のテキストデータを探索する。そして、データ収集部220は、探索したテキストデータを収集し、収集したテキストデータを学習DB240に格納する。データ収集部220は、このようなインターネットからのテキストデータの収集を予め定められた頻度で実行し、学習DB240に記憶されているデータを更新する。これにより、学習DB240には、様々なデータが蓄積される。
【0037】
学習データ発行部210は、端末装置10から暗号化の要求を受信すると、このようにデータ収集部220により収集され、学習DB240に記憶されているデジタルデータのうちから、学習データを発行する。具体的に説明すると、学習データ発行部210は、学習DB240に記憶されているテキストデータのうちから、予め定められたバイト数以上のテキストデータを、学習データとして取得する。
【0038】
より詳細には、セキュリティを高めるため、暗号化システム1において暗号鍵はワンタイムパッドで生成される。そのため、学習データ発行部210は、端末装置10から暗号化の要求を受信する毎に異なるデータを学習データとして発行する。言い換えると、学習データ発行部210は、ある暗号化の要求に対して発行した学習データを、別の暗号化の要求に対する学習データとして発行しない。
【0039】
このように暗号化の要求を受信する毎に異なる学習データを発行し続けると、学習データが枯渇することが懸念される。しかしながら、学習DB240に記憶されるデータは、データ収集部220により日々追加される。また、学習DB240に記憶されるデータは、テキストを並べ替えることや部分的に結合することにより、増やすことができる。更には、学習DB240に記憶されるデータは、言語として特に意味を持たなくても良いため、ランダムに作り出すこともできる。このように、学習DB240に記憶されるデータは実質的に無制限に作り出すことができるため、学習データ発行部210により発行される学習データが枯渇することを回避できる。
【0040】
このようにして学習DB240から学習データを取得すると、学習データ発行部210は、通信部25を介して端末装置10と通信し、取得した学習データを端末装置10に送信する。具体的に説明すると、学習データ発行部210は、サーバ装置20に接続されている複数の端末装置10のうちの、暗号化の要求の送信元である端末装置10に、取得した学習データを送信する。これにより、学習データ発行部210は、暗号化の要求の送信元である端末装置10に学習データを発行する。
【0041】
端末装置10において、学習データ取得部110は、このように暗号化の要求の応答としてサーバ装置20から送信された学習データを受信する。これにより、学習データ取得部110は、学習データを取得する。
【0042】
端末装置10において、鍵生成部120は、学習データ取得部110により取得された学習データに基づく学習を行う。そして、鍵生成部120は、学習の結果に基づいて暗号鍵を生成する。ここで、暗号鍵は、対象データを暗号化するための計算手順を与える情報である。鍵生成部120は、暗号鍵として、暗号化時と復号時において同一の共通暗号鍵を生成する。
【0043】
図5に、鍵生成部120による学習の手順を示す。まず、鍵生成部120は、学習データ取得部110により取得された学習データを学習して学習モデルを生成する(
図5における(1))。学習モデルは、入力データの入力を受けて、入力データに対応する出力データを出力するモデルである。
【0044】
具体的に説明すると、鍵生成部120は、学習として、学習データ取得部110により取得された学習データを訓練データ(教師データ)として用いたディープラーニング(深層学習)を実行する。そして、鍵生成部120は、ディープラーニングにより構築されたニューラルネットワークを構成要素とする学習モデルを生成する。
【0045】
より詳細には、鍵生成部120は、ディープラーニングとして、RNN(Recurrent Neural Network:再帰型ニューラルネットワーク)の手法の1つであるLSTM(Long Short-Term Memory:長・短期記憶)を用いる。鍵生成部120は、LSTMを用いて、サーバ装置20から学習データとして取得されたテキストデータに含まれる文章及びワードを学習する。これにより、鍵生成部120は、入力データとして入力されたテキストに対応するテキストを出力データとして出力する学習モデルを生成する。
【0046】
学習モデルを生成すると、鍵生成部120は、生成された学習モデルを用いて推論する(
図5における(2))。具体的に説明すると、鍵生成部120は、生成された学習モデルに対して、入力データとして学習データを入力する。学習モデルは、学習データの入力を受けると、学習データに対応する出力データを出力する(
図5における(3))。出力データは、暗号鍵のベースとなるブロックデータである。
【0047】
学習モデルは、予め定められたバイト数以上のデータを出力データとして出力する。具体的に説明すると、学習モデルは、学習データに含まれる複数のワードを組み合わせて、予め定められたワード数(一例として200ワード)以上のワードを含むテキストデータを出力データとして出力する。一例として、
図5に示す出力データは、入力データとして学習モデルに入力された学習データに含まれる文章が書き換えられたテキストデータである。鍵生成部120は、ディープラーニングの手法を用いて、サーバ装置20から取得した学習データからこのような出力データを生成する。
【0048】
なお、鍵生成部120は、入力データとして、学習データ取得部110により取得された学習データを用いる。言い換えると、鍵生成部120は、学習段階での訓練データ(教師データ)と推論段階での入力データとで同じデータを用いる。この理由は、鍵生成部120による学習は、推論の精度が向上することを目的とするものではないからであって、暗号鍵のベースとなるブロックデータをランダムに生成することを目的としているからである。AIが予測困難なように間違えることを期待しているとも言い換えられる。このように出力データの正当性は必要としないため、学習段階と推論段階とで同じデータを用いることは問題とはならない。
【0049】
このようにして学習を行うと、鍵生成部120は、学習により得られた出力データに予め定められた処理を施すことにより、暗号鍵を生成する。暗号鍵を生成するために、鍵生成部120は、出力データを予め決められた単位毎にハッシュ化し、ハッシュ値を結合する。ここで、予め定められた単位毎は、例えば、予め決められたバイト数毎、ワード毎等である。以下では、鍵生成部120は、出力データに含まれるテキストをワード毎にハッシュ化する場合を例にとって説明する。例えば、鍵生成部120は、ハッシュ関数としてSHA(Secure Hash Algorithm)512を用いて、出力データに含まれるテキストをワード毎に512ビットのハッシュ値を計算する。
【0050】
ワード毎にハッシュ値を計算すると、鍵生成部120は、ワード毎に計算されたハッシュ値を結合する。これにより、鍵生成部120は、暗号化の対象となる対象データのデータサイズと同じデータサイズの共通暗号鍵を生成する。
【0051】
このように、鍵生成部120は、学習モデルの出力データをそのまま暗号鍵として使用せずに、出力データに対してハッシュ化による処理を施した後のデータを暗号鍵として生成する。そのため、他者が暗号鍵を予測することをより困難なものにすることができる。
【0052】
端末装置10において、暗号化部130は、鍵生成部120により生成された暗号鍵を用いて対象データを暗号化する。これにより、暗号化部130は、対象データが暗号化されたデータである暗号化データを生成する。
【0053】
図6に、暗号化の手順を示す。暗号化部130は、第1処理として、対象データの一部と暗号鍵の一部との間でXOR(排他的論理和)を計算することにより1次データを生成する。具体的には
図6に示すように、暗号化部130は、鍵生成部120により生成された暗号鍵において、先頭から所定数のバイト(一例として1024バイト)のデータをヘッダ用と定め、次の所定数のバイトのデータをフッタ用と定める。
【0054】
暗号化部130は、対象データの先頭の所定数のバイトのデータとヘッダ用暗号鍵との間で、対応する位置のデータ同士のXORを計算する。これと共に、暗号化部130は、対象データの末尾の所定数のバイトのデータとフッタ用暗号鍵との間で、対応する位置のデータ同士のXORを計算する。これにより、暗号化部130は、対象データのうちのヘッダ部とフッタ部とが暗号化された1次データを生成する。
【0055】
次に、暗号化部130は、最終処理として、第1処理により生成された1次データの全体と暗号鍵の全体との間で、対応する位置のデータ同士のXORを計算する。これにより、暗号化部130は、暗号化データとして、対象データの全体に亘って暗号鍵との間で少なくとも1回XORが施されたデータを生成する。
【0056】
このように、暗号化部130は、対象データのヘッダ部とフッタ部とに対して第1処理を実行して1次データを生成してから、1次データの全体と暗号鍵との間でXORを計算する。これにより、暗号化部130は、単に対象データの全体と暗号鍵との間でXORを計算する場合に比べて、対象データを、他者の解読がより困難なように暗号化することができる。
【0057】
端末装置10において、指紋生成部140は、暗号化部130により暗号化された対象データである暗号化データに特定の演算を施すことにより、データ指紋を生成する。ここで、データ指紋は、暗号化データを特定するために用いられる情報であって、暗号化データに固有な固有情報の一例である。指紋生成部140は、固有情報を生成する固有情報生成部として機能する。
【0058】
図7A~
図7Cに、データ指紋の生成手順を示す。指紋生成部140は、暗号化データの一部を連結し、連結されたデータをハッシュ化することにより、データ指紋を生成する。
【0059】
具体的に説明すると、指紋生成部140は、
図7Aに示すように、暗号化データを所定長(一例として65536バイト)毎に行方向に折り返して、2次元状に並べる。次に、指紋生成部140は、
図7Bに示すように、2次元状に並べられた暗号化データのうちの、予め定められたバイト刻み(一例として2048バイト刻み)のポイントにおけるデータを列方向に連結する。これにより、例えば、“あいうえお”、“かきくけこ”、“さしすせそ”等のデータが得られる。
【0060】
データを連結すると、指紋生成部140は、連結されたデータである“あいうえお”、“かきくけこ”、“さしすせそ”等のそれぞれをハッシュ化し、ハッシュ値を計算する。そして、指紋生成部140は、
図7Cに示すように、計算されたハッシュ値を連結する。指紋生成部140は、このようにハッシュ値を連結して生成されたデータを、データ指紋として扱う。
【0061】
このような手順によりデータ指紋は生成されるため、異なる暗号化データからは異なるデータ指紋が生成される。また、暗号鍵自体がワンタイムパッドで生成されるため、暗号化データはユニークになり、同じデータになることはかなり低い確率である。そのため、データ指紋は、暗号化データを生成するのに用いた暗号鍵、及び、暗号鍵を生成する元になった学習データを特定するために用いることができる。また、データ指紋には、暗号化データの一部のみを抜き出して結合し、更にハッシュ化して生成されたものであるため、暗号化データの復号につながる情報は含まれない。
【0062】
端末装置10において、指紋送信部150は、指紋生成部140により生成されたデータ指紋をサーバ装置20に送信する。具体的に説明すると、指紋送信部150は、指紋生成部140によりデータ指紋が生成されると、通信部15を介してサーバ装置20と通信し、生成されたデータ指紋をサーバ装置20に送信する。サーバ装置20において、登録部230は、端末装置10から送信されたデータ指紋を受信する。指紋送信部150は、固有情報をサーバ装置20に送信する固有情報送信部として機能する。
【0063】
サーバ装置20において、登録部230は、端末装置10からデータ指紋を受信すると、受信したデータ指紋を、指紋DB250に登録する。
図8に、指紋DB250に記憶されるデータの例を示す。
図8に示すように、指紋DB250は、複数のデータ指紋のそれぞれを、学習データを特定するための特定情報と対応付けて記憶している。
【0064】
指紋DB250に記憶されている複数のデータ指紋のそれぞれは、過去に学習データ発行部210により発行された学習データを用いて暗号化された暗号化データから生成された固有情報である。また、特定情報は、対応するデータ指紋が生成された暗号化データの暗号化に使用された学習データが学習DB240に記憶されているデータのうちのどのデータであるかを特定するための情報である。一例として、特定情報は、学習DB240において対応する学習データが格納されている格納アドレスを示す情報である。
【0065】
登録部230は、端末装置10からデータ指紋を受信すると、受信したデータ指紋を、その端末装置10に発行した学習データを特定する特定情報と対応付けて、指紋DB250に追加登録する。これにより、以下に説明する復号処理において、過去に学習データ発行部210により発行された学習データを、データ指紋を用いて特定できるようになる。
【0066】
このようにして、対象データの暗号化処理は終了する。暗号化処理において生成された暗号鍵及びデータ指紋は、漏洩防止のため、暗号化処理の後で消去される。
【0067】
(2)復号処理
次に、上述した暗号化処理により生成された暗号化データを対象データに復号する復号処理について説明する。
【0068】
端末装置10のユーザは、暗号化部130により暗号化された暗号化データの復号を望む場合、操作受付部13を操作することにより、専用のアプリケーションソフトウェアを起動させる。そして、ユーザは、起動したアプリケーションソフトウェアにログインし、復号の対象となる暗号化データを指定する。これにより、ユーザは、暗号化データの復号を要求する。
【0069】
端末装置10において、指紋生成部140は、暗号化データの復号が要求された場合、暗号化データに特定の演算を施すことにより、データ指紋を再生成する。復号時におけるデータ指紋の生成方法は、上述した暗号化時におけるデータ指紋の生成方法と同じである。具体的に説明すると、指紋生成部140は、
図7A~
図7Cに示した手順に従って、暗号化データの一部を連結し、連結されたデータをハッシュ化することにより、データ指紋を生成する。
【0070】
指紋生成部140によりデータ指紋が生成されると、学習データ取得部110は、データ指紋により特定される学習データであって、暗号化時と同じ学習データをサーバ装置20から再取得する。具体的に説明すると、学習データ取得部110は、通信部15を介してサーバ装置20と通信し、指紋生成部140により生成されたデータ指紋と共に、復号の要求をサーバ装置20に送信する。
【0071】
サーバ装置20において、学習データ発行部210は、端末装置10から復号の要求及びデータ指紋を受信した場合、端末装置10に学習データを再発行する。具体的に説明すると、学習データ発行部210は、指紋DB250に記憶されている複数のデータ指紋のうちから、端末装置10から受信したデータ指紋に一致するデータ指紋を特定する。そして、学習データ発行部210は、指紋DB250において特定されたデータ指紋に対応付けられて記憶されている特定情報を用いて、学習DB240に記憶されているデータのうちから、暗号化時に発行した学習データを特定する。
【0072】
学習データ発行部210は、特定した学習データを学習DB240から取得する。そして、学習データ発行部210は、学習DB240から取得した学習データを、復号の要求の送信元である端末装置10に送信する。これにより、学習データ発行部210は、端末装置10に学習データを再発行する。データ指紋を用いることにより、学習データ発行部210は、学習DB240に記憶されているデータのうちから、暗号化時と同じ学習データを再発行することができる。
【0073】
端末装置10において、学習データ取得部110は、学習データ発行部210により送信された学習データを受信する。これにより、学習データ取得部110は、サーバ装置20から暗号化時と同じ学習データを再取得する。
【0074】
端末装置10において、鍵生成部120は、暗号化データの復号が要求された場合、学習データ取得部110により取得された学習データに基づく学習を再度行う。そして、鍵生成部120は、学習により得られた出力データに予め定められた処理を施すことにより、暗号鍵を再生成する。
【0075】
復号時において、鍵生成部120は、暗号化時と同様に、
図5に示した手順で暗号鍵を生成する。具体的に説明すると、制御部11は、
図5に示した手順に従って、ディープラーニングの手法を用いて学習データを学習し、学習モデルを生成する。そして、制御部11は、生成した学習モデルに対して、サーバ装置20から取得した学習データを入力データとして入力し、その出力データを得る。
【0076】
出力データを得ると、制御部11は、出力データに含まれるテキストをワード毎にハッシュ化し、ハッシュ値を結合することにより暗号鍵を生成する。このようにして復号時に生成される暗号鍵は、暗号化時と同じ学習データから生成されたものであるため、暗号化時に生成された暗号鍵と同じである。
【0077】
端末装置10において、復号部160は、暗号化データの復号が要求された場合、鍵生成部120により生成された暗号鍵を用いて暗号化データを対象データに復号する。復号部160は、暗号化データに対して、
図6に示した暗号化の手順とは逆の手順を施すことにより、暗号化データを復号する。
【0078】
具体的に説明すると、復号部160は、暗号化データの全体と暗号鍵の全体との間で、対応する位置のデータ同士のXORを計算することにより1次データを復元する。次に、復号部160は、1次データの先頭から所定数のバイトのデータとヘッダ用暗号鍵との間でXORを計算し、1次データの末尾から所定数のバイトのデータとフッタ用暗号鍵との間でXORを計算する。これにより、暗号化データから元の対象データが復元される。
【0079】
このようにして、暗号化データの復号処理は終了する。復号処理において生成された暗号鍵及びデータ指紋は、漏洩防止のため、復号処理の後で消去される。
【0080】
以上のように構成される暗号化システム1において実効される暗号化処理及び復号処理の流れについて、それぞれ
図9及び
図10に示すシーケンス図を参照して説明する。
【0081】
図9に示す暗号化処理は、端末装置10のユーザが専用のアプリケーションソフトウェアを起動させてログインし、暗号化の対象となる対象データを指定したことに応答して開始する。
【0082】
暗号化処理を開始すると、端末装置10において、制御部11は、暗号化の要求をサーバ装置20に送信する(ステップS101)。サーバ装置20において、制御部21は、端末装置10から送信された暗号化の要求を受信する。
【0083】
暗号化の要求を受信すると、制御部21は、学習DB240から学習データを取得する(ステップS102)。具体的に説明すると、制御部21は、学習DB240に記憶されているデータのうちから、予め定められたバイト数以上のテキストデータを取得する。
【0084】
学習データを取得すると、制御部21は、取得した学習データを、暗号化の要求の送信元である端末装置10に送信する(ステップS103)。これにより、制御部21は、学習データを端末装置10に発行する。端末装置10において、制御部11は、サーバ装置20から送信された学習データを受信することにより、学習データを取得する。ステップS103は、学習データ発行ステップ及び学習データ取得ステップの一例である。
【0085】
学習データを取得すると、制御部11は、取得した学習データに基づく学習を行う(ステップS104)。具体的に説明すると、制御部11は、
図5に示した手順に従って、ディープラーニングの手法を用いて学習データを学習し、学習モデルを生成する。そして、制御部11は、生成した学習モデルに対して、サーバ装置20から取得した学習データを入力データとして入力し、その出力データを得る。
【0086】
学習を行うと、制御部11は、学習により得られた出力データに基づいて暗号鍵を生成する(ステップS105)。具体的に説明すると、制御部11は、出力データに含まれるテキストをワード毎にハッシュ化し、ハッシュ値を結合することにより暗号鍵を生成する。ステップS104,S105は、鍵生成ステップの一例である。
【0087】
暗号鍵を生成すると、制御部11は、生成した暗号鍵を用いて対象データを暗号化する(ステップS106)。具体的に説明すると、制御部11は、
図6に示した手順に従って、対象データの先頭及び末尾に対して第1処理を実行してから、対象データの全体と暗号鍵との間でXORを計算する。ステップS106は、暗号化ステップの一例である。
【0088】
対象データを暗号化して暗号化データを生成すると、制御部11は、暗号化データからデータ指紋を生成する(ステップS107)。具体的に説明すると、制御部11は、
図7A~
図7Cに示した手順に従って、暗号化データの一部を連結し、連結されたデータをハッシュ化することにより、データ指紋を生成する。ステップS107は、固有情報生成ステップの一例である。
【0089】
データ指紋を生成すると、制御部11は、生成されたデータ指紋をサーバ装置20に送信する(ステップS108)。サーバ装置20において、制御部21は、端末装置10から送信されたデータ指紋を受信する。ステップS107は、固有情報送信ステップの一例である。
【0090】
データ指紋を受信すると、制御部21は、受信したデータ指紋を登録する(ステップS109)。具体的に説明すると、制御部21は、端末装置10から受信したデータ指紋を、ステップS103でその端末装置10に送信した学習データを特定するための特定情報に対応付けて、指紋DB250に登録する。ステップS109は、登録ステップの一例である。以上により、
図9に示した暗号化処理は終了する。
【0091】
次に、
図10を参照して、復号処理について説明する。
図10に示す復号処理は、端末装置10のユーザが専用のアプリケーションソフトウェアを起動させてログインし、復号の対象として、上記暗号化処理により生成された暗号化データを指定したことに応答して開始する。
【0092】
復号処理を開始すると、端末装置10において、制御部11は、暗号化データからデータ指紋を生成する(ステップS201)。具体的に説明すると、制御部11は、暗号化処理におけるステップS107と同様に、
図7A~
図7Cに示した手順に従って、データ指紋を生成する。ステップS201は、固有情報再生成ステップの一例である。
【0093】
データ指紋を生成すると、制御部11は、生成されたデータ指紋と共に、復号の要求をサーバ装置20に送信する(ステップS202)。サーバ装置20において、制御部21は、端末装置10から送信されたデータ指紋及び復号の要求を受信する。
【0094】
データ指紋を受信すると、制御部21は、受信したデータ指紋により特定される学習データを学習DB240から取得する(ステップS203)。具体的に説明すると、制御部21は、指紋DB250において、端末装置10から受信したデータ指紋に一致するデータ指紋を特定する。そして、制御部21は、特定したデータ指紋に対応付けられて記憶されている特定情報に基づいて、暗号化処理におけるステップS102で発行した学習データと同じ学習データを学習DB240から取得する。
【0095】
学習データを取得すると、制御部21は、取得した学習データを、データ指紋及び復号の要求の送信元である端末装置10に送信する(ステップS204)。端末装置10において、制御部11は、サーバ装置20から送信された学習データを受信する。これにより、制御部11は、暗号化時と同じ学習データを再取得する。ステップS204は、学習データ再発行ステップ及び学習データ再取得ステップの一例である。
【0096】
学習データを取得すると、制御部11は、暗号化処理におけるステップS104と同様に、取得した学習データに基づく学習を行う(ステップS205)。そして、制御部11は、暗号化処理におけるステップS105と同様に、学習により得られた出力データに基づいて暗号鍵を生成する(ステップS206)。ステップS205,S206は、鍵再生成ステップの一例である。
【0097】
暗号鍵を生成すると、制御部11は、
図6に示した手順とは逆の手順に従い、生成した暗号鍵を用いて暗号化データを復号する(ステップS207)。これにより、暗号化部130により暗号化される前の対象データが復元される。ステップS207は、復号ステップの一例である。以上により、
図10に示した復号処理は終了する。
【0098】
以上説明したように、実施形態1に係る暗号化システム1において、端末装置10は、サーバ装置20から取得された学習データに基づく学習を行い、学習の結果に基づいて暗号鍵を生成し、生成された暗号鍵を用いて対象データを暗号化する。サーバ装置20から取得された学習データに基づく学習により暗号鍵を生成するため、通信上に暗号鍵そのものが流通しない。また、学習データがたとえ流出したとしても、学習データから暗号鍵を生成することは困難である。そのため、実施形態1に係る暗号化システム1は、暗号化と復号とで同一の暗号鍵が用いられる暗号化方式において、暗号鍵の漏洩を高い精度で防止することができる。すなわち、暗号鍵の共有と漏洩防止とは矛盾する課題を解決し、暗号鍵の共有と漏洩防止とを両立させることができる。
【0099】
特に、サーバ装置20は、暗号化の要求を受信する毎に異なる学習データを発行し、端末装置10は、暗号化の要求毎に異なる学習データに基づいてワンタイムパッドで暗号鍵を生成する。これにより、暗号鍵の漏洩をより確実に防止することができる。
【0100】
また、実施形態1に係る暗号化システム1の機能は、サーバ装置20と通信することができれば、すなわち既存のインターネット環境に接続することができれば、どのような端末からでも利用することができる。そのため、ユーザは、手軽に暗号化システム1を利用してデジタルデータを暗号化及び復号することができる。
【0101】
更に、実施形態1に係る暗号化システム1は、暗号化された対象データからデータ指紋を生成し、データ指紋を指紋DB250に登録する。そして、暗号化システム1は、暗号化された対象データの復号が要求された場合、データ指紋により特定される学習データをサーバ装置20から取得し、取得した学習データに基づいて、対象データを暗号化した時と同じ暗号鍵を生成する。ユーザが暗号鍵を管理する必要がなくなるため、利便性が向上する。また、データ指紋は暗号化データの一部をハッシュ化して生成されたものであるため、データ指紋が流出したとしても、復号につながる情報の流出にはならない。これにより、ユーザは、暗号化システム1をより手軽に利用して、対象データを暗号化することができる。
【0102】
(実施形態2)
次に、本発明の実施形態2について説明する。実施形態1と同様の構成及び機能については適宜説明を省略する。
【0103】
図11に、実施形態2に係る暗号化システム1aの機能的な構成を示す。端末装置10aは、
図4に示した実施形態1における機能に加えて、端末側認証部180と、を備える。制御部11において、CPUは、ROMに記憶されたプログラムをRAMに読み出して、そのプログラムを実行して制御することにより、端末側認証部180として機能する。
【0104】
また、サーバ装置20aは、
図4に示した実施形態1における機能に加えて、サーバ側認証部280と認証DB290と、を備える。制御部21において、CPUは、ROMに記憶されたプログラムをRAMに読み出して、そのプログラムを実行して制御することにより、サーバ側認証部280として機能する。認証DB290は、記憶部22内の適宜の領域に構築される。
【0105】
端末装置10aの端末側認証部180とサーバ装置20aのサーバ側認証部280とは、ユーザによりログインが要求された場合、互いに協働して、ログインの認証処理を実行する。以下、
図12を参照して、端末側認証部180及びサーバ側認証部280により実行される認証処理について説明する。
【0106】
図12に示す認証処理は、過去に暗号化システム1aを利用したことのあるユーザが、暗号化システム1aを2回目以降に利用する場合に、
図9に示した暗号化処理及び
図10に示した復号処理の前処理として実行される。これに対して、ユーザが初めて暗号化システム1aを利用する場合は、
図12に示す認証処理は実行されない。ユーザは、暗号化システム1aを2回目以降に利用する場合、アプリケーションソフトウェアを起動させて、ユーザのアカウント情報を入力してログインを要求する。これにより、
図12に示す認証処理は開始する。
【0107】
認証処理を開始すると、端末装置10aにおいて、端末側認証部180は、ログインの要求をサーバ装置20aに送信する(ステップS301)。ログインの要求には、ログインを要求しているユーザのアカウント情報が含まれる。サーバ装置20aにおいて、サーバ側認証部280は、端末装置10aから送信されたログインの要求を受信する。
【0108】
サーバ装置20aにおいて、サーバ側認証部280は、ログインの要求を受信すると、認証DB290から認証用データを取得する(ステップS302)。ここで、認証用データは、ユーザが前回までに暗号化システム1aを利用した際に発行された学習データから生成されるデータであって、認証用鍵のベースになるデータである。認証用データは、学習データ発行部210が同じユーザに発行した過去N回分(Nは予め定められた自然数)の学習データをハッシュ化して結合することにより生成される。
【0109】
より詳細には、認証用データは、端末装置10aとサーバ装置20aとのそれぞれにおいて生成される。端末装置10aにおいて、学習データ取得部110は、学習データを取得した後、その学習データを含む過去N回分の取得済みの学習データをハッシュ化して結合することにより、認証用データを生成する。サーバ装置20aにおいて、学習データ発行部210は、学習データを発行した後、その学習データを含む過去N回分の発行済みの学習データをハッシュ化して結合することにより、認証用データを生成する。
【0110】
認証DB290は、
図13に示すように、過去に暗号化システム1aを利用した各ユーザのアカウント情報と、各ユーザに発行した学習データから生成された認証用データと、を対応付けて記憶している。サーバ側認証部280は、認証DB290のうちから、端末装置10aから受信したログインの要求に含まれるアカウント情報に対応付けられて記憶されている認証用データを取得する。
【0111】
認証用データを取得すると、サーバ側認証部280は、チャレンジキーをランダムに生成し、生成したチャレンジキーをログインの要求の送信元である端末装置10aに送信する(ステップS303)。これにより、サーバ側認証部280は、端末装置10aにチャレンジキーを発行する。チャレンジキーは、ログインを認証するために用いられる情報である。端末装置10aにおいて、端末側認証部180は、サーバ装置20aから送信されたチャレンジキーを受信する。これにより、端末側認証部180は、チャレンジキーを取得する。
【0112】
チャレンジキーを取得すると、端末側認証部180は、端末装置10aにおいて生成された認証用データから認証用鍵を生成する(ステップS304)。具体的に説明すると、端末側認証部180は、鍵生成部120による暗号鍵の生成手順と同様に、認証用データに基づく学習を行う。そして、端末側認証部180は、学習により得られた出力データに予め定められた処理を施すことにより認証用鍵を生成する。
【0113】
認証用鍵を生成すると、端末側認証部180は、生成した認証用鍵を用いてサーバ装置20aから受信したチャレンジキーを復号することにより、端末側アンサーキーを生成する(ステップS305)。具体的に説明すると、端末側認証部180は、認証用鍵とチャレンジキーとの間でXORを計算することにより、端末側アンサーキーを生成する。
【0114】
一方で、サーバ装置20aでも同様に、サーバ側認証部280は、サーバ装置20aにおいて生成された認証用データから認証用鍵を生成する(ステップS306)。そして、サーバ側認証部280は、生成した認証用鍵を用いてチャレンジキーを復号することにより、サーバ側アンサーキーを生成する(ステップS307)。サーバ装置20aにおける認証用鍵の生成手順及び復号手順は、端末装置10aにおける認証用鍵の生成手順及び復号手順と同じである。
【0115】
端末装置10aにおいて、端末側認証部180は、端末側アンサーキーを生成すると、生成した端末側アンサーキーをサーバ装置20aに送信する(ステップS308)。サーバ装置20aにおいて、サーバ側認証部280は、端末装置10aから送信された端末側アンサーキーを受信する。
【0116】
端末側アンサーキーを受信すると、サーバ側認証部280は、端末側アンサーキーとサーバ側アンサーキーとが一致しているか否かを判定する(ステップS309)。これにより、サーバ側認証部280は、端末側アンサーキーとサーバ側アンサーキーとが、同じ学習データ及び同じ認証用データから生成された認証用鍵を用いてチャレンジキーを復号することにより生成されたものであるかを確認する。
【0117】
端末側アンサーキーとサーバ側アンサーキーとが一致した場合、サーバ側認証部280は、ログインを認証する(ステップS310)。この場合、サーバ側認証部280は、ログインの認証に成功したことを示す認証情報を端末装置10aに送信する。その後、暗号化システム1aの処理は、
図9に示した暗号化処理又は
図10に示した復号処理に移行する。
【0118】
これに対して、ステップS309において端末側アンサーキーとサーバ側アンサーキーとが一致しなかった場合、サーバ側認証部280は、ログインに失敗したことを示す情報を端末装置10aに送信する。この場合、
図9に示した暗号化処理又は
図10に示した復号処理は実行されない。
【0119】
以上により、
図12に示した認証処理は終了する。
図12に示した認証処理において、端末装置10aにより実行されるステップは端末側認証ステップの一例であり、サーバ装置20aにより実行されるステップはサーバ側認証ステップの一例である。
【0120】
このように、実施形態2に係る暗号化システム1aにおいて、サーバ側認証部280は、端末装置10aからログインが要求された場合、端末装置10aにチャレンジキーを発行し、端末装置10aにおいてチャレンジキーから生成された端末側アンサーキーと、サーバ装置20aにおいてチャレンジキーから生成されたサーバ側アンサーキーと、が一致した場合に、ログインを認証する。ログインの認証に成功した場合にのみ暗号化処理及び復号処理が実行されるため、セキュリティを向上させることができる。
【0121】
特に、実施形態2に係る暗号化システム1aは、過去の学習データから生成された認証用データに基づく学習を行い、学習により得られた認証用鍵を用いてログインを認証する。これにより、ユーザが適切であるかをより確実に確認することができる。
【0122】
(実施形態3)
次に、本発明の実施形態3について説明する。実施形態1,2と同様の構成及び機能については適宜説明を省略する。
【0123】
実施形態1では、サーバ装置20は、端末装置10に学習データを発行する際に、学習データを1個のデータをまとめて端末装置10に送信した。これに対して、実施形態3では、サーバ装置20は、端末装置10に学習データを発行する際に、複数個の部分学習データに分けて端末装置10に送信する。
【0124】
図14に、実施形態3において、サーバ装置20から端末装置10に学習データが送信される様子を示す。実施形態3では、サーバ装置20において、学習データ発行部210は、学習データ発行ステップにおいて学習データを発行する際に、複数個の部分学習データを別々に端末装置10に送信する。
図14の例では、学習データ発行部210は、3個の部分学習データ1/3,2/3,3/3に分けて端末装置10に送信する。
【0125】
具体的に説明すると、学習データ発行部210は、端末装置10から暗号化の要求を受信した場合、学習DB240に記憶されているテキストデータのうちから、予め定められたバイト数以上のテキストデータを学習データとして取得する。そして、学習データ発行部210は、学習DB240から取得した学習データを、複数個の部分学習データに分割する。
【0126】
このようにして学習データを複数個の部分学習データに分割すると、学習データ発行部210は、通信部25を介して端末装置10と通信し、複数個の部分学習データを端末装置10に送信する。具体的に説明すると、学習データ発行部210は、複数個の部分学習データのそれぞれに対して、通信に必要なヘッダ等の情報を付加する。そして、学習データ発行部210は、サーバ装置20に接続されている複数の端末装置10のうちの、暗号化の要求の送信元である端末装置10に、複数個の部分学習データを別々に送信する。
【0127】
端末装置10において、学習データ取得部110は、サーバ装置20から送信された複数個の部分学習データを受信する。そして、学習データ取得部110は、受信した複数個の部分学習データを結合する。これにより、学習データ取得部110は、サーバ装置20において学習DB240から取得された学習データを復元する。このようにして、学習データ取得部110は、学習データ取得ステップにおいて、学習データを取得する。
【0128】
学習データ取得部110が学習データを取得すると、鍵生成部120は、取得された学習データに基づく学習を行い、学習の結果に基づいて暗号鍵を生成する。暗号化部130は、鍵生成部120により生成された暗号鍵を用いて対象データを暗号化する。鍵生成部120及び暗号化部130の機能は、実施形態1で説明したものと同様である。
【0129】
復号処理においても暗号化処理と同様である。具体的に説明すると、学習データ発行部210は、端末装置10に学習データを再発行する際に、学習データとして、複数個の部分学習データを別々に端末装置10に送信する。そして、学習データ取得部110は、サーバ装置20から別々に送信された複数個の部分学習データを受信し、受信した複数個の部分学習データを結合することにより、学習データを再取得する。
【0130】
このように、実施形態3では、学習データ発行部210は、端末装置10に学習データを発行する際に、学習データとして、複数個の部分学習データを別々に端末装置10に送信する。そして、学習データ取得部110は、サーバ装置20から別々に送信された複数個の部分学習データを受信し、受信した複数個の部分学習データを結合することにより、学習データを取得する。1個の学習データをまとめて送信する場合であっても、通信を暗号化することで盗聴等に対する安全性を確保することができるが、通信を分割することで通信の安全性がより向上する。特に、通信ごとに異なる暗号化がされている場合は、復号は一層困難になる。なお、通信を分割することで通信の回数が増えるため、パケット毎に付加されるヘッダの数が通信の回数分増える。そのため通信量は増加するが、通信速度は向上するため、体感するほどの遅延は発生しない。
【0131】
なお、学習データ発行部210は、複数個の部分学習データを取得する際に、学習DB240から取得された1個の学習データを分割することに限らず、学習DB240から直接的に複数個の部分学習データを取得しても良い。その際、学習データ発行部210は、複数個の部分学習データのデータサイズの合計値が、発行する学習データのデータサイズに合致するように、学習DB240から複数個の部分学習データを取得する。
【0132】
また、学習データ発行部210は、学習データだけでなく、データ指紋、チャレンジキー、アンサーキー等のような、サーバ装置20と端末装置10との間で送信される他のデータを複数個に分けて送信しても良い。また、学習データ発行部210が複数個の部分学習データを送信する際、通信の安全性をより向上させるために、複数個の部分学習データの送信の順番を、例えばランダムに変更しても良い。
【0133】
(実施形態4)
次に、本発明の実施形態4について説明する。実施形態1~3と同様の構成及び機能については適宜説明を省略する。
【0134】
実施形態1では、1個の学習データを用いて1個の対象データを暗号化した。これに対して、実施形態3では、複数個の学習データを用いて1個の対象データを暗号化する。
【0135】
図15に、実施形態4における暗号化の手順を示す。実施形態4では、サーバ装置20において、学習データ発行部210は、端末装置10から暗号化の要求を受信した場合、端末装置10に互いに異なる複数個の学習データを発行する。
図15の例では、学習データ発行部210は、1個の対象データの暗号化に対して、互いに異なる3個の学習データを発行する。
【0136】
具体的に説明すると、学習データ発行部210は、端末装置10から暗号化の要求を受信した場合、学習DB240に記憶されているテキストデータのうちから、複数個の学習データとして、予め定められたバイト数以上の互いに異なるテキストデータを複数セット取得する。
【0137】
複数個の学習データを取得すると、学習データ発行部210は、通信部25を介して端末装置10と通信し、複数個の学習データを端末装置10に送信する。具体的に説明すると、学習データ発行部210は、複数個の学習データのそれぞれに対して、通信に必要なヘッダ等の情報を付加する。そして、学習データ発行部210は、サーバ装置20に接続されている複数の端末装置10のうちの、暗号化の要求の送信元である端末装置10に、複数個の学習データを別々に送信する。
【0138】
端末装置10において、学習データ取得部110は、サーバ装置20から送信された複数個の学習データを受信する。これにより、学習データ取得部110は、学習データ取得ステップにおいて、サーバ装置20から互いに異なる複数個の学習データを取得する。
【0139】
鍵生成部120は、鍵生成ステップにおいて、学習データ取得部110により取得された複数個の学習データのそれぞれに基づく学習を行う。そして、鍵生成部120は、複数個の学習データのそれぞれに基づく学習の結果に基づいて、互いに異なる複数個の暗号鍵を生成する。
【0140】
具体的に説明すると、鍵生成部120は、実施形態1で説明した学習の手順に従って1個の学習データから1個の暗号鍵を生成する処理を、サーバ装置20から取得された複数の学習データのそれぞれに対して実行する。これにより、鍵生成部120は、サーバ装置20から取得された学習データと同じ数の暗号鍵を生成する。例えば
図15に示すように、サーバ装置20から3個の学習データが取得された場合、鍵生成部120は、3個の暗号鍵を生成する。
【0141】
暗号化部130は、暗号化ステップにおいて、暗号化の対象となる対象データを、複数個の分割データに分割する。その際、暗号化部130は、対象データを、鍵生成部120により生成された暗号鍵と同じ数の分割データに分割する。例えば
図15では、暗号化部130は、対象データを3個の分割データ1/3,2/3,3/3に分割する。
【0142】
対象データを分割すると、暗号化部130は、複数個の分割データを、それぞれ鍵生成部120により生成された複数個の暗号鍵を用いて暗号化する。具体的に説明すると、暗号化部130は、実施形態1で説明した暗号化の手順に従って1個の分割データを1個の暗号鍵で暗号化する処理を、複数個の分割データのそれぞれに対して実行する。複数個の分割データを暗号化すると、暗号化部130は、暗号化された後の複数個の分割データを結合する。これにより、1個の対象データに対して、それが暗号化された1個の暗号化データが生成される。
【0143】
復号処理でも暗号化処理と同様に、学習データ発行部210は、暗号化処理の際と同じ複数個の学習データを再発行し、学習データ取得部110は、サーバ装置20から複数個の学習データを再取得する。鍵生成部120は、複数個の学習データから複数個の暗号鍵を生成し、暗号化部130は、暗号化データを複数個の分割データに分割し、それぞれ複数個の暗号鍵を用いて復号する。そして、暗号化部130は、復号された後の分割データを結合することにより、対象データを復元する。
【0144】
このように、実施形態4では、学習データ取得部110は、サーバ装置20から複数個の学習データを取得し、鍵生成部120は、複数個の学習データのそれぞれに基づく学習を行い、学習の結果に基づいて複数個の暗号鍵を生成する。そして、暗号化部130は、対象データを複数個の分割データに分割し、複数個の分割データを、それぞれ複数個の暗号鍵を用いて暗号化する。1個の対象データに対して1個の学習データを用いた場合であっても、ワンタイムパッドのアルゴリズムで暗号鍵を生成するため十分な暗号強度を保つが、対象データを分割して暗号化することにより、暗号強度をより高めることができる。
【0145】
(実施形態5)
次に、本発明の実施形態5について説明する。実施形態1~4と同様の構成及び機能については適宜説明を省略する。
【0146】
実施形態5では、暗号化の対象となる対象データは、複数の行及び複数の列を有するテーブルのデータである。
図16に、実施形態5におけるテーブルの例を示す。
図16に示すテーブルは、人に対応する複数の行と、「マイナンバー」、「氏名」、「電話番号」等のデータを表す複数の列と、を有する。このようなテーブルのデータは、例えばデータベースに記憶される。なお、テーブルにおける行はレコードとも呼ばれ、テーブルにおける列はカラムとも呼ばれる。
【0147】
実施形態5において、暗号化部130は、テーブルにおける複数の行のそれぞれのデータを、鍵生成部120により行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化する。言い換えると、暗号化部130は、テーブルのデータを、行(レコード)毎に異なる暗号鍵を用いて、行(レコード)単位で暗号化する。
【0148】
具体的に説明すると、サーバ装置20において、学習データ発行部210は、暗号化の対象となるテーブルが有する行の数に相当する複数個の互いに異なる学習データを発行する。端末装置10において、学習データ取得部110は、学習データ取得ステップにおいて、サーバ装置20から発行された複数個の学習データを取得する。鍵生成部120は、鍵生成ステップにおいて、学習データ取得部110により取得された複数個の学習データのそれぞれに基づく学習を行う。そして、鍵生成部120は、複数個の学習データのそれぞれに基づく学習の結果に基づいて、互いに異なる複数個の暗号鍵を生成する。このような互いに異なる複数個の暗号鍵を生成する処理は、実施形態4で説明した処理と同様である。
【0149】
暗号化部130は、暗号化ステップにおいて、暗号化の対象となるテーブルにおける複数の行のそれぞれのデータを、それぞれ鍵生成部120により生成された複数個の暗号鍵を用いて暗号化する。具体的に説明すると、暗号化部130は、実施形態1で説明した暗号化の手順に従ってテーブルの1行分のデータを暗号鍵で暗号化する処理を、テーブルが有する各行のデータに対して実行する。これにより、
図16に示すように、対象データであるテーブルに含まれる各行のデータが暗号化された暗号化データが生成される。
【0150】
また、暗号化部130は、テーブルに新たな行(レコード)のデータが追加される毎に、追加された新たな行のデータを、テーブルに含まれる既存のデータを暗号化した暗号鍵とは異なる暗号鍵を用いて暗号化する。具体的に説明すると、テーブルに新たな行のデータが追加される毎に、学習データ取得部110は、サーバ装置20に新たな学習データを要求する。
【0151】
サーバ装置20において、学習データ発行部210は、端末装置10から新たな学習データの要求を受信すると、新たな学習データを発行する。具体的に説明すると、学習データ発行部210は、新たな学習データとして、テーブルに含まれる既存のデータを暗号化した暗号鍵を生成するのに用いられた学習データとは異なる学習データを発行する。
【0152】
端末装置10において、学習データ取得部110は、サーバ装置20から発行された学習データを取得する。鍵生成部120は、取得された学習データから暗号鍵を生成し、暗号化部130は、生成された暗号鍵を用いて、新たに追加されたデータを暗号化する。
【0153】
復号処理の際は、ユーザは、復号対象のデータとしてテーブルに含まれる複数の行のうちの少なくとも1行のデータを選択する。学習データ発行部210は、選択されたデータを暗号化した暗号鍵を生成するのに用いられた学習データを再発行し、学習データ取得部110は、サーバ装置20から再発行された学習データを再取得する。鍵生成部120は、再取得された学習データから暗号鍵を生成し、暗号化部130は、生成された暗号鍵を用いて選択されたデータを復号する。
【0154】
このように、実施形態5では、暗号化の対象となる対象データは複数の行及び複数の列を有するテーブルのデータであり、暗号化部130は、テーブルに含まれる複数の行のそれぞれのデータを、行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化する。本発明に係る暗号化システム1は、異なる複数の暗号鍵をワンタイムパッドで手軽に生成することができるため、テーブルのデータを行毎に暗号化するシステムに容易に適用することができる。
【0155】
特に、テーブルに含まれる全ての行のデータを同一の暗号鍵で暗号化することと比較して、行毎に異なる暗号鍵を用いて暗号化することで、万が一1個の行の暗号鍵が流出しても他の行のデータは復号することができない。また、テーブルに新たな行のデータが追加される毎に異なる暗号鍵を生成して追加されたデータを暗号化するため、暗号鍵を端末装置10の内部に保存しておく必要が無い。そのため、高いセキュリティレベルでテーブルのデータを暗号化することができる。
【0156】
(実施形態6)
次に、本発明の実施形態6について説明する。実施形態1~5と同様の構成及び機能については適宜説明を省略する。
【0157】
上記実施形態5では、暗号化部130は、テーブルに含まれる複数の行のそれぞれのデータを、鍵生成部120により行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化した。しかしながら、テーブルの全データが暗号化されていると、例えばデータ検索のように、ユーザがテーブルに含まれるデータを参照することが難しくなる。実施形態5においてテーブルに含まれるデータを参照することができるようにするためには、例えば暗号化データとは別に、参照用のデータを用意する必要がある。ここで、参照用のデータは、例えば、テーブルに含まれる一部のデータであって、暗号化されていない状態のデータである。なお、参照用のデータは、ハッシュ化等によりある程度のセキュリティレベルを持たせても良い。
【0158】
これに対して、実施形態6では、暗号化部130は、テーブルに含まれる複数の列のうちの、参照に用いられる少なくとも1個の列以外の列のデータを、行毎に異なる学習データに基づいて生成された暗号鍵を用いて暗号化し、参照に用いられる少なくとも1個の列のデータを暗号化しない。言い換えると、実施形態6では、暗号化部130は、テーブルに含まれる複数の列の全てのデータを暗号化せず、複数の列のうちの一部の列のデータのみを暗号化する。
【0159】
図17に、実施形態6において、対象データとして
図16と同じテーブルが暗号化される様子を示す。
図17に示すように、暗号化部130は、行毎に学習データに基づいて生成された暗号鍵を用いて、「マイナンバー」と「電話番号」の列のデータを暗号化する。一方で、暗号化部130は、「氏名」の列のデータ(
図17で太字で囲った部分)を暗号化しない。言い換えると、暗号化部130は、「氏名」の列のデータを、参照用のデータとして暗号化されない状態のまま残す。
【0160】
これにより、ユーザは、「氏名」のデータを用いて、データ参照を実行することができる。例えば、ユーザは、複数の行(レコード)のうちのどの行に誰のデータが格納されているのかを確認することができる。
【0161】
なお、参照用のデータとして暗号化されない列のデータは、「氏名」に限らず、自由に設定することができる。例えば、高いセキュリティレベルを必要とする列のデータは暗号化する一方で、高いセキュリティレベルを必要としない列のデータは暗号化せずに、参照用のデータとして用いることができる。
【0162】
(変形例)
以上に本発明の実施形態について説明したが、上記実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、本発明の実施形態は種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
【0163】
例えば、上記実施形態では、学習DB240は、暗号鍵のベースになるデータとしてテキストデータを記憶しており、学習データ取得部110は、学習データとして、学習DB240から予め定められたデータサイズ以上のテキストデータを取得した。しかしながら、学習DB240は、テキストデータ以外のデジタルデータを記憶しており、学習データ取得部110は、学習データとしてテキストデータ以外のデジタルデータを取得しても良い。例えば、学習DB240は、画像、映像、音楽、音声等のデータを記憶しており、学習データ取得部110は、学習データとして、学習DB240から画像、映像、音楽、音声等のデータを取得しても良い。この場合、データ収集部220は、インターネット上に存在する画像、映像、音楽、音声等のデータを収集し、学習DB240に記憶する。
【0164】
上記実施形態では、データ収集部220は、インターネット上に公開されているデジタルデータを収集し、学習DB240に格納した。しかしながら、学習DB240に記憶されるデータは、インターネット上に公開されているデジタルデータに限らず、どのようなデジタルデータであっても良い。例えば、学習DB240に記憶されるデータは、マイクで録音した音声、音楽等のデータであっても良いし、スマートフォン等のデジタルカメラで撮影した画像、映像等のデータであっても良い。更には、学習DB240に記憶されるデータは、サーバ装置20の内部で生成されたデータであっても良い。このように、映像でも画像でも意味のないデータでもデジタルデータであれば何でも学習対象とできるため、学習データ発行部210により発行される学習データが枯渇することはない。
【0165】
上記実施形態では、鍵生成部120は、LSTMの手法を用いて学習データに基づく学習を行って、暗号鍵のベースとなるブロックデータを生成した。しかしながら、鍵生成部120は、LSTMに限らず、どのような手法を用いて学習を行っても良い。例えば、学習データ取得部110により学習データとして画像データが取得された場合、鍵生成部120は、CNN(畳み込みニューラルネットワーク:Convolutional Neural Network)の手法を用いて学習を行っても良い。また、鍵生成部120は、RNN、LSTM、CNN以外のどのような手法を用いて学習を行っても良い。
【0166】
暗号化部130による暗号化の手順は、
図6に示した手順に限らず、どのような手順であっても良い。また、指紋生成部140によるデータ指紋の生成手順は、
図7A~
図7Cに示した手順に限らず、どのような手順であっても良い。
【0167】
本発明に係る暗号化方法を、AES(Advanced Encryption Standard;高度暗号化標準)の技術に適用しても良い。例えば、上記実施形態で説明した暗号化方法で暗号化したデータを、AESで更に暗号化しても良いし、AESで暗号化したデータを、上記実施形態で説明した暗号化方法で更に暗号化しても良い。これにより、例えばAESで暗号化されたデータがBiclique攻撃により復号された場合においても、データを守ることができるため、AESのみで暗号化する場合に比べて、暗号強度を高めることができる。
【0168】
また、AESに限らず、様々な暗号化システムに対して、本発明に係る暗号化方法を適用することができる。特に、1つ1つのデータに対して異なる暗号鍵で暗号化することが必要となるシステムにおいて、本発明に係る暗号化方法は、異なる複数の暗号鍵を、手軽にワンタイムパッドで生成することができる。そのため、高い信頼性を有する暗号化システムを導入するハードルを下げることができる。
【0169】
上記実施形態では、端末装置10,10aの制御部11において、CPUがROM又は記憶部12に記憶されたプログラムを実行することによって、
図4又は
図11に示した各部として機能した。また、サーバ装置20,20aの制御部21において、CPUがROM又は記憶部22に記憶されたプログラムを実行することによって、
図4又は
図11に示した各部として機能した。しかしながら、制御部11,21は、CPUの代わりに、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、各種制御回路等の専用のハードウェアを備え、専用のハードウェアが、
図4又は
図11に示した各部として機能しても良い。この場合、各部の機能それぞれを個別のハードウェアで実現しても良いし、各部の機能をまとめて単一のハードウェアで実現しても良い。また、各部の機能のうち、一部を専用のハードウェアによって実現し、他の一部をソフトウェア又はファームウェアによって実現しても良い。或いは、制御部11,21は、CPUに加えて、又はCPUの代わりに、GPU(Graphics Processing Unit)等の画像処理用のプロセッサを備えていても良い。GPUが、
図4又は
図11に示した各部として機能しても良い。
【0170】
端末装置10,10a又はサーバ装置20,20aの動作を規定するプログラムを、パーソナルコンピュータ、情報端末装置等の既存のコンピュータに適用することで、当該コンピュータを、端末装置10,10a又はサーバ装置20,20aとして機能させることも可能である。また、このようなプログラムの配布方法は任意であり、例えば、CD-ROM(Compact Disk ROM)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、又は、メモリカード等のコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネット等の通信ネットワークを介して配布してもよい。
【0171】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、この発明を説明するためのものであり、本発明の範囲を限定するものではない。すなわち、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
【0172】
本出願は、2020年8月21日に出願された、日本国特許出願特願2020-140089号に基づく。本明細書中に日本国特許出願特願2020-140089号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。
【符号の説明】
【0173】
1,1a 暗号化システム、10,10a 端末装置、11 制御部、12 記憶部、13 操作受付部、14 表示部、15 通信部、20,20a サーバ装置、21 制御部、22 記憶部、25 通信部、110 学習データ取得部、120 鍵生成部、130 暗号化部、140 指紋生成部、150 指紋送信部、160 復号部、180 端末側認証部、210 学習データ発行部、220 データ収集部、230 登録部、240 学習DB、250 指紋DB、280 サーバ側認証部、290 認証DB