【実施例1】
【0010】
図1は、暗号化システム1の備える暗号化装置11および復号化装置12の機能構成の一例を示す。
【0011】
暗号化システム1は、暗号化装置11と、復号化装置12とを備える。暗号化装置11と復号化装置12とは、通信ネットワーク41を介して、データを送受信する。
【0012】
暗号化装置11および復号化装置12はそれぞれ、CPU、メモリ、記憶媒体および通信デバイス(何れも不図示)などを備える計算機装置であり、所定のコンピュータプログラムをCPU等で実行することにより、
図1に示す各種機能を実現する。
【0013】
メモリは、例えば、DRAM(Dynamic Random Access Memory)などによって構成される。記憶媒体は、例えば、HDD(Hard Disk Drive)またはフラッシュメモリなどによって構成される。通信デバイスは、例えば、Ethernet(登録商標)、無線LAN(IEEE802.11)または3G/LTE(Long Term Evolution)などに対応するデバイスによって構成される。通信ネットワークは、例えば、有線/無線LAN(Local Area Network)、WAN(Wide Area Network)又はインターネット網、もしくはこれらの組み合わせによって構成される。
【0014】
<暗号化装置>
暗号化装置11は、機能として、送受信部28と、秘密情報管理部21と、乱数生成部22と、シャッフル情報生成部23と、暗号鍵生成部24と、第1シャッフル部25と、暗号化部26と、第1結合部27とを有する。
【0015】
秘密情報管理部21は、ユーザ情報Iおよび秘密情報kを保持すると共に、ユーザ情報Iと秘密情報kとの対応関係を管理する。ユーザ情報Iは、ユーザ又は装置を一意に識別し得る情報である。秘密情報kは、後述するシャッフル情報100と、暗号/復号用の鍵とを生成するための情報である。秘密情報kは、ユーザ情報Iと一意の対応関係を有する。秘密情報kは、例えば、耐タンパ性を有する不揮発性メモリなどに格納され、外部に漏洩しないように保護される。秘密情報管理部21は、ユーザ情報Iが入力されると、そのユーザ情報Iに対応する秘密情報kを、シャッフル情報生成部23および暗号鍵生成部24に提供する。
【0016】
乱数生成部22は、乱数rを生成する。乱数生成部22は、生成した乱数rを、シャッフル情報生成部23および暗号鍵生成部24に提供する。また、乱数生成部22は、その生成した乱数rを、復号化装置12に送信する。乱数生成部22は、復号化装置12からのデータ要求を受信したことをトリガーとして、乱数rを生成してもよい。もしくは、乱数生成部22は、シャッフル情報生成部23からの乱数の要求をトリガーとして、乱数rを生成してもよい。
【0017】
シャッフル情報生成部23は、シャッフル情報100を生成する。シャッフル情報生成部23は、乱数生成部22から提供された乱数rと、秘密情報管理部21から提供された秘密情報kと、復号化装置12へ送信する元データのデータ長sと、を所定の関数f(r,k,s)に代入して、シャッフル情報100を生成する。関数fは、例えば、r,k,sからf(r,k,s)の算出は容易であるが、f(r,k,s)からr,k,sを推測することは極めて困難な一方向性関数である。秘密情報kと、乱数rと、データ長sとが全て同一の場合は、同一のシャッフル情報100が生成される。シャッフル情報100も、例えば、耐タンパ性を有する不揮発性メモリなどに格納される。
【0018】
図2は、シャッフル情報100に含まれる情報の一例を示す。なお、
図2は、説明の便宜上、シャッフル情報100をテーブル形式で表記しているが、暗号化装置11の内部において、シャッフル情報100がこのように管理されていることを示すものではない。
【0019】
シャッフル情報100には、ブロックの数と、ブロック番号101と、オフセット102と、ブロック長103と、シャッフル番号104との対応関係を示す情報が含まれる。
【0020】
ブロックの数は、元データをいくつのブロックに分割するかを示す。元データをいくつのブロックに分割するかは、f(r,k,s)によって決定される。
図2に示すシャッフル情報100おいては、ブロック番号101の最大数がブロックの数に対応する。
【0021】
ブロック番号101は、元データを複数のブロックに分割したときに、先頭のブロックから順番に割り当てられる番号である。つまり、分割された複数のブロックを、ブロック番号の順番に結合すると、元データが復元される。
【0022】
オフセット102は、ブロック番号101の示すブロックの元データにおける開始位置を示す。ブロック長103は、ブロック番号101の示すブロックの長さ(データサイズ)を示す。オフセット102およびブロック長103は、例えば、Byte単位で指定される。本実施例において、ブロック長103は、ブロック毎に異なり得る。しかし、全てのブロックが同じブロック長103であってもよい。各ブロックをどのくらいの長さにするかも、f(r,k,s)によって決定される。
【0023】
シャッフル番号104は、複数のブロックのシャッフル後の順番を示す。後述する第1結合部27は、このシャッフル番号104の順番にブロックを並び替えて結合する。各ブロックがどのシャッフル番号となるかも、f(r,k,s)によって決定される。
【0024】
例えば、
図2の行110は、ブロック番号101が「3」のブロックは、元データの先頭から「250byte(オフセット)」を開始位置として「200byte(ブロック長)」分を抽出したデータであり、シャッフル後の順番は「1番目(シャッフル番号)」であることを示す。以下、
図1の説明に戻る。
【0025】
暗号鍵生成部24は、暗号鍵を生成する。暗号鍵生成部24は、ブロック毎に異なる暗号鍵を生成する。暗号鍵生成部24は、乱数生成部22から提供された乱数rと、秘密情報管理部21から提供されたkと、シャッフル情報生成部23において生成されたシャッフル情報100に含まれるブロック番号iと、を所定の関数g(r,k,i)に代入し、暗号鍵を生成する。関数gは、例えば、r,k,iからg(r,k,i)の算出は容易であるが、g(r,k,i)からr,k,iを推測することは極めて困難な一方向性関数である。乱数rと、秘密情報kと、ブロック番号iとが全て同一の場合は、同一の暗号鍵が生成される。暗号鍵生成部24は、ブロック番号iに対応する暗号鍵を、暗号化部26へ提供する。
【0026】
第1シャッフル部25は、元データを先頭から、シャッフル情報100の有するブロック番号101の順番に、そのブロック番号101に対応するオフセット102およびブロック長103に従って、複数のブロックに分割する。そして、第1シャッフル部25は、複数のブロックを、シャッフル情報100の有するシャッフル番号104の順番に並び替える。
【0027】
暗号化部26は、第1シャッフル部25で分割された複数のブロックの各々を、そのブロックに対応する暗号鍵で暗号化する。つまり、暗号化部26は、ブロック番号iのブロックを、暗号鍵g(r,k,i)を用いて暗号化する。以下、暗号化されたブロックを「暗号化ブロック」という。
【0028】
第1結合部27は、第1シャッフル部25によって分割及び並び替えられ、暗号化部26によって暗号化された複数の暗号化ブロックを、シャッフル情報100の有するシャッフル番号101の順番に結合し、暗号化データを生成する。
【0029】
送受信部28は、通信ネットワーク14を通じて、復号化装置12と様々なデータを送受信する。送受信部28の受信したユーザ情報Iは、秘密情報管理部21へ提供される。送受信部28は、乱数rを復号化装置12へ送信する。送受信部28は、暗号化データを復号化装置12へ送信する。
【0030】
図3は、暗号化装置11が元データから暗号化データを生成する過程の一例を示す。
(1)第1シャッフル部25は、所定の記憶媒体から元データを読み出す。
(2)第1シャッフル部25は、元データの先頭から、
図2に示すシャッフル情報100のブロック番号101の順番に、そのブロック番号101に対応するオフセット102およびブロック長103に従って、ブロック長103の異なる複数のブロック1、2。3、4に分割する。
(3)第1シャッフル部25は、複数のブロック1、2、3、4を、
図2に示すシャッフル情報100のシャッフル番号104の順番に従って、ブロック番号3、2、4、1に並べ替える。
(4)暗号化部26は、ブロック番号3、2、4、1のブロックをそれぞれ、暗号鍵g(r,k,3)、g(r,k,2)、g(r,k,4)、g(r,k,1)で暗号化する。
(5)第1結合部27は、
図2に示すシャッフル情報100のシャッフル番号104の順番に従って、ブロック番号3、2、4、1の順番に暗号化ブロックを結合し、暗号化データを生成する。
【0031】
なお、上記の(3)と(4)は、入れ替えられてもよい。つまり、(2)元データの分割後、(3)暗号鍵を用いてブロック1、2、3、4を暗号化し、(4)暗号化したブロック1、2、3、4を、シャッフル情報100のシャッフル番号104に従ってブロック3、2、4、1の順番に並び替えてから、(5)結合してもよい。以下、
図1の説明に戻る。
【0032】
<復号化装置>
復号化装置12は、機能として、送受信部38と、秘密情報管理部31と、シャッフル情報生成部33と、復号鍵生成部34と、第2シャッフル部35と、復号化部36と、第2結合部37とを有する。
【0033】
秘密情報管理部31は、基本的に、暗号化装置11の秘密情報管理部21と同様の機能を有する。暗号化装置11の秘密情報管理部21と、復号化装置12の秘密情報管理部31とは、同じユーザ情報Iおよび秘密情報kを保持すると共に、同じユーザ情報Iと秘密情報kとの対応関係を管理する。
【0034】
秘密情報kは、予め(例えば、製造段階で)暗号化装置11および復号化装置12に格納されていてもよいし、所定のサーバからセキュアな通信経路を介して取得されて暗号化装置11および復号化装置12に格納されてもよい。
【0035】
シャッフル情報生成部33は、基本的に、暗号化装置11のシャッフル情報生成部23と同様の機能及び関数f(r,k,s)を有する。シャッフル情報生成部33は、乱数rについては、暗号化装置11から送信されたものを使用する。シャッフル情報生成部33は、データ長sについては、暗号化装置11から送信された暗号化データのデータ長から算出する。これにより、シャッフル情報生成部33は、関数f(r,k,s)を用いて、暗号化装置11と同じシャッフル情報100を生成することができる。
【0036】
復号鍵生成部34は、復号鍵を生成する。暗号鍵と復号鍵とが共通鍵である場合、復号鍵生成部34は、基本的に、暗号鍵生成部34と同様の機能及び関数g(r,k,i)を有する。復号鍵生成部34は、乱数rについては、暗号化装置11から送信されたものを使用する。これにより復号鍵生成部34は、関数g(r,k,i)を用いて、各暗号化ブロックの復号鍵を生成することができる。
【0037】
第2シャッフル部35は、暗号化データを先頭から、シャッフル情報100の有するシャッフル番号104の順番に、そのシャッフル番号104に対応するオフセット101およびデータ長102に従って、複数の暗号化ブロックに分割する。そして、第2シャッフル部35は、複数の暗号化ブロックを、シャッフル情報100の有するブロック番号101の順番に並び替える。
【0038】
復号化部36は、第2シャッフル部35で分割された複数の暗号化ブロックの各々を、そのブロックに対応する復号鍵で復号化する。つまり、復号化部36は、ブロック番号iのブロックを、復号鍵g(r,k,i)を用いて復号化する。
【0039】
第2結合部37は、第2シャッフル部35によって分割され、ブロック番号101の順番(元の順番)に並び替えられ、復号化部36によって復号化された複数のブロックを、シャッフル情報100の有するブロック番号101の順番に結合し、元データを生成する。
【0040】
送受信部38は、通信ネットワーク14を通じて、暗号化装置11と様々なデータを送受信する。送受信部38は、ユーザ情報Iおよびデータ要求を暗号化装置11へ送信する。送受信部38の受信した暗号化データは、第2シャッフル部35へ提供される。
【0041】
図4は、復号化装置12が暗号化データから元データを生成する過程の一例を示す。
(1)第2シャッフル部35は、送受信部39を通じて、暗号化データを受信する。
(2)第2シャッフル部35は、暗号化データの先頭から、
図2に示すシャッフル情報100のシャッフル番号101の順番に、そのシャッフル番号101に対応するオフセット102およびブロック長103に従って、ブロック長の異なる複数の暗号化ブロック3、2、4、1に分割する。
(3)第2シャッフル部35は、複数の暗号化ブロック3、2、4、1を、
図2に示すシャッフル情報100のブロック番号101の順番に従って、ブロック番号1、2、3、4に並べ替える。
(4)復号化部36は、ブロック番号1、2、3、4の暗号化ブロックをそれぞれ、復号鍵g(r,k,1)、g(r,k,2)、g(r,k,3)、g(r,k,4)で復号化する。
(5)第2結合部37は、
図2に示すシャッフル情報100のブロック番号101の順番に従って、ブロック番号1、2、3、4の順番にブロックを結合し、元データを復元する。
【0042】
なお、上記の(3)と(4)は、入れ替えられてもよい。つまり、(2)暗号化データの分割後、(3)復号鍵を用いてブロック3、2、4、1を復号化し、(4)復号化したブロック3、2、4、1を、シャッフル情報のブロック番号に従ってブロック1、2、3、4の順番に並び替えてから、(5)結合してもよい。
【0043】
図5は、暗号化装置11および復号化装置12の処理の一例を示すフローチャートである。
【0044】
復号化装置12は、暗号化装置11に、データ要求およびユーザ情報Iを送信する(S10)。ユーザ情報Iは、データ要求に含まれていてもよい。
【0045】
データ要求を受信した暗号化装置11は、乱数rを生成し、その乱数rを復号化装置12へ送信する(S11)。
【0046】
そして、暗号化装置11は、その生成した乱数rと、復号化装置12から受信したユーザ情報Iに対応する秘密情報kと、復号化装置12へ送信する元データのデータ長sとを用いて、シャッフル情報f(r,k,s)を生成する(S12)。
【0047】
暗号化装置11は、その生成したシャッフル情報100のブロック番号101の順番に、元データを、そのブロック番号101に対応するオフセット102およびデータ長103に従って分割し、複数のブロックを生成する(S13)。
【0048】
暗号化装置11は、その複数のブロックをシャッフル情報100のシャッフル番号104の順番に並び替える(S14)。
【0049】
暗号化装置11は、ブロック番号101毎に異なる暗号鍵g(r,k,i)を生成する(S15)。
暗号化装置11は、ブロック番号101に対応するブロックを、そのブロック番号101に対応する暗号鍵g(r,k,i)を用いて暗号化する(S16)。
【0050】
暗号化装置11は、複数の暗号化ブロックを、シャッフル情報100のシャッフル番号101の順番に結合し、暗号化データを生成する(S17)。
暗号化装置11は、その暗号化データを、復号化装置12へ送信する(S18)。
【0051】
暗号化データを受信した復号化装置12は、暗号化装置11から受信した乱数rと、暗号化装置11へ送信したユーザ情報Iに対応する秘密情報kと、暗号化装置11から受信した暗号化データのデータ長sとを関数f(r,k,s)へ代入し、シャッフル情報100を生成する(S22)。このシャッフル情報100は、暗号化装置11で生成されたシャッフル情報100と同じである。
【0052】
復号化装置12は、その生成したシャッフル情報100のシャッフル番号104の順番に、暗号化データを、そのシャッフル番号104に対応するオフセット102およびデータ長103に従って分割し、複数の暗号化ブロックを生成する(S23)。
【0053】
復号化装置12は、その複数の暗号化ブロックをシャッフル情報100のブロック番号101の順番(元の順番)に並び替える(S24)。
【0054】
復号化装置12は、ブロック番号101毎に異なる復号鍵g(r,k,i)を生成する(S25)。暗号鍵と復号鍵とが共通鍵である場合、この復号鍵は、暗号化装置11で生成された暗号鍵と同じである。
【0055】
復号化装置12は、ブロック番号101に対応するブロックを、そのブロック番号101に対応する復号鍵g(r,k,i)を用いて復号化する(S26)。
【0056】
復号化装置12は、複数の複合化されたブロックを、シャッフル情報100のブロック番号101の順番に結合し、元データを生成する(S27)
【0057】
以上の処理により、暗号化装置11は、復号化装置12に元データをセキュアに送信することができる。そして、上述の構成によれば、第三者(盗聴者)に暗号化データが解読される虞をさらに小さくすることができる。なぜなら、暗号化データは、異なるブロック長の暗号化ブロックが結合されて構成されているため、第三者は、暗号化データを解読しようとしても、その暗号化データの分割位置を推測することができないからである。さらに、それぞれのブロック長が異なり、ブロックの順番も並び替えられており、各ブロックが異なる暗号鍵で暗号化されていることもまた、第三者の暗号化データの解読を困難にする。また、ブロック内にブロック番号に関する情報も含まれていないため、第三者の暗号化データの解読をさらに困難にする。
【0058】
<変形例>
上述の実施例は、以下のように変形されてもよい。
【0059】
(1)上述において、暗号化装置11と復号化装置12は、それぞれ独自にシャッフル情報100を生成している。しかし、暗号化装置11は、生成したシャッフル情報100を暗号化し、暗号化データと一緒に復号化装置12へ送信してもよい。そして、復号化装置12は、その暗号化装置11から送信されたシャッフル情報100を用いて、暗号化データを元データに変換してもよい。これにより、復号化装置12は、自分でシャッフル情報100を生成する必要がなくなる。つまり、復号化装置12の処理負荷が軽減される。
【0060】
(2)暗号化装置11は、暗号化データを外部記憶媒体(USBメモリ又はSDカード等)に出力する機能を有し、復号化装置12は、その外部記憶媒体から暗号化データを読み出して、元データを生成する機能を有してもよい。この場合、例えば、暗号化装置11は、自己のユーザ情報Iと生成した乱数rとを暗号化データと合わせて外部記憶媒体に出力する。そして、復号化装置12は、外部記憶媒体に格納されているユーザ情報Iと乱数rとを用いて、暗号化データを元データに変換する。
【0061】
(3)上記(2)の構成において、暗号化装置11は、生成したシャッフル情報100を暗号化して、暗号化データと共に外部記憶媒体へ出力してもよい。そして、復号化装置12は、その外部記憶媒体から読み出したシャッフル情報100を用いて、暗号化データを元データに変換してもよい。
【0062】
(4)上記(2)又は(3)の構成において、暗号化装置11は、1つの乱数rを用いて複数の暗号化データを生成した場合、その1つの乱数rと複数の暗号化データとをまとめて外部記憶媒体へ出力してもよい。そして、復号化装置12は、その外部記憶媒体から読み出した1つの乱数rを用いて、複数の暗号化データをそれぞれ元データに変換してもよい。
【0063】
(5)暗号鍵および復号鍵として用いられる共通鍵は、例えば、AES(Advanced Encryption Standard)、Triple DES(Data Encryption Standard)、RC4等の暗号アルゴリズムを用いて生成されてよい。
【0064】
(6)暗号鍵と復号鍵は、共通鍵でなく、何れか一方が「秘密鍵」で他方が「公開鍵」であってもよい。
【0065】
上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。