"データの種類ごとにN個の前記データを連続するアドレスに記憶する記憶装置と接続され、予め定められた暗号方式の演算を実行する演算装置であって、前記暗号方式で用いられる複数の演算処理を実行する演算部と、前記演算処理で用いられる種類のN個の前記データのうち先頭のデータのアドレスの上位ビットと、指定に応じて更新されるカウンタ値に応じた値であって前記先頭のデータのアドレスを基準とするオフセットと、に基づいて、前記演算処理で用いられるデータを記憶する前記記憶装置のアドレスを生成するアドレス生成部と、前記暗号方式で定められる順序で前記演算処理を実行するように前記演算部を制御するとともに、前記演算処理で用いられるデータの種類を変更するタイミング、および、前記演算処理で用いられるデータを変更するタイミングで前記カウンタ値の更新を指定する制御部と、を備えることを特徴とする演算装置。前記暗号方式は、AESAdvancedEncryptionStandard暗号方式であること、を特徴とする請求項1に記載の演算装置。複数の前記演算処理は、前記AES暗号方式で定められるsbox、xtime、および、xorと、前記記憶装置から前記データを読み出すロード処理と、であること、を特徴とする請求項2に記載の演算装置。複数の前記演算処理は、前記AES暗号方式で定められるsbox、isbox、xtime、および、xorと、前記記憶装置から前記データを読み出すロード処理と、であること、を特徴とする請求項2に記載の演算装置。従来技術の方法では小型化が不十分な場合がある。実施形態の演算装置は、データの種類ごとにN個の前記データを連続するアドレスに記憶する記憶装置と接続され、予め定められた暗号方式の演算を実行する。演算装置は、演算部と、アドレス生成部と、制御部とを備える。演算部は、暗号方式で用いられる複数の演算処理を実行する。アドレス生成部は、演算処理で用いられる種類のN個のデータのうち先頭のデータのアドレスの上位ビットと、指定に応じて更新されるカウンタ値に応じた値であって先頭のデータのアドレスを基準とするオフセットと、に基づいて、演算処理で用いられるデータを記憶する記憶装置のアドレスを生成する。制御部は、暗号方式で定められる順序で演算処理を実行するように演算部を制御するとともに、演算処理で用いられるデータの種類を変更するタイミング、および、演算処理で用いられるデータを変更するタイミングでカウンタ値の更新を指定する。以下に添付図面を参照して、この発明にかかる演算装置の好適な実施形態を詳細に説明する。以下では、演算装置をAES暗号方式の暗号化装置第1の実施形態および復号装置第2の実施形態に適用した例を説明する。なお、適用可能な装置はこれに限られるものではない。第1の実施形態これまでのAES演算回路の小型化の研究では、記憶素子も含めたAES演算回路全体のサイズを小さくすることに主眼が置かれていた。AES演算回路単体で利用されるのであれば、AES演算回路全体のサイズを小型化する意味はある。現実にはAES演算回路は何らかの装置電子機器に組み込まれて使用される。このため、このような使用状況を考慮してAES演算回路のサイズを小さくする必要がある。しかし、これまでは、AES演算回路が他の機器システムに組み込まれて使用されるということを考慮した小型化の研究は行われていない。一般に、システムには、他の用途で使うことを目的とした記憶装置、例えば通信用のバッファRAMRandomAccessMemoryなどが存在する。そこで、第1の実施形態の暗号化装置は、このような記憶装置を、AES演算回路を使用するときに転用する。これにより、AES演算回路内に記憶装置を備える必要がなくなり、さらなる小型化が実現できる。このように、AES演算回路を組み込むシステム内の記憶装置を転用すれば、システム全体で考えると、記憶素子を除いたAES演算回路のサイズを小さくすることが意味を持つ。このような観点に基づいてAES演算回路の小型化を考えた例は今までに存在しない。次に、本実施形態の暗号化装置の構成の概要について説明する。AES暗号は、基本的にバイト単位で演算処理が実行される。ShiftRowsは16バイトのバイト単位の並び替えである。ShiftRowsにより実際に並び替えるためには、16バイトの他にバッファとなる記憶装置が必要になる。また、MixColumnsは4バイト単位の変換であるが、入力の4バイトが揃わないと変換が実行できない。本実施形態では、最低限必要な5種類の命令擬似命令のみでAESを実現する。5種類の命令には、3種類の演算処理の命令sbox、xtime、および、xorと、2種類のメモリアクセスの命令ldロードおよびstストアとが含まれる。また、演算結果を記憶するためのレジスタとして8ビットのアキュムレータを設ける。また、これらの命令によりAES暗号をハードウェアで実行する順序機械である制御部を備える。命令や各構成部の詳細は後述する。図1は、第1の実施形態にかかる暗号化装置100を含む電子機器10の構成の一例を示すブロック図である。図1に示すように、電子機器10は、暗号化装置100と、入出力インタフェース入出力IF200と、記憶装置300と、鍵記憶装置400と、を備えている。記憶装置300は、電子機器10で扱う各種データを記憶する。記憶装置300は、データを記憶するアドレスを指定することにより当該データにアクセス可能とする記憶媒体である。記憶装置300は、例えばRAMにより構成できる。入出力IFは、図示しない制御回路からの指示に従い、外部との間でデータを送受信するためのインタフェースである。鍵記憶装置400は、暗号化処理で用いる鍵情報を記憶する。暗号化装置100は、記憶装置300と接続され、AES暗号方式の演算を実行する。記憶装置300は、ページバッファ用のRAMを用いてもよい。鍵記憶装置400は、NANDフラッシュを用いても良い。記憶装置300は、揮発性メモリまたは不揮発性メモリである。鍵記憶装置400は、不揮発性メモリである。また、記憶装置300と鍵記憶装置400は物理的に同一のメモリを用いても良い。制御回路は、例えば、以下のようにしてAES暗号を実行する。1入出力IFを介して暗号化するデータメッセージを読み出し、記憶装置300に書き込む。2鍵記憶装置400から鍵情報を読み出し、記憶装置300に書き込む。3暗号化装置100に演算を指示する。これにより、演算の処理結果である暗号文が記憶装置300に書き込まれる。図2は、第1の実施形態にかかる暗号化装置100の構成の一例を示すブロック図である。図2に示すように、暗号化装置100は、暗号化処理部110と、演算部としてのALUArithmeticLogicUnit120と、アキュムレータ130と、を備えている。暗号化処理部110は、図1で説明した電子機器10の制御回路からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。暗号化処理部110の詳細は後述する。ALU120は、暗号化処理部110により選択された機能を表す情報図2の機能選択に従って演算を実行する。ALU120は、必要に応じて、暗号化処理部110により指定されたアドレスのデータに対して演算を実行する。アキュムレータ130は、ALU120による演算結果を記憶するためのレジスタである。アキュムレータ130に記憶されたデータは、暗号化処理部110からの指示に応じて記憶装置300に書き込まれる。なお、暗号化装置100は、記憶装置300のうち、一部の記憶領域を使用してAES暗号の演算を実行する。記憶装置300内に必要な記憶領域の内訳は以下のとおりである。使用する記憶領域全体のサイズ=49バイト入力となるメッセージm=16バイト入力となる鍵k=16バイト作業領域w=16バイトラウンド定数rc=1バイトなお、演算結果である暗号文はメッセージmに上書きされる。図2の暗号化装置100の使用方法は以下のようになる。記憶装置300に入力データメッセージm16バイトおよび鍵k16バイトを書き込む暗号化装置100を実行開始する暗号化装置100の実行終了を待つ演算結果は記憶装置300に書き込まれているので、演算結果を記憶装置300から読み出すここで、本実施形態によるAES暗号方式の暗号化処理の擬似コードについて説明する。最初に、簡略化した擬似コード簡易版擬似コードを記載する。mAESmk入力mメッセージ、k鍵round0rc0x01mAKmkAddRoundKeywhile1{kKSkKeyExpansionmSBmSubByteswSRmShiftRowsroundround1ifround10breakexitwhileloopmMCwMixColumnsmAKmkAddRoundKeyrcxtimercrcupdate}mAKwkAddRoundKey擬似コード内の各関数は、それぞれAES暗号で定められる関数と以下のように対応する。各AES暗号で定められる関数は各々FIPS197で定義される関数である。AK:AddRoundKeyKS:KeyExpansionMC:MixColumnsSB:SubBytesSR:ShiftRows次に、詳細なAES擬似コード詳細版擬似コードを記載する。詳細版擬似コードは、上記簡易版擬似コードの各関数AK、KS、SB、SR、MCなどを具体化したコードを含む。round0rc0x01AddRoundKeymAKmkfori0i16i{ldmixorkistmi}while1{KeyExpansionkKSkfori0i16i{ldkkpiifi4{sboxifi0xorrc}xorkistki}SubBytesmSBmfori0i16i{ldmisboxstmi}ShiftRowswSRmfori0i16i{ldmsristwi}loopcontrolroundround1ifround10breakexitwhileloopMixColumnsmMCwfori0i16i{ldwixorwofs1ixtimexorwofs1ixorwofs2ixorwofs3istmi}AddRoundKeymAKmkfori0i16i{ldmixorkistmi}rcupdatercxtimercldrcxtimestrc}AddRoundKeymAKwkfori0i16i{ldwixorkistmi}end図3は、擬似コード内の各命令の意味を説明するための図である。図3は、各命令を別の表現で表した式別表現と、命令の内容を表す説明とを記載する。図3のAccはアキュムレータ130に対応する。図3のmemは記憶装置300の指定されたアドレスのデータに対応する。XTIME関数は、例えば、8ビット入出力の関数であり、以下の1式のように表される。msbxはxの最上位ビットを表す。msbx==0x<<1:x<<1^0x1b1このようにして、本実施形態では、5種類の命令であるsbox、xtime、xor、ldおよびstでAESを実現している。図4は、第1の実施形態にかかるALU120の構成の一例を示すブロック図である。図4に示すように、ALU120は、XTIME121と、SBOX122と、XOR123と、セレクタ124と、を備えている。XTIME121、SBOX122、および、XOR123は、それぞれ上述の3種類の演算処理sbox、xtime、および、xorを実行する回路である。セレクタ124は、記憶装置300から読み出したデータLD、XTIME121の演算結果、SBOX122の演算結果、および、XOR123の演算結果のいずれかを選択して出力する。このようにして、ALU120は、暗号化処理部110による機能選択の指定に従い、ld、xtime、sbox、および、xorの4つの演算処理のいずれかを実行する。次に、5種類の命令が実行されたときの暗号化装置100内の処理の流れについて図5から図8を用いて説明する。図5は、ld命令が実行されたときの暗号化装置100内の処理例を示す図である。ld命令では、暗号化処理部110からアドレスが指定出力され、記憶装置300の指定されたアドレスのデータが読み出され、ALU120を経由してアキュムレータ130に書き込まれる。図5のacc-weはアキュムレータ130への書き込みを指示する信号を表す。図5のreadは記憶装置300からのデータの読み出しを指示する信号を表す。図6は、st命令が実行されたときの暗号化装置100内の処理例を示す図である。st命令では、暗号化処理部110からアドレスが指定出力され、アキュムレータ130に記憶されているデータが、記憶装置300の指定されたアドレスに書き込まれる。アキュムレータ130に記憶されているデータは変更しないことを示すため、図5ではacc-we信号に否定を示す上線が付されている。writeは記憶装置300へのデータの書き込みを指示する信号を表す。図7は、xor命令が実行されたときの暗号化装置100内の処理例を示す図である。xor命令では、暗号化処理部110からアドレスが指定出力され、アキュムレータ130に記憶されているデータと、記憶装置300の指定されたアドレスのデータとの排他的論理和の演算結果が、アキュムレータ130に書き込まれる。図8は、sboxおよびxtime命令が実行されたときの暗号化装置100内の処理例を示す図である。sboxおよびxtimeでは用いる関数が異なるが、動作は同様であるため同じ図にまとめて記載している。sbox命令xtime命令では、アキュムレータ130に記憶されているデータに、SBOX関数XTIME関数を適用した結果がアキュムレータ130に書き戻される。図9は、第1の実施形態にかかる暗号化処理部110の構成の一例を示すブロック図である。図9に示すように、暗号化処理部110は、制御部111と、ラウンドカウンタ112と、インデックスレジスタ113と、アドレス生成部114と、を備えている。制御部111は、電子機器10の制御回路図示せずなどの外部装置からの制御信号に従い、各種制御信号を出力して、AES暗号化方式に応じて定められた手順に従って暗号化処理の演算を制御する。図9の点線は、制御部111から各部に制御信号を出力することを表している。この制御信号の詳細については後述する。制御部111には、例えば、AES暗号の演算をリセットする信号、および、演算の開始を指示する信号などの制御信号が入力される。制御部111は、処理状態を表すステータス信号ビジー、完了などを、例えば制御信号の入力元に出力する。ALU機能選択は、ALU120に対していずれの機能演算を実行するかを示す信号を表す。Acc書き込みは、アキュムレータ130にデータを書き込むか否かを指定するための信号を表す。メモリR/Wは、記憶装置300からデータを読み出すかR、記憶装置300にデータを書き込むかWを指定するための信号を表す。ラウンドカウンタ112は、AES暗号のラウンド数roundを数えるためのカウンタである。ラウンドカウンタ112は、例えばフリップフロップにより構成できる。インデックスレジスタ113は、アドレス生成部114がアドレスを生成するために用いるカウンタ値ixを記憶するレジスタである。本実施形態では、インデックスレジスタ113は、4ビットのカウンタ値を記憶する。アドレス生成部114は、制御部111が出力する2ビットの値ページと、インデックスレジスタ113の4ビットのカウンタ値ixとから、6ビットのアドレスを生成して出力する。ここで、本実施形態の暗号化装置100で使用する記憶装置300内の記憶領域のアドレス空間について説明する。図10は、第1の実施形態で用いるアドレス空間の一例を示す図である。図10では、メッセージm、鍵k、作業領域wおよびラウンド定数rcの順に連続するアドレスを用いる例が示されている。アドレスの並び順はこれに限られるものではない。例えば、16バイトのデータメッセージm、鍵kまたは16バイトの作業領域wの各バイトのアドレスが連続していれば、各データまたは作業領域のアドレスは連続していなくてもよい。図11は、第1の実施形態にかかるアドレス生成部114の構成の一例を示すブロック図である。図11に示すように、アドレス生成部114は、kp1001と、sr1002と、ofs11011以下、単にofs1というと、ofs21012以下、単にofs2というと、ofs31013以下、単にofs3というと、セレクタ1021と、を備えている。kp1001、sr1002、ofs1、ofs2、および、ofs3は、それぞれインデックスレジスタから入力される4ビットのカウンタ値ixを変換する回路である。図12は、図11の各回路に相当する関数の入出力の一例を示す図である。例えばkpxは、カウンタ値ix図12の表のxに相当が0の場合、13を出力する関数である。関数kpxは、鍵拡大処理KeyExpansionでのデータのアクセス順が13141512012,3,4,5,6,7,8,9,10,11であることを反映している。srxは、16バイトの並び替えを行うShiftRowsの処理内容を反映している。ofs1x~ofs3xは、xの下位2ビットに、2ビットの1~3を加算するが、xの上位2ビットは不変となる関数である。セレクタ1021は、制御部111からの指示図9の点線に従い、0、カウント値ix、kp1001の出力、sr1002の出力、ofs1の出力、ofs2の出力、および、ofs3の出力、のいずれかを選択して出力する。図11の右上に示すように、アドレス生成部114は、制御部111から入力される2ビットのページと、セレクタ1021から出力される4ビットの値オフセットに相当とを結合したアドレスを出力する。このように、ページがアドレスの上位2ビットになり、例えば、インデックスレジスタを各関数で変形した結果がアドレスの下位4ビットになる。ページは、演算処理に用いられるデータの種類および演算処理に用いられる記憶装置300内の作業領域を特定するための特定情報として用いられる。例えば、ページは、メッセージm、鍵k、作業領域w、および、ラウンド定数rcの4つを特定するために4値をとる。このため、本実施形態ではページを2ビットで表している。次に、このように構成された第1の実施形態にかかる暗号化装置100による暗号化処理について図13を用いて説明する。図13は、第1の実施形態における暗号化処理の全体の流れを示すフローチャートである。図13は、上述のAESの簡易版擬似コードをフローチャートとして記載した図に相当する。まず、ラウンド数のカウンタroundおよびラウンド定数rcがそれぞれ0および1に初期化されるステップS101。次に、AddRoundKeyが実行され、メッセージmが更新されるステップS102。次に、KeyExpansionステップS103、SubBytesステップS104、ShiftRowsステップS105が順次実行され、ラウンド数に1加算されるステップS106。ラウンド数が10に達しない場合ステップS107:No、さらにMixColumnsステップS108、AddRoundKeyステップS109、およびxtimeステップS110が実行される。その後、ステップS103に戻り処理が繰り返される。ラウンド数が10に達した場合ステップS107:Yes、AddRoundKeyが実行されステップS111、暗号化処理が終了する。SRShiftRowsは16バイトの並び替えだが、上書きすると元の値が消えるので、別な領域である作業領域wにコピーしながら並び替えているステップS105。この処理ステップS105をC言語で記載すると次のようなコードになる。fori0i16i{wimsri}上記コード内の変数srは、intsr16{0510154914381327121611}であるため、上記コードは、w0m0w1m5w2m10w3m15w4m4w5m9w6m14w7m3w8m8w9m13w10m2w11m7w12m12w13m1w14m6w15m11という代入をしているのと同じことになる。1変数だけで逐次的に実行しようとすると、これから先に必要な値が上書きされて消されてしまうので、別な変数にコピーしながら順番を入れ替えている。MCMixColumnsも、値が上書される問題が生じるので、別の変数にコピーしながら変換しているステップS108。AES暗号の規格FIPS-197では、m0xtimew0xtimew1w1w2w3のように計算することが定められている。一方、xtimeaxtimebxtimeabであるため、次のようにxtimeをまとめて計算することもできる。m0xtimew0w1w1w2w3MC全体では以下のような計算をすることになる。m0xtimew0w1w1w2w3m1xtimew1w2w2w3w0m2xtimew2w3w3w0w1m3xtimew3w0w0w1w2m4xtimew4w5w5w6w7m5xtimew5w6w6w7w4m6xtimew6w7w7w4w5m7xtimew7w4w4w5w6m8xtimew8w9w9w10w11m9xtimew9w10w10w11w8m10xtimew10w11w11w8w9m11xtimew11w8w8w9w10m12xtimew12w13w13w14w15m13xtimew13w14w14w15w12m14xtimew14w15w15w12w13m15xtimew15w12w12w13w14添え字の並びを考慮し、本実施形態では以下のようにxtimeを計算する。mixtimewiwofs1iwofs1iwofs2iwofs3i図14は、詳細版擬似コードを状態遷移表として書き直した図である。図15は、状態遷移表の各項目の読み方を表す図である。codeは、5種類の命令のうち各状態で実行される機能命令のコードである。readは、記憶装置300からデータを読み出すときに1が設定され、読み出さない場合は0が設定される。writeは、記憶装置300にデータを書き込むときに1が設定され、書き込まない場合は0が設定される。funcは、LD、XTIME、SBOX、XOR、および、任意ALU120による演算は実行しないのいずれかが設定される。acc-weは、アキュムレータ130にデータを書き込むときに1が設定され、書き込まない場合は0が設定される。例えば、state=S01では、ldmiというコードを実行する。その際に、read信号を1に設定し、write信号を0に設定し、funcをLDに設定し、acc_weを1に設定する。またアドレス生成部114の出力はページがPMでoffsetがixである。ix欄とround欄は空白なので何も実行されない。制御欄は↓なので次の状態であるS02に遷移する。S03ではix欄がix1、制御はifix15S01となっている。これはixの値を1増やしてix1に更新することと、ixの更新前の値が15でない場合はS01へ遷移することを意味している。またixが15である場合は次の状態S04へ遷移する。図14に示されるように、ixは、各演算処理の対象となるデータを変更するタイミングで更新される。変形例図16は、第1の実施形態の変形例にかかるアドレス生成部114-2の構成の一例を示すブロック図である。図16に示すように、アドレス生成部114-2は、kp1001と、sr1002と、ofs1010と、セレクタ1021-2と、を備えている。本変形例では、オフセットを出力する3つの回路であるofs1、ofs2、および、ofs3の代わりに、1つのofs1010を備えている。ofs1010は、カウンタ値ixを3つの関数ofsx,1、ofsx,2、ofsx,3のいずれかを用いて変換する回路である。3つの関数ofsx,1、ofsx,2、ofsx,3のいずれを用いるかを指定する信号図16の1~3は、例えば制御部111から指定する。図17は、図16の各回路に相当する関数の入出力の一例を示す図である。セレクタ1021-2は、制御部111からの指示に従い、0、カウント値ix、kp1001の出力、sr1002の出力、ofs1010の出力、のいずれかを選択して出力する。このような構成でも、図11と同様の機能を実現できる。このように、第1の実施形態にかかる演算装置暗号化装置では、装置外部の記憶装置を利用し、演算で用いるデータを当該記憶装置に記憶するように制御する。これにより、AES演算回路内に記憶装置を備える必要がなくなり、さらなる小型化が可能となる。また、本実施形態では、ALU内には暗号化で用いる演算処理を実行する最小限の回路XTIME、SBOX、XORのみを備えるため、この点でも装置の小型化が可能となっている。また、本実施形態では、暗号化で用いる各演算処理を所定の回数単位で実行している。例えばインデックスレジスタのカウント値が15に達するごとに、すなわち、16回単位で各演算を実行している。このため、回数が不一致となる場合に必要となる制御回路が不要になり、さらに小型化が実現できる。第2の実施形態第2の実施形態では、AES暗号方式の復号装置に演算装置を適用した例を説明する。図18は、第2の実施形態にかかる復号装置100-2の構成の一例を示すブロック図である。図18に示すように、復号装置100-2は、復号処理部110-2と、演算部としてのALUArithmeticLogicUnit120-2と、アキュムレータ130と、を備えている。復号処理部110-2は、AES暗号の復号処理の演算を制御し、演算の状態を表すステータス信号を出力する。アキュムレータ130は、ALU120による演算結果を記憶するためのレジスタである。ALU120-2は、復号処理部110-2により選択された機能を表す情報に従って演算を実行する。ALU120-2は、必要に応じて、復号処理部110-2により指定されたアドレスのデータに対して演算を実行する。本実施形態によるAES暗号方式の復号処理の擬似コードについて説明する。以下に、復号処理を簡略化した擬似コード簡易版擬似コードを記載する。minvAESmk入力m暗号文k復号鍵round0rc0x36mAKmkAddRoundKeywhile1{kiKSkinvKeyExpansionmiSBminvSubByteswiSRminvShiftRowsroundround1ifround10breakexitwhileloopwAKwkAddRoundKeymiMCwinvMixColumnsrcixtimercrcupdate}mAKwkAddRoundKey暗号化処理で用いる関数の先頭にiが付加された関数は、暗号化処理で用いる関数の逆関数であることを意味する。例えば、iSBはSBの逆関数である。iKSはsboxとxorにより作成できる。iSBはsboxの逆関数isboxが必要である。iMCはxtimeにより作成できる。ixtimeはxtimeにより作成できる。従って、ALU120-2は、以下の5つ演算を実行できる回路を備えていればよい。1LD2XTIME3SBOX4ISBOX5XOR図19は、このように構成される第2の実施形態にかかるALU120-2の構成の一例を示すブロック図である。図19に示すように、ALU120-2は、XTIME121と、SBOX122と、XOR123と、セレクタ124-2と、ISBOX125と、を備えている。ISBOX125は、SBOX122の逆関数に相当する演算を実行する回路である。復号処理部110-2は、上記擬似コードの復号処理を実現するようにALU120-2の演算を制御する。復号処理部110-2は、暗号化処理部110と同様の制御部111、ラウンドカウンタ112、インデックスレジスタ113、および、アドレス生成部114を備える。復号処理部110-2は、暗号化処理部110が暗号化処理を実行するのと同様の手法で、AES暗号の復号処理を実行すればよい。なお、図19に示すALU12-2の構成で暗号化処理を行うことも可能である。この場合、図4で説明したような動作を行い、ISBOXの機能選択の指定はなされない。次に、このように構成された第2の実施形態にかかる復号装置100-2による復号処理について図20を用いて説明する。図20は、第2の実施形態における復号処理の全体の流れを示すフローチャートである。まず、ラウンド数のカウンタroundおよびラウンド定数rcがそれぞれ0および0x36に初期化されるステップS201。次に、逆AddRoundKeyiAKが実行され、メッセージmが更新されるステップS202。次に、逆KeyExpansioniKSステップS203、逆SubBytesiSBステップS204、逆ShiftRowsiSRステップS205が順次実行され、ラウンド数に1加算されるステップS206。ラウンド数が10に達しない場合ステップS207:No、さらにAddRoundKeyステップS208、逆MixColumnsiMCステップS209、および逆xtimeixtimeステップS210が実行される。その後、ステップS203に戻り処理が繰り返される。ラウンド数が10に達した場合ステップS207:Yes、AddRoundKeyが実行されステップS211、復号処理が終了する。以上説明したとおり、第1および第2の実施形態によれば、演算処理に用いるデータを記憶する記憶装置を演算装置内に備える必要がなくなり装置の小型化が実現できる。例えば、メモリカード内にAES演算回路を備える場合に、さらなるAES演算回路の小型化が実現できる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"