JP2008098690A - 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法 - Google Patents

暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法 Download PDF

Info

Publication number
JP2008098690A
JP2008098690A JP2006274236A JP2006274236A JP2008098690A JP 2008098690 A JP2008098690 A JP 2008098690A JP 2006274236 A JP2006274236 A JP 2006274236A JP 2006274236 A JP2006274236 A JP 2006274236A JP 2008098690 A JP2008098690 A JP 2008098690A
Authority
JP
Japan
Prior art keywords
encryption
data
round
processing
processes
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.)
Withdrawn
Application number
JP2006274236A
Other languages
English (en)
Inventor
Akira Fujiwara
晶 藤原
Kazuyuki Nako
和行 名古
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2006274236A priority Critical patent/JP2008098690A/ja
Publication of JP2008098690A publication Critical patent/JP2008098690A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】複数の鍵を用いて暗号化処理を行なう場合に、鍵を秘匿にしつつ、暗号化処理あるいは復号化処理に必要なデータ記憶容量を削減する。
【解決手段】暗号化処理選択部700は、暗号化の際に使用するテーブルの使用順序を示した暗号化テーブル使用順序リスト710の中から、暗号化に使用する暗号化処理の番号を示した鍵番号720に対応したリストを読み込み、暗号化部702に与える。暗号化部702は、暗号化処理選択部700により与えられたリストに基づき、鍵ごとに使用される個別テーブル712およびすべての鍵に共通して使用される共通テーブル714を参照して、暗号化対象である平文データ722を暗号化する。そして、暗号化データ724とその暗号化に用いた鍵番号720とを関連付けて出力する。
【選択図】図7

Description

本発明は、暗号化装置および復号化装置に関する。特に、暗号化および復号化処理を行なう際に必要なデータ容量を削減する技術に関する。
一般に、ソフトウェア、文書データその他のデジタルデータは、特別の処理が施されていない限り、デジタルデータを入手した者は誰でも、そのデジタルデータを使用(たとえば、実行、表示等)できる。そのため、デジタルデータを扱う際には、データの不正な複製、データに含まれる機密情報の漏洩等の問題がある。
そのような問題の発生を防ぐため、デジタルデータを、暗号化鍵(共通鍵)を用いて暗号化した状態で蓄積、転送などする方法がある。蓄積、転送などされたデジタルデータを使用する際には、そのデジタルデータを、鍵を用いて復号化してから使用する。
しかしながら、上記のようなデジタルデータの暗号化では、暗号化・復号化処理で用いる鍵を安全に配送した後、暗号化処理を行なう側と復号化処理を行なう側の双方で安全に蓄積し、秘匿する必要がある。
そこで、鍵を安全に蓄積し秘匿するため、非特許文献1では、たとえば、ブロック暗号とよばれる共通鍵暗号方式において、暗号化処理あるいは復号化処理を、入出力の対応表である複数の関数テーブル(以下、「テーブル」と呼ぶ。)で構成し、それらのテーブルを参照することで暗号化あるいは復号化を行なう方法が提案されている。なお、共通鍵暗号方式とは、暗号化処理を行なう際に用いる鍵と、復号化処理を行なう際に用いる鍵とが同一である暗号方式である。また、ブロック暗号とは、暗号化するデータを128ビットなど一定の長さのブロックに区切り、ブロック単位で暗号化あるいは復号化を行なうというものである。ブロック暗号の一般的なものとして、たとえば、AES(Advanced Encryption Standard)などがある。
ここで、非特許文献1で開示されている方法を説明する前に、まず、AESで行なわれる暗号化処理について示す。AESでは、暗号化対象の平文データの1ブロックごとにラウンド処理と呼ばれる処理を所定の回数だけ実行して暗号化を行なう。
図18は、AESにおける暗号化処理の概略を示す図である。
図18を参照して、AESにおける暗号化処理について説明する。なお、図18では、例として、平文データの1ブロックが128ビット、ラウンド処理の実行回数rが10の場合を示す。
図18(A)に示すように、AESにおける暗号化処理では、入力データは8ビットごとに16個のデータx (1≦i≦9、1≦j≦16、以下、i,jは整数とする。)に区切られる。そして、第i番目のラウンド(以下、「ラウンドi」と呼ぶ。)の変換Rによって、データx に対し、後述するAddRoundKey処理に相当する排他的論理和演算、SubBytes処理に相当する非線形変換S、ShiftRows処理に相当するビット入れ替えC、MixColumns処理に相当する線形変換Mが順に行なわれ、データy (1≦i≦10)に変換される。そして、データy は、次のラウンドの入力データxi+1 となる。たとえば、ラウンド1によって得られたデータy は、次のラウンド2の入力データx となり、同様のラウンド処理が実行される。このようにして、ラウンド処理が10回実行され、暗号化データy10 が生成される。
なお、図18(B)に示すように、最終のラウンド処理のときは、MixColumns処理に代わってAddRoundKey処理が行なわれる。
また、AESのようなブロック暗号では、鍵そのものではなく、非特許文献2で示されるような「鍵拡張アルゴリズム」にしたがって生成されたラウンド鍵を用いるのが一般的である。なお、図18では、ラウンド処理の実行回数が10回の場合を示したが、ラウンド処理の実行回数rは、平文データ1ブロックの長さと鍵長によって決定される。
次に、上記の各処理について説明する。
AddRoundKey処理では、入力データx とラウンド鍵ki jとの排他的論理和をとる。なお、図18において、ラウンド鍵ki jは、鍵拡張アルゴリズムにしたがって生成された128ビットのラウンド鍵を8ビットごとに区切ったものである。
SubBytes処理では、非特許文献3で示されるように、あるデータx に対し、1バイト入出力の換字テーブルS−boxによって1対1変換を行なう。なお、換字テーブルS−boxとは、入力値のガロア体GF(2)上で次式(1)の逆数をとり、さらに、所定の行列でアフィン変換をした結果を予め計算しておいたものである。
m(x)=x+x+x+x+1…(1)
ShiftRows処理では、ビット入れ替えCを行なう。
図19は、ビット入れ替えCを示す図である。
図19(A)に示すように、8ビットのデータa(1≦j≦16)は入れ替えられる。このビット入れ替えは、図19(B)に示すような処理となる。まず、ビット入れ替えCに与えられたデータaは、データ(a,ad+1,ad+2,ad+3)(d∈{1,5,9,13})を1列として、配列1900のように4列並べられる。そして、第1行目のデータ(a,a,a,a13)はそのままとし、第2行目のデータ(a,a,a10,a14)を左方向に1列分回転、第3行目のデータ(a,a,a11,a15)を左方向に2列分回転、第4行目のデータ(a,a,a12,a16)を左方向に3列分回転させ配列1910のようになる。配列1910において、第1列第1行目から順に、各列において列方向へ出力したものが、ビット入れ替え後のデータとなる。
MixColumns処理では、データ(b,bd+1,bd+2,bd+3)(d∈{1,5,9,13})を1列として、各列ごとに、次のような式(2)に示す演算を実行し、データ(y,yd+1,yd+2,yd+3)を出力する。
Figure 2008098690
ラウンド処理は、以上のような処理から構成される。なお、図18で示したような処理によって暗号化されたデータを復号化するには、ラウンド鍵を復号化処理で用いるラウンド鍵に変更する。また、非線形変換SをSの逆変換に、線形変換MをMの逆変換に、ビット入れ替えCをCの逆変換に変更することで、復号化におけるラウンド処理が構成される。
次に、上記のようなAESにおける暗号化の実装について説明する。AESのラウンドi(1≦i≦9)での変換Rを実装する場合、一般的には、非特許文献3の5.2.1節に示すような処理の流れとなる。
図20は、変換Rを実装する際の流れを示す図である。
図20を参照して、非特許文献3で示される実装の流れについて、図18で示したAESでの処理を実装する場合を例に挙げて説明する。
変換Rを実装する際は、図20(A)に示すように、AddRoundKey処理、SubBytes処理に相当する非線形変換S、MixColumns処理に相当する線形変換M(1≦u≦4、以下、uは整数とする。)、ShiftRows処理に相当するビット入れ替えC’、さらにビット入れ替えC’後のデータ同士の排他的論理和演算を行なう。8ビットのデータは、線形変換Mにより32ビットに拡大される。ここで、図19でのビット入れ替えCと、ビット入れ替えC’は入れ替えの単位が8ビットと32ビットで異なるが、図20(B)に示すように、入れ替えの順序は同じである。
図21は、線形変換Mと線形変換Mとの関係を示す図である。
図21に示すように、線形変換Mは、線形変換Mと32ビットデータの排他的論理和とから構成することができる。ここで、MixColumns処理に相当する線形変換MおよびMは、上述したような行列演算である。また、ShiftRows処理に相当するビット入れ替えCおよびC’は、図19(B)で示したように各行において回転処理がなされる。このため、図18で示した変換R(1≦i≦9)と、図20で示した変換R(1≦i≦9)とは等価であるといえる。
続いて、非特許文献1で提案されている方法について説明する。
非特許文献1では、鍵を安全に蓄積し秘匿するため、AddRoundKey処理、SubBytes処理、MixColumns処理を予め計算したテーブルを作成する。また、このテーブルの入出力では、ランダムな全単射により符号化する。このようなテーブルを参照することで暗号化処理あるいは復号化処理を実行する。
このテーブルは、上記のように、予め処理を計算し、ランダムな全単射により符号化されているため、一見するとランダムなデータである。このため、このようなデータからラウンド鍵を導出することは難しい。さらに、入出力データはランダムな全単射により符号化されているため、入出力データをもとにラウンド鍵を導出することも困難である。
したがって、テーブルを作成することにより、鍵は秘匿されることとなる。また、この場合、このようなテーブルはラウンドごとに多数存在し、どのテーブルをどのような順序で使用するかを理解することは困難である。このため、悪意のある人がテーブルを取得したとしても、暗号化されたデータを復号することは難しい。
上記のように、非特許文献1で提案されている方法を用いることで、暗号化・復号化処理で用いる鍵を安全に蓄積し、秘匿することができる。
また、扱うデジタルデータごとに異なる鍵を用いて暗号化・復号化を行なうことで安全性は更に向上する。そのため、たとえば、デジタルコンテンツの販売においては、コンテンツをコンテンツごとに異なる鍵で暗号化することが多い。
しかしながら、デジタルデータの暗号化で異なる鍵を用いる場合、安全性は向上するが、秘匿すべき鍵のデータ量は増えてしまう。これに対し、たとえば、特許文献1には、デジタルデータごとに異なる鍵で暗号化し、それらをマスタ鍵と呼ばれる1つの鍵で暗号化し、マスタ鍵だけを安全な場所に蓄積する方法が開示されている。これにより、秘匿しなければならないデータ量はマスタ鍵のデータ量だけですむ。
特開昭61−177479号公報 Kaisa Nyberg、Howard M. Heys : "Selected Areas in Cryptography : 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002, Revised Papers", Lecture Notes of in Computer Science 2595、Springer, pp.250−270 (2003). "Federal Information Processing Standards Publication 197、 Announcing the ADVANCED ENCRYPTION STANDARD (AES)", National Institute of Standards and Technology, http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf, (2001). Joan Daeman、Vincent Rijmen : "AES Proposal: Rijndael", http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael.pdf, (1999).
複数の鍵を用いて暗号化処理を行なう場合、非特許文献1で提案されている方法では、デジタルデータごとに異なる鍵で暗号化あるいは復号化を行なう場合、暗号化処理あるいは復号化処理を構成するテーブルの量が増大してしまう。
また、特許文献1に開示された方法では、マスタ鍵により暗号化された鍵は、暗号化処理あるいは復号化処理を行なう際に復号化されるため、暗号化処理あるいは復号化処理の際に鍵を秘匿にできない。
本発明は、上記のような問題を解決するためになされたものであって、その目的は、複数の鍵を用いて暗号化処理を行なう場合に、鍵を秘匿にしつつ、暗号化処理あるいは復号化処理に必要なデータ記憶容量を削減することである。
本発明の1つの局面に従うと、入力データについて暗号化処理を行なう暗号化装置であって、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうための暗号化処理手段を備え、暗号化処理手段は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の暗号化処理に共通して利用される共通関数テーブルと、複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む。
好ましくは、共通関数テーブルは、ランダムな第1のデータと所定の関数とに基づいて作成され、個別関数テーブルは、第1のデータとの加算が対となるラウンド処理のうちの一方で用いられる第1のラウンド鍵データとなるような第2のデータと、他方のラウンド処理で用いられる第2のラウンド鍵データと、所定の関数とに基づいて作成される。
好ましくは、加算は、排他的論理和演算であり、所定の関数は、換字変換と転置変換とを含む。
好ましくは、対となる関数テーブルにおいて、一方の関数テーブルで、全単射により符号化された出力データは、他方の関数テーブルで、全単射の逆変換により復号される。
本発明の他の局面に従うと、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次実行して暗号化する際に利用される、ラウンド処理の演算にそれぞれ対応する複数の関数テーブルの作成方法であって、引き続いて実行されるラウンド処理の対で行なわれる演算は、関数テーブルの対で行なわれる演算と対応し、複数の暗号化処理に共通して利用されるランダムな第1のデータを生成するステップと、第1のデータとの加算が対となるラウンド処理のうちの一方で用いられる第1のラウンド鍵データとなるような第2のデータを計算するステップと、第1のデータと所定の関数とに基づいて、複数の暗号化処理に共通して利用される共通関数テーブルを作成するステップと、他方のラウンド処理で用いられる第2のラウンド鍵データと第2のデータと所定の関数とに基づいて、複数の暗号化処理ごとに個別関数テーブルを作成するステップとを備える。
本発明のさらに他の局面に従うと、暗号化されたデータについて復号化処理を行なう復号化装置であって、複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、鍵データのうちの復号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次暗号化されたデータに対して行なうための復号化処理手段を備え、復号化処理手段は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の復号化処理に共通して利用される共通関数テーブルと、複数の復号化処理ごとに利用される個別関数テーブルとの対を含む。
本発明のさらに他の局面に従うと、演算処理部および記憶部を有するコンピュータに、入力データについての暗号化処理を実行させるための暗号化プログラムであって、演算処理部は、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップを備え、記憶部は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の暗号化処理に共通して利用される共通関数テーブルと、複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む。
本発明のさらに他の局面に従うと、上記暗号化プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
本発明のさらに他の局面に従うと、演算処理部および記憶部を有するコンピュータに、暗号化されたデータについての復号化処理を実行させるための復号化プログラムであって、演算処理部は、複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、鍵データのうちの復号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップを備え、記憶部は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の復号化処理に共通して利用される共通関数テーブルと、複数の復号化処理ごとに利用される個別関数テーブルとの対を含む。
本発明のさらに他の局面に従うと、上記復号化プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
本発明のさらに他の局面に従うと、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の暗号化処理に共通して利用される共通関数テーブルと、複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化方法を提供する。
本発明のさらに他の局面に従うと、複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、鍵データのうちの復号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の復号化処理に共通して利用される共通関数テーブルと、複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化方法を提供する。
本発明によれば、鍵を秘匿にしつつ、暗号化処理あるいは復号化処理に必要なデータ記憶容量を削減することができる。
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
まず、本発明で利用する、関数テーブル(以下、「テーブル」と呼ぶ。)の構成およびそれを用いた暗号化・復号化を説明する前提として、非特許文献1で提案されている方法について説明する。上述したように、非特許文献1では、AESの暗号方式において、暗号化処理あるいは復号化処理を複数のテーブルで構成し、それらのテーブルを参照することで暗号化あるいは復号化を行なう方法が提案されている。
図1は、非特許文献1で提案されている暗号化処理の概略を示す図である。
図1では、例として、平文データの1ブロックが128ビット、鍵長が128ビット(ラウンド処理の実行回数rが10)の場合を示す。なお、以下の説明では特に記載がない限り、1≦j≦16とする。
図1(A)に示すように、変換R(1≦i≦9)では、8ビットの入力データx を、テーブルT 、ビット入れ替えC’および複数の排他的論理和テーブルXにより変換し、出力データy とする。出力データy (1≦i≦9)は、次の変換Ri+1の入力データxi+1 となる。
テーブルT では、入力データに対して、AddRoundKey処理に相当する排他的論理和演算、SubBytes処理に相当する非線形変換S、MixColumns処理に相当する線形変換Mを順に行なう。
図2は、複数の排他的論理和テーブルXの論理的な処理の流れを示した図である。
図2に示すように、テーブルXは、32ビットデータ同士の排他的論理和を複数並べたものである。
図3は、32ビットデータ同士の排他的論理和のテーブル化を示した図である。
図3に示すように、32ビットデータ同士の排他的論理和は4ビットデータ同士の排他的論理和テーブル8個を用いて構成される。このような構成をとるのは以下の理由による。
32ビットデータの演算をテーブル1個で構成すると、テーブルサイズは非常に大きいものとなる。しかし、排他的論理和演算では、繰り上がりが起こらないため、各ビットを独立に演算できる。このことを利用し、32ビットデータ同士の排他的論理和を実行するテーブル1個を用いるのではなく、4ビットデータ同士の排他的論理和を実行するテーブル8個を用いることで、テーブルサイズを抑えることができる。
図1に戻って、図1(B)に示すように、変換R10では、入力データx10 を、テーブルT10 および複数の排他的論理和テーブルYにより変換し、出力データy とする。
テーブルT10 では、入力データに対して、AddRoundKey処理に相当する、k10 、k’11 との排他的論理和演算、SubBytes処理に相当する非線形変換S、ランダムな線形変換Nを行なう。なお、8ビットのデータk’11 ,…,k’11 16は、鍵拡張アルゴリズムにしたがって生成したラウンド鍵k11 ‖…‖k11 16(ただし、「‖」はデータの隣接を表わす)をビット入れ替えCの逆変換により変換した結果がk’11 ‖…‖k’11 16となるようなデータである。
図4は、複数の排他的論理和テーブルYの論理的な処理の流れを示した図である。
図4に示すように、テーブルYは、128ビットデータ同士の排他的論理和を複数並べたものとなる。なお、128ビットデータ同士の排他的論理和は、図3で示したような4ビットデータ同士の排他的論理和テーブルを複数用いて構成される。
さらに、上記の各テーブルにおける入出力ではランダムな全単射が行なわれる。図1および図3において、斜線部はランダムな全単射を示している。
図5は、各テーブル間の関係を示した図である。
図5に示すように、各テーブルの入出力は4ビットごとにランダムな全単射により符号化される。これにより、テーブルは、一見するとランダムなデータとなる。さらに、入出力データも、ランダムなデータとなり、入出力データを利用してラウンド鍵を導出することは困難となる。また、各テーブルにおいてランダムな全単射Aにより符号化された出力は、その出力を入力とするテーブルにおいて、Aの逆変換となる、入力側の全単射A−1により復号される。
図1に戻って、さらに、非特許文献1で提案されている方法では、ラウンド鍵の導出が一層困難になるように、図1(C)に示すような変換Rが作成される。
まず、平文データは、変換Rに入力される。変換Rでは、8ビットずつに区切られた入力データx を、テーブルT および複数の排他的論理和テーブルYにより変換し、出力データy とする。テーブルT では、入力データに対して、ランダムな線形変換Lを行なう。8ビットデータは、線形変換Lにより128ビットに拡大される。
また、変換R10における線形変換Nおよび複数の排他的論理和テーブルYも、ラウンド鍵の導出を困難にするための変換である。これらの他にも、ラウンド鍵の導出を困難にするためのテーブルが複数用いられているが、図が複雑になるため、図1には示していない。
以上の説明から分かるように、非特許文献1に記載の方法では、各ラウンド処理についてテーブルを作成することで、鍵を秘匿することができる。しかし、非特許文献1に記載の方法によって、複数の鍵を用いて暗号化処理を行なう場合、鍵ごとにすべてのラウンド処理についてのテーブルを作成する必要があるため、保持すべきテーブルのデータ量が多くなってしまう。
そこで、複数の鍵を用いて暗号化処理を行なう場合に、本発明では、引き続いて実行されるラウンド処理で行なわれる演算に対応するような、テーブルの対を用いる。このテーブルの対は、各暗号化処理で共通して使用する共通テーブルと、暗号化処理ごとに個別に使用する個別テーブルとから構成される。共通テーブルを作成することにより、保持すべきテーブルのデータ量を少なくすることができる。
また、本発明は上記で説明したAESだけでなく、ラウンド鍵と所定の関数を用いたデータ変換を繰り返し適用して暗号化するような手法を用いる暗号化方法において有効である。この場合、ラウンド鍵と所定の関数を用いたデータ変換は、次のような条件1〜3を満たす必要がある。
(条件1)所定の関数が、換字変換と転置変換により構成されるSPN(Substitution-Permutation Network)構造であること。なお、AESでは、換字変換はSubBytes処理に、転置変換はShiftRows処理とMixColumns処理に相当する。
(条件2)転置変換がガロア体上の演算で表現されること。
(条件3)ラウンド鍵とデータとの演算が条件2のガロア体における加算であること。
なお、AESでは、転置変換でMixColumns処理とShiftRows処理が行なわれるが、それぞれガロア体GF(2)上とGF(2)上の演算で表現される。GF(2)とGF(2)における加算は共にビットごとの排他的論理和であり、AESにおけるラウンド鍵とデータとの演算もビットごとの排他的論理和である。また、ガロア体における加算の表現は、排他的論理和にかかわらず、転置変換を表現するガロア体によって異なる。たとえば、{0,1,2,…,p−1}(ただし、pは素数)というガロア体GF(p)での加算は「(a+b) mod p(a,b∈GF(p))」という演算(一般的な加算を行なった結果に対する剰余)で表現できる。
上記のような条件を満たす暗号方式として、AES以外に、たとえば、Serpent、Hierocrypt−L1、Hierocrypt−3などがある。
以下では、平文データの1ブロックを128ビット、鍵長を128ビットとするAESにおける処理を例にあげて、本発明に係る実施の形態を説明する。
[実施の形態1]
(1. 本発明のシステム構成)
本発明に係る暗号化・復号化装置は、コンピュータ100により実装される。
図6は、コンピュータ100のハードウェア構成を示すブロック図である。
図6を参照して、コンピュータ100の構成について説明する。
コンピュータ100は、CD−ROM(Compact Disc Read-Only Memory)118等の光ディスク上の情報を読み込むための光ディスクドライブ108と、フレキシブルディスク(Flexible Disk、以下FD)116に情報を読み書きするためのFDドライブ106と、表示装置としてのモニタ104と、入力装置としてのキーボード110およびマウス112と、CPU(Central Processing Unit)120と、ROM(Read Only Memory)およびRAM(Random Access Memory)を含むメモリ122と、直接アクセスメモリ装置、たとえば、ハードディスク124と、外部とデータの授受を行なうための通信インターフェイス128とを備える。
CD−ROM118は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、DVD−ROM(Digital Versatile Disc)やメモリーカードなどでもよく、その場合は、コンピュータ100には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。
ハードディスク124内には、暗号化処理および復号化処理のプログラム、各処理において利用されるテーブル、テーブルの使用順序を示すリスト等が格納される。なお、各プログラムは、FD116、またはCD−ROM118等の記録媒体によって供給されてもよいし、他のコンピュータにより通信回線を経由して供給されてもよい。
演算処理装置として機能するCPU120は、メモリ122をワーキングメモリとして、暗号化・復号化処理のプログラムに対応した処理を実行する。
図7は、暗号化処理を行なう場合のCPU120の機能的構成を示した機能ブロック図である。
図7を参照して、暗号化処理を行なう場合のCPU120の機能的構成について説明する。
CPU120は、平文データ722の暗号化に使用する暗号化処理の番号を選択するための暗号化処理選択部700と、暗号化処理を実行するための暗号化部702とを含む。また、ハードディスク124は、鍵ごとに、暗号化の際に使用するテーブルの使用順序を示した暗号化テーブル使用順序リスト710と、暗号化する際に用いる、鍵ごとの個別テーブル712と共通テーブル714とを含む。なお、暗号化テーブル使用順序リスト710およびこれらのテーブルの作成方法については、後の(2)節において説明する。
暗号化処理選択部700には、複数の鍵を用いた複数の暗号化処理の中から、特定の暗号化処理を示す鍵番号720が与えられる。鍵番号720は、たとえば、ユーザがキーボード110を介して入力してもよいし、暗号化するデータの種類に応じて予め定められていてもよい。
暗号化処理選択部700は、暗号化テーブル使用順序リスト710の中から、鍵番号720に対応したリストを読み込み、暗号化部702に与える。
暗号化部702は、暗号化処理選択部700により与えられたリストに基づき、鍵ごとの個別テーブル712および共通テーブル714を参照して、暗号化対象である平文データ722を暗号化する。そして、暗号化部702は、暗号化データ724とその暗号化に用いた鍵番号720とを関連付けて出力する。
図8は、復号化処理を行なう場合のCPU120の機能的構成を示した機能ブロック図である。
図8を参照して、復号化処理を行なう場合のCPU120の機能的構成について説明する。
CPU120は、暗号化データ724の復号化に使用する復号化処理の番号を選択するための復号化処理選択部800と、復号化処理を実行するための復号化部802とを含む。また、ハードディスク124は、鍵ごとに、復号化の際に使用するテーブルの使用順序を示した復号化テーブル使用順序リスト810と、復号化する際に用いる、鍵ごとの個別テーブル812と共通テーブル814とを含む。なお、復号化テーブル使用順序リスト810およびこれらのテーブルの作成方法については、後の(2)節において説明する。
復号化処理選択部800は、暗号化に用いられた鍵番号720を読み込む。
復号化処理選択部800は、復号化テーブル使用順序リスト810の中から、鍵番号720に対応したリストを読み込み、復号化部802に与える。
復号化部802は、復号化処理選択部800により与えられたリストに基づき、鍵ごとの個別テーブル812および共通テーブル814を参照して、復号化対象である暗号化データ724を復号する。そして、復号化部802は、復号化された平文データ722を出力する。
暗号化・復号化処理のプログラムは、上述の通り、CPU120により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、CD−ROM118、FD116等の記録媒体に格納されて流通し、光ディスクドライブ108またはFDドライブ106等により記録媒体から読み取られてハードディスク124に一旦格納される。または、コンピュータ100が通信インターフェイス128を介してネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク124にコピーされる。そうしてさらにハードディスク124からメモリ122中のRAMに読み出されてCPU120により実行される。なお、ネットワーク接続されている場合には、ハードディスク124に格納することなくRAMに直接ロードして実行するようにしてもよい。
図6に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、FD116、CD−ROM118、ハードディスク124等の記録媒体に記憶されたソフトウェアである。
なお、一般的傾向として、コンピュータのオペレーティングシステムの一部として様々なプログラムモジュールを用意しておき、アプリケーションプログラムはこれらモジュールを所定の配列で必要なときに呼び出して処理を進める方式が一般的である。そうした場合、当該ソフトウェア自体にはそうしたモジュールは含まれず、当該コンピュータでオペレーティングシステムと協働してはじめて暗号化・復号化処理が可能になる。しかし、一般的なプラットフォームを使用する限り、そうしたモジュールを含ませたソフトウェアを流通させる必要はなく、それらモジュールを含まないソフトウェア自体およびそれらソフトウェアを記録した記録媒体(およびそれらソフトウェアがネットワーク上を流通する場合のデータ信号)が実施の形態を構成すると考えることができる。
(2. 本発明に係る暗号化・復号化方法)
本節では、本発明に係る暗号化・復号化方法について述べる。以下の説明で明らかになるように、本発明に係る暗号化・復号化方法では、引き続いて実行されるラウンド処理で行なわれる演算に対応するような、テーブルの対を用いる。このテーブルの対は、各暗号化処理で共通して使用する共通テーブルと、暗号化処理ごとに個別に使用する個別テーブルとから構成される。共通テーブルを作成することにより、保持すべきテーブルのデータ量を少なくすることができる。
(2.1 本発明に係る暗号化処理の概略)
図9は、鍵kaを用いた場合の本発明に係る暗号化処理を示す図である。
図9を参照して、鍵kaを用いた場合の本発明に係る暗号化処理の概略について説明する。なお、以下の説明では特に記載がない限り、1≦u≦4とする。また、鍵kaから鍵拡張アルゴリズムにしたがって導出されるラウンド鍵をka (1≦i≦11)とする。
図9(A)に示すように、変換Rでは、8ビットずつに区切られた入力データx を、テーブルTa および複数の排他的論理和テーブルYにより変換し、出力データy とする。なお、出力データy (0≦i≦9)は、次の変換Ri+1の入力データxi+1 となる。
テーブルTa では、入力データに対して、ランダムな線形変換Lおよび128ビットのデータsa との排他的論理和演算を順に行なう。データsa については後述する。
また、図9(B)に示すように、変換R(i∈{1,3,5,7,9})では、入力データx を、テーブルTa 、ビット入れ替えC’および複数の排他的論理和テーブルXにより変換し、出力データy とする。
テーブルTa (i∈{1,3,5,7,9})では、入力データに対して、8ビットのランダムなデータra との排他的論理和、非線形変換Sおよび線形変換Mを順に行なう。なお、データra については後述する。また、テーブルTa (i∈{1,3,5,7,9})は共通テーブルとして、複数の暗号化処理において使用される。
さらに、図9(C)に示すように、変換R(i∈{2,4,6,8})では、入力データx を、テーブルTa 、ビット入れ替えC’および複数の排他的論理和テーブルXにより変換し、出力データy とする。
テーブルTa (i∈{2,4,6,8})では、入力データに対して、ラウンド鍵ka との排他的論理和演算、非線形変換S、線形変換Mおよび32ビットのデータsa との排他的論理和演算を順に行なう。なお、データsa については後述する。
また、図9(D)に示すように、変換R10では、入力データx10 を、テーブルTa10 および複数の排他的論理和テーブルYにより変換し、出力データy10 とする。
テーブルTa10 では、入力データに対して、ラウンド鍵ka10 との排他的論理和演算、非線形変換S、ka’11 との排他的論理和演算、ランダムな線形変換Nを順に行なう。なお、ka’11 ,…,ka’11 16は、鍵拡張アルゴリズムにしたがって生成したラウンド鍵ka11 ‖…‖ka11 16をビット入れ替えCの逆変換により変換した結果がka’11 ‖…‖ka’11 16となるようなデータである。
上述の8ビットのデータra (i∈{1,3,5,7,9})は、sa ‖…‖sa 16を複数の排他的論理和テーブルYにより変換した結果が、(ra ‖…‖ra 16)と(ka ‖…‖ka 16)との排他的論理和となり、かつ、(sai−1 ‖…‖sai−1 16)(i∈{3,5,7,9})をビット入れ替えC’と複数の排他的論理和テーブルXにより変換した結果が、(ra ‖…‖ra 16)と(ka ‖…‖ka 16)との排他的論理和となるようなデータである。
言い換えると、データra は、次式(3)および(4)を満たす。
Figure 2008098690
このようなデータsa ,ra を用いたテーブルの対による演算は、引き続いて実行されるラウンド処理の対で行なわれる演算に対応する。
(2.2 本発明に係るテーブル作成方法)
ここでは、上記(2.1)節のテーブルの作成方法について説明する。その後、このようなテーブルによって、非特許文献1と同様の暗号化データを生成できることを示す。なお、テーブルXおよびテーブルYについては、図2〜4を用いて説明した通りであるため説明は省略する。
テーブルTa (i∈{1,3,5,7,9})における8ビットのデータra は、ランダムに生成される。そして、テーブルTa (i∈{1,3,5,7,9})は、ランダムな全単射Aのテーブルと、8ビットのデータra と、非線形変換Sを予め計算したテーブルと、線形変換Mを予め計算したテーブルと、全単射Aの逆変換A−1のテーブルとに基づいて作成される。このテーブルは、共通テーブルとして、複数の暗号化処理で共通して使用される。
テーブルTa における128ビットのデータsa (1≦j≦15)は、ランダムに生成される。sa 16は、次式(5)を計算することで生成される。
Figure 2008098690
そして、テーブルTa は、ランダムな全単射Aのテーブルと、線形変換Lを予め計算したテーブルと、128ビットのデータsa と、全単射Aの逆変換A−1のテーブルとに基づいて作成される。
また、テーブルTai−1 (i∈{3,5,7,9})における32ビットのデータsai−1 のうち、sai−1 (j∈{4,8,12,16})以外は、ランダムに生成される。sai−1 (j∈{4,8,12,16})については、次式(6)を満たすように生成される。
Figure 2008098690
そして、テーブルTa (i∈{2,4,6,8})は、ランダムな全単射Aのテーブルと、ラウンド鍵ka と、非線形変換Sを予め計算したテーブルと、線形変換Mを予め計算したテーブルと、32ビットのデータsa と、全単射Aの逆変換A−1のテーブルとに基づいて作成される。
さらに、テーブルTa10 は、ランダムな全単射Aのテーブルと、ラウンド鍵ka10 ,ka’11 と、非線形変換Sを予め計算したテーブルと、線形変換Nを予め計算したテーブルと、全単射Aの逆変換A−1のテーブルとに基づいて作成される。
続いて、上記のようにして作成したテーブルを用いることで、非特許文献1で提案される暗号化方法によって生成された暗号化データと同様の暗号化データが生成されることについて述べる。
図10は、非特許文献1と本発明との暗号化方法を説明するための図である。
図10を参照して、鍵kaを用いた場合の非特許文献1と本発明との暗号化方法について説明する。なお、図10では、入力データ(x ‖…‖x 16)をxと表記する。出力データy、ラウンド鍵ka、データra,saについても同様に表記する。また、ランダムな全単射、ビット入れ替えC’、複数の排他的論理和テーブルX,Yは、図を簡略化するため図示しない。なお、各テーブルの入出力における全単射は逆変換の関係にあることにより、以下の説明では、ランダムな全単射による符号化は無視して考える。
図10(A)は、非特許文献1に係るデータ変換を示す図であり、図10(B)は、本発明に係るデータ変換を示す図である。図10では、変換RでのテーブルをT 、T とする。
図10(A)において、非特許文献1における変換Rの出力データ(D100)を(y ‖…‖y 16)とする。ここで、変換Rの非線形変換Sへの入力データ(D102)は、次式(7)のようになる。
Figure 2008098690
また、非特許文献1における変換Ri−1(i∈{3,5,7,9})の出力データ(D104)を(yi−1 ‖…‖yi−1 16)とする。ここで、変換Rの非線形変換Sへの入力データ(D106)は、次式(8)のようになる。
Figure 2008098690
一方、図10(B)において、本発明における変換Raの出力データ(D120)を(ya ‖…‖ya 16)とする。ここで、変換Raの非線形変換Sへの入力データ(D122)は、次式(9)のようになる。なお、入力データとデータsa との演算は排他的論理和演算(つまり、ガロア体における加算)であるため、(ya ‖…‖ya 16)は、(y ‖…‖y 16)と(sa (+)…(+)sa 16)との排他的論理和となっている(ただし、(+)は排他的論理和を求める演算子を表わす)。
Figure 2008098690
また、変換Rai−1(i∈{3,5,7,9})の出力データ(D124)を(yai−1 ‖…‖yai−1 16)とする。ここで、変換Raの非線形変換Sへの入力データ(D126)は、次式(10)のようになる。
Figure 2008098690
以上のように、式(7)(8)で示した非特許文献1の変換R(i∈{1,3,5,7,9})の非線形変換Sへの入力と、式(9)(10)で示した本発明の変換Ra(i∈{1,3,5,7,9})の非線形変換Sへの入力とは一致する。
また、変換Rの非線形変換Sへの入力以降の処理は非特許文献1と本発明とでは同様である。
したがって、鍵kaについて暗号化する場合、本発明の暗号化処理による暗号化データは非特許文献1の暗号化処理による暗号化データと同じになる。
(2.3 他の鍵を用いる場合のテーブル利用方法)
上述したように、非特許文献1で提案される方法では、ラウンド処理ごとにテーブルを作成する。このため、複数の鍵を用いて暗号化する場合は、鍵ごとにラウンド処理に対応するテーブルを作成する必要がある。しかしながら、本発明に係る暗号化処理では、共通テーブルを使用するため、すべてのラウンド処理に対応するテーブルを作成する必要はない。以下では、上記の鍵kaとは異なる、鍵kbについて暗号化する場合を例にとって、本発明に係る暗号化処理について、さらに説明する。
図11は、鍵kbを用いた場合の本発明に係る暗号化処理を示す図である。
図11を参照して、鍵kbを用いた場合の本発明に係る暗号化処理の概略について説明する。なお、鍵kbから鍵拡張アルゴリズムにしたがって導出されるラウンド鍵をkb (1≦i≦11)とする。
鍵kbを用いた場合、変換R(i∈{1,3,5,7,9})は、図9(B)で示した、鍵kaを用いた場合の変換と同じである。このため、図11において、変換R(i∈{1,3,5,7,9})については省略する。
鍵kaの場合、変換Rでは図9(A)で示すようにデータsa を用いたが、鍵kbの場合は、図11(A)で示すようにデータsb を用いる。
また、鍵kaの場合、変換R(i∈{2,4,6,8})では図9(C)で示すようにラウンド鍵ka 、データsa を用いたが、鍵kbの場合は、図11(B)で示すように、ラウンド鍵kb 、データsb を用いる。
さらに、鍵kaの場合、変換R10では図9(D)で示すように、ラウンド鍵ka10 、データka’11 を用いたが、鍵kbの場合は、図11(C)で示すように、ラウンド鍵kb10 、データkb’11 を用いる。なお、kb’11 ,…,kb’11 16は、鍵拡張アルゴリズムにしたがって生成したラウンド鍵kb11 ‖…‖kb11 16をビット入れ替えCの逆変換により変換した結果がkb’11 ‖…‖kb’11 16となるようなデータである。
ここで、データsb は、sb ‖…‖sb 16を複数の排他的論理和テーブルYにより変換した結果が、(ra ‖…‖ra 16)と(kb ‖…‖kb 16)との排他的論理和となるようなデータである。
また、データsb (i∈{2,4,6,8})は、(sb ‖…‖sb 16)を複数の排他的論理和テーブルXにより変換した結果が、(rai+1 ‖…‖rai+1 16)と(kbi+1 ‖…‖kbi+1 16)との排他的論理和となるようなデータである。
言い換えると、データsb は、次式(11)および(12)を満たす。
Figure 2008098690
したがって、データsb は、式(5)(6)を用いてデータsa を生成したのと同様に生成することができる。これにより、テーブルTb (i∈{0,2,4,6,8,10})も、テーブルTa と同様に作成することができる。
図12は、複数の鍵を用いた暗号化処理を示した概略図である。
図12を参照して、複数の鍵k(p)(p=1,…,n)を用いた際に利用するテーブルについて説明する。なお、図12では、入力データ(x ‖…‖x 16)のある8ビットデータx に対するラウンド処理を示している。以下では、簡単のため添字jは省略する。ラウンド鍵k、データr,sについても同様に省略する。また、鍵k(p)についてのテーブルT、ラウンド鍵k、データr,sを、テーブルT(p)、ラウンド鍵k(p)、データr(p),s(p)と表記する。さらに、ランダムな全単射、ビット入れ替えC’、複数の排他的論理和テーブルX,Yは、図を簡略化するため図示しない。
図12に示すように、変換R(i∈{1,3,5,7,9})では、鍵k(1)による暗号化処理と、その他の鍵k(p)(p=2,…,n)による暗号化処理で同じテーブルを用いることができる。本発明では、上述のように、データsi−1(p)をデータr(p)とラウンド鍵k(p)との排他的論理和となるように生成しているため、対となるテーブルでの処理に対応する演算は、非特許文献1で提案の方法において、引き続いて実行されるラウンド処理の演算に対応する。ただし、本発明における変換Rおよび変換Rで引き続いて行なわれた処理は、非特許文献1で提案の方法における最初のラウンド処理に対応する。
これは、排他的論理和演算は、ガロア体GF(2)における加算であるため、実数の四則演算と同様に考えることにより、ラウンド鍵を、データsi−1(p)とデータr(p)との加算として扱うことができるからである。
したがって、複数の鍵に対応した暗号化処理を構成する際には、テーブルT(p)(i∈{0,2,4,6,8,10})だけを鍵ごとに用意すればよい。そして、鍵ごとにラウンド処理を実行する際に参照するテーブルの使用順序を示したリストを作成する。これにより、複数の鍵を用いて、複数の鍵それぞれに対応した暗号化処理を行なう場合、選択された鍵に応じて暗号化処理を行なうことができる。
以上で説明したように、n個の鍵を用いてm回のラウンド処理を行なうような暗号化処理の場合、非特許文献1で提案されている方法では、所定の関数と排他的論理和演算に基づいたテーブルを(m×n)個作成する必要がある。一方、本発明では、このようなテーブルを、m+{(m+1)/2}×(n−1)個作成するだけで十分である。
また、同様の方法により、たとえば、図12で、変換R(i∈{0,2,4,6,8})において共通するテーブルを構成し、変換R(i∈{1,3,5,7,9,10})において個別に使用するテーブルを構成することもできる。
つまり、最終ラウンドでの変換Rは鍵ごとに異なるテーブルで構成する必要があるが、それ以外の変換については、変換R(iは奇数)を共通するテーブルとして構成する方法と、変換R(iは偶数)を共通するテーブルとして構成する方法とがある。
AESでは、図18で示したようなラウンド鍵を復号化処理で用いるラウンド鍵に変更し、非線形変換SをSの逆変換に変更し、線形変換MをMの逆変換に変更し、ビット入れ替えCをCの逆変換に変更することで復号化処理が構成される。したがって、暗号化処理と同様の方法により、複数の鍵を用いた複数の復号化処理でのテーブルを作成できる。
(3. コンピュータ100への実装)
以上の発明である暗号化・復号化処理は、以下の手続きによってコンピュータソフトウェアとして実装できる。
以下、その手続きについてまとめる。まず、暗号化・復号化処理で用いるテーブルの作成手順について述べた後、暗号化・復号化処理の手順について説明する。
図13は、テーブル作成の処理の流れを具体的に示したフローチャートである。
図13を参照して、テーブル作成の処理の流れを説明する。なお、図13では、図12と同様に、あるデータを所定のビットで区切ったときのビットデータを示すための添字jは省略する。また、鍵k(p)についてのテーブルT、ラウンド鍵k、データr,sを、テーブルT(p)、ラウンド鍵k(p)、データr(p),s(p)と表記する。
ステップS1300において、CPU120は、与えられたn個の鍵を読み込み、鍵番号を示すインデックスpを1に設定する。
ステップS1302において、CPU120は、鍵k(p)について、鍵拡張アルゴリズムにしたがって、ラウンド鍵k(p)(1≦i≦r(ただし、rはラウンド処理の実行回数))を生成する。そして、CPU120は、生成したラウンド鍵k(p)をハードディスク124に書き込む。
ステップS1304において、CPU120は、鍵番号pが1かどうかを判定する。
鍵番号pが1と判断した場合(ステップS1304にて、YES)、ステップS1306において、CPU120は、上記の(2.2)節で説明したように、データs(1),r(1)(1≦i≦r)を生成する。そして、CPU120は、生成したデータs(1),r(1)をハードディスク124に書き込む。
続いて、ステップS1308において、CPU120は、インデックスiとcをゼロに設定する。
さらに、ステップS1310において、CPU120は、ハードディスク124に書き込まれたラウンド鍵k(p)およびデータs(1),r(1)を読み込んで、上記の(2.2)節で説明したように、テーブルT(1)を作成する。そして、CPU120は、テーブルT(1)をハードディスク124に書き込む。
次いで、ステップS1312において、CPU120は、テーブル使用順序リストのc番目をT(1)とする。
続いて、ステップS1314において、CPU120は、iとcを1づつ更新する。
そして、ステップS1316において、CPU120は、cがr+1であるかどうか判定する。つまり、鍵k(1)についてのテーブル使用順序リストが完成しているかどうかを判定する。
テーブル使用順序リストが完成していなければ(ステップS1316にて、NO)、ステップS1310の処理に戻る。
一方、鍵番号pが1でないと判断した場合(ステップS1304にて、NO)、ステップS1318において、CPU120は、上記の(2.2)節で説明したように、データs(p)(1≦i≦r)を生成する。そして、CPU120は、生成したデータs(p)をハードディスク124に書き込む。
続いて、ステップS1320において、CPU120は、インデックスhを1に、インデックスiとcをゼロに設定する。
さらに、ステップS1322において、CPU120は、ハードディスク124に書き込まれたラウンド鍵k(p)およびデータs(p)を読み込んで上記の(2.2)節で説明したように、テーブルT(p)を作成する。そして、CPU120は、テーブルT(p)をハードディスク124に書き込む。
次いで、ステップS1324において、CPU120は、テーブル使用順序リストのc番目をT(p)、(c+1)番目をT(1)とする。
続いて、ステップS1326において、CPU120は、h,i,cを2づつ更新する。
そして、ステップS1328において、CPU120は、cがr+1であるかどうか判定する。つまり、鍵k(p)についてのテーブル使用順序リストが完成しているかどうかを判定する。
テーブル使用順序リストが完成していなければ(ステップS1328にて、NO)、ステップS1322の処理に戻る。
テーブル使用順序リストが完成していれば(ステップS1316およびステップS1328にて、YES)、ステップS1330において、CPU120は、テーブル使用順序リストと鍵番号とを関連付けて、ハードディスク124に書き込む。
続いて、ステップS1332において、CPU120は、pがnかどうか判定する。つまり、すべての鍵についてテーブルを作成したかどうかを判定する。
すべての鍵についてテーブルを作成していないと判断すれば(ステップS1332にて、NO)、ステップS1334において、pを1更新する。
一方、すべての鍵についてテーブルを作成したと判断すれば(ステップS1332にて、YES)、テーブル作成の処理を終了する。
図14は、テーブル使用順序リストを示した図である。
図14を参照して、テーブル使用順序リストについて説明する。なお、図14は、n個の鍵を用いて、変換R(0≦i≦10)を実行して暗号化処理を行なう場合のテーブル使用順序リストを示している。
複数の鍵を示す鍵リスト1402における各鍵と、その鍵を用いて暗号化処理を行なう際に順次使用するテーブルを示したテーブル使用順序リスト1404とが関連付けられている。
テーブル使用順序リスト1404は、鍵ごとに個別に作成されるテーブル(白抜き部分)と共通テーブル(網掛け部分)とから構成される。なお、図14では、左から順に、暗号化処理で使用するテーブルが示されている。テーブル使用順序リストは、たとえば、配列によってリストを構成する場合、CPUが、各セルにハードディスク中におけるテーブルのアドレスを書き込むことで実現することができる。
また、図13,14で示したのと同様の手順で、復号化処理で使用するテーブルおよび復号化処理でのテーブル使用順序リストを作成し、ハードディスク124に書き込む。さらに、テーブルX,Yについても共通して使用するテーブルとして予め作成しておき、ハードディスク124に書き込んでおく。
続いて、暗号化・復号化処理の手順について説明する。
図15は、暗号化処理の流れを示したフローチャートである。
図15を参照して、CPU120が暗号化処理を行なう手順について説明する。
まず、ステップS1500において、CPU120は、暗号化対象データを取得する。暗号化対象データは、ハードディスク124に予め与えられていてもよいし、通信インタフェース128を介して外部から与えられてもよい。また、CD−ROM118等の記録媒体によって与えられてもよい。
続いて、ステップS1502において、CPU120は、暗号化処理に用いる鍵番号を取得する。なお、鍵番号は、複数の暗号化処理のそれぞれに対応付けられている。
そして、ステップS1504において、CPU120は、鍵番号と関連付けられたテーブル使用順序リストにしたがって、ハードディスク124からテーブルを読み込み、暗号化処理を実行する。暗号化データは、ハードディスク124に書き込まれる。この際、暗号化データと暗号化処理で使用した鍵とを対応付けておく。
CPU120は、以上のようにして暗号化処理を実行する。
図16は、復号化処理の流れを示したフローチャートである。
図16を参照して、CPU120が復号化処理を行なう手順について説明する。
まず、ステップS1600において、CPU120は、暗号化データを読み込む。暗号化データは、ハードディスク124に与えられていてもよいし、通信インタフェース128を介して外部から与えられてもよい。また、CD−ROM118等の記録媒体によって与えられてもよい。
続いて、ステップS1602において、CPU120は、復号化処理に用いる鍵番号を読み込む。これは、暗号化処理で用いられた鍵であり、暗号化データと共に与えられる。
そして、ステップS1604において、CPU120は、鍵番号と対応付けられたテーブル使用順序リストにしたがって、ハードディスク124からテーブルを読み込み、復号化処理を実行し、もとの平文データを出力する。
CPU120は、以上のようにして復号化処理を実行する。
以上で説明したように、本実施の形態に係る暗号化・復号化装置によれば、複数の鍵を用いた複数の暗号化処理において、各暗号化処理を別々に構成するのではなく、暗号化処理を構成するテーブルの一部を共有する。これにより、暗号化処理を構成するテーブルのサイズの増加を抑制することができる。復号化処理についても同様に、復号化処理を構成するテーブルのサイズの増加を抑制することができる。
また、本実施の形態に係る暗号化・復号化装置によれば、暗号化処理においてラウンド鍵を用いたデータ変換を、入出力がスクランブルされたテーブルで構成しているため、鍵を秘匿することができる。復号化処理についても同様に鍵を秘匿することができる。
[実施の形態2]
本実施の形態では、実施の形態1に係る暗号化・復号化処理の具体的な利用シーンについて説明する。
図17は、本実施の形態に係るコンテンツの配信システムを説明するための図である。
図17を参照して、コンテンツの配信システム1700について説明する。ここで、図17(A)は、配信システム1700の構成図であり、図17(B)は、配信用暗号化コンテンツの構成図である。なお「コンテンツ」とは、あらゆる種類のデータを対象とすることができる。対象となる主なデータとしては、不正利用を防ぎたいデータ、たとえば、著作権などがあるデジタルデータ、課金情報その他のデータである。より具体的には、たとえば、音楽や画像、動画、電子書籍などのデータ、あるいは、携帯電話、パーソナルコンピュータ等のデータを利用することができる装置内で実行可能なプログラムなどである。
図17(A)に示すように、配信システム1700は、コンテンツを作成するためのコンテンツ作成装置1701と、サーバ処理装置1710と、コンテンツを実行するためのコンテンツ実行装置1720とから構成される。
コンテンツ作成装置1701は、コンテンツ作成者がコンテンツを入力するためのコンテンツ入力部1702と、コンテンツ作成者がコンテンツの暗号化に使用する暗号化処理の番号を選択するための暗号化処理選択部1703と、選択された番号の暗号化処理を用いてコンテンツを暗号化するため暗号化部1705と、データを送受信するための送受信部1707とを備える。コンテンツ作成装置1701は、たとえば、汎用的なパーソナルコンピュータで構成される。
暗号化部1705は、図17(B)に示すような、暗号化コンテンツ1752に対し、選択された番号の暗号化処理を示す暗号化処理番号1750を付加した配信用暗号化コンテンツ1754を出力する。なお、暗号化部1705が暗号化する際は、実施の形態1で説明したようなテーブルを利用する。
図17(A)に戻って、送受信部1707は、ネットワーク回線1730を介してサーバ処理装置1710へ配信用暗号化コンテンツを送信する。
サーバ処理装置1710は、コンテンツ作成装置1701およびコンテンツ実行装置1720とデータを送受信するための送受信部1711と、コンテンツ作成装置1701から送信されてきた配信用暗号化コンテンツを保存するためのコンテンツデータベース1713とを備える。サーバ処理装置1710は、たとえば、汎用的なパーソナルコンピュータで構成される。
サーバ処理装置1710は、コンテンツ実行装置1720から送信要求があれば、要求を受けた配信用暗号化コンテンツを送受信部1711からネットワーク回線1740を介してコンテンツ実行装置1720に送信する。
コンテンツ実行装置1720は、データを送受信するための送受信部1721と、ユーザからの指示を処理するためのユーザ指示処理部1722と、コンテンツを保存しておくための記憶装置1723と、暗号化コンテンツを復号するための復号化部1724と、コンテンツを実行するためのコンテンツ実行部1725とを備える。コンテンツ実行装置1720は、たとえば、汎用的なパーソナルコンピュータで構成される。
ユーザは、たとえば、コンテンツ実行装置1720のモニタ(図示しない)上に表示されているコンテンツの中から所望のコンテンツを、ユーザ指示処理部1722を介して選択する。送受信部1721は、サーバ処理装置1710にコンテンツの送信要求を送信する。その後、サーバ処理装置1710から送られてくる配信用暗号化コンテンツを送受信部1721で受信し、記憶装置1723に保存する。保存された配信用暗号化コンテンツは、復号化部1724において読み出される。さらに復号化部1724において、配信用暗号化コンテンツは暗号化処理番号と暗号化コンテンツに分離され、暗号化コンテンツは暗号化処理番号と同一の番号の復号化処理を用いて復号される。復号されたコンテンツはコンテンツ実行部1725で実行される。なお、復号化部1724が復号化する際は、実施の形態1で示したようなテーブルを利用する。
たとえば、コンテンツが電子書籍である場合には、モニタに電子書籍のページを表示する。また、たとえば、コンテンツが音楽である場合には、音声出力装置から音声を出力する。また、ユーザが、所望の実行制御データを、ユーザ指示処理部1722を介して入力すると、コンテンツ実行部1725では、入力に応じた実行制御が行なわれる。たとえば、コンテンツが電子書籍である場合には、ユーザからページめくりなどの指示を受けると、表示されているページとは異なるページを表示する。たとえば、コンテンツが音楽である場合には、ユーザから再生停止の指示を受けると、音声の出力を停止する。
以上で説明したように、本実施の形態に係るコンテンツ配信システムは、実施の形態1の効果に加え、コンテンツ作成装置とコンテンツ実行装置間で安全にコンテンツの送受信ができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
非特許文献1で提案されている暗号化処理の概略を示す図である。 複数の排他的論理和テーブルXの論理的な処理の流れを示した図である。 32ビットデータ同士の排他的論理和のテーブル化を示した図である。 複数の排他的論理和テーブルYの論理的な処理の流れを示した図である。 各テーブル間の関係を示した図である。 コンピュータ100のハードウェア構成を示すブロック図である。 暗号化処理を行なう場合のCPU120の機能的構成を示した機能ブロック図である。 復号化処理を行なう場合のCPU120の機能的構成を示した機能ブロック図である。 鍵kaを用いた場合の本発明に係る暗号化処理を示す図である。 非特許文献1と本発明との暗号化方法を説明するための図である。 鍵kbを用いた場合の本発明に係る暗号化処理を示す図である。 複数の鍵を用いた暗号化処理を示した概略図である。 テーブル作成の処理の流れを具体的に示したフローチャートである。 テーブル使用順序リストを示した図である。 暗号化処理の流れを示したフローチャートである。 復号化処理の流れを示したフローチャートである。 本実施の形態に係るコンテンツの配信システムを説明するための図である。 AESにおける暗号化処理の概略を示す図である。 ビット入れ替えCを示す図である。 変換Rを実装する際の流れを示す図である。 線形変換Mと線形変換Mとの関係を示す図である。
符号の説明
100 コンピュータ、104 モニタ、106 FDドライブ、108 光ディスクドライブ、110 キーボード、112 マウス、116 FD、118 CD−ROM、120 CPU、122 メモリ、124 ハードディスク、128 通信インターフェイス、700 暗号化処理選択部、702 暗号化部、710 暗号化テーブル使用順序リスト、712,812 鍵ごとの個別テーブル、714,814 共通テーブル、720 鍵番号、722 平文データ、724 暗号化データ、800 復号化処理選択部、802 復号化部、810 復号化テーブル使用順序リスト、1700 配信システム、1701 コンテンツ作成装置、1702 コンテンツ入力部、1703 暗号化処理選択部、1705 暗号化部、1707,1711,1721 送受信部、1710 サーバ処理装置、1713 コンテンツデータベース、1720 コンテンツ実行装置、1722 ユーザ指示処理部、1723 記憶装置、1724 復号化部、1725 コンテンツ実行部、1730,1740 ネットワーク回線、1750 暗号化処理番号、1752 暗号化コンテンツ、1754 配信用暗号化コンテンツ。

Claims (12)

  1. 入力データについて暗号化処理を行なう暗号化装置であって、
    複数の鍵データのそれぞれに対応する複数の前記暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次前記入力データに対して行なうための暗号化処理手段を備え、
    前記暗号化処理手段は、
    前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、
    前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の暗号化処理に共通して利用される共通関数テーブルと、前記複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化装置。
  2. 前記共通関数テーブルは、ランダムな第1のデータと前記所定の関数とに基づいて作成され、
    前記個別関数テーブルは、前記第1のデータとの前記加算が前記対となるラウンド処理のうちの一方で用いられる第1のラウンド鍵データとなるような第2のデータと、他方のラウンド処理で用いられる第2のラウンド鍵データと、前記所定の関数とに基づいて作成される、請求項1記載の暗号化装置。
  3. 前記加算は、排他的論理和演算であり、
    前記所定の関数は、換字変換と転置変換とを含む、請求項2記載の暗号化装置。
  4. 前記対となる関数テーブルにおいて、一方の前記関数テーブルで、全単射により符号化された出力データは、他方の前記関数テーブルで、前記全単射の逆変換により復号される、請求項3記載の暗号化装置。
  5. 複数の鍵データのそれぞれに対応する複数の前記暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次実行して暗号化する際に利用される、前記ラウンド処理の演算にそれぞれ対応する複数の関数テーブルの作成方法であって、
    引き続いて実行される前記ラウンド処理の対で行なわれる演算は、前記関数テーブルの対で行なわれる演算と対応し、
    前記複数の暗号化処理に共通して利用されるランダムな第1のデータを生成するステップと、
    前記第1のデータとの前記加算が前記対となるラウンド処理のうちの一方で用いられる第1のラウンド鍵データとなるような第2のデータを計算するステップと、
    前記第1のデータと前記所定の関数とに基づいて、前記複数の暗号化処理に共通して利用される共通関数テーブルを作成するステップと、
    他方のラウンド処理で用いられる第2のラウンド鍵データと前記第2のデータと前記所定の関数とに基づいて、前記複数の暗号化処理ごとに個別関数テーブルを作成するステップとを備える、テーブル作成方法。
  6. 暗号化されたデータについて復号化処理を行なう復号化装置であって、
    複数の鍵データのそれぞれに対応する複数の前記復号化処理の各々において、前記鍵データのうちの前記復号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次前記暗号化されたデータに対して行なうための復号化処理手段を備え、
    前記復号化処理手段は、
    前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、
    前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の復号化処理に共通して利用される共通関数テーブルと、前記複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化装置。
  7. 演算処理部および記憶部を有するコンピュータに、入力データについての暗号化処理を実行させるための暗号化プログラムであって、
    前記演算処理部は、複数の鍵データのそれぞれに対応する複数の前記暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次前記入力データに対して行なうステップを備え、
    前記記憶部は、前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、
    前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の暗号化処理に共通して利用される共通関数テーブルと、前記複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化プログラム。
  8. 請求項7記載の暗号化プログラムを格納したコンピュータ読み取り可能な記録媒体。
  9. 演算処理部および記憶部を有するコンピュータに、暗号化されたデータについての復号化処理を実行させるための復号化プログラムであって、
    前記演算処理部は、複数の鍵データのそれぞれに対応する複数の前記復号化処理の各々において、前記鍵データのうちの前記復号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次前記入力データに対して行なうステップを備え、
    前記記憶部は、前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、
    前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の復号化処理に共通して利用される共通関数テーブルと、前記複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化プログラム。
  10. 請求項9記載の復号化プログラムを格納したコンピュータ読み取り可能な記録媒体。
  11. 複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、
    前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、
    前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の暗号化処理に共通して利用される共通関数テーブルと、前記複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化方法。
  12. 複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、前記鍵データのうちの前記復号化処理に対応した1つを変換して得られる複数のラウンド鍵データのうちの1つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、
    前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、
    前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の復号化処理に共通して利用される共通関数テーブルと、前記複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化方法。
JP2006274236A 2006-10-05 2006-10-05 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法 Withdrawn JP2008098690A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006274236A JP2008098690A (ja) 2006-10-05 2006-10-05 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006274236A JP2008098690A (ja) 2006-10-05 2006-10-05 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法

Publications (1)

Publication Number Publication Date
JP2008098690A true JP2008098690A (ja) 2008-04-24

Family

ID=39381140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006274236A Withdrawn JP2008098690A (ja) 2006-10-05 2006-10-05 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法

Country Status (1)

Country Link
JP (1) JP2008098690A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统
JP2014165570A (ja) * 2013-02-22 2014-09-08 Dainippon Printing Co Ltd 暗号処理装置および情報処理装置
JP2017501447A (ja) * 2013-12-20 2017-01-12 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 安全なデータ変換

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统
JP2012520589A (ja) * 2009-03-10 2012-09-06 イルデト・コーポレート・ビー・ヴイ 入力に依存する符号化を用いたホワイトボックス暗号システム
US9654280B2 (en) 2009-03-10 2017-05-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
JP2014165570A (ja) * 2013-02-22 2014-09-08 Dainippon Printing Co Ltd 暗号処理装置および情報処理装置
JP2017501447A (ja) * 2013-12-20 2017-01-12 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 安全なデータ変換

Similar Documents

Publication Publication Date Title
KR101715027B1 (ko) 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템
US9712319B2 (en) Method and apparatus to encrypt plaintext data
US8259934B2 (en) Methods and devices for a chained encryption mode
US7809134B2 (en) Method for encrypting information and device for realization of the method
TWI338872B (ja)
US8165288B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
US9515818B2 (en) Multi-block cryptographic operation
US20120121083A1 (en) Encryption apparatus and method
WO2011105367A1 (ja) ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
KR20140087036A (ko) 동적 암호화 방법
Prajwal et al. User defined encryption procedure for IDEA algorithm
WO2010067660A1 (ja) 通信装置、通信方法及びプログラム
JP2008098690A (ja) 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法
JP2008124935A (ja) 送信装置、受信装置、情報通信システム
US20030174835A1 (en) Data encryption device, data decryption device, and data encryption/decryption device
Lee et al. Design and evaluation of a block encryption algorithm using dynamic-key mechanism
WO2007031894A2 (en) Improved cryptographic method and system
Rayarapu et al. Securing files using AES algorithm
JP4902318B2 (ja) 情報通信システム、情報送信デバイス、情報受信デバイス及び情報送受信デバイス
JP4714124B2 (ja) 送信装置、受信装置、情報通信システム
JP2002023624A (ja) ブロック暗号通信方法とその装置、及びブロック暗号通信プログラムを記録した記録媒体
JP5293612B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
CN117318986A (zh) 一种基于多重加密的数据传输方法及系统
Handschuh et al. Derived from
JP2005092249A (ja) 暗復号装置及び記憶媒体

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100105