JP2003195749A - データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法 - Google Patents

データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法

Info

Publication number
JP2003195749A
JP2003195749A JP2001394109A JP2001394109A JP2003195749A JP 2003195749 A JP2003195749 A JP 2003195749A JP 2001394109 A JP2001394109 A JP 2001394109A JP 2001394109 A JP2001394109 A JP 2001394109A JP 2003195749 A JP2003195749 A JP 2003195749A
Authority
JP
Japan
Prior art keywords
data
conversion
encryption
mixcolumn
shiftrow
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.)
Pending
Application number
JP2001394109A
Other languages
English (en)
Inventor
Shisho Chin
志松 陳
Masakazu Jinbo
雅一 神保
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.)
Denso Create Inc
Original Assignee
Denso Create Inc
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 Denso Create Inc filed Critical Denso Create Inc
Priority to JP2001394109A priority Critical patent/JP2003195749A/ja
Publication of JP2003195749A publication Critical patent/JP2003195749A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 AES暗号方式を用いてデータを暗号化又は
復号化する装置に必要なデータ記憶容量を小さくする。 【解決手段】 このデータ変換処理では、AES暗号方
式でデータを暗号化又は復号化するために行うByte
Sub、ShiftRow、MixColumn及びR
oundKeyAdditionの4種類の変換につい
て、各変換で用いる引数を、暗号化と復号化とで異なる
所定の引数に設定することで(S100〜S160)、
データの暗号化及び復号化を、AES暗号方式の暗号化
手順と同じ順序で上記4種類の変換を施すことにより行
うようになっている(170〜S220)。また、S1
80では、4行4列の行列で表される128ビットの処
理対象データに上記4種類の変換を順に施すことで得ら
れる処理後データを、下記の式により求めるようになっ
ている。 【数1】

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、AES暗号方式を
用いてデータを暗号化又は復号化する技術に関する。
【0002】
【従来の技術】従来より、データを暗号化するための様
々な暗号方式が知られている。そして、最近では、米国
連邦標準技術局(NIST)により、AES(Adva
nced Encryption Standard)
と呼ばれる新しい共通暗号方式が発表され、今後の普及
が見込まれている。
【0003】ここで、周知ではあるが、AES暗号方式
(以下、単に「AES」ともいう)の概要について説明
する。AESは、図7に示すように、ブロック長が12
8ビットのブロック暗号である。そして、この128ビ
ットのブロックデータは、1バイト(8ビット)単位の
データ(以下、「部分データ」ともいう)に分割され、
4×4(4行4列)の正方行列として表現される。尚、
図7では、ブロックデータにおけるi行目(i=0,
1,2,3)のj列目(j=0,1,2,3)の部分デ
ータを、b(i,j)と表している。
【0004】また、図8に示すように、AESに用いら
れる鍵の鍵長は128ビット、192ビット、256ビ
ットの3種類である。そして、この鍵も、1バイト単位
のデータに分割され、4×Nk(Nk=4,6,8)の
長方形行列として表現される。
【0005】そして、AESでは、次のような手順でブ
ロックデータを暗号化する。即ち、図9に示すように、
まず、RoundKeyAddition(ラウンドキ
ー加算)と呼ばれる変換を1回行う。次に、ByteS
ub(バイト置換)、ShiftRow(行シフト)、
MixColumn(列ミックス)及び上記Round
KeyAdditionの4種類の変換を順に行うRo
undFunction(ラウンド変換)と呼ばれる一
連の変換を、複数のラウンド((ラウンド数Nr)−1
回)に渡って繰り返す。そして最後に、RoundFu
nctionの中からMixColumnだけを除いた
FinalRoundFunction(最終ラウンド
変換)と呼ばれる変換を、1回行う。尚、ラウンド数N
rは、下記第1表に示すように、鍵長に対応して決めら
れている。
【0006】
【表1】
【0007】次に、AES暗号方式を用いてデータを暗
号化するための上記4種類の変換について、それぞれ説
明する。[ByteSub]ByteSubでは、ブロ
ックデータの各単位である各部分データに対して、以下
の,の計算を行う。
【0008】GF(28)における乗法的逆元を計算
する(乗算は多項式の積を「x8+x 4+x3+x+1」
でmodをとる)。 上記の結果に、各ビットに式(2)のアファイン変
換を行う。
【0009】
【数6】
【0010】このように、ByteSubで行う本来の
処理は、上記,のようなものであるが、本処理で
は、入力された1バイト長のデータに対して出力を一意
に決定できることから、実際には、図10に示すよう
に、1バイトのデータを1バイトのデータに変換するS
−boxと呼ばれるルックアップテーブルを先に計算し
ておき、このルックアップテーブルを用いて、各部分デ
ータを変換する。
【0011】つまり、ByteSubでは、引数である
S−boxを用いて、ブロックデータを部分データ単位
(8ビット単位)で変換するようになっている。 [ShiftRow]ShiftRowでは、図11に
示すように、ブロックデータにおける1行目から3行目
の各行にそれぞれ対応する引数であるC1,C2,C3
に基づき、各行のデータをバイト単位で循環左シフトす
る。これにより、各行の部分データは、下記第2表に示
すオフセット値だけ左方向へ循環シフトする。
【0012】
【表2】
【0013】つまり、ShiftRowでは、各行に対
応する引数Ciを用いて、ブロックデータを行単位(3
2ビット単位)で変換するようになっている。 [MixColumn]MixColumnでは、ブロ
ックデータにおける各列に対して、GF(28)におい
て、各部分データを係数とする多項式と下記の式(3)
との乗算を行い、その積を「x4+1」でmodをと
る。
【0014】 c(x)='03'x3+'01'x2+'01'x+'02' …式(3) そして、得られた多項式の係数を対応する各部分データ
の値とする。つまり、MixColumnでは、図12
に示すように、ブロックデータにおける各列のデータに
対して行列Cをかけ算することで変換する(即ち、引数
である行列Cを用いて、ブロックデータを列単位(32
ビット単位)で変換する)ようになっている。
【0015】[RoundKeyAddition]R
oundKeyAdditionでは、引数としてRo
undKey(ラウンドキー)と呼ばれる鍵を用いる。
そして、このRoundKeyは、前述した元々の鍵
(図8)から生成される。
【0016】即ち、図13に示すように、元々の鍵を拡
張アルゴリズムに従って拡張し、その拡張した鍵をブロ
ックデータのブロック長(128ビット)で順番に区切
ることにより、図9に示したブロックデータの暗号化手
順に含まれるRoundKeyAdditionの回数
分((ラウンド数Nr)+1回分)のRoundKey
を生成する。こうして生成した複数のRoundKey
は、データの暗号化のために複数回行われるRound
KeyAdditionで順に用いられる。
【0017】そして、RoundKeyAdditio
nでは、図14に示すように、ブロックデータとRou
ndKeyとのEXOR(排他論理和)をビット単位で
とる。つまり、RoundKeyAdditionで
は、引数であるRoundKeyを用いて、ブロックデ
ータを1ビット単位で変換するようになっている。
【0018】以上説明した4種類の変換からなるRou
ndFunctionの処理のイメージを図15に示
す。ところで、こうしたデータの暗号化処理では、処理
速度を向上させるための手法として、ルックアップテー
ブルが一般に用いられる。
【0019】ここで、AESでは、128ビットのブロ
ックデータ毎に変換が行われるため、これを1つのルッ
クアップテーブルを用いて変換しようとすると、「2
128×16バイト」といった膨大な大きさのルックアッ
プテーブルが必要となってしまい、現実的ではない。
【0020】そこで、本発明者は、AES暗号方式の特
徴に着目して、次のようなルックアップテーブルを考え
た。即ち、RoundFunctionでは、行単位の
変換であるShiftRowと、列単位の変換であるM
ixColumnとが行われることで、結果として12
8ビット単位で変換が行われるようになっているが、S
hiftRowでは、部分データの位置を移動させてい
るだけであるため、この点を考慮すれば、RoundF
unction1回分の処理については、列単位(32
ビット単位)の変換であるとみなすことができる。つま
り、ルックアップテーブルを用いて変換する32ビット
のデータとして、ShiftRowの変換を施すことに
より同じ列に移動する4つの部分データを予め選択する
ことで、ShiftRowを考慮する必要がなくなるの
である。
【0021】このため、列単位(32ビット単位)で変
換を行うルックアップテーブルを用いてデータを変換す
ることが可能となる。
【0022】
【発明が解決しようとする課題】しかしながら、列単位
のルックアップテーブルであっても、「232×4バイト
=16384メガバイト」といった非常に大きなものと
なるため、データを暗号化する装置にも非常に大きなデ
ータ記憶容量が必要になってしまう。
【0023】一方また、こうした問題に加え、データの
暗号化と復号化との両方を行うためのプログラムでは、
暗号化のみを行うためのプログラムに比べ、更に大きな
データ記憶容量が必要となってしまう。AES暗号方式
を用いて暗号化されたデータは、暗号化の処理と全く逆
の処理を行うことで復号化することができるが、この場
合には、暗号化と復号化とで2種類のプログラムが必要
となってしまうからである。
【0024】以上のように、暗号化や復号化といったデ
ータ変換処理を行う装置に大きなデータ記憶容量が必要
になると、特に携帯電話装置のような小型機器への実装
が困難になる。本発明は、こうした問題に鑑みなされた
ものであり、AES暗号方式を用いてデータを暗号化又
は復号化する装置に必要なデータ記憶容量を小さくする
ことを目的としている。
【0025】
【課題を解決するための手段及び発明の効果】上記目的
を達成するためになされた請求項1に記載のデータ変換
装置は、4行4列の行列で表される128ビットの変換
対象データに、AES暗号方式におけるByteSu
b、ShiftRow及びMixColumnの各変換
を順に施すことで得られる変換後データを、下記式
(1)により求めるように構成されている。
【0026】
【数7】
【0027】つまり、請求項1のデータ変換装置では、
変換対象データにByteSub、ShiftRow及
びMixColumnの各変換を順に施すことで得られ
る変換後データを上記式(1)により求める、といった
請求項4のデータ変換方法を用いている。
【0028】ここで、各ルックアップテーブルT0〜T3
の大きさは、それぞれ「28×4バイト=1024バイ
ト」であるから、4つのルックアップテーブルを合わせ
ても4096バイトである。この値は、前述した列単位
で変換を行うルックアップテーブルの大きさ(1638
4メガバイト)に比べ、格段に小さい。
【0029】このような請求項1のデータ変換装置によ
れば、AES暗号方式を用いたデータの暗号化の処理速
度を向上させつつ、AES暗号方式を用いてデータを暗
号化する装置に必要なデータ記憶容量を小さくすること
ができる。即ち、AES暗号方式を用いたデータの暗号
化では、ByteSub、ShiftRow及びMix
Columnの各変換を順に行う処理を複数回繰り返す
ようになっているが、この処理で得られる値を本データ
変換装置(請求項4のデータ変換方法)により求めるこ
とで、各変換を順に行う必要が無くなり、処理速度を向
上させることができる。しかも、使用するルックアップ
テーブルが小さいことから、AES暗号方式を用いてデ
ータを暗号化する装置に必要なデータ記憶容量を小さく
することができる。
【0030】次に、請求項2に記載のデータ変換プログ
ラムは、4行4列の行列で表される128ビットの変換
対象データに、AES暗号方式におけるByteSu
b、ShiftRow及びMixColumnの各変換
を順に施すことで得られる変換後データを、上記式
(1)により求める機能をコンピュータに実現させるた
めのものである。
【0031】つまり、請求項2のデータ変換プログラム
でも、変換対象データにByteSub、ShiftR
ow及びMixColumnの各変換を順に施すことで
得られる変換後データを、請求項4のデータ変換方法を
用いて求めるようになっている。
【0032】このような請求項2のデータ変換プログラ
ムを、AES暗号方式の暗号化を行うために用いれば、
データの暗号化の処理速度を向上させつつ、AES暗号
方式を用いてデータを暗号化する装置に必要なデータ記
憶容量を小さくすることができる。また、請求項2のデ
ータ変換プログラムは、請求項3のようにコンピュータ
読み取り可能な記録媒体に記録されていてもよい。
【0033】次に、請求項5に記載のデータ変換方法
は、AES暗号方式を用いて暗号化されたデータを、下
記(a1)〜(a4)の条件に従い復号化することを特
徴としている。 (a1):ByteSub、ShiftRow、Mix
Column及びRoundKeyAdditionの
各変換を、AES暗号方式の暗号化手順と同じ順序で行
う。
【0034】(a2):上記(a1)に従い行うByt
eSub、ShiftRow及びMixColumnで
は、暗号化で行われる変換の逆変換となるような引数を
用いる。 (a3):上記(a1)に従い行うRoundKeyA
dditionでは、暗号化で用いられた複数のRou
ndKeyを、暗号化と逆の順序で用いる。
【0035】(a4):更に、上記(a1)に従い行う
RoundKeyAdditionのうち、MixCo
lumnの次に行うRoundKeyAddition
では、上記(a3)に従い用いるRoundKeyに、
復号化で行うMixColumnの変換を施したもの
を、RoundKeyとして用いる。
【0036】つまり、請求項5のデータ変換方法では、
ByteSub、ShiftRow、MixColum
n及びRoundKeyAdditionの各変換に、
暗号化の場合とは異なる引数を用いることで、AES暗
号方式の暗号化手順と同じ順序で各変換を行いつつデー
タを復号化するようになっている。
【0037】このような請求項5のデータ変換方法を、
AES暗号方式の暗号化及び復号化を行うためのプログ
ラムに用いれば、そのプログラムサイズを小さくするこ
とができる。つまり、ByteSub、ShiftRo
w、MixColumn及びRoundKeyAddi
tionの各変換を暗号化手順と同じ順序で行うための
プログラムを共用できるからである。
【0038】次に、上記請求項5のデータ変換方法を用
いた請求項7に記載のデータ変換プログラムは、AES
暗号方式を用いたデータの暗号化と、AES暗号方式を
用いて暗号化されたデータの復号化とを、コンピュータ
に行わせるためのものである。
【0039】そして、このデータ変換プログラムは、デ
ータの暗号化及び復号化で共通に用いられると共に、そ
のデータに対してByteSub、ShiftRow、
MixColumn及びRoundKeyAdditi
onの各変換をAES暗号方式の暗号化手順と同じ順序
で行うための共通プログラムと、この共通プログラムで
の各変換に用いられる引数を、暗号化の場合にはAES
暗号方式の暗号化手順において用いられる引数に設定
し、復号化の場合には下記(b1)〜(b3)の条件に
従い設定する設定プログラムと、を備えている。
【0040】(b1):ByteSub、ShiftR
ow及びMixColumnでは、暗号化で行われる変
換の逆変換となるような引数が用いられるようにする。 (b2):RoundKeyAdditionで用いら
れる引数であるRoundKeyとしては、暗号化で用
いられた複数のRoundKeyが、暗号化と逆の順序
で用いられるようにする。
【0041】(b3):更に、MixColumnの次
に行われるRoundKeyAdditionで用いら
れる引数であるRoundKeyとしては、上記(b
2)に従い用いられるRoundKeyに、復号化で行
われるMixColumnの変換を施したものが用いら
れるようにする。
【0042】このような請求項7のデータ変換プログラ
ムは、データを暗号化するためのプログラムとデータを
復号化するためのプログラムとを独立して備えるものに
比べ、プログラムサイズが格段に小さい。したがって、
このデータ変換プログラムによれば、AES暗号方式を
用いてデータの暗号化及び復号化を行う装置に必要なデ
ータ記憶容量を小さくすることができる。
【0043】ところで、請求項4のデータ変換方法によ
れば、変換対象データにByteSub、ShiftR
ow及びMixColumnの各変換を順に施すことで
得られる変換後データを上記式(1)により求めること
で、データの暗号化の処理速度を向上させつつ、AES
暗号方式を用いてデータを暗号化する装置に必要なデー
タ記憶容量を小さくすることができる。一方、上記請求
項5のデータ変換方法ではデータを復号化する場合に、
また上記請求項7のデータ変換プログラムではデータを
復号化する場合にも、AES暗号方式の暗号化手順と同
じ順序でByteSub、ShiftRow、MixC
olumnの各変換を行うこととなる。よって、上記請
求項4のデータ変換方法は、請求項6又は請求項8に記
載のように、請求項5と請求項7とのそれぞれにも適用
することができる。
【0044】即ち、請求項6に記載のデータ変換方法で
は、上記請求項5のデータ変換方法において、4行4列
の行列で表される128ビットの変換対象データにBy
teSub、ShiftRow及びMixColumn
の各変換を順に施すことで得られる変換後データを、上
記式(1)により求めることを特徴としている。
【0045】また、請求項8に記載のデータ変換プログ
ラムでは、上記請求項7のデータ変換プログラムにおい
て、共通プログラムが、4行4列の行列で表される12
8ビットの変換対象データにByteSub、Shif
tRow及びMixColumnの各変換を順に施すこ
とで得られる変換後データを、上記式(1)により求め
るようになっている。
【0046】そして、上記請求項6のデータ変換方法に
よれば、AES暗号方式を用いて暗号化されたデータの
復号化の処理速度を向上させつつ、AES暗号方式を用
いてデータを復号化する装置に必要なデータ記憶容量を
小さくすることができる。更に、データの暗号化と復号
化との両方をコンピュータに行わせるためのデータ変換
プログラムに適用すれば、請求項5の効果に加え、デー
タの暗号化と復号化との両方の処理速度を向上させるこ
とができる。
【0047】また、上記請求項8のデータ変換プログラ
ムによれば、請求項7の効果に加え、データの暗号化及
び復号化の処理速度を向上させつつ、AES暗号方式を
用いてデータの暗号化及び復号化を行う装置に必要なデ
ータ記憶容量を小さくすることができる。
【0048】尚、請求項7,8のデータ変換プログラム
は、請求項9のようにコンピュータ読み取り可能な記録
媒体に記録されていてもよい。
【0049】
【発明の実施の形態】以下、本発明が適用された実施形
態のデータ変換装置としての携帯電話装置について、図
面を用いて説明する。まず図1は、本実施形態の携帯電
話装置10の構成を表すブロック図である。
【0050】この携帯電話装置10は、送受信部12、
CPU14、RAM16、ROM18及びデータの書き
換えが可能な不揮発性メモリ20を備えている。送受信
部12は、無線通信によりデータの送受信を行う。ま
た、不揮発性メモリ20には、外部のデータベースとの
間でデータをやりとりするデータ送受信処理をCPU1
4に行わせるためのアプリケーションプログラムと、こ
のデータ送受信処理で送受信されるデータをAES暗号
方式を用いて暗号化又は復号化する処理(以下、「デー
タ変換処理という」)をCPU14に行わせるためのデ
ータ変換プログラムとが記憶されている。
【0051】ここで、上記データ変換プログラムに従い
CPU14が行うデータ変換処理について、図2のフロ
ーチャートを用いて説明する。尚、本データ変換処理
は、上記データ送受信処理にて平文データ(即ち、暗号
化されていないデータ)を外部のデータベースへ送信し
ようとする場合又は外部のデータベースから暗号データ
を受信した場合に開始される。
【0052】このデータ変換処理が開始されると、まず
S100にて、暗号化と復号化との何れの処理を行うの
かを判定する。具体的には、上記データ送受信処理にて
平文データを送信しようとする場合には、暗号化を行う
と判定し、上記データ送受信処理にて暗号データを受信
した場合には、復号化を行うと判定する。
【0053】そして、S100で、暗号化を行うと判定
した場合には、S110へ移行し、暗号化用のRoun
dKeyを生成して、RAM16に記憶させる。ここ
で、暗号化用のRoundKeyとは、平文データを暗
号化する際に行うRoundKeyAdditionで
用いるRoundKeyのことであり、従来技術(図1
3)で説明したように、鍵を拡張して順番に区切ること
により複数生成する。
【0054】このS110で暗号化用のRoundKe
yを生成した後は、S120へ移行し、後述するByt
eSub、ShiftRow及びRoundKeyAd
ditionの各変換に用いる引数を、暗号化用の引数
に設定する。具体的には、従来技術で説明したように、
ByteSubで用いる引数を、図10で説明したS−
boxに設定する。また、ShiftRowで用いる引
数を、図11で説明したCiに設定する。更に、Rou
ndKeyAdditionで用いる引数を、図14で
説明したRoundKey(即ち、S110にて生成し
た暗号化用のRoundKey)に設定する。
【0055】そして次に、S130へ移行し、後述する
RoundFunctionで用いる暗号化用の4つの
ルックアップテーブルT0〜T3を生成して、RAM16
に記憶させる。一方、S100で、復号化を行うと判定
した場合には、S140へ移行し、復号化用のRoun
dKeyを生成して、RAM16に記憶させる。ここ
で、復号化用のRoundKeyとは、暗号データを復
号化する際に行うRoundKeyAdditionで
用いるRoundKeyのことであり、次の(c1),
(c2)の条件を満たすものである。
【0056】(c1):復号化で行うRoundKey
Additionでは、暗号化で用いられた複数のRo
undKeyを、暗号化と逆の順序で用いる。 (c2):但し、(c1)の条件に従い用いるRoun
dKeyのうち、RoundFunctionで行うR
oundKeyAdditionで用いるRoundK
eyについては、更に、暗号化で行うMixColum
nの逆変換を施したものをRoundKeyとして用い
る。
【0057】したがって、復号化用のRoundKey
は、次のように生成される。まず、暗号化の場合と同様
に、鍵を拡張して順番に区切ることにより複数のRou
ndKey(即ち、暗号化で用いられるRoundKe
y)を生成する。次に、生成した複数のRoundKe
yを、暗号化とは逆の順序で各RoundKeyAdd
itionに割り振る。更に、RoundFuncti
onで用いるRoundKeyについては、暗号化で行
うMixColumnの逆変換を施す。
【0058】こうしてS140で復号化用のRound
Keyを生成した後は、S150へ移行し、後述するB
yteSub、ShiftRow及びRoundKey
Additionの各変換に用いる引数を、復号化用の
引数に設定する。具体的には、ByteSubで用いる
引数を、暗号化で用いるS−boxの逆変換となるルッ
クアップテーブルに設定する。また、ShiftRow
で用いる引数を、暗号化で用いるCiの逆変換となる引
数(即ち、ブロックデータにおける各行の部分データを
暗号化の場合と同じオフセット値だけ右方向へ循環シフ
トする引数)に設定する。更に、RoundKeyAd
ditionで用いる引数を、S140にて生成した復
号化用のRoundKeyに設定する。
【0059】そして次に、S160へ移行し、後述する
RoundFunctionで用いる復号化用の4つの
ルックアップテーブルT0〜T3を生成して、RAM16
に記憶させる。こうして、S130又はS160でルッ
クアップテーブルT0〜T3を生成した後は、以下のS1
70〜S220にて、AES暗号方式の暗号化手順と同
じ順序でByteSub、ShiftRow、MixC
olumn及びRoundKeyAdditionの各
変換を行うようになっている。尚、S100〜S160
の処理をCPU14に行わせるためのプログラムが、設
定プログラムに相当し、S170〜S220の処理をC
PU14に行わせるためのプログラムが、共通プログラ
ムに相当する。
【0060】まず、S170では、暗号データ又は平文
データであるブロックデータに対して、RoundKe
yAdditionの変換を1回行う。次に、S180
へ移行し、RoundFunctionを行う。ここ
で、本データ変換処理におけるRoundFuncti
onの処理について説明する。
【0061】RoundFunctionは、Byte
Sub、ShiftRow、MixColumn及びR
oundKeyAdditionの各変換を順に施す処
理であるが、このS180では、各変換をそれぞれ行う
のではなく、4行4列の行列で表される128ビットの
処理対象データ(変換対象データに相当)にRound
Functionを行うことで得られる処理後データ
を、下記式(4)により求めるようになっている。
【0062】
【数8】
【0063】上記式(4)では、処理対象データから処
理後データへの変換を32ビット単位で行う。具体的に
は、図3に示すように、処理対象データを構成する部分
データ(8ビット)の中から、ShiftRowの変換
を施すことにより同列に移動する4つの部分データ(a
0,j、a1,j-C1、a2,j-C2、a3,j-C3)を選択し、この
選択した4つの部分データからなる32ビットのデータ
を、処理後データにおける同列の4つの部分データから
なる32ビットのデータejに変換するようになってい
る。
【0064】また、上記式(4)では、処理対象データ
にByteSub、ShiftRow及びMixCol
umnの各変換を順に施すことで得られるデータ(変換
後データに相当)を、4つのルックアップテーブルT0
〜T3を用いて求めるようになっている。具体的には、
処理対象データから選択した各部分データ(a0,j、a1
,j-C1、a2,j-C2、a3,j-C3)を、対応するルックアッ
プテーブルT0〜T3を用いてそれぞれ変換し、この変換
後の値の排他論理和をとることで求めている。そして更
に、このように求めたデータに、RoundKeyAd
ditionの変換(即ち、上記式(4)におけるkj
の加算)を施して、処理後データを求めるようになって
いる。尚、このRoundKeyAdditionの変
換が、MixColumnの次に行うRoundKey
Additionに相当する。
【0065】ここで、各ルックアップテーブルT0〜T3
は、処理対象データの部分データ(8ビット)を32ビ
ットのデータに変換するものである。したがって、各ル
ックアップテーブルT0〜T3の大きさは、それぞれ「2
8×4バイト=1024バイト」であり、4つのルック
アップテーブルを合わせても4096バイトである。
【0066】そして、このようなS180の処理を行っ
た後はS190へ移行し、S180の処理をNr−1回
行ったか否かを判定する。尚、ラウンド数Nrは、前述
したように、第1表に示す値である。このS190で、
Nr−1回行っていないと判定した場合には、S180
へ戻る。つまり、S180の処理をNr−1回繰り返す
ようになっている。
【0067】一方、S190で、Nr−1回行ったと判
定した場合には、S200へ移行してByteSubの
変換を行い、次に、S210へ移行してShiftRo
wの変換を行い、更に、S220へ移行してRound
KeyAdditionの変換を行い、本データ変換処
理を終了する。
【0068】以上説明したように、上記データ変換処理
では、平文データを暗号化する場合だけでなく、暗号デ
ータを復号化する場合にも、AES暗号方式の暗号化手
順と同じ順序でByteSub、ShiftRow、M
ixColumn及びRoundKeyAdditio
nの各変換を行うようになっている。ここで、暗号デー
タの復号化を平文データの暗号化と同じ変換順序で行う
ことができる理由について説明する。
【0069】そもそもAES暗号方式を用いて暗号化さ
れた暗号データは、暗号化の処理と全く逆の処理を行う
(即ち、暗号化で行う各変換の逆変換を暗号化とは逆の
順序で行う)ことで復号化することができる。Roun
dFunctionを例にして説明すると、図4に示す
ように、RoundKeyAddition→InvM
ixColumn→InvShiftRow→InvB
yteSubの順に変換を行えばよい。
【0070】ここで、InvMixColumn,In
vShiftRow,InvByteSubは、それぞ
れ、暗号化の場合のMixColumn,ShiftR
ow,ByteSubの逆変換であり、変換に用いる引
数が異なるだけである。即ち、InvMixColum
nでは、暗号化で用いる行列Cの逆変換となる行列を引
数として用いてデータを変換する。また、InvShi
ftRowでは、暗号化で用いるCiの逆変換となる引
数を用いてデータを変換する。また更に、InvByt
eSubでは、暗号化で用いるS−boxの逆変換とな
るルックアップテーブルを引数として用いてデータを変
換する。尚、RoundKeyAdditionについ
ては、RoundKeyの排他論理和をとる変換である
ため、暗号化と同じRoundKeyを用いて変換すれ
ば、逆変換となる。
【0071】そして、InvShiftRow→Inv
ByteSubという変換順序は、InvByteSu
b→InvShiftRowという順序に入れ替えて
も、結果は変わらない。また、RoundKeyAdd
ition→InvMixColumnという変換順序
は、RoundKeyAdditionで用いるRou
ndKeyにInvMixColumnの変換を施せ
ば、InvMixColumn→RoundKeyAd
ditionという順序に入れ替えても、結果は変わら
ない。
【0072】即ち、RoundKeyAddition
で用いるRoundKeyを「K」、InvMixCo
lumnの変換行列を「D」、変換の対象となるデータ
を「B」とすると、RoundKeyAddition
→InvMixColumnという復号化処理は、下記
式(5)の左辺のように表すことができ、更に、右辺の
ように展開することができる。
【0073】(B+K)・D=B・D+K・D …式
(5) そのため、RoundKeyAdditionで、Ro
undKeyにInvMixColumnの変換を施し
て得られる値「K・D」をRoundKeyとして用い
れば、InvMixColumn→RoundKeyA
dditionという順序に入れ替えることができる。
【0074】その結果、図5の左側に示すような復号化
の変換順序(即ち、暗号化手順と逆の順序)を、Inv
ShiftRowとInvByteSubとの順序を入
れ替え、更に、RoundKeyAdditionとI
nvMixColumnとの順序を入れ替えることで、
図5の右側に示すように、暗号化手順と同じ順序に変更
することができる。
【0075】以上の理由から、各変換に用いる引数を、
下記(d1)〜(d3)の条件に従い設定すれば、暗号
化手順と同じ変換順序で復号化を行うことができる。 (d1):ByteSub、ShiftRow及びMi
xColumnでは、暗号化で行われる変換の逆変換と
なるような引数を用いる。
【0076】(d2):RoundKeyAdditi
onで用いるRoundKeyとしては、暗号化で用い
られた複数のRoundKeyを、暗号化と逆の順序で
用いる。 (d3):更に、MixColumnの次に行うRou
ndKeyAdditionで用いるRoundKey
としては、上記(d2)に従い用いるRoundKey
に、復号化で行うMixColumnの変換を施したも
のを用いる。
【0077】そして、前述したデータ変換処理では、こ
うした順序変更に加え、更に、RoundFuncti
onを上記式(4)により行うようになっている。即
ち、暗号化の場合には、処理対象データに対して暗号化
用の引数を用いたByteSub、ShiftRow、
MixColumn及びRoundKeyAdditi
onの各変換を順に施すことで得られる処理後データ
を、式(4)により求めるようになっており、言い換え
れば、このような処理後データが得られるような暗号化
用のルックアップテーブルT0〜T3をS130にて生成
するようになっている。
【0078】また、復号化の場合には、処理対象データ
に対して復号化用の引数(即ち、上記(d1)〜(d
3)の条件を満たす引数)を用いたByteSub、S
hiftRow、MixColumn及びRoundK
eyAdditionの各変換を順に施すことで得られ
る処理後データを、式(4)により求めるようになって
おり、言い換えれば、このような処理後データが得られ
るような復号化用のルックアップテーブルT0〜T3をS
160にて生成するようになっている。
【0079】次に、本発明者が行った試験内容について
簡単に説明する。本発明者は、AES暗号方式を用いて
データの暗号化及び復号化を行う上記実施形態のデータ
変換プログラムを市販の携帯電話装置へ実装し、動作の
確認を行った。
【0080】今回、実装の対象とした携帯電話装置は、
Java(登録商標)アプリケーションを実行可能な機
種であり、Java(登録商標)アプリケーションの大
きさについて、Jarファイル(Java(登録商標)
の圧縮ファイル)で10キロバイト以内という制約事項
があった。本発明者は、実際にAES暗号クラス(上記
実施形態のデータ変換プログラム)を作成して、その作
成したAES暗号クラスをJarファイルに圧縮した。
その結果、暗号クラス(圧縮後のプログラム)の大きさ
は2.4キロバイトとなり、この携帯電話装置に実装す
ることができた。
【0081】そして、図6に示すように、この携帯電話
装置から外部の就職先データベースへアクセスするアプ
リケーションを開発し、送信データの暗号化及び受信デ
ータの復号化を実際に行えることを確認した。このよう
な本実施形態の携帯電話装置10によれば、AES暗号
方式を用いたデータの暗号化及び復号化を、速い処理速
度で、しかも比較的小さなデータ記憶容量で実現するこ
とができる。
【0082】ここで、暗号化及び復号化の処理速度が速
くなる理由としては、データ変換処理において、処理対
象データにRoundFunctionの処理を行うこ
とで得られる処理後データを上記式(4)により求める
といったデータ変換方法が用いられていることが挙げら
れる。
【0083】一方、データ記憶容量を小さくすることが
できる理由としては、データ変換処理をCPU14に行
わせるためのデータ変換プログラムのプログラムサイズ
が小さいことが挙げられる。即ち、データ変換処理にお
いて、暗号化と復号化とを同一の変換順序で行うといっ
たデータ変換方法が用いられており、しかも、上記式
(4)で使用するルックアップテーブルT0〜T3を、デ
ータ変換処理の中で生成するようになっているからであ
る。
【0084】また、データ記憶容量が小さくできるもう
一つの理由としては、上記式(4)で使用するルックア
ップテーブルT0〜T3が小さいことが挙げられる。以
上、本発明の一実施形態について説明したが、本発明
は、種々の形態を採り得ることは言うまでもない。
【0085】例えば、上記実施形態の携帯電話装置10
では、データ変換処理を開始してからルックアップテー
ブルT0〜T3を生成するようになっているが、これに限
らず、データ変換プログラムの一部としてルックアップ
テーブルT0〜T3のデータを予め記憶していてもよい。
このようにすれば、ルックアップテーブルT0〜T3を生
成する必要が無くなる分、処理速度をより速くすること
ができる。
【0086】また、上記実施形態の携帯電話装置10で
は、データを暗号化又は復号化する際に行うRound
KeyAdditionで用いる複数のRoundKe
yを一度に生成するようになっているが、これに限ら
ず、RoundKeyAdditionを行う毎に、そ
こで必要となるRoundKeyのみを生成するように
し、不要になったRoundKeyについてはすぐに消
去するようにしてもよい。このようにすれば、RAM1
6に必要なデータ容量をより小さくすることができる。
【0087】一方、上記実施形態では、データの暗号化
及び復号化を行うデータ変換装置としての携帯電話装置
10について述べたが、データ変換プログラム自体や、
このデータ変換プログラムが記録されたコンピュータ読
み取り可能な記録媒体(例えば、フロッピー(登録商
標)ディスクやCD−ROM等)や、データ変換方法自
体も、本発明の範囲である。
【図面の簡単な説明】
【図1】 実施形態の携帯電話装置の構成を表すブロッ
ク図である。
【図2】 データ変換処理を表すフローチャートであ
る。
【図3】 データ変換処理におけるRoundFunc
tionの処理のイメージを表す説明図である。
【図4】 データを復号化する場合のRoundFun
ctionの処理のイメージを表す説明図である。
【図5】 データを復号化する場合の変換順序を表す説
明図である。
【図6】 データ変換プログラムを市販の携帯電話装置
へ実装した結果を説明する説明図である。
【図7】 AES暗号方式に用いられるブロックデータ
を説明する説明図である。
【図8】 AES暗号方式に用いられる鍵を説明する説
明図である。
【図9】 AES暗号方式の暗号化手順を説明する説明
図である。
【図10】 ByteSubの変換を説明する説明図で
ある。
【図11】 ShiftRowの変換を説明する説明図
である。
【図12】 MixColumnの変換を説明する説明
図である。
【図13】 RoundKeyの生成方法を説明する説
明図である。
【図14】 RoundKeyAdditionの変換
を説明する説明図である。
【図15】 RoundFunctionの処理のイメ
ージを表す説明図である。
【符号の説明】
10…携帯電話装置、12…送受信部、14…CPU、
16…RAM、18…ROM、20…不揮発性メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 神保 雅一 岐阜県各務原市緑苑南4−112 Fターム(参考) 5J104 AA18 EA18 JA12 NA02 NA09 NA10 NA20

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 4行4列の行列で表される128ビット
    の変換対象データに、AES暗号方式におけるByte
    Sub、ShiftRow及びMixColumnの各
    変換を順に施すことで得られる変換後データを、下記式
    (1)により求めるように構成されていることを特徴と
    するデータ変換装置。 【数1】
  2. 【請求項2】 4行4列の行列で表される128ビット
    の変換対象データに、AES暗号方式におけるByte
    Sub、ShiftRow及びMixColumnの各
    変換を順に施すことで得られる変換後データを、下記式
    (1)により求める機能をコンピュータに実現させるた
    めのデータ変換プログラム。 【数2】
  3. 【請求項3】 請求項2に記載のデータ変換プログラム
    が記録されたコンピュータ読み取り可能な記録媒体。
  4. 【請求項4】 4行4列の行列で表される128ビット
    の変換対象データに、AES暗号方式におけるByte
    Sub、ShiftRow及びMixColumnの各
    変換を順に施すことで得られる変換後データを、下記式
    (1)により求めることを特徴とするデータ変換方法。 【数3】
  5. 【請求項5】 AES暗号方式を用いて暗号化されたデ
    ータを、下記(a1)〜(a4)の条件に従い復号化す
    ることを特徴とするデータ変換方法。 (a1):ByteSub、ShiftRow、Mix
    Column及びRoundKeyAdditionの
    各変換を、AES暗号方式の暗号化手順と同じ順序で行
    う。 (a2):上記(a1)に従い行うByteSub、S
    hiftRow及びMixColumnでは、暗号化で
    行われる変換の逆変換となるような引数を用いる。 (a3):上記(a1)に従い行うRoundKeyA
    dditionでは、暗号化で用いられた複数のRou
    ndKeyを、暗号化と逆の順序で用いる。 (a4):更に、上記(a1)に従い行うRoundK
    eyAdditionのうち、MixColumnの次
    に行うRoundKeyAdditionでは、上記
    (a3)に従い用いるRoundKeyに、復号化で行
    うMixColumnの変換を施したものを、Roun
    dKeyとして用いる。
  6. 【請求項6】 請求項5に記載のデータ変換方法におい
    て、 4行4列の行列で表される128ビットの変換対象デー
    タに、ByteSub、ShiftRow及びMixC
    olumnの各変換を順に施すことで得られる変換後デ
    ータを、下記式(1)により求めることを特徴とするデ
    ータ変換方法。 【数4】
  7. 【請求項7】 AES暗号方式を用いたデータの暗号化
    と、AES暗号方式を用いて暗号化されたデータの復号
    化とを、コンピュータに行わせるためのデータ変換プロ
    グラムであって、 データの暗号化及び復号化で共通に用いられると共に、
    該データに対してByteSub、ShiftRow、
    MixColumn及びRoundKeyAdditi
    onの各変換をAES暗号方式の暗号化手順と同じ順序
    で行うための共通プログラムと、 前記共通プログラムでの各変換に用いられる引数を、暗
    号化の場合にはAES暗号方式の暗号化手順において用
    いられる引数に設定し、復号化の場合には下記(b1)
    〜(b3)の条件に従い設定する設定プログラムと、 を備えたことを特徴とするデータ変換プログラム。 (b1):ByteSub、ShiftRow及びMi
    xColumnでは、暗号化で行われる変換の逆変換と
    なるような引数が用いられるようにする。 (b2):RoundKeyAdditionで用いら
    れる引数であるRoundKeyとしては、暗号化で用
    いられた複数のRoundKeyが、暗号化と逆の順序
    で用いられるようにする。 (b3):更に、MixColumnの次に行われるR
    oundKeyAdditionで用いられる引数であ
    るRoundKeyとしては、上記(b2)に従い用い
    られるRoundKeyに、復号化で行われるMixC
    olumnの変換を施したものが用いられるようにす
    る。
  8. 【請求項8】 請求項7に記載のデータ変換プログラム
    において、 前記共通プログラムでは、4行4列の行列で表される1
    28ビットの変換対象データに、ByteSub、Sh
    iftRow及びMixColumnの各変換を順に施
    すことで得られる変換後データを、下記式(1)により
    求めるようになっていることを特徴とするデータ変換プ
    ログラム。 【数5】
  9. 【請求項9】 請求項7又は請求項8に記載のデータ変
    換プログラムが記録されたコンピュータ読み取り可能な
    記録媒体。
