"予め定められた暗号方式の演算を実行する暗号回路と、予め前記演算に用いる相補型のデータを格納しているメモリセルアレイと、前記メモリセルアレイから読み出された前記データを格納する第1の領域、及び前記演算を実行する際に用いられる第2の領域を備えるページバッファと、前記第1の領域からの前記データを格納し、格納した前記データを前記第2の領域に供給するレジスタと、前記データを前記レジスタに格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタに前記データを格納する前記検査回路と、前記データを前記メモリセルアレイから前記第1の領域に読み出す制御、及び前記データを前記第1の領域から前記第2の領域に読み出す制御を行う制御回路と、前記制御回路から供給される信号に基づいて、ページバッファまたはメモリセルアレイのアドレスを指定するアドレス制御回路と、を備え、前記制御回路は、前記アドレス制御回路を制御することで、前記データを前記第1の領域から前記第2の領域に供給し、前記検査回路は前記データにエラーがあると判定した場合に、その旨を前記アドレス制御回路に通知し、前記アドレス制御回路は、前記通知を受信すると、前記ページバッファの前記データと同一内容のデータが格納されている別のアドレスを指定し、前記検査回路は、前記別のアドレスのデータのエラーの有無の判定を行うことを特徴とする不揮発性半導体記憶装置。予め定められた暗号方式の演算を実行する暗号回路と、予め前記演算に用いるデータを格納しているメモリセルアレイと、前記メモリセルアレイから読み出された前記データを格納する第1の領域、及び前記演算を実行する際に用いられる第2の領域を備えるページバッファと、前記第1の領域からの前記データを格納し、格納した前記データを前記第2の領域に供給するレジスタと、を備えることを特徴とする不揮発性半導体記憶装置。前記データを前記レジスタに格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタに前記データを格納する前記検査回路を更に備えることを特徴とする請求項2に記載の不揮発性半導体記憶装置。前記データを前記メモリセルアレイから前記第1の領域に読み出す制御、及び前記データを前記第1の領域から前記第2の領域に読み出す制御を行う制御回路と、前記制御回路から供給される信号に基づいて、ページバッファまたはメモリセルアレイのアドレスを指定するアドレス制御回路と、を更に備え、前記制御回路は、前記アドレス制御回路を制御することで、前記データを前記第1の領域から前記第2の領域に供給し、前記検査回路は前記データにエラーがあると判定した場合に、その旨を前記アドレス制御回路に通知し、前記アドレス制御回路は、前記通知を受信すると、前記ページバッファの前記データと同一内容のデータが格納されている別のアドレスを指定し、前記検査回路は、前記別のアドレスのデータのエラーの有無の判定を行うことを特徴とする請求項3に記載の不揮発性半導体記憶装置。前記データは、相補形式のデータであることを特徴とする請求項2乃至4のいずれか一項に記載の不揮発性半導体記憶装置。前記メモリセルアレイ及び前記ページバッファの間に設けられた演算部を更に備え、前記演算部は、前記暗号回路が行う演算の一部を行うことを特徴とする請求項2乃至5のいずれか一項に記載の不揮発性半導体記憶装置。予め定められた暗号方式の演算を実行する暗号回路と、予め前記演算に用いるデータを格納しているメモリセルアレイと、前記演算を行うページバッファと、を備えることを特徴とする不揮発性半導体記憶装置。暗号化演算装置を搭載する不揮発性半導体記憶装置を提供する。実施形態の不揮発性半導体記憶装置は、予め定められた暗号方式の演算を実行する暗号回路と、予め前記演算に用いる相補型のデータを格納しているメモリセルアレイと、前記メモリセルアレイから読み出された前記データを格納する第1の領域、及び前記演算を実行する際に用いられる第2の領域を備えるページバッファと、前記第1の領域からの前記データを格納し、格納した前記データを前記第2の領域に供給するレジスタと、前記データを前記レジスタに格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタに前記データを格納する前記検査回路と、前記データを前記メモリセルアレイから前記第1の領域に読み出す制御、及び前記データを前記第1の領域から前記第2の領域に読み出す制御を行う制御回路と、前記制御回路から供給される信号に基づいて、ページバッファまたはメモリセルアレイのアドレスを指定するアドレス制御回路と、を備え、前記制御回路は、前記アドレス制御回路を制御することで、前記データを前記第1の領域から前記第2の領域に供給し、前記検査回路は前記データにエラーがあると判定した場合に、その旨を前記アドレス制御回路に通知し、前記アドレス制御回路は、前記通知を受信すると、前記ページバッファの前記データと同一内容のデータが格納されている別のアドレスを指定し、前記検査回路は、前記別のアドレスのデータのエラーの有無の判定を行う。近年では、NANDフラッシュメモリ単にNANDとも称すの大容量化が進み、NANDフラッシュメモリに音楽や動画、ゲームソフト等の大容量データが保持されることが多くなっている。これらのデータには著作権等の権利がある場合が多い。そこで、コンテンツの権利を守るためにNANDフラッシュメモリを搭載したカードを動画再生機などのホスト機器が認証するという機能が考えられている。たとえば、ホスト機器は、メディアが正規のカードか、不正にコピーされたカードなのかを識別し、それが後者であった場合には動画の再生を拒否する、というような認証システムが考えられる。以上のような認証システムにおいて、AESAdvancedEncryptionStandardという暗号方式を用いる事が現在考えられている。AESとは、米国標準の暗号方式であり、様々な分野に採用されている。現在、AESを実行する回路AES演算回路の小型化ハードウェアの回路規模縮小に関して、様々な研究が行われている。例えば、AESの暗号化のための演算データを展開するための記憶装置RAMを暗号装置外部に備えることでAESを搭載したシステムを小型化すること等も考えられている。これまでのAES演算回路の小型化の研究では、AES演算で用いる記憶素子例えばRAMも含めたAES演算回路全体のサイズを小さくすることに主眼が置かれていた。AES演算回路は何らかの装置電子機器に組み込まれて使用されるため、このような使用状況を考慮してAES演算回路のサイズを小さくする必要がある。しかし、これまでは、AES演算回路が他の機器システムに組み込まれて使用されるということを考慮した小型化の研究は行われていない。一般に、システムには、他の用途で使うことを目的とした記憶装置、例えば不揮発性のNANDフラッシュメモリのページバッファRAMRandomAccessMemoryなどが存在する。そこで、第1の実施形態の暗号化装置は、このような記憶装置を、AES演算回路を使用するときに転用する。これにより、AES演算回路内に記憶装置を備える必要がなくなり、さらなる小型化が実現できる。以下に、構成された実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。参照符号を構成する数字の後ろのアルファベットは、同じ数字を含んだ参照符号によって参照され且つ同様の構成を有する要素同士を区別するために用いられている。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。以下の各実施形態では、記憶装置及び演算装置をAES暗号方式の暗号化装置に適用する場合について説明する。しかしながら、各実施形態は、AES暗号方式の暗号化装置以外にも適用することが可能である事に留意されたい。第1の実施形態AESの機能を実現するためには、AES暗号回路以外に、AES鍵記憶装置と、RAMが必要である。本実施形態では、AES鍵記憶装置としてNANDフラッシュメモリ、AES用のRAMとしてページバッファをそれぞれ転用するものとする。AES暗号回路を含むAES暗号化演算装置本体は、NANDチップのうち、コア回路を除いた周辺回路部分に配置されている。以下に詳細について記載する。まず、図1を用いて第1の実施形態に係るシステムの基本的な構成について説明する。図1は、第1の実施形態に係るシステムの基本的な構成を概略的に示したブロック図である。このシステムはAES演算回路AES暗号化装置とも称すを搭載したNANDチップNANDフラッシュメモリやNAND等とも称す100と、これを外部から制御するホスト機器200と、を備えている。次に、図2を用いて第1の実施形態に係るNANDチップの基本的な構成について説明する。図2は、第1の実施形態に係るNANDチップの基本的な構成を概略的に示したブロック図である。図2に示すように、第1の実施形態に係るNANDチップ100は、入出力端子I/O102、制御信号入力端子104、入出力制御回路110、コマンドレジスタ111、一時レジスタ112、データチェック回路113、バス制御回路114、アドレスレジスタ115、ステータスレジスタ116、ロジック制御回路120、メモリセルアレイ130、センスアンプ131、演算部132、ページバッファ133,カラムデコーダ134、カラムバッファ135、ロウアドレスデコーダ136、ロウアドレスバッファデコーダ137、及び昇圧回路140を備えている。入出力端子102及び制御信号入力端子104は、ホスト機器200とNANDチップ100とを接続する外部インタフェースである。入出力端子102は、例えば図示しないデータ入出力端子、コマンド入力端子、及びアドレス入力端子等を備えている。制御信号入力端子104は、例えば図示しないデータ入力用クロックを供給するWE端子、データ出力用クロックを供給するRE端子、データ入出力用クロックを伝送するDQS端子、データ入力をコマンドとして入力するイネーブル用のCLE端子、データ入力をアドレスとして入力するイネーブル用のALE端子、データ入出力等全般の機能を有効化するためのCE端子、及び誤書き込み防止用の書き込み防止信号を伝送するWP端子等を備えている。また、制御信号入力端子104は、高速インタフェースにてデータ伝送を実現する際に利用される端子として、RE端子、WE端子、DQS端子の相補信号を伝送する/RE端子、/WE端子、/DQS端子を備えている。また、図2では図示しないが、NANDチップ100の内部動作状態を示すR/B端子、電力供給用のVcc/Vss/Vccq/Vssq端子等も存在する。入出力制御回路110は、入出力端子102と、各種パラメータを保持する為のレジスタに接続されている。また、入出力制御回路110は、データ入出力バッファ110aを備えている。データ入出力バッファ110aは、データ入出力端子からデータを受信し、カラムデコーダ134によって選択された該データ記憶回路に記憶される。また、データ入出力バッファ110aは、データ入出力端子を介して外部にデータを出力する。データ入出力端子からは、書き込みデータの他に、書き込み、読み出し、消去、およびステータスリード等の各種コマンド、アドレスも入力される。コマンドレジスタ111は、入出力制御回路110から入力されるコマンドをロジック制御回路120に出力する。データチェック回路113は、AESに用いる鍵などの記憶領域のデータをページバッファ133のワーキング領域不図示に移すときに、該データにエラーが無いかの検査を行うものである。一時レジスタ112は、例えばデータチェック回路113の検査でエラーが無いと判定された該データを一時的に保持するレジスタである。バス制御回路114は、例えば入出力制御回路110及びページバッファ133と、ロジック制御回路120及びページバッファ133との接続の切替えを行う回路である。アドレスレジスタ115は、例えばホスト機器200から供給されたアドレスをラッチし、ラッチしたアドレスを内部物理アドレスへ変換し、カラムアドレスをカラムバッファ135、及びロウアドレスをロウアドレスバッファデコーダ137に供給する。ステータスレジスタ116は、NANDチップ100内部の種々の状態を外部に知らせるためのものであって、NANDチップ100がレディ/ビジー状態のいずれにあるかを示すデータを保持するレディ/ビジーレジスタ、書き込みのパス/フェイルを示すデータを保持する書き込みステータスレジスタ不図示を有する。また、例えば、誤書き込み状態の有無誤書き込みベリファイのパス/フェイルを示すデータを保持する誤書き込みステータスレジスタ、過書き込み状態の有無過書き込みベリファイのパス/フェイルを示すデータを保持する過書き込みステータスレジスタ等を有していてもよい。ロジック制御回路120は、メモリセルアレイ130、カラムデコーダ134、データ入出力バッファ110a、及びロウアドレスデコーダ136を制御する。また、ロジック制御回路120は、AES制御回路121、AES暗号回路122、アドレス制御回路123、バッファデータ読み出しシーケンス124、及びバッファデータ書込みシーケンス125を備えている。尚、本実施形態では、AES制御回路121、AES暗号回路122、アドレス制御回路123、バッファデータ読み出しシーケンス124、及びバッファデータ書込みシーケンス125をまとめて、AES暗号化演算装置と呼ぶことがある。AES制御回路121は、AES暗号回路122の制御を行う。AES暗号回路122は、AES暗号方式の演算を実行する演算装置である。アドレス制御回路123は、AES暗号化演算処理で用いられるデータを記憶するページバッファ133または一時レジスタ112のアドレスを生成する。バッファデータ読み出しシーケンス124は、ページバッファ133からデータをAES暗号回路122または、一時レジスタ112に転送するための制御を行うサブシーケンス制御回路である。バッファデータ書込みシーケンス125は、AES暗号回路122または、一時レジスタからのデータをページバッファに転送するための順序回路である。メモリ読み出しシーケンス126は、メモリセルアレイ130内のページから、センスアンプ131を用いてデータをセンスし、ページバッファ133に読み出しデータを格納する。また、ロジック制御回路120は、外部から制御信号入力端子104を介して入力される制御信号コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、レディ/ビジー信号RY/BY等およびデータ入出力端子からデータ入出力バッファ110aを介して入力されるコマンドに応じて制御動作する。すなわち、ロジック制御回路120は、該制御信号およびコマンドに応じて、データのプログラム、ベリファイ、読み出し、消去時に、所望の電圧を発生し、メモリセルアレイ130の各部に供給する。メモリセルアレイ130は、複数のビット線BLと、複数のワード線WLと、ソース線SLとを含む。このメモリセルアレイ130は、電気的に書き換えが可能なメモリセルトランジスタ単にメモリセル等とも称すMCがマトリクス状に配置された複数のブロックBLKで構成されている。メモリセルMCは、例えば、制御ゲート電極及び電荷蓄積層例えば浮遊ゲート電極を含む積層ゲートを有し、浮遊ゲート電極に注入された電荷量により定まるトランジスタの閾値の変化によって二値、あるいは多値データを記憶する。また、メモリセルMCは、電荷トラップ型の絶縁膜例えば窒化膜に電子をトラップするMONOSMetalOxideNitrideOxideSilicon構造を有するものであっても良い。センスアンプ131は、メモリセルアレイ130内のビット線BLカラムの電圧をセンス増幅し、メモリセルアレイへのデータ記憶処理データ読み出し処理データ消去処理などを実行する。演算部132は、任意のデータラッチ間でブール代数で示されるような演算を行い、その結果をデータラッチに格納することが可能である。この演算器は、NANDの書き込み、読み出し等の通常の動作において使われる。ページバッファ133は、書き込みを行うためのデータをラッチする、データの一時記憶領域である。カラムデコーダ134は、ページバッファ133内のデータ記憶回路バッファ回路を選択し、このデータ記憶回路に読み出されたメモリセルMCのデータを、データ入出力バッファ110aを介してデータ入出力端子から外部コントローラ100へ出力する。また、カラムデコーダ134は、ビット線BLを介して該メモリセルMCの状態を検出し、ビット線BLを介して該メモリセルMCに書き込み制御電圧を印加して該メモリセルMCに書き込みを行う。カラムバッファ135は、アドレスレジスタ115から入力されるカラムアドレスを記憶する。ロウアドレスデコーダ136は、データの読み出し動作、書き込み動作、或いは消去動作時に、何れかのブロックBLKを選択し、残りのブロックBLKを非選択とする。つまり、ロウアドレスデコーダ136は、メモリセルアレイ130のワード線WL及び選択ゲート線VSGS、VSGDに、読み出し動作、書き込み動作、或いは消去動作において必要な電圧を印加する。ロウアドレスバッファデコーダ137は、アドレスレジスタ115から入力されるロウアドレスを記憶する。昇圧回路140は、電源電圧を昇圧する。電源電圧を必要に応じて昇圧し、メモリセルアレイ130、センスアンプ131及びロウアドレスデコーダ136に供給する。図3及び図4を用いて、実施形態に係るメモリセルアレイ130の基本的な構成について概略的に説明する。図3は、実施形態に係るメモリセルアレイ130の基本的な構成について模式的に示したブロック図である。メモリセルアレイ130は、複数のメモリブロックBLK0~BLKm-1mは1以上の整数であるから構成される。複数のメモリブロックBLK0~BLKm-1は、ビット線BL方向カラム方向に並んで配置される。このブロックはそれぞれ、例えば用途毎に使い分けられることが可能であり、ロムフューズ領域として用いられるロムフューズブロックBLKi、及び鍵データが記憶されているページを含む鍵記憶ブロックBLKl等がある。ロムフューズブロックBLKiは、NANDチップ100の初期化等に必要な各種の初期設定値を格納している。鍵記憶ブロックBLKlはNANDチップ100の外部に対してはデータ記録だけでなく、データ読み出しも禁止される領域である。そして、鍵記憶ブロックBLKlは、秘密情報であり、AES暗号化演算で用いられる鍵データを予め保持している。ここで、データ読み出しが禁止されている鍵記憶ブロックBLKlの実装上の扱いについて記述しておく。この鍵記憶ブロックBLKlに記憶されている情報は、機密情報であり保護すべきデータが収められているので、直接NANDチップ100の外部例えばホスト機器200にデータを出力できないようになっている。しかし、NANDチップ100を製造する工程で、前記鍵記憶ブロックBLKlのテストを行う、等の目的で、正しく鍵データが書きこめたか否かを確認したい場合がある。この場合にはNANDチップ100の外部から特定のデータをNANDチップ100に与え、このデータと鍵の間で一定の規則に従った演算を行った結果を出力することで正しくデータが前記鍵記憶ブロックBLKlに書き込まれたか否かを判断する。前記特定のデータは鍵データそのものでも良く、その場合には、前記鍵記憶ブロックBLKlに記憶されている鍵データと、NANDチップ100の外部から入力した鍵データの間で排他的論理和をとり、その結果をNANDチップ100の外部に出力すればよい。別の例としては、NANDチップ100の内部に乱数生成回路を更に備え、鍵データと前記乱数生成回路の発生した乱数の間に演算を行った後に、その結果をNANDチップ100の外部に出力するようにする。ここで、NANDチップ100の内部に乱数生成回路を備える場合、予めNANDチップ100の内部に備わっている回路の一部を転用して乱数を発生することが可能である場合には、そのようにすることで回路面積の増大を抑制する効果がある。図4は、図3に示される複数のメモリブロックのうち、1つのメモリブロックの回路例を示す回路図である。図4に示すように、1つのメモリブロックは、ワード線WL方向ロウ方向に並んだ複数のNANDセルセルユニット、またはNANDストリングス等とも称すを含む。1つのNANDセルは、直列接続される複数のメモリセルトランジスタ単にメモリセルとも称すMTと、一端のメモリセルトランジスタMTのドレインに接続される選択ゲートトランジスタST1と、他端のメモリセルのソースに接続される選択ゲートトランジスタST2とを含む。メモリセルトランジスタMTは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層と、電荷蓄積層上に形成されたゲート絶縁膜と、更にゲート絶縁膜上に形成された制御ゲート電極とを有する。なお、メモリセルトランジスタMTの個数は8個に限られず、16個や32個、64個、128個、256個等であってもよく、その数は限定されるものではない。またメモリセルトランジスタMTは、隣接するもの同士でソース、ドレインを共有している。そして、選択ゲートトランジスタST1、ST2間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタMTの一端側のドレイン領域は選択ゲートトランジスタST1のソース領域に接続され、他端側のソース領域は選択ゲートトランジスタST2のドレイン領域に接続されている。ビット線BL0~BLq-1qは1以上の整数であるは、選択ゲートトランジスタST1のドレインと接続される。ソース線SLは、選択ゲートトランジスタST2のソースに接続される。尚、ビット線BL0~BLq-1についても、これらを区別しない場合には一括してビット線BLと呼ぶ。また、選択トランジスタST1、ST2は必ずしも両方必要ではなく、NANDセルを選択出来るのであればいずれか一方のみが設けられていても良い。ワード線WL0~WLn-1nは1以上の整数であるは、WL方向に延び、WL方向に隣接するメモリセルで共有接続される。なお説明の簡単化のため、以下ではワード線WL0~WL7を区別しない場合には、単にワード線WLと呼ぶことがある。セレクトゲート線SGD、SGSはそれぞれ、メモリセルの選択トランジスタST1、ST2のゲート電極で共有接続される。また、同一のワード線WLに接続された複数のメモリセルトランジスタMTには一括してデータが書き込まれ、この単位をページと呼ぶ。更に、同一行にある複数のNANDセルは一括してデータが消去され、この単位をメモリブロックと呼ぶ。次に、図5~8を用いて、第1の実施形態に係るページバッファデータラッチ133の基本的な構成について概略的に説明する。図5は、第1の実施形態に係るページバッファ133及びその周辺の回路の基本的な構成を模式的に示したブロック図である。図5に示すように、センスアンプ131は、ビット線BLに接続される複数のセンス部SA_0、SA_1、SA_2、SA_3、...、SA_q-1を備えている。以下、複数のセンス部を特に区別する必要がない場合は、単にセンス部SAと表記する場合がある。また、演算部132は、センス部SAにそれぞれ接続される複数の演算器YB_0、YB_1、YB_2、YB_3、...、YB_q-1を備えている。以下、複数の演算器を特に区別する必要がない場合は、単に演算器YBと表記する場合がある。また、ページバッファ133において、一つのセンス部SAに複数のバッファ回路AD_0、BD_0、CD_0、及びXD_0が接続されている。そして、ページバッファ133において、センス部SA毎に4つのバッファ回路が設けられている。以下、複数のバッファ回路を特に区別する必要がない場合は、単にバッファ回路AD、BD、CDまたはXD等と表記する場合がある。カラムデコーダ134は、バッファ回路XDにそれぞれ接続される複数のスィッチSW_0、SW_1、SW_2、SW_3、...、SW_q-1を備えている。以下、複数のスィッチを特に区別する必要がない場合は、単にスィッチSWと表記する場合がある。アドレス制御回路123は、アドレス選択信号を各スィッチSWに供給することで、カラムデコーダ134の制御を行う。AES暗号回路122は、カラムデコーダ134を介してページバッファ133とデータの送受信を行う。また、AES暗号回路122は、アドレス制御回路123の制御を行う。AES制御回路121は、AES暗号回路122の制御を行う。図6は、ページバッファ133、及びその周辺の回路例を模式的に示した回路図である。ひとつのセンス部SAには、演算器YBOXYBを介して複数のバッファ回路ラッチ回路AD、BD、CD、XDが接続されている。また、これらページバッファのうち最低ひとつ本例ではバッファ回路XDは、入出力端子102内のデータ入出力端子不図示とデータ入出力バッファを結ぶデータ線IO_BUS_X図2のページバッファ133と、バス制御回路114とを結ぶデータ線に直接接続されている。それぞれのバッファ回路は、データを保持することが可能である。例えば各種シーケンスは、このバッファ回路XDを介して、ホスト機器200からメモリセルアレイ130に書き込むデータをロードし、また、メモリセルアレイ130から読み出したデータをホスト機器200に出力することができる。図7は、ページバッファ133及びその周辺の回路例をより具体的に示した回路図である。センス部SAは、電流経路の一端がビット線BLに接続され、ゲートにBLVが入力され、他端がグランドに接続されるn型のトランジスタ131aと、電流経路の一端がビット線BLに接続され、ゲートにBLCが入力され、他端がノードN1に接続されるn型のトランジスタ131bと、電流経路の一端がノードN1に接続され、ゲートにINVが入力され、他端がSRCGND電位に接続されるトランジスタ131cとを備えている。また、センス部SAは、電流経路の一端が電源VDDに接続され、ゲートにINVが入力され、他端がノードN2に接続されるp型のトランジスタ131dと、電流経路の一端がノードN2に接続され、ゲートにBLXが入力され、他端がノードN1に接続されるn型のトランジスタ131eと、電流経路の一端がノードN2に接続され、ゲートにHLLが入力され、他端がノードN3=SENに接続されるn型のトランジスタ131fと、電流経路の一端がノードN3に接続され、ゲートにXXLが入力され、他端にノードN1が接続されるn型のトランジスタ131gと、を備えている。演算器YBは、電流経路の一端がノードN3に接続され、ゲートにBLQが入力され、他端がノードN4に接続されるn型のトランジスタ132aと、一端にノードN3が接続され、他端にCLKが入力されるキャパシタ132bとを備えている。また演算器YBは、電流経路の一端にノードN4が接続され、ゲートにSTBが入力されるn型のトランジスタ132cと、電流経路の一端がトランジスタ132cの電流経路の他端に接続され、ゲートにノードSENが接続され、他端にCLKが入力されるn型のトランジスタ132dとを備えている。更に演算器YBは、電流経路の一端にノードN3が接続され、ゲートにLSLが入力されるトランジスタ132eと、電流経路の一端にトランジスタ132eの電流経路の他端が接続され、ゲートにノードN4=データ線LBUSが接続され、他端はグランドに接続されているトランジスタ132fと、を備えている。バッファ回路ADは、電流経路の一端に電源VDDが入力され、ゲートにSLLが入力されるp型のトランジスタ133a1と、電流経路の一端にトランジスタ133a1の電流経路の他端が接続され、ゲートがノードN6=INVに接続され、他端がノードN5に接続されるp型のトランジスタ133a2と、電流経路の一端がノードN5に接続され、ゲートにSTLが入力され、他端がノードN4に接続されるn型のトランジスタ133a3と、電流経路の一端がノードN5に接続され、ゲートがノードN6に接続され、他端がグランドに接続されているn型のトランジスタ133a4と、を備えている。また、バッファ回路ADは、電流経路の一端に電源VDDが入力され、ゲートにSLIが入力されるp型のトランジスタ133a5と、電流経路の一端にトランジスタ133a5の電流経路の他端が接続され、ゲートがノードN5に接続され、他端がノードN6に接続されるp型のトランジスタ133a6と、電流経路の一端がノードN6に接続され、ゲートにSTIが入力され、他端がノードN4に接続されるn型のトランジスタ133a7と、電流経路の一端がノードN6に接続され、ゲートがノードN5に接続され、他端がグランドに接続されているn型のトランジスタ133a8と、を備えている。バッファ回路BDは、電流経路の一端に電源VDDが入力され、ゲートにLLLが入力されるp型のトランジスタ133b1と、電流経路の一端にトランジスタ133b1の電流経路の他端が接続され、ゲートがノードN8に接続され、他端がノードN7に接続されるp型のトランジスタ133b2と、電流経路の一端がノードN7に接続され、ゲートにLTLが入力され、他端がノードN4に接続されるn型のトランジスタ133b3と、電流経路の一端がノードN7に接続され、ゲートがノードN8に接続され、他端がグランドに接続されているn型のトランジスタ133b4と、を備えている。また、バッファ回路BDは、電流経路の一端に電源VDDが入力され、ゲートにLLIが入力されるp型のトランジスタ133b5と、電流経路の一端にトランジスタ133b5の電流経路の他端が接続され、ゲートがノードN7に接続され、他端がノードN8に接続されるp型のトランジスタ133b6と、電流経路の一端がノードN8に接続され、ゲートにLTIが入力され、他端がノードN4に接続されるn型のトランジスタ133b7と、電流経路の一端がノードN8に接続され、ゲートがノードN7に接続され、他端がグランドに接続されているn型のトランジスタ133b8と、を備えている。バッファ回路CDは、電流経路の一端に電源VDDが入力され、ゲートにULLが入力されるp型のトランジスタ133c1と、電流経路の一端にトランジスタ133c1の電流経路の他端が接続され、ゲートがノードN10に接続され、他端がノードN9に接続されるp型のトランジスタ133c2と、電流経路の一端がノードN9に接続され、ゲートにUTLが入力され、他端がノードN4に接続されるn型のトランジスタ133c3と、電流経路の一端がノードN9に接続され、ゲートがノードN10に接続され、他端がグランドに接続されているn型のトランジスタ133c4と、を備えている。また、バッファ回路CDは、電流経路の一端に電源VDDが入力され、ゲートにULIが入力されるp型のトランジスタ133c5と、電流経路の一端にトランジスタ133c5の電流経路の他端が接続され、ゲートがノードN9に接続され、他端がノードN10に接続されるp型のトランジスタ133c6と、電流経路の一端がノードN10に接続され、ゲートにUTIが入力され、他端がノードN4に接続されるn型のトランジスタ133c7と、電流経路の一端がノードN10に接続され、ゲートがノードN9に接続され、他端がグランドに接続されているn型のトランジスタ133c8と、を備えている。また、バッファ回路BD及びXDの間において、電流経路の一端に電源VDDが入力され、ゲートにLPCnが入力され、他端がノードN4に接続されているp型のトランジスタ133d1と、電流経路の一端がノードN4に接続され、ゲートにDSWが入力され、他端がノードN11に接続されるn型のトランジスタ133d2と、電流経路の一端に電源VDDが入力され、ゲートにDPCnが入力され、他端がノードN11に接続されるp型のトランジスタ133d3と、電流経路の一端がノードN11に接続され、ゲートにDDCが入力され、他端がグランドに接続されるn型のトランジスタ133d4と、が設けられている。ここで、LPCnは、Lの場合にLBUSをプリチャージする。そして、DSWは、LBUSとバッファ回路XDとを接続する信号である。そして、DPCn及びDDCは、バッファ回路XDをプリチャージまたはディスチャージする信号である。バッファ回路XDは、電流経路の一端に電源VDDが入力され、ゲートにXLLが入力されるp型のトランジスタ133x1と、電流経路の一端にトランジスタ133x1の電流経路の他端が接続され、ゲートがノードN13に接続され、他端がノードN13に接続されるp型のトランジスタ133x2と、電流経路の一端がノードN12に接続され、ゲートにXTIが入力され、他端がノードN11に接続されるn型のトランジスタ133x3と、電流経路の一端がノードN12に接続され、ゲートがノードN13に接続され、他端がグランドに接続されているn型のトランジスタ133x4と、を備えている。また、バッファ回路XDは、電流経路の一端に電源VDDが入力され、ゲートにXLIが入力されるp型のトランジスタ133x5と、電流経路の一端にトランジスタ133x5の電流経路の他端が接続され、ゲートがノードN12に接続され、他端がノードN13に接続されるp型のトランジスタ133x6とを備えている。更にバッファ回路XDは、電流経路の一端がノードN13に接続され、ゲートにXNLが入力され、他端がデータ線IO_BUS_Xに接続されるp型のトランジスタ133x7と、電流経路の一端がノードN13に接続され、ゲートにXTLが入力され、他端がデータ線IO_BUS_Xに接続されるn型のトランジスタ133x8と、電流経路の一端がノードN13に接続され、ゲートがノードN12に接続されるn型のトランジスタ133x9と、電流経路の一端がトランジスタ133x9の電流経路の他端に接続され、ゲートにXNLが入力され、他端がグランドに接続されているn型のトランジスタ133x10と、を備えている。次に、図8を用いて、本実施形態に係るAES暗号回路122で使用するページバッファ133内の記憶領域のアドレス空間について概略的に説明する。図8aは、本実施形態に係るページバッファ133の基本的な構成を示した模式図であり、図8bは、本実施形態に係るページバッファ133への、機能別に領域を分けた場合に関する模式図であり、図8cは、本実施形態に係るページバッファ133への、より詳細な割り当てについて示した模式図である。メモリセルアレイ130の鍵記憶ブロックBLKl内には、鍵データとして、多くのデータセットスロットが記憶されており、これらの鍵スロットのうちどのスロットを演算に使用するかはホスト機器200が選択する。このスロットは、データ全体の容量が数ページにわたることもある。また、製品によりページ長が異なることもある。しかし、AES演算装置が実際にRAMとして使用するアドレス空間は49バイト程度である。メモリセルアレイ130のページ容量16キロバイトと比較して非常に小さい。このようにAES演算装置が演算の際にRAMとして用いる領域は少ない。図8aに示すように、AES暗号回路122のRAMとして、ページバッファ133を使用する前は、AES暗号回路122の演算用RAMとしての領域ワーキングエリアと、鍵等の情報を記憶しておく鍵記憶領域と、に領域が分けられていない。しかし、後述する手段によって、図8bに示すように、AES暗号回路122のRAMとして、ページバッファ133を使用する際に、ページバッファ133はAES暗号回路122が演算を行う演算用RAMとしての領域ワーキング領域133aと、鍵等の情報を記憶しておく領域鍵記憶領域133bと、に領域が分けて用いられる。より具体的には、図8cに示すように、鍵記憶領域133tには、秘密情報MediaKeyMKEYと、複数のスロット鍵SlotkeySLOT0~SLOT_Eが保持されている。ワーキング領域133sには、NANDチップ100の外部からメッセージデータMESSAGEがロードされる。また後述する手段によって鍵記憶領域133tのSLOT0~SLOT_Eのうち一組のスロット鍵がワーキング領域133sに転送され、AES暗号回路122が演算で用いるスロット鍵SKEYとなる。MKEYについても後述の手段により、ワーキング領域133sに転送され、AES暗号回路122が演算で用いるMediaKeyMKEYとなる。また、後述するAES暗号化演算が終了した後、認証情報が図8dに示すようにワーキング領域133sに書き込まれる。次に、図9を用いて、本実施形態に係るAES暗号回路122の基本的な構成について説明する。図9は、本実施形態に係るAES暗号回路122の基本的な構成を模式的に示したブロック図である。図9に示すように、AES暗号回路122は、暗号化処理部122aと、暗号化のための演算を行うALUArithmeticandLogicUnit122bと、演算結果を一時的に記憶するためのアキュムレータ122cと、を備えている。AES暗号回路122は、AES制御回路121からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。ALU122bは、暗号化処理部122aにより選択された機能を表す情報図中の機能選択に従って演算を実行する。ALU122bは、必要に応じて、暗号化処理部122aにより指定されたアドレスのデータに対して演算を実行する。アキュムレータ122cは、ALU122bによる演算結果を記憶するためのレジスタである。アキュムレータ122cに記憶されたデータは、暗号化処理部122aからの指示に応じてページバッファ133に書き込まれる。なお、AES暗号回路122は、ページバッファ133のうち、一部の記憶領域を使用してAES暗号の演算を実行する。暗号化処理部122aは、AES制御回路121を介してホスト機器200から暗号化処理の命令を受け、ページバッファ133のアドレスを指定し、ALU122bにこのデータについて演算をさせるようになっている。AES暗号回路122は、ホスト機器200から与えられた入力データを元に、AES暗号化方式で定められた手順によって演算を行い、演算結果のデータを返す。この演算を式であらわすと、下記の様な式になる。R=AESm,kR:Result;演算結果,m:Message;メッセージ,k:key;鍵上記のAES暗号化演算装置は、下記の5種類の命令を備えており、演算はバイト単位で行われる。このうち、3つはAES内部の演算処理の命令sbox、xtime、および、xorであり、残りの2つは2種類のメモリアクセスのための命令ldロードおよびstストアである。[演算処理の命令]1.sbox2.xtime3.xor[メモリアクセスのための命令]4.ldロード5.stストア。また、AES暗号回路122の使用方法は以下のようになる。ページバッファ133に入力データメッセージm16バイトおよび鍵k16バイトを書き込むAES暗号回路122を実行開始するAES暗号回路122の実行終了を待つ演算結果はページバッファ133に書き込まれているので、演算結果をページバッファ133から読み出す。次に、図10を用いて、本実施形態に係るAES暗号演算装置の基本的な構成及び信号の流れについて説明する。図10は、本実施形態に係るAES暗号演算装置の基本的な構成及び信号の流れについて模式的に示したブロック図である。図10に示すように、NANDチップ100内部のコマンドレジスタ111は、入出力端子102および入出力制御回路110を介してAES暗号化シーケンスをスタートさせるコマンドをホスト機器200から受け取る。そして、コマンドレジスタ111は、該コマンドを保持し、暗号化実行コマンドcmdとしてAES制御回路121へ送る。この暗号化実行コマンドcmdを受け取ったAES制御回路121は、信号aes_startをAES暗号回路122に送る、そして、AES暗号回路122は、信号aes_startを受信すると、AES暗号化シーケンスを開始する。また、AES暗号回路122は、信号aes_startを受信すると、演算の状態を示す信号aes_R/BをAES制御回路121に返す。例えば、AES暗号回路122はAES暗号化シーケンスの演算中であれば、AES制御回路121にビジー信号としてaes_R/Bを送信する。AES暗号回路122は、AES暗号化シーケンス中にデータのロード、ストアが必要になった場合には、それぞれ信号aes_read/aes_writeをAES制御回路121に送信する。AES暗号回路122はRAMページバッファ133のアドレスを信号aes_addressによって指定し、信号aes_addressをアドレス制御回路カラムアドレス制御回路123に送信する。アドレス制御回路123は、該アドレス信号を物理アドレスに変換し、信号column_addressをカラムデコーダ134に送信することで、ページバッファ133のうちの該当するアドレスに属するビットを指定する。また、AES暗号回路122はシーケンスの状態に応じて、アドレス制御回路123を制御し、アドレスを変更することが可能である。アドレス制御回路123は、AES暗号回路122から供給されるアドレスをページバッファ133のワーキング領域133sのアドレスに変換することができる。AES暗号回路122は、8ビットのデータ線IO_BUS_S図2のロジック制御回路120と、バス制御回路114とを結ぶデータ線、バス制御回路114、及びデータ線IO_BUS_Xを介してページバッファ133とデータの送受信を行う。バス制御回路114は、入力端がデータ線IO_BUS_Sに接続されるインバータ114aと、入力端にインバータ114aの出力端が接続され、出力端がデータ線IO_BUS_Sに接続されるインバータ114bと、入力端がデータ線IO_BUS_Xに接続されるインバータ114cと、入力端にインバータ114cの出力端、インバータ114aの入力端、及びインバータ114bの出力端が接続され、入力端がデータ線IO_BUS_Xに接続される114dとを有する。また、データ線IO_BUS_Sには、データチェック回路113及び一時レジスタ112が備えられている。データチェック回路113は、鍵などのデータをページバッファ133のワーキング領域133sに移すときに、データにエラーが無いか否かの検査を行う。一時レジスタ112は、AESの演算を行う前の段階で、データチェック回路113において、エラーが無いと判定されたデータをワーキング領域に移すために、一時的に保持する。また、一時レジスタ112を介してページバッファ133内部でのデータのアドレス変換を行う事もできる。AES制御回路121は、ページバッファ133からデータをAES暗号回路122に転送するための制御を行うバッファデータ読み出しシーケンス124、及びAES暗号回路122からのデータをページバッファに転送するためのバッファデータ書込みシーケンス125と接続されている。AES制御回路121は、AES暗号回路122からメモリロードリードの命令を受けると、信号page_loadを、バッファデータ読み出しシーケンス124に送信する。バッファデータ読み出しシーケンス124は、信号page_loadを受信すると、サブシーケンスを開始する。バッファデータ読み出しシーケンス124は動作が終了すると、それぞれ信号load_endをAES制御回路121に送信し、バッファデータ読み出しシーケンス124のサブシーケンスを終了する。AES制御回路121は、AES暗号回路122から、メモリストアライトの命令を受けると、信号page_readを、バッファデータ書込みシーケンス125に送信する。バッファデータ書込みシーケンス125は、信号page_readを受信すると、サブシーケンスを開始する。バッファデータ書込みシーケンス125は動作が終了すると、信号store_endをAES制御回路121に送信し、バッファデータ書込みシーケンス125のサブシーケンスを終了する。次に、本実施形態に係るAES暗号化シーケンスについて説明する。図11は、AES暗号化シーケンス1000を示すブロック図である。図12は、上記AES暗号化シーケンスを実行するために、ホスト機器200がNANDチップ100AES制御回路121に入力するコマンドのセットを示している。以下にAES暗号化シーケンス1000について説明する。AESの実行シーケンスとしては、図11に示すようなステップで操作が行われる。[ステップS1001]ホスト機器200は、NANDチップ100入出力端子102にメッセージデータを入力する。このメッセージデータは例えば、先頭にAESシーケンス用の特別コマンドXXhを含んでいる。ホスト機器200から入力するメッセージデータはページバッファ133のワーキング領域133sのうち、AES制御回路121がtrans_addressをアドレス制御回路123に供給することで、予め決まったアドレスに格納される。[ステップS1002]ホスト機器200は、スロット鍵を指定して、NANDチップ100入出力端子102に入力する。具体的には、ホスト機器200は、多くのスロットのうちのいずれかを選択し、スロットの番号を決定する。そして、ホスト機器200は、入出力端子102に通常の書き込みアドレス入力コマンド80hを入力し、入出力端子102に決定したスロット鍵番号またはスロット鍵のあるアドレスを入力する。NANDチップ100アドレス制御回路123はスロットの番号をカラムアドレスに変換する。通常、アドレスは5サイクルのアドレス入力が行われ、はじめの2サイクルはカラムアドレスであり、残りの3サイクルはロウアドレスを指す。ステップS1002では、ホスト機器200が入出力端子102にXXhコマンドを入力した段階で、鍵データが書かれているブロックとページが自動的に指定されるものとし、スロット鍵を指定するアドレス以外はダミーアドレスが、入出力端子102に入力されるものとする。[ステップS1003]ホスト機器200は、NANDチップ100入出力端子102にAES暗号化実行コマンドを入力する。ホスト機器200は、アドレス入力の後にAES暗号演算に必要なメッセージデータDinを入力する。10hコマンドはメモリセルアレイ130への書き込み実行コマンドであるが、このコマンドシーケンスの先頭にXXhコマンドが入力されていた場合には、AES制御回路121は、10hコマンドをAES暗号化実行コマンドと解釈し、AES演算シーケンスを開始する。[ステップS1004]ホスト機器200がAES実行コマンド10hをAES制御回路121に入力すると、AES制御回路121は、鍵情報スロット鍵のデータが記憶されているメモリセルアレイ130のページのデータをページバッファ133に読み出してくる。すなわち、AES制御回路121はメモリ読み出しシーケンス126に、該当のメモリセルアレイ130内のページから、センスアンプ131を用いてデータをセンスし、ページバッファ133に読み出しデータを格納するように命令を出す。尚、メモリセルアレイ130において、スロット鍵は相補データのデータ形式で何セットかを記憶されている。そのため、データtrans_inは、相補データのデータ形式となっている。後述する検査のために、スロット鍵は相補形式で多重記録されているので、検査の結果データにエラーがあった場合には正しいデータと取り替えることが可能である。また、メディア鍵も同様に相補データのデータ形式にしておくことで、後述するデータのチェックを行うことができる。[ステップS1005]次に、ステップS1002で指定されたスロット鍵のデータを一時レジスタ112のワーキング領域不図示にコピーする。データチェック回路113は、ページバッファ133から一時レジスタ112へ、データtrans_inの転送を行う途中で、データtrans_inが正しいデータか否かのチェックを行う。具体的には、データチェック回路113で、鍵データの相補データチェックを行い、データが相補形式に保たれていれば、そのまま一時レジスタ112へデータtrans_inを転送する。[ステップS1006]もし、ステップS1005の相補チェックに失敗した場合には、データチェック回路113は、一時レジスタ112を介してバッファデータ読み出しシーケンス124にcheck_flagを送信する。その後、バッファデータ読み出しシーケンス124はflag_failをアドレス制御回路123に送信する。そして、アドレス制御回路123は、同じスロット鍵のデータが書かれている別のアドレスを指定し、再度データチェック回路113へデータtrans_inの転送を試みる。このようにして、相補チェックが成功するまで、データtrans_inのチェックが行われる。そのため、エラービットが取り除かれたデータが一時レジスタ112に格納される。この例では、相補チェックが失敗した場合、同じスロット鍵のデータが書かれている別のアドレスを指定しているが、必ずしもこれに限らない。[ステップS1007]ステップS1005の相補チェックに成功した場合には、ステップS1002で指定されたスロット鍵のデータを一時レジスタ112にコピーする。一時レジスタ112は、少なくともスロット鍵のデータ長と等しいサイズの記憶領域を有している。[ステップS1008]一時レジスタ112に格納されたデータをページバッファ133のワーキング領域133sに移すため、AES制御回路121は、バッファデータ書込みシーケンス125のサブシーケンスを起動する。アドレス制御回路123は、アドレス制御回路123にワーキング領域133s内部の転送先アドレスtrans_addressを指定する。一時レジスタ112のデータtrans_outがデータ線IO_BUS_S、バス制御回路114、及びデータ線IO_BUS_Xを介してページバッファ133に転送される。データの転送が完了したのち、アドレス制御回路123は、アドレスをインクリメントし、このインクリメントと同期して一時レジスタ112のアドレスをインクリメントし、都度一時レジスタ112から、ページバッファ133へのデータの転送を1バイトずつ行う。鍵データの長さだけ転送動作を繰り返すことで、鍵データのワーキング領域133sへのコピーが完了する。続いて、上述したステップS1005~ステップS1008でスロット鍵について説明した方法と同様の方法で、メディア鍵を、鍵記憶領域133tからワーキング領域133sへとコピーする。[ステップS1009]次に、メディア鍵のデータを一時レジスタ112のワーキング領域不図示にコピーする。データチェック回路113は、ページバッファ133から一時レジスタ112へ、データtrans_inの転送を行う途中で、データtrans_inが正しいデータか否かのチェックを行う。[ステップS1010]もし、ステップS1009の相補チェックに失敗した場合には、データチェック回路113は、一時レジスタ112を介してバッファデータ読み出しシーケンス124にcheck_flagを送信する。その後、バッファデータ読み出しシーケンス124はflag_failをアドレス制御回路123に送信する。そして、アドレス制御回路123は、同じメディア鍵のデータが書かれている別のアドレスを指定し、再度データチェック回路113へデータtrans_inの転送を試みる。このようにして、相補チェックが成功するまで、データtrans_inのチェックが行われる。そのため、エラービットが取り除かれたデータが一時レジスタ112に格納される。この例では、相補チェックが失敗した場合、同じスロット鍵のデータが書かれている別のアドレスを指定しているが、必ずしもこれに限らない。[ステップS1007]ステップS1005の相補チェックに成功した場合には、該メディア鍵のデータを一時レジスタ112にコピーする。一時レジスタ112は、少なくともメディア鍵のデータ長と等しいサイズの記憶領域を有している。[ステップS1008]一時レジスタ112に格納されたデータをページバッファ133のワーキング領域133sに移すため、AES制御回路121は、バッファデータ書込みシーケンス125のサブシーケンスを起動する。アドレス制御回路123は、アドレス制御回路123にワーキング領域133s内部の転送先アドレスtrans_addressを指定する。この際、AES暗号回路122は、メディア鍵のコピーの先として、アドレス制御回路123に、スロット鍵がコピーされたワーキング領域133sとは異なるアドレスを指定する。一時レジスタ112のデータtrans_outがデータ線IO_BUS_S、バス制御回路114、及びデータ線IO_BUS_Xを介してページバッファ133に転送される。データの転送が完了したのち、アドレス制御回路123は、アドレスをインクリメントし、このインクリメントと同期して一時レジスタ112のアドレスをインクリメントし、都度一時レジスタ112から、ページバッファ133へのデータの転送を1バイトずつ行う。鍵データの長さだけ転送動作を繰り返すことで、鍵データのワーキング領域133sへのコピーが完了する。[ステップS1010]AESのワーキング領域にチップ外部から入力されたメッセージと、スロット鍵、メディア鍵がコピーされた後、NANDチップ100AES暗号回路122は、AES暗号化を実行し、実行中はビジー信号aes_R/Bbusyを、AES制御回路121及び図示せぬRBレディビジーパッドを介してホスト機器200に出力する。RBパッドは、AES演算シーケンスが終了するまでビジーをホスト機器200に出力する。図13~15を用いて、ステップS1010についてより具体的に説明する。図13は、暗号化のメインシーケンスを実行する際のタイミングチャートであり、図14は、AES暗号回路122がデータのロードを実行する際のタイミングチャートであり、図15は、AES暗号回路122がデータのストアを実行する際のタイミングチャートである。尚、各信号はNANDチップ100内部で発生された図示せぬクロック信号clockと同期して動作している。メッセージと鍵データが、ページバッファ133のワーキング領域133sに揃うと、図13に示すように、AES制御回路121は、信号aes_startをAES制御回路121へ送信する。AES暗号回路122は、この信号を受信することで暗号化のメインシーケンスを実行する。そして、AES暗号回路122は、AES演算を実行している間ビジー信号aes_R/Bbusyを出力する。AES暗号回路122のAES演算を実行している間に、AES暗号回路122がメモリのロードまたはストアを行う場合、AES暗号回路122から直接アドレス制御回路123にワーキング領域133sのアドレスaes_addressが送信される。このメモリのロード及びストアとは、AES暗号回路122が演算を行っているときに、ページバッファ133の中のワーキング領域133sとAES暗号回路122との間でデータを授受する動作のことである。より具体的には、ロードは、ワーキング領域133sの中のaes_addressで指定されたバイトをAES暗号回路122に読み出す動作。ストアは、AES暗号回路122で計算したデータをワーキング領域133sのaes_addressで指定されたアドレスに書き込む動作である。つまり、AES暗号回路122がページバッファ133にaes_addressでランダムにアクセスして、メモリの読み書きを行う動作のことである。図14に示すように、AES暗号回路122がロードを行う場合、AES暗号回路122は、信号aes_readをAES制御回路121に送信し、アドレス制御回路123にワーキング領域133sのアドレスaes_addressを送信する。そして、AES制御回路121は、信号page_loadをバッファデータ読み出しシーケンス124に送信する。そして、バッファデータ読み出しシーケンス124が起動し、ワーキング領域133sのaes_addressで指定されたアドレスにあるページバッファ133をIO_BUS_X、IO_BUS_S、aes_dinを介してAES暗号回路122に接続する。その後、バッファデータ読み出しシーケンス124からAES制御回路121にload_end信号が送られ、AES制御回路121はデータロードが終了したことを示す信号aes_read_end信号をAES暗号回路122へと送信し、AES暗号回路122は、ページバッファから所望のデータをaes_dinから得ることでロード動作が完了する。図15に示すように、AES暗号回路122がストアを行う場合、AES暗号回路122は、信号aes_writeをAES制御回路121に送信し、アドレス制御回路123にワーキング領域133sのアドレスaes_addressを送信する。そしてAES制御回路121は、信号page_storeをバッファデータ書込みシーケンス125に送信する。そして、バッファデータ書込みシーケンス125が起動し、aes_doutから、IO_BUS_S、IO_BUS_Xを経由してページバッファ133へデータ線が接続される。AES暗号回路122からaes_doutに、ストアすべきデータが出力されているので、このデータが上記のデータ経路からページバッファ133に送信され、所望のアドレスaes_addressに該当するページバッファ133にデータが書き込まれる。その後、バッファデータ書き込みシーケンス125からAES制御回路121にstore_end信号が送られ、AES制御回路121はデータストアが終了したことを示す信号aes_write_end信号をAES暗号回路122へと送信し、ストア動作が完了する。尚、この場合ワーキング領域133s内のデータにはエラーが無いので、データチェック回路113によって相補データチェックを行う必要は無い。[ステップS1010]NANDチップ100AES暗号回路122は、一連のAES暗号化シーケンスが終了した後、AES暗号回路122はレディ信号aes_R/BreadyをAES制御回路121に送信する。そして、AES制御回路121は、レディ信号aes_R/Breadyを、AES制御回路121及び図示せぬRBレディビジーパッドを介してホスト機器200に出力する。そして、NANDチップ100はレディ状態になる。ページバッファ133のワーキング領域133sにはAES暗号演算の結果としてのデータが残っている。[ステップS1011]ホスト機器200は、ページバッファ133のワーキング領域133sから該演算結果を読み出す。ホスト機器200は、AES暗号演算シーケンスが終了した後、ページバッファ133ワーキング領域133sに残った認証情報を読み出す。この際、ホスト機器200は、この認証情報を読み出すコマンドシーケンスとして、通常のレジスタページバッファ読み出しコマンドシーケンスと同様のコマンドシーケンスを用いる。上述した第1の実施形態によれば、第1の実施形態に係る不揮発性半導体記憶装置NANDチップ100は、予め定められた暗号方式の演算を実行する暗号回路AES暗号回路122と、予め前記演算に用いる相補型のデータを格納しているメモリセルアレイ130と、前記メモリセルアレイ130から読み出された前記データを格納する第1の領域鍵記憶領域133t、及び前記演算を実行する際に用いられる第2の領域ワーキング領域133sを備えるページバッファ133と、を備えている。また、不揮発性半導体記憶装置は、前記第1の領域133tからの前記データを格納し、格納した前記データを前記第2の領域133sに供給するレジスタ一時レジスタ112と、前記データを前記レジスタ112に格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタ112に前記データを格納する前記検査回路113と、を備えている。更に、不揮発性半導体記憶装置は、前記データを前記メモリセルアレイ130から前記第1の領域133tに読み出す制御、及び前記データを前記第1の領域133tから前記第2の領域133sに読み出す制御を行う制御回路AES制御回路121と、前記制御回路121から供給される信号に基づいて、ページバッファ133またはメモリセルアレイ130のアドレスを指定するアドレス制御回路123と、を備えている。前記制御回路121は、前記アドレス制御回路123を制御することで、前記データを前記第1の領域133tから前記第2の領域133sに供給し、前記検査回路113は前記データにエラーがあると判定した場合ステップS1005に、その旨を前記アドレス制御回路123に通知し、前記アドレス制御回路123は、前記通知を受信すると、前記ページバッファ133の前記データと同一内容のデータが格納されている別のアドレスを指定し、前記検査回路113は、前記別のアドレスのデータのエラーの有無の判定を行うステップS1006。このように、第1の実施形態に係るNANDチップ100は、ページバッファ133を、AES演算用のRAMとして転用することで、面積のオーバーヘッドを抑制して、ホスト機器200に依存せず、NANDチップ100内の構成のみでAESの機能を実現することが可能である。ところで、NANDチップ100のページバッファ133は、基本的には、大規模データの一括アクセスを前提としたものであり、通常の演算装置が用いるRAMとは異なる。より具体的に説明すると、ページバッファ133をAES暗号化演算装置のための記憶装置として使用する場合には、AES暗号回路122に、メモリセルアレイ130のページ長に相当するアドレス空間を認識させることが考えられる。この場合、AES暗号回路122のアドレス線が増加し、周辺回路の回路規模が増大してしまう。また、製品によりページ長、スロット数等が異なることが考えられ、その都度AES演算回路を変更しなければならないかもしれない。また、NANDチップ100の微細化により、メモリセルアレイ130の信頼性が劣化してきており、ビット不良が増える傾向にある。AES暗号化演算に用いる鍵情報等のデータを記憶する鍵記憶装置としてメモリセルアレイ130を利用するためには、鍵情報等のデータのエラーを取り除かなくてはならないという問題もある。このため、ページバッファ133をAES暗号化演算装置のための記憶装置として使用する場合には工夫が必要であり、更に、AES暗号回路122が演算を始める前に、何らかの方法で鍵情報等のデータを検査してビット不良が無いことを保証する必要がある。そこで、本実施形態のように、ページバッファ133を、AES暗号化演算処理に用いるRAMとして機能するワーキング領域133sと、鍵情報等のデータを記憶する鍵記憶領域133tと、に領域を分けている。そして、一時レジスタ112を用いて、鍵記憶領域133tから、ワーキング領域133sへとAES暗号化演算で用いるデータの移動を行っている。このため、アドレス線の増加等を抑制し、ページバッファ133をAES暗号化演算処理用のRAMとして転用することが可能となる。また、本実施形態のように、データチェック回路113を用いて、AES暗号化演算処理を行う前に、鍵情報等のデータのエラーチェックを行うことで、エラーの無い鍵情報等のデータを保証することができる。以上のように、工夫を施せば、NANDチップの外部にAES演算用の構成を設けることなく、AES暗号化演算を行うことが可能となる。つまり、暗号化演算装置を搭載した不揮発性半導体記憶装置NANDチップを実現することができる。また、上記で、ページバッファ133をAES暗号演算装置のRAMとして使用する方法について説明してきたが、AES暗号装置に代えてNAND内部にECC、セキュリティ等に関連した演算器をNANDチップ100に混載した場合にもページバッファ133を同様の方法で、これらの演算器のRAMとして使用することが可能である。また、前記AES暗号化シーケンスで用いたデータチェック回路113、バッファデータ読み出しシーケンス124、バッファデータ書き込みシーケンス125等の回路は、NANDに予め備わっているパワーオンリード動作を制御する回路を用いることが可能である場合には、これを用いてもよい。パワーオンリード動作とは、NANDチップ100に電源を投入した際にメモリセルアレイ130のロムフューズ領域に記憶されているデータを読み出す動作のことを指す。前記パワーオンリードを制御する回路の一部を転用できることが可能である場合には回路面積の増加を抑える効果がある。第2の実施形態次に、第2の実施形態について説明する。第2の実施形態に係るNANDチップ100は、AES暗号回路122の演算部の一部を、演算部132を転用することによって、更にAES暗号回路122の回路規模を減らすことができる。図5に示すように、演算器YBは、センス部SAとバッファ回路との間に設けられている。この演算器YBは、センス部SA毎に備えられている。この演算器YBは任意のバッファ回路間でブール代数で示されるような演算を行い、その結果をバッファ回路に格納することが可能である。この演算器YBは、NANDの書き込み、読み出し等の通常の動作においても用いられる。演算器YBに対して、例えば所定の制御回路の命令により、全てのカラムに対して一括して演算をさせることが出来る。上述した第2の実施形態によれば、第2の実施形態に係る不揮発性半導体記憶装置NANDチップ100は、前記メモリセルアレイ130及び前記ページバッファ133の間に設けられた演算部132を更に備え、前記演算部132は、暗号回路122が行う演算の一部を行う。AES暗号回路122が行う演算について演算器YBを転用する場合、ALU122bの回路規模を低減することができ、またはALU122bを備えなくてもAES暗号回路122の演算の機能を実施することが可能となる。その結果、NANDチップ100の回路規模を更に削減することが可能である。また、演算器YBは、並列に演算を行うことができるので、演算を更に高速化することが可能である。第3の実施形態次に、第3の実施形態について説明する。第3の実施形態では、AES暗号回路で使用するRAMRandomAccessMemoryにAES演算回路を組み込むシステム内の記憶装置を転用することでAES演算回路の小型化を図った場合のAES暗号演算回路内部の回路に関する。このような観点に基づいてAES演算回路の小型化を考えた例は今までに存在しない。以下の各実施形態では、演算装置をAES暗号方式の暗号化装置第3の実施形態および復号装置第4の実施形態に適用した例を説明する。次に、本実施形態の暗号化装置の構成の概要について説明する。AES暗号は、基本的にバイト単位で演算処理が実行される。ShiftRowsは16バイトのバイト単位の並び替えである。ShiftRowsにより実際に並び替えるためには、16バイトの他にバッファとなる記憶装置が必要になる。また、MixColumnsは4バイト単位の変換であるが、入力の4バイトが揃わないと変換が実行できない。本実施形態では、最低限必要な5種類の命令擬似命令のみでAESを実現する。5種類の命令には、3種類の演算処理の命令sbox、xtime、および、xorと、2種類のメモリアクセスの命令ldロードおよびstストアとが含まれる。また、演算結果を記憶するためのレジスタとして8ビットのアキュムレータを設ける。また、これらの命令によりAES暗号をハードウェアで実行する順序機械である制御部を備える。命令や各構成部の詳細は後述する。図20は、第3の実施形態にかかる暗号化装置400を含む電子機器10の構成の一例を示すブロック図である。図20に示すように、電子機器10は、暗号化装置400と、入出力インタフェース入出力IF500と、記憶装置600と、鍵記憶装置700と、を備えている。記憶装置600は、電子機器10で扱う各種データを記憶する。記憶装置600は、データを記憶するアドレスを指定することにより当該データにアクセス可能とする記憶媒体である。記憶装置600は、例えばRAMにより構成できる。入出力IFは、図示しない制御回路からの指示に従い、外部との間でデータを送受信するためのインタフェースである。鍵記憶装置700は、暗号化処理で用いる鍵情報を記憶する。暗号化装置400は、記憶装置600と接続され、AES暗号方式の演算を実行する。記憶装置600は、ページバッファ用のRAMを用いてもよい。鍵記憶装置700は、NANDフラッシュを用いても良い。記憶装置600は、揮発性メモリまたは不揮発性メモリである。鍵記憶装置700は、不揮発性メモリである。また、記憶装置600と鍵記憶装置700は物理的に同一のメモリを用いても良い。制御回路は、例えば、以下のようにしてAES暗号を実行する。1入出力IFを介して暗号化するデータメッセージを読み出し、記憶装置600に書き込む。2鍵記憶装置700から鍵情報を読み出し、記憶装置600に書き込む。3暗号化装置400に演算を指示する。これにより、演算の処理結果である暗号文が記憶装置600に書き込まれる。図21は、第3の実施形態にかかる暗号化装置400の構成の一例を示すブロック図である。図21に示すように、暗号化装置400は、暗号化処理部410と、演算部としてのALUArithmeticLogicUnit420と、アキュムレータ430と、を備えている。暗号化処理部410は、図20で説明した電子機器10の制御回路からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。暗号化処理部410の詳細は後述する。ALU420は、暗号化処理部410により選択された機能を表す情報図21の機能選択に従って演算を実行する。ALU420は、必要に応じて、暗号化処理部410により指定されたアドレスのデータに対して演算を実行する。アキュムレータ430は、ALU420による演算結果を記憶するためのレジスタである。アキュムレータ430に記憶されたデータは、暗号化処理部410からの指示に応じて記憶装置600に書き込まれる。なお、暗号化装置400は、記憶装置600のうち、一部の記憶領域を使用してAES暗号の演算を実行する。記憶装置600内に必要な記憶領域の内訳は以下のとおりである。使用する記憶領域全体のサイズ=49バイト入力となるメッセージm=16バイト入力となる鍵k=16バイト作業領域w=16バイトラウンド定数rc=1バイトなお、演算結果である暗号文はメッセージmに上書きされる。図21の暗号化装置400の使用方法は以下のようになる。記憶装置600に入力データメッセージm16バイトおよび鍵k16バイトを書き込む暗号化装置400を実行開始する暗号化装置400の実行終了を待つ演算結果は記憶装置600に書き込まれているので、演算結果を記憶装置600から読み出すここで、本実施形態によるAES暗号方式の暗号化処理の擬似コードについて説明する。最初に、簡略化した擬似コード簡易版擬似コードを記載する。mAESmk入力mメッセージ、k鍵round0rc0x01mAKmkAddRoundKeywhile1{kKSkKeyExpansionmSBmSubByteswSRmShiftRowsroundround1ifround10breakexitwhileloopmMCwMixColumnsmAKmkAddRoundKeyrcxtimercrcupdate}mAKwkAddRoundKey擬似コード内の各関数は、それぞれAES暗号で定められる関数と以下のように対応する。各AES暗号で定められる関数は各々FIPS197で定義される関数である。AK:AddRoundKeyKS:KeyExpansionMC:MixColumnsSB:SubBytesSR:ShiftRows次に、詳細なAES擬似コード詳細版擬似コードを記載する。詳細版擬似コードは、上記簡易版擬似コードの各関数AK、KS、SB、SR、MCなどを具体化したコ1入出力IFを介して暗号化するデータメッセージを読み出し、記憶装置600に書き込む。2鍵記憶装置700から鍵情報を読み出し、記憶装置600に書き込む。3暗号化装置400に演算を指示する。これにより、演算の処理結果である暗号文が記憶装置600に書き込まれる。図21は、第3の実施形態にかかる暗号化装置400の構成の一例を示すブロック図である。図21に示すように、暗号化装置400は、暗号化処理部410と、演算部としてのALUArithmeticLogicUnit420と、アキュムレータ430と、を備えている。暗号化処理部410は、図20で説明した電子機器10の制御回路からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。暗号化処理部410の詳細は後述する。ALU420は、暗号化処理部410により選択された機能を表す情報図21の機能選択に従って演算を実行する。ALU420は、必要に応じて、暗号化処理部410により指定されたアドレスのデータに対して演算を実行する。アキュムレータ430は、ALU420による演算結果を記憶するためのレジスタである。アキュムレータ430に記憶されたデータは、暗号化処理部410からの指示に応じて記憶装置600に書き込まれる。なお、暗号化装置400は、記憶装置600のうち、一部の記憶領域を使用してAES暗号の演算を実行する。記憶装置600内に必要な記憶領域の内訳は以下のとおりである。使用する記憶領域全体のサイズ=49バイト入力となるメッセージm=16バイト入力となる鍵k=16バイト作業領域w=16バイトラウンド定数rc=1バイトなお、演算結果である暗号文はメッセージmに上書きされる。図21の暗号化装置400の使用方法は以下のようになる。記憶装置600に入力データメッセージm16バイトおよび鍵k16バイトを書き込む暗号化装置400を実行開始する暗号化装置400の実行終了を待つ演算結果は記憶装置600に書き込まれているので、演算結果を記憶装置600から読み出すここで、本実施形態によるAES暗号方式の暗号化処理の擬似コードについて説明する。最初に、簡略化した擬似コード簡易版擬似コードを記載する。mAESmk入力mメッセージ、k鍵round0rc0x01mAKmkAddRoundKeywhile1{kKSkKeyExpansionmSBmSubByteswSRmShiftRowsroundround1ifround10breakexitwhileloopmMCwMixColumnsmAKmkAddRoundKeyrcxtimercrcupdate}mAKwkAddRoundKey擬似コード内の各関数は、それぞれAES暗号で定められる関数と以下のように対応する。各AES暗号で定められる関数は各々FIPS197で定義される関数である。AK:AddRoundKeyKS:KeyExpansionMC:MixColumnsSB:SubBytesSR:ShiftRows次に、詳細なAES擬似コード詳細版擬似コードを記載する。詳細版擬似コードは、上記簡易版擬似コードの各関数AK、KS、SB、SR、MCなどを具体化したコこのようにして、本実施形態では、5種類の命令であるsbox、xtime、xor、ldおよびstでAESを実現している。図23は、第3の実施形態にかかるALU420の構成の一例を示すブロック図である。図23に示すように、ALU420は、XTIME421と、SBOX422と、XOR423と、セレクタ424と、を備えている。XTIME421、SBOX422、および、XOR423は、それぞれ上述の3種類の演算処理sbox、xtime、および、xorを実行する回路である。セレクタ424は、記憶装置600から読み出したデータLD、XTIME421の演算結果、SBOX422の演算結果、および、XOR423の演算結果のいずれかを選択して出力する。このようにして、ALU420は、暗号化処理部410による機能選択の指定に従い、ld、xtime、sbox、および、xorの4つの演算処理のいずれかを実行する。次に、5種類の命令が実行されたときの暗号化装置400内の処理の流れについて図24から図27を用いて説明する。図24は、ld命令が実行されたときの暗号化装置400内の処理例を示す図である。ld命令では、暗号化処理部410からアドレスが指定出力され、記憶装置600の指定されたアドレスのデータが読み出され、ALU420を経由してアキュムレータ430に書き込まれる。図24のacc-weはアキュムレータ430への書き込みを指示する信号を表す。図24のreadは記憶装置600からのデータの読み出しを指示する信号を表す。図25は、st命令が実行されたときの暗号化装置400内の処理例を示す図である。st命令では、暗号化処理部410からアドレスが指定出力され、アキュムレータ430に記憶されているデータが、記憶装置600の指定されたアドレスに書き込まれる。アキュムレータ430に記憶されているデータは変更しないことを示すため、図24ではacc-we信号に否定を示す上線が付されている。writeは記憶装置600へのデータの書き込みを指示する信号を表す。図26は、xor命令が実行されたときの暗号化装置400内の処理例を示す図である。xor命令では、暗号化処理部410からアドレスが指定出力され、アキュムレータ430に記憶されているデータと、記憶装置600の指定されたアドレスのデータとの排他的論理和の演算結果が、アキュムレータ430に書き込まれる。図27は、sboxおよびxtime命令が実行されたときの暗号化装置400内の処理例を示す図である。sboxおよびxtimeでは用いる関数が異なるが、動作は同様であるため同じ図にまとめて記載している。sbox命令xtime命令では、アキュムレータ430に記憶されているデータに、SBOX関数XTIME関数を適用した結果がアキュムレータ430に書き戻される。図28は、第3の実施形態にかかる暗号化処理部410の構成の一例を示すブロック図である。図28に示すように、暗号化処理部410は、制御部411と、ラウンドカウンタ412と、インデックスレジスタ413と、アドレス生成部414と、を備えている。制御部411は、電子機器10の制御回路図示せずなどの外部装置からの制御信号に従い、各種制御信号を出力して、AES暗号化方式に応じて定められた手順に従って暗号化処理の演算を制御する。図28の点線は、制御部411から各部に制御信号を出力することを表している。この制御信号の詳細については後述する。制御部411には、例えば、AES暗号の演算をリセットする信号、および、演算の開始を指示する信号などの制御信号が入力される。制御部411は、処理状態を表すステータス信号ビジー、完了などを、例えば制御信号の入力元に出力する。ALU機能選択は、ALU420に対していずれの機能演算を実行するかを示す信号を表す。Acc書き込みは、アキュムレータ430にデータを書き込むか否かを指定するための信号を表す。メモリR/Wは、記憶装置600からデータを読み出すかR、記憶装置600にデータを書き込むかWを指定するための信号を表す。ラウンドカウンタ412は、AES暗号のラウンド数roundを数えるためのカウンタである。ラウンドカウンタ412は、例えばフリップフロップにより構成できる。インデックスレジスタ413は、アドレス生成部414がアドレスを生成するために用いるカウンタ値ixを記憶するレジスタである。本実施形態では、インデックスレジスタ413は、4ビットのカウンタ値を記憶する。アドレス生成部414は、制御部411が出力する2ビットの値ページと、インデックスレジスタ413の4ビットのカウンタ値ixとから、6ビットのアドレスを生成して出力する。ここで、本実施形態の暗号化装置400で使用する記憶装置600内の記憶領域のアドレス空間について説明する。図25は、第3の実施形態で用いるアドレス空間の一例を示す図である。図25では、メッセージm、鍵k、作業領域wおよびラウンド定数rcの順に連続するアドレスを用いる例が示されている。アドレスの並び順はこれに限られるものではない。例えば、16バイトのデータメッセージm、鍵kまたは16バイトの作業領域wの各バイトのアドレスが連続していれば、各データまたは作業領域のアドレスは連続していなくてもよい。図29は、第3の実施形態にかかるアドレス生成部414の構成の一例を示すブロック図である。図29に示すように、アドレス生成部414は、kp801と、sr802と、ofs1811以下、単にofs1というと、ofs2812以下、単にofs2というと、ofs3813以下、単にofs3というと、セレクタ821と、を備えている。kp801、sr802、ofs1、ofs2、および、ofs3は、それぞれインデックスレジスタから入力される4ビットのカウンタ値ixを変換する回路である。図30は、図29の各回路に相当する関数の入出力の一例を示す図である。例えばkpxは、カウンタ値ix図30の表の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ビットは不変となる関数である。セレクタ821は、制御部411からの指示図28の点線に従い、0、カウント値ix、kp801の出力、sr802の出力、ofs1の出力、ofs2の出力、および、ofs3の出力、のいずれかを選択して出力する。図29の右上に示すように、アドレス生成部414は、制御部411から入力される2ビットのページと、セレクタ821から出力される4ビットの値オフセットに相当とを結合したアドレスを出力する。このように、ページがアドレスの上位2ビットになり、例えば、インデックスレジスタを各関数で変形した結果がアドレスの下位4ビットになる。ページは、演算処理に用いられるデータの種類および演算処理に用いられる記憶装置600内の作業領域を特定するための特定情報として用いられる。例えば、ページは、メッセージm、鍵k、作業領域w、および、ラウンド定数rcの4つを特定するために4値をとる。このため、本実施形態ではページを2ビットで表している。次に、このように構成された第3の実施形態にかかる暗号化装置400による暗号化処理について図31を用いて説明する。図31は、第3の実施形態における暗号化処理の全体の流れを示すフローチャートである。図31は、上述のAESの簡易版擬似コードをフローチャートとして記載した図に相当する。まず、ラウンド数のカウンタroundおよびラウンド定数rcがそれぞれ0および1に初期化されるステップS8001。次に、AddRoundKeyが実行され、メッセージmが更新されるステップS8002。次に、KeyExpansionステップS8003、SubBytesステップS8004、ShiftRowsステップS8005が順次実行され、ラウンド数に1加算されるステップS8006。ラウンド数が10に達しない場合ステップS8007:No、さらにMixColumnsステップS8008、AddRoundKeyステップS8009、およびxtimeステップS8010が実行される。その後、ステップS8003に戻り処理が繰り返される。ラウンド数が10に達した場合ステップS8007:Yes、AddRoundKeyが実行されステップS8011、暗号化処理が終了する。SRShiftRowsは16バイトの並び替えだが、上書きすると元の値が消えるので、別な領域である作業領域wにコピーしながら並び替えているステップS8005。この処理ステップS8005をC言語で記載すると次のようなコードになる。fori0i16i{wimsri}上記コード内の変数srは、intsr16{0510154914381327121611}であるため、上記コードは、w0m0w1m5w2m10w3m15w4m4w5m9w6m14w7m3w8m8w9m13w10m2w11m7w12m12w13m1w14m6w15m11という代入をしているのと同じことになる。1変数だけで逐次的に実行しようとすると、これから先に必要な値が上書きされて消されてしまうので、別な変数にコピーしながら順番を入れ替えている。MCMixColumnsも、値が上書される問題が生じるので、別の変数にコピーしながら変換しているステップS8008。AES暗号の規格FIPS-197では、m0xtimew0xtimew1w1w2w3のように計算することが定められている。一方、xtimeaxtimebxtimeabであるため、次のようにxtimeをまとめて計算することもできる。m0xtimew0w1w1w2w3MC全体では以下のような計算をすることになる。m0xtimew0w1w1w2w3m1xtimew1w2w2w3w0m2xtimew2w3w3w0w1m3xtimew3w0w0w1w2m4xtimew4w5w5w6w7m5xtimew5w6w6w7w4m6xtimew6w7w7w4w5m7xtimew7w4w4w5w6m8xtimew8w9w9w10w11m9xtimew9w10w10w11w8m10xtimew10w11w11w8w9m11xtimew11w8w8w9w10m12xtimew12w13w13w14w15m13xtimew13w14w14w15w12m14xtimew14w15w15w12w13m15xtimew15w12w12w13w14添え字の並びを考慮し、本実施形態では以下のようにxtimeを計算する。mixtimewiwofs1iwofs1iwofs2iwofs3i図32は、詳細版擬似コードを状態遷移表として書き直した図である。図33は、状態遷移表の各項目の読み方を表す図である。codeは、5種類の命令のうち各状態で実行される機能命令のコードである。readは、記憶装置600からデータを読み出すときに1が設定され、読み出さない場合は0が設定される。writeは、記憶装置600にデータを書き込むときに1が設定され、書き込まない場合は0が設定される。funcは、LD、XTIME、SBOX、XOR、および、任意ALU420による演算は実行しないのいずれかが設定される。acc-weは、アキュムレータ430にデータを書き込むときに1が設定され、書き込まない場合は0が設定される。例えば、state=S01では、ldmiというコードを実行する。その際に、read信号を1に設定し、write信号を0に設定し、funcをLDに設定し、acc_weを1に設定する。またアドレス生成部414の出力はページがPMでoffsetがixである。ix欄とround欄は空白なので何も実行されない。制御欄は↓なので次の状態であるS02に遷移する。S03ではix欄がix1、制御はifix15S01となっている。これはixの値を1増やしてix1に更新することと、ixの更新前の値が15でない場合はS01へ遷移することを意味している。またixが15である場合は次の状態S04へ遷移する。図32に示されるように、ixは、各演算処理の対象となるデータを変更するタイミングで更新される。第3の実施形態の変形例図34は、第3の実施形態の変形例にかかるアドレス生成部414-2の構成の一例を示すブロック図である。図34に示すように、アドレス生成部414-2は、kp801と、sr802と、ofs810と、セレクタ821-2と、を備えている。本変形例では、オフセットを出力する3つの回路であるofs1、ofs2、および、ofs3の代わりに、1つのofs810を備えている。ofs810は、カウンタ値ixを3つの関数ofsx,1、ofsx,2、ofsx,3のいずれかを用いて変換する回路である。3つの関数ofsx,1、ofsx,2、ofsx,3のいずれを用いるかを指定する信号図34の1~3は、例えば制御部411から指定する。図35は、図34の各回路に相当する関数の入出力の一例を示す図である。セレクタ821-2は、制御部411からの指示に従い、0、カウント値ix、kp801の出力、sr802の出力、ofs810の出力、のいずれかを選択して出力する。このような構成でも、図29と同様の機能を実現できる。このように、第3の実施形態にかかる演算装置暗号化装置では、装置外部の記憶装置を利用し、演算で用いるデータを当該記憶装置に記憶するように制御する。これにより、AES演算回路内に記憶装置を備える必要がなくなり、さらなる小型化が可能となる。また、本実施形態では、ALU内には暗号化で用いる演算処理を実行する最小限の回路XTIME、SBOX、XORのみを備えるため、この点でも装置の小型化が可能となっている。また、本実施形態では、暗号化で用いる各演算処理を所定の回数単位で実行している。例えばインデックスレジスタのカウント値が15に達するごとに、すなわち、16回単位で各演算を実行している。このため、回数が不一致となる場合に必要となる制御回路が不要になり、さらに小型化が実現できる。第4の実施形態第4の実施形態では、AES暗号方式の復号装置に演算装置を適用した例を説明する。図36は、第4の実施形態にかかる復号装置400-2の構成の一例を示すブロック図である。図36に示すように、復号装置400-2は、復号処理部410-2と、演算部としてのALUArithmeticLogicUnit420-2と、アキュムレータ430と、を備えている。復号処理部410-2は、AES暗号の復号処理の演算を制御し、演算の状態を表すステータス信号を出力する。アキュムレータ430は、ALU420による演算結果を記憶するためのレジスタである。ALU420-2は、復号処理部410-2により選択された機能を表す情報に従って演算を実行する。ALU420-2は、必要に応じて、復号処理部410-2により指定されたアドレスのデータに対して演算を実行する。本実施形態によるAES暗号方式の復号処理の擬似コードについて説明する。以下に、復号処理を簡略化した擬似コード簡易版擬似コードを記載する。minvAESmk入力m暗号文k復号鍵round0rc0x36mAKmkAddRoundKeywhile1{kiKSkinvKeyExpansionmiSBminvSubByteswiSRminvShiftRowsroundround1ifround10breakexitwhileloopwAKwkAddRoundKeymiMCwinvMixColumnsrcixtimercrcupdate}mAKwkAddRoundKey暗号化処理で用いる関数の先頭にiが付加された関数は、暗号化処理で用いる関数の逆関数であることを意味する。例えば、iSBはSBの逆関数である。iKSはsboxとxorにより作成できる。iSBはsboxの逆関数isboxが必要である。iMCはxtimeにより作成できる。ixtimeはxtimeにより作成できる。従って、ALU420-2は、以下の5つ演算を実行できる回路を備えていればよい。1LD2XTIME3SBOX4ISBOX5XOR図37は、このように構成される第4の実施形態にかかるALU420-2の構成の一例を示すブロック図である。図37に示すように、ALU420-2は、XTIME421と、SBOX422と、XOR423と、セレクタ424-2と、ISBOX425と、を備えている。ISBOX425は、SBOX422の逆関数に相当する演算を実行する回路である。復号処理部410-2は、上記擬似コードの復号処理を実現するようにALU420-2の演算を制御する。復号処理部410-2は、暗号化処理部410と同様の制御部411、ラウンドカウンタ412、インデックスレジスタ413、および、アドレス生成部414を備える。復号処理部410-2は、暗号化処理部410が暗号化処理を実行するのと同様の手法で、AES暗号の復号処理を実行すればよい。なお、図37に示すALU420-2の構成で暗号化処理を行うことも可能である。この場合、図23で説明したような動作を行い、ISBOXの機能選択の指定はなされない。次に、このように構成された第4の実施形態にかかる復号装置400-2による復号処理について図38を用いて説明する。図38は、第4の実施形態における復号処理の全体の流れを示すフローチャートである。まず、ラウンド数のカウンタroundおよびラウンド定数rcがそれぞれ0および0x36に初期化されるステップS9001。次に、逆AddRoundKeyiAKが実行され、メッセージmが更新されるステップS9002。次に、逆KeyExpansioniKSステップS9003、逆SubBytesiSBステップS9004、逆ShiftRowsiSRステップS9005が順次実行され、ラウンド数に1加算されるステップS9006。ラウンド数が10に達しない場合ステップS9007:No、さらにAddRoundKeyステップS9008、逆MixColumnsiMCステップS9009、および逆xtimeixtimeステップS9010が実行される。その後、ステップS203に戻り処理が繰り返される。ラウンド数が10に達した場合ステップS9007:Yes、AddRoundKeyが実行されステップS9011、復号処理が終了する。以上説明したとおり、第1および第4の実施形態によれば、演算処理に用いるデータを記憶する記憶装置を演算装置内に備える必要がなくなり装置の小型化が実現できる。例えば、メモリカード内にAES演算回路を備える場合に、さらなるAES演算回路の小型化が実現できる。また、上記実施形態は、以下の態様を含む。1データの種類ごとにN個の前記データを連続するアドレスに記憶する記憶装置と接続され、予め定められた暗号方式の演算を実行する演算装置であって、前記暗号方式で用いられる複数の演算処理を実行する演算部と、前記演算処理で用いられる種類のN個の前記データのうち先頭のデータのアドレスの上位ビットと、指定に応じて更新されるカウンタ値に応じた値であって前記先頭のデータのアドレスを基準とするオフセットと、に基づいて、前記演算処理で用いられるデータを記憶する前記記憶装置のアドレスを生成するアドレス生成部と、前記暗号方式で定められる順序で前記演算処理を実行するように前記演算部を制御するとともに、前記演算処理で用いられるデータの種類を変更するタイミング、および、前記演算処理で用いられるデータを変更するタイミングで前記カウンタ値の更新を指定する制御部と、を備える演算装置。21の態様に係る演算装置において、前記暗号方式は、AESAdvancedEncryptionStandard暗号方式である。32の態様に係る演算装置において、複数の前記演算処理は、前記AES暗号方式で定められるsbox、xtime、及びxorと、前記記憶装置から前記データを読み出すロード処理である。42の態様に係る演算装置において、複数の前記演算処理は、前記AES暗号方式で定められるsbox、isbox、xtime、及びxorと、前記記憶装置から前記データを読み出すロード処理である。第5の実施形態次に、第5の実施形態に係る半導体装置の構成について、図36を用いて説明する。図36は、本実施形態に係るメモリシステムのブロック図である。第5の実施形態では、上述した各実施形態を用いた半導体装置をメモリカードで適用する例について説明する。図36に示すように、メモリシステムであるメモリカード300は、コネクタ13を介してホスト機器200に接続される。ホスト機器200は、コネクタ13を介して接続されるメモリカード300に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード300は、ホスト機器200に接続された時に電源供給を受けて動作し、ホスト機器200からのアクセスに応じた処理を行う。メモリカード300は、例えばホスト機器200に装着されて使用され、ホスト機器200の外部記憶装置として用いられるSDメモリカードである。ホスト機器200としては、画像データまたは音楽データなどの各種データを処理するパーソナルコンピュータやデジタルカメラ等を含む情報処理装置が挙げられる。なお、本実施形態では、このメモリカード300が適用されるホスト機器200と含めてメモリシステムとして構成されていてもよいし、カードの形態としてではなく、フラッシュメモリとこのフラッシュメモリを制御するコントローラがホスト機器200に組み込まれてメモリシステムを構成してもよい。なお、ホスト機器200としては、上述で挙げたものの他に、PDA、電子ブック、デジタルビデオ、携帯電話などの電子機器類も考えられる。メモリカード300は、ホスト機器200とコネクタ13を介して情報の授受を行う。メモリカード300は、NAND型フラッシュメモリチップ単にNAND型フラッシュメモリ、フラッシュメモリ、またはNANDチップ等とも呼ぶであるメモリ部不揮発性の半導体記憶部11、メモリ部11を制御するメモリコントローラカードコントローラ12、および複数の信号ピンピン1乃至ピン9であるコネクタ13を備えている。コネクタ13は、メモリコントローラ12と電気的に接続されている。コネクタ13におけるピン1乃至ピン9に対する信号の割り当ては、例えば図37に示すようになっている。図37は、ピン1乃至ピン9と、それらに割り当てられた信号とを示す表である。なお、図37において、SDモード1ビット、4ビットおよびSPIモードとは、SDメモリカードの規格で規定されているデータ転送の動作モードである。なお、メモリカード300の転送モードは、転送クロック周波数等により、最大25MHzまでサポートしているノーマルスピードモードNSMとも呼ぶと、最大50MHzまでサポートしているハイスピードモードHSMとも呼ぶに加えて、最大104MHzまでサポートしているウルトラハイスピードモードUHSMとも呼ぶ等もある。データDAT0、DAT1、DAT2、DAT3はそれぞれ、ピン7、ピン8、ピン9、ピン1に割り当てられている。また、ピン1は、カード検出信号CDにも割り当てられている。コマンドCMDと、このコマンドCMDに対するメモリカード300の応答信号であるレスポンスRESは、ピン2に割り当てられている。クロック信号CLKは、ピン5に割り当てられている。電源電圧VDDはピン4に、接地電圧VSS1はピン3に、接地電圧VSS2はピン6に割り当てられている。また、メモリカード300は、ホスト機器200に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器200に設けられたホストコントローラ図示せずは、これらピン1乃至ピン9を介してメモリカード300内のメモリコントローラ12と各種信号およびデータを通信する。例えば、メモリカード300にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、ピン2を介してメモリコントローラ12にシリアルな信号として転送する。このとき、メモリコントローラ12は、ピン5に供給されているクロック信号に応答して、ピン2に与えられる書き込みコマンドを取り込む。4ビットバス幅単位でデータ転送を行うSDモードSD4ビットモードでは、データ用の4つのピン1、ピン7、ピン8、ピン9がすべてデータ転送に使用される。一方、1ビットバス幅単位でデータ転送を行うSDモードSD1ビットモードでは、ピン7のみがデータ転送に使用され、データ用のピン8、ピン9は使用されない。また、ピン1は、例えばメモリカード300からホスト機器200への非同期割り込み等のために使用される規定となっている。SPIモードは、1ビットバス幅の転送モードであり、ピン7がメモリカード300からホスト機器200へのデータ信号線DATAOUTに用いられる。ピン2は、ホスト機器200からメモリカード300へのデータ信号線DATAINに用いられる。ピン8、ピン9は、使用されない。また、SPIモードでは、ピン1がホスト機器200からメモリカード300へのチップセレクト信号CSの送信に用いられる規定となっている。なお、SDモードを使用するか、SPIモードを使用するかは、メモリカード300の初期化時に決定される。また、SDモードの1ビットモードと4ビットモードとは、ホストからのコマンドSETBUSWIDTHによって選択される。ここで、前述したように、書き込みコマンドは、ピン2のみを利用してメモリコントローラ12にシリアルに入力される。コマンドの入力に割り当てられているピン2は、図37に示すように、ピン1と接地電位Vss用のピン3との間に配置されている。つまり、コネクタ13は、ホスト機器200内のホストコントローラとメモリカード300とが通信するのに使用される。これに対し、メモリ部11とメモリコントローラ12との間の通信は、NAND型フラッシュメモリ用のメモリインタフェース部以下、単にNANDバスまたはNANDインタフェースと呼ぶことがある21によって行われる。したがって、ここでは図示しないが、メモリ部11とメモリコントローラ12とは例えば8ビットの入出力I/O線により接続されている。また、メモリインタフェース部21では、メモリ部11に対するコマンドとデータが同じI/O線を共用して通信されている。このように、ホスト機器200内のホストコントローラとメモリカード300とが通信するインタフェースコネクタ13と、メモリ部11とメモリコントローラ12とが通信するインタフェースNANDバス21とは異なる。次に、図36に示すメモリカード300の備えるメモリコントローラの内部構成について図38を用いて説明する。図38はメモリカード300のブロック図である。メモリ部11は、不揮発性の半導体メモリであり、複数のNANDチップ上述した各実施形態に対応するNANDチップにより構成されている。ホスト機器200から送信されたデータなどは、このメモリ部11に記憶される。また、制御プログラムであるファームウェアシステム情報等も記憶されていても良い。また、コネクタ13は、バス14を介してメモリコントローラ12に接続されている。バス14は、CLKライン、CMD/RESライン、DAT0ライン、DAT1ライン、DAT2ライン、CD/DAT3ライン、VDDライン、VSS1ライン、およびVSS2ラインを含む。メモリコントローラ12は、例えば8ビットバス幅のバスを介してメモリ部11と接続されている。メモリコントローラ12は、メモリ部11内部の物理状態例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるかを管理する。メモリコントローラ12は、外部インタフェース部15と、コマンド制御部16と、データ制御部17と、MPUMicroProcessingUnit18と、ROMReadOnlyMemory19と、RAMRandomAccessMemory20と、メモリインタフェース部21と、タイマー計測部22とを備えている。外部インタフェース部15は、メモリコントローラ12とホスト機器200との間のインタフェース処理を行う。具体的には、外部インタフェース部15は、コネクタ13を介してホスト機器200と接続されており、MPU制御部18の制御のもと、所定のプロトコルに従ってコマンドあるいは各種データ等の送受信を行う機能ブロックである。コマンド制御部16は、ホスト機器200から送信されるコマンドCMDを受け取り、このコマンドCMDを解釈する。また、コマンド制御部16は、コマンドCMDに対する応答信号であるレスポンスRESを生成し、このレスポンスRESをホスト機器200に送信する。データ制御部17は、ホスト機器200から送信されるコマンドCMDに基づいて、データの送受信を行う。また、データ制御部17は、メモリカード300の動作状態などを示すステータスデータSTATUSを生成し、このステータスデータをホスト機器200に送信する。MPU18は、メモリカード300全体の動作を制御するものである。MPU18は、例えばメモリカード300が電源供給を受けたときに、ROM19やメモリ部11に格納されているファームウェアシステム情報をRAM20に読み出して所定の処理を実行することにより、各種のテーブルをRAM20に作成する。また、MPU18は、ホスト機器200から書き込みコマンド、読み出しコマンド、あるいは消去コマンド等を受け取り、メモリ部11に対して所定の処理を実行したり、バッファを通じたデータ転送処理を制御したりする。より具体的には、例えばデータの書き込みの際には、書き込みコマンドを発行する。書き込みコマンドは、例えばNANDインタフェースで規定されている80Hや10H等である。また、MPU18は、タイマー22の制御を行うタイマー制御部計測制御部18aを有している。このタイマー制御部18aは、タイマー22に計測時間を設定したり、タイマー22からの時間計測完了の信号によってMPU18やメモリインタフェース部21の制御を行ったりすることができる。具体的には、タイマー制御部18aは、メモリインタフェース部21の制御を行い、MPU18の発行した書き込みコマンドの転送やデータの入力データインの実行を制御する遅らせる。なお、タイマー制御部18aは、計測完了の信号をMPU18に供給しても良い。また、このタイマー制御部18aは、MPU18の外に設けられていても良い。ROM19は、MPU18により実行されるファームウェアなどを格納するメモリである。RAM20は、MPU18の作業エリアとして使用され、ファームウェアや各種のテーブル表を記憶するメモリである。メモリインタフェース部21は、メモリコントローラ12とメモリ部11との間のインタフェース処理を行う機能ブロックである。また、メモリインタフェース部21は、例えばタイマー制御部18aからの時間計測完了の信号等を受けて、メモリ部11へのMPU18の発行した書き込みコマンドの転送やデータの入力データインを行う。なお、図38ではMPU18とメモリインタフェース部21とを別々の回路ブロックとして図示しているが、例えばMPU18における書き込みコマンドを発行する機能がメモリインタフェース部21に含まれていても良い。タイマー22は、1CLKクロックの立ち上がりから立下りまでを最小単位として時間の計測カウントを行う。また、タイマー22は、タイマー制御部18aに、時間の計測が完了すると、その旨を通知する。また、メモリコントローラ12には、図示しないバッファが設けられており、ホスト機器200から送られてくるデータをメモリ部11へ書き込む際に、一定量のデータ例えば、1ページ分を一時的に記憶したり、メモリ部11から読み出されるデータをホスト機器200へ送り出す際に、一定量のデータを一時的に記憶したりすることができる。次に、図39を用いて、メモリ部11の構成について概略的に説明する。図39は、メモリ部11のブロック図である。図示するように、メモリ部11は、複数例えばチップ0~チップn-1のn個のNANDチップ上述した各実施形態に対応するNANDチップ11aを有している。上述する実施形態によれば、第~第の実施形態に係るNANDチップは、メモリカード等にも搭載することが可能であることがわかる。尚、上述した各実施形態は、それぞれ組み合わせて実施することが可能である。特に、第1~第4の実施形態を適宜組み合わせて用いると、AES暗号化演算回路の面積を更に抑制することができる。例えば、NANDチップ100の面積に対して、AES暗号化演算回路の占める割合は数程度で済ませることが可能となる。また、上述した各実施形態では、AES暗号回路122の変わりに、各種暗号装置、ECC、セキュリティシステムなどの演算装置を搭載しても良い。また、上述した第5の実施形態では、SDカードを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した各実施形態と同様の作用効果を奏することができる。また、メモリセルアレイ130はNAND型フラッシュメモリに限らず、その他の半導体メモリであっても良い。以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。"