JP2001394109A 2001-12-26 2001-12-26 データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法 Pending JP2003195749A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001394109A JP2003195749A (ja) 2001-12-26 2001-12-26 データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001394109A JP2003195749A (ja) 2001-12-26 2001-12-26 データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法

Publications (1)

Publication Number Publication Date
JP2003195749A true JP2003195749A (ja) 2003-07-09

Family

ID=27600934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001394109A Pending JP2003195749A (ja) 2001-12-26 2001-12-26 データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法

Country Status (1)

Country Link
JP (1) JP2003195749A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809132B2 (en) 2003-01-28 2010-10-05 Nec Corporation Implementations of AES algorithm for reducing hardware with improved efficiency
JP2013179422A (ja) * 2012-02-28 2013-09-09 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
CN105556583A (zh) * 2014-05-21 2016-05-04 富士电机株式会社 信息处理装置、程序、及记录介质
JP2017044757A (ja) * 2015-08-24 2017-03-02 富士電機株式会社 情報処理装置及び情報処理方法
JP6135804B1 (ja) * 2016-06-01 2017-05-31 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
JP2017167390A (ja) * 2016-03-17 2017-09-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809132B2 (en) 2003-01-28 2010-10-05 Nec Corporation Implementations of AES algorithm for reducing hardware with improved efficiency
JP2013179422A (ja) * 2012-02-28 2013-09-09 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
CN105556583A (zh) * 2014-05-21 2016-05-04 富士电机株式会社 信息处理装置、程序、及记录介质
US10181947B2 (en) 2014-05-21 2019-01-15 Fuji Electric Co., Ltd. Information processing apparatus, program, and recording medium
CN105556583B (zh) * 2014-05-21 2019-06-21 富士电机株式会社 信息处理装置、程序、及记录介质
JP2017044757A (ja) * 2015-08-24 2017-03-02 富士電機株式会社 情報処理装置及び情報処理方法
JP2017167390A (ja) * 2016-03-17 2017-09-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
JP6135804B1 (ja) * 2016-06-01 2017-05-31 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Similar Documents

Publication Publication Date Title
US7532721B2 (en) Implementation of a switch-box using a subfield method
JP4298010B2 (ja) データシーケンスの暗号化または解読方法
US20120170739A1 (en) Method of diversification of a round function of an encryption algorithm
US20100189261A1 (en) Method and system for extending advanced encryption standard (aes) operations for enhanced security
US20140192973A1 (en) Encryption processing apparatus, encryption processing method, and computer program
US11606189B2 (en) Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm
JP2006527865A (ja) ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
WO2011105367A1 (ja) ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
US20070189518A1 (en) 3-D quaternion quantum fractal encryption
Christina et al. Optimized Blowfish encryption technique
EP1975779B1 (en) Encryption device using a pseudorandom number generator
CN116846542A (zh) 一种数据加密和解密方法、装置及电子设备
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
JP2003195749A (ja) データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法
JP2008252349A (ja) 通信方法および通信システム
US20030174835A1 (en) Data encryption device, data decryption device, and data encryption/decryption device
Sumathy et al. Enhanced AES algorithm for strong encryption
Venkatesha et al. AES based algorithm for image encryption and decryption
JPH0736672A (ja) 乱数発生器、及びそれを用いた通信システム及びその方法
EP1001398A1 (en) Ciphering apparatus
JP2011107407A (ja) 準同型暗号システム、準同型暗号方法、プログラム
US7340053B2 (en) Cipher strength estimating device
JP2021071570A (ja) 情報処理装置、情報処理方法及びプログラム
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
JP2001016197A (ja) 自己同期型ストリーム暗号システム及びこれを用いたmac生成方法