関数と、前記関数を呼び出すコマンドと、を含むプログラムを記憶領域に格納した携帯用セキュリティデバイスにおいて、前記コマンド毎に、前記プログラム内に格納されている関数と、当該関数が前記コマンドから使用可能か否かを示した使用可能フラグと、を対応付けて記憶する使用可能フラグ記憶部と、外部からの命令に従って、前記コマンドから関数が呼び出された場合に、当該関数と対応付けられた前記使用可能フラグにより、呼び出し先の前記コマンドが当該関数について使用可能か否かを判断する使用可能判断部と、を備えることを特徴とする携帯用セキュリティデバイス。前記使用可能判断部は、前記コマンドから呼び出される前記関数に含まれていること、を特徴とする請求項1に記載の携帯用セキュリティデバイス。しかしながら、上記の二重化させる手法では、データ又は条件分岐命令毎に二重化を行うことが必要となり、内部プログラムのコードサイズが増大するという問題がある。さらに、特許文献1に記載されている技術は、暗号鍵を解読する攻撃を防止する技術であるため、条件分岐や関数の呼出等に適用させるのが困難であり、セキュリティを維持するためには十分でないという問題がある。本発明は、上記に鑑みてなされたものであって、プログラムのコードサイズの増大を抑止すると共にセキュリティを向上させることができる携帯用セキュリティデバイスを提供することを目的とする。上述した課題を解決し、目的を達成するために、本発明は、関数と、前記関数を呼び出すコマンドと、を含むプログラムを記憶領域に格納した携帯用セキュリティデバイスにおいて、前記コマンド毎に、前記プログラム内に格納されている関数と、当該関数が前記コマンドから使用可能か否かを示した使用可能フラグと、を対応付けて記憶する使用可能フラグ記憶部と、外部からの命令に従って、前記コマンドから関数が呼び出された場合に、当該関数と対応付けられた前記使用可能フラグにより、呼び出し先の前記コマンドが当該関数について使用可能か否かを判断する使用可能判断部と、を備えることを特徴とする。本発明によれば、携帯型セキュリティデバイスでは、使用可能フラグを用いて各関数を呼出可能か否か判断することで、外部から命令を受け付けた場合に、当該命令に従って適切に関数が呼び出しているか否かを判断できる。すなわち、条件分岐処理の二重化等によるプログラムのコードサイズの増大を抑止しながら、セキュリティを向上させることができる。本発明によれば、携帯用セキュリティデバイスにおいてプログラムのコードサイズの増大を抑止しながらセキュリティを向上させることができるという効果を奏する。以下に添付図面を参照して、この発明にかかる携帯用セキュリティデバイスの最良な実施の形態を詳細に説明する。なお、本実施の形態では、携帯用セキュリティデバイスとしてICカードの場合について説明するが、携帯用セキュリティデバイスをICカードに制限するものではなく、様々なデバイスに対して適用することができる。第1の実施の形態図1は、第1の実施の形態にかかるICカード100のハードウェア構成を示した図である。図1に示すように、ICカード100は、通信部11と、CPU12と、RAMRandomAccessMemory13と、ROMReadOnlyMemory14と、EEPROMElectronicallyErasableandProgrammableReadOnlyMemory15とを備えている。通信部11は、ICカード100とICカードリーダライタ160との間の通信を制御する。ROM14は、読み込みのみ可能な記憶媒体であり、プログラム及びデータの格納領域として用いられる。EEPROM15は、書込み消去ができる不揮発性メモリであり、データの格納領域として用いられる。EEPROM15に格納するデータは、任意のデータで良く、例えば暗証番号とする。CPU12は、ROM14に格納されたプログラムを実行して、当該プログラムの機能に基づいて様々な処理を実行する。RAM13は、CPU12の作業領域として用いられる。また、RAM13は、書き換えが必要なデータの格納領域としても用いられる。図2は、第1の実施の形態にかかるICカードの機能的構成を示すブロック図である。図2に示すように、ICカード100は、呼出確認使用可フラグ記憶部101と、呼出フラグ記憶部102と、プログラム部103とを備える。そして、ICカード100は、利用する際にICカードリーダライタ160とアクセスする必要がある。プログラム部103に示した各構成は、図1に示すROM14に格納されたプログラムを、CPU12が実行することで実現される。本実施の形態にかかる呼出確認使用可フラグ記憶部101は、図1に示すROM14に格納する。なお、本実施の形態とは異なるが、呼出確認使用可フラグ記憶部101に格納されるデータに更新等が行われる場合、呼出確認使用可フラグ記憶部101をEEPROM15に格納しても良い。また、本実施の形態にかかる呼出フラグ記憶部102は、図1に示すEEPROM15に格納する。ICカードリーダライタ160は、ICカード100に対してコマンドを送信すると共に、当該ICカード100から受信したレスポンスによる処理結果を取得する。本実施の形態では、ICカード100は、ICカードリーダライタ160と物理的な接触を前提とする接触型ICカードとする。なお、本実施の形態は、ICカードを接触型ICカードに制限するものではなく、ICカードが無線周波の交信機構を備え、物理的な接触を必要とせずにICカードリーダライタとの間でデータを送受信する非接触型ICカードでも良い。また、非接触型ICカードを適用した場合、非接触型ICカードとアクセス可能なICカードリーダライタを使用する必要がある。図3は、プログラム部103にレーザを照射させることで、プログラム部103に格納されているプログラムによる処理に誤動作させる攻撃の概念を示した説明図である。図3に示すように、ICカード100のプログラムを実行する領域において、命令フェッチ、定数演算、条件分岐True、条件分岐、入力演算、表示の順で処理を行う回路構成を有しているものとする。そして、図3で示した例において、条件分岐Trueで条件に一致した場合、条件分岐False以降の処理を行わず、条件分岐Trueで指示される他の命令を実行するものとする。これに対し、プログラム部103の条件分岐Trueの命令を実行した後にジャンプ命令を実行することがあるがジャンプ命令の中の実行アドレスを不正な値に変更するために該当する部分の回路に対して、悪意のある第三者がレーザ照射を行うことで、本来のプログラム処理では他の命令を行うはずであったにも係わらず、当該条件分岐Trueを誤動作によりスキップさせ、条件分岐False以降の処理を実行させることが可能となる。このように、条件分岐をスキップさせることで、例えば、ICカード100がコマンド実行時に、当該コマンドで実行させることが必要な関数を呼び出すことなく、全ての処理が終了する等が考えられる。他に不正な処理が誤動作を生じさせる例としては、ICカード100のプログラムを実行する領域にレーザ照射を行うことで、コマンド実行時に、プログラム処理が本来は取得不可能な関数の呼出先のアドレスを取得して、不正に関数を呼び出すこと等も考えられる。本実施の形態にかかるICカード100では、このような誤動作による不正利用を以下のような構成により防止している。図2に戻り、呼出確認使用可フラグ記憶部101は、呼出確認使用可フラグ管理テーブル151を保持するROM14等の記憶領域である。図4は、呼出確認使用可フラグ管理テーブル151の構造の例を示した図である。図4に示すように、呼出確認使用可フラグ管理テーブル151では、コマンド毎に、フラグ種別と、コマンドから呼び出される関数と、が対応付けられている。また、本実施の形態のICカード100において、外部からの命令に従って実行されるコマンドとしては、読出コマンドと、更新コマンドと、照合コマンドと、認証コマンドと、取引コマンドとを例にあげて説明する。また、本実施の形態のICカード100で、上述したコマンドから呼び出される関数は、メモリ読出関数と、メモリ更新関数と、照合関数と、認証関数と、署名関数とする。なお、本実施の形態は、外部からの命令に従ってICカード100から実行されるコマンドを上述したコマンドに制限するものではなく、必要に応じてコマンドの追加削除等を行ってもよい。なお、本実施の形態は、ICカード100で呼び出される関数を上述した関数に制限するものではなく、必要に応じて関数の追加削除等を行ってもよい。図4に示すように、呼出確認使用可フラグ管理テーブル151におけるフラグ種別は、使用可と、呼出確認との二種類である。フラグ種別が使用可である、使用可レコードにおける各関数のフィールドは、当該関数を呼び出して良いか否かを示すフラグ以下、使用可フラグとするを保持する。使用可フラグに○が設定された関数は、当該レコードで示されるコマンドから使用でき、当該関数を呼び出して良いことを示している。フラグ種別が呼出確認である、呼出確認レコードにおける各関数のフィールドは、実行されたコマンドから、当該関数が呼び出されたことの確認を行う必要があるか否か示すフラグ以下、呼出確認フラグとするを保持する。呼出確認フラグに○が設定された関数は、実行されたコマンドから呼び出されたか否かの確認が必要であることを示している。なお、本実施の形態では、使用可レコードと呼出確認レコードとを一つのテーブルに格納することとした。しかしながら、本実施の形態は、このようなテーブル構造に制限するものではなく、使用可レコードを格納するテーブルと、呼出確認レコードを格納するテーブルと、を別々に設けてもよい。呼出フラグ記憶部102は、呼出フラグ管理テーブル152を保持するEEPROM15等の記憶領域にある。図5は、呼出フラグ管理テーブル152の構造の例を示した図である。図5に示すように、呼出フラグ管理テーブル152は、関数毎に呼び出されたか否かを示すフラグ以下、呼出フラグとするを保持している。そして、呼出フラグの値が‘0’の場合、関数が呼び出されていないことを示している。また、呼出フラグの値が‘1’の場合、関数が呼び出されたことを示している。この呼出フラグは、後述する初期化部112で全ての関数の呼出フラグに対して‘0’を設定する。また、呼出フラグは、呼び出された関数により‘1’に更新される。図2に戻り、プログラム部103は、メイン処理部111と、照合コマンド115と、認証コマンド116と、読出コマンド117と、更新コマンド118と、取引コマンド119と、前処理関数131と、認証関数132と、メモリ更新関数135と、メモリ読出関数138と、照合関数141と、署名関数144とを備えている。メイン処理部111は、初期化部112、判断部113と、呼出フラグ判断部114とを備え、ICカードリーダライタ160から、外部からの命令を受信し、受信した命令に従ってコマンドを実行する処理を行う。初期化部112は、ICカードリーダライタ160から送信されたコマンドと対応付けられた使用可フラグ及び呼出確認フラグを、図4に示す呼出確認使用可フラグ管理テーブル151から取得する。また、初期化部112は、各種コマンドによる処理を実行する前に、図5に示す呼出フラグ管理テーブル152の初期化を行う。本実施の形態では、初期化部112は、呼出フラグ管理テーブル152に格納されている全ての呼出フラグに対して、呼び出されていないことを示す値‘0’を設定する。例えば、ICカードリーダライタ160が認証コマンドの実行を要求した場合、初期化部112は、図4に示す、認証コマンドのレコードに格納されている使用可フラグ及び呼出確認フラグを全て取得する。また取得した使用可フラグ及び呼出確認フラグは、メイン処理部111により、実行する各種コマンドに引数として受け渡される。これにより、後述する各種コマンド内で、適切に関数を呼び出すことができたのか確認することができる。判断部113は、メイン処理部111から実行されたコマンドが終了した後、実行されたコマンドで、呼び出した関数の確認が必要か否かを判断する。例えば、照合コマンド115が実行された場合、判断部113は、初期化部112が取得した呼出確認フラグを参照して、メモリ更新関数135と、照合関数141と、が呼び出されたのか否かを確認する必要があると判断する。これは、図4に示すように、照合コマンドのレコードでメモリ更新関数と照合関数との呼出確認フラグが‘○’になっていることから判断できる。呼出フラグ判断部114は、呼出の確認を行う必要があると判断された関数が、実行されたコマンドから呼び出されたか否かを判断する。例えば、判断部113がメモリ更新関数135と照合関数141とを呼び出す必要があったものと判断した場合、呼出フラグ判断部114は、呼出フラグ管理テーブル152のメモリ更新関数と照合関数との呼出フラグが‘1’に更新されているか否かを判断する。メモリ更新関数及び照合関数の呼出フラグが‘1’に更新されていた場合、呼出フラグ判断部114は、各関数がコマンドから適切に呼び出されたものと判断する。また、呼出フラグ判断部114は、メモリ更新関数及び照合関数の呼出フラグのうちいずれか一つ以上が‘0’であると判断した場合、関数が呼び出されず、異常事態が発生したものと判断する。そして、呼出フラグ判断部114は異常事態が発生したものと判断した場合、メイン処理部111は全ての処理を終了し、異常が発生した旨をICカードリーダライタ160に通知する。照合コマンド115は、ICカードリーダライタ160を通じて外部より利用者が入力した暗証番号とICカード100に格納された暗証番号との照合を行う。なお、照合コマンド115が行う照合は、暗証番号に制限するものではなく、指紋などの生体認証用のデータを使用して照合を行ってもよい。また、呼出確認使用可フラグ管理テーブル151の使用可フラグが示すように、照合コマンド115は後述するメモリ更新関数135と、照合関数141とを使用する。本実施の形態では、照合コマンド115が、メモリ更新関数135及び照合関数141以外の関数が呼び出した場合、異常な事態が発生しているとみなす。なお、後述するコマンドも同様に、呼出確認使用可フラグ管理テーブル151の使用可フラグを参照することで、使用可能な関数を確認できる。認証コマンド116は、利用者の認証処理を行う。また、認証コマンド116が行う認証は、どのような認証を行ってもよい。例えば、認証コマンド116は、ICカード100内に格納された電子証明書を使用して、利用者の認証を行う等が考えられる。読出コマンド117は、ICカード100内に格納されたデータを読み出す処理を行う。なお、読み出すデータについては、ICカード100のメモリ領域に格納されたデータであれば、特に限定するものではなく、説明を省略する。更新コマンド118は、ICカード100内に格納されているデータの更新処理を行う。取引コマンド119は、電子決済などの取引処理を行う。上述したように、各コマンドは、外部からの命令に従って、メイン処理部111から実行されることで様々な処理を行うことができる。また、各コマンドが使用可能な関数を、呼出確認使用可フラグ管理テーブル151で保持しているため、各コマンドから不正に関数を呼び出した場合、当該不正な呼び出しを検出できる。次にコマンドから呼び出される関数について説明する。また、以下に示す関数は、呼出先のコマンドがメイン処理部111から引数として渡された使用可フラグ及び呼出確認フラグを、再び引数として受け取る。図2において、前処理関数131は、上述したコマンドが実行された際に、前処理を行う関数とする。前処理関数131が行う前処理とは、任意の処理で良く、例えばコマンドで用いられるパラメータの初期化処理等が該当する。認証関数132は、使用可能判断部133と、更新部134とを備え、呼び出したコマンドの要求に応じて、認証処理を行うものである。なお、具体的に行われる認証処理については制限を設けるものではなく、あらゆる認証処理を用いても良い。使用可能判断部133は、関数の呼出先のコマンドが、当該関数を使用できるか否か判断するものである。本実施の形態にかかる使用可能判断部133は、引数として渡された認証関数132の使用可フラグが‘○’か否か判断する。そして、使用可能判断部133は、当該使用フラグが‘○’と判断した場合、当該コマンドから認証関数132を使用可能と判断する。使用可能と判断された場合に、認証関数132は認証処理を行う。また、使用可能判断部133は使用可フラグが‘○’でないと判断した場合、呼出先のコマンドでは認証関数132を使用不可能と判断する。この場合、認証関数132は、認証処理を行わず、異常事態が発生したことを呼び出し元のコマンドに対して、レスポンスとして応答する。更新部134は、外部からの命令に従って実行された任意のコマンドから、認証関数132が呼び出された場合に、図5に示す呼出フラグ管理テーブル152における、認証関数の呼出フラグを、呼び出されたことを示す値‘1’に更新する。本実施の形態では、更新部134は、呼出フラグ管理テーブル152を更新する前に、引数として渡された認証関数の呼出確認フラグが‘○’か否かを調べることにより、当該関数が呼び出されたことの確認が必要か否かを判断する。そして、使用可能判断部133は、当該呼出確認フラグが‘○’と判断した場合、認証関数132の呼び出されたことの確認が後で行われると判断し、呼出フラグ管理テーブル152における、認証関数の呼出フラグを‘1’に更新する。また、使用可能判断部133は、当該呼出確認フラグが‘○’でないと判断した場合、呼出フラグ管理テーブル152に対して更新処理を行わない。メモリ更新関数135は、使用可能判断部136と、更新部137とを備え、呼び出したコマンドの要求に応じて、メモリの更新処理を行う。また、更新先のメモリは図1に示すICカード100の内部に備えられているRAM13、またはEEPROM15とする。使用可能判断部136及び更新部137は、認証関数132の代わりにメモリ更新関数135についての使用可能か否かの判断及び呼出フラグの更新処理を行うことを除けば、上述した使用可能判断部133及び更新部134と同様の処理を行うので、説明を省略する。なお、後述するメモリ読出関数138が備えている使用可能判断部139及び更新部140、照合関数141が備えている使用可能判断部142及び更新部143、署名関数144が備えている使用可能判断部145及び更新部146も同様として説明を省略する。メモリ読出関数138は、使用可能判断部139と、更新部140とを備え、呼び出したコマンドの要求に応じて、メモリの読出処理を行う。読み出し先のメモリはICカード100の内部に備えられているEEPROM15、ROM14、又はRAM13等とする。照合関数141は、使用可能判断部142と、更新部143とを備え、暗証番号等の照合を行う。署名関数144は、使用可能判断部145と、更新部146とを備え、電子署名による署名処理を行う。このように、ICカード100では、各種関数が呼び出された場合に、呼出先のコマンドが当該関数を使用可能か否か判断することで、誤動作により呼び出されたのか否か判断することができる。また、ICカード100では、関数が呼び出された場合に、呼出フラグを‘0’から‘1’に更新することで、呼び出されたことの確認が容易になる。次に、以上のように構成されたICカード100において、メイン処理部111が行う処理手順について説明する。図6は、メイン処理部111が行う処理手順を示すフローチャートである。まず、ICカードリーダライタ160を通じて、外部からの命令を受信したものとする。受信した命令に対応するコマンドとしては、プログラム部103で保持している読出コマンド117、更新コマンド118、照合コマンド115、認証コマンド116又は取引コマンド119等である。まず、メイン処理部111の初期化部112は、呼出確認使用可フラグ記憶部101の呼出確認使用可フラグ管理テーブル151から、受信したコマンドと対応付けられた呼出確認フラグ及び使用可フラグを、呼出確認使用可フラグ記憶部101から取得するステップS501。次に、メイン処理部111の初期化部112は、呼出フラグ記憶部102の呼出フラグ管理テーブル152の各呼出フラグを‘0’とする初期化処理を行うステップS502。そして、メイン処理部111は、受信したコマンドを実行させるステップS503。実行されたコマンドでは、関数を呼び出した場合、呼出フラグ管理テーブル152における、当該関数の呼出フラグを‘1’に更新する。なお、コマンドが行う処理手順の詳細については後述する。コマンドによる処理が終了した後、メイン処理部111の判断部113は、ステップS501で取得した呼出確認使用可フラグ管理テーブル151のフラグにおいて、実行されたコマンドと対応付けられた関数毎に、当該関数の呼出確認フラグが‘○’であるか否かを調べることにより、当該関数が呼び出されたことの確認が必要であるか否かを判断するステップS504。そして、判断部113が、関数の呼出確認フラグが‘○’、つまり当該関数が呼び出されたことの確認が必要と判断した場合ステップS504:Yes、呼出フラグ判断部114は、呼出フラグ管理テーブル152における、当該関数の呼出フラグが‘1’か否か、すなわち当該関数が呼び出されたか否かを判断するステップS505。そして、呼出フラグが‘1’ではない、つまり当該関数が呼び出されていないと判断した場合ステップS505:No、メイン処理部111は異常事態と判断しステップS506、その旨をICカードリーダライタ160に送信して処理を終了する。一方、ステップS505において呼出フラグ判断部114により呼出フラグが‘1’である、つまり当該関数が呼び出されたものと判断した場合ステップS505:Yes、又はステップS504において判断部113により呼出確認フラグが‘’空白、つまり当該関数が呼び出されたか否かの確認が必要ではないと判断した場合ステップS504:No、ステップS507に処理が進む。そして、ステップS507において、呼出フラグ判断部114は、呼出確認使用可フラグ管理テーブル151で、実行されたコマンドと対応付けられた全ての関数について、呼び出されたか否かの確認が終了したか判断するステップS507。終了していないと判断した場合ステップS507:No、メイン処理部111は再びステップS504から処理を行う。また、メイン処理部111は、全ての関数について適切に呼び出されたか否かの確認が終了したものと判断した場合ステップS507:Yes、処理を終了する。次に、メイン処理部111から実行されたコマンドが行う処理手順について説明する。図7は、コマンドが行う処理手順を示すフローチャートである。なお、このコマンドは、読出コマンド117、更新コマンド118、照合コマンド115、認証コマンド116又は取引コマンド119のうちいずれのコマンドでも良い。まず、コマンドは、前処理関数131の呼び出しを行うステップS601。前処理関数131が行う処理は、コマンドで用いられるパラメータの初期化等とする。次に、コマンドは、当該処理に必要な関数の呼び出しを行うステップS602。また、本処理手順では呼び出される関数が1つの例について説明したが、コマンドは当然に複数の関数を呼び出しても良い。つまり、コマンドが呼び出す関数は、認証関数132、メモリ更新関数135、メモリ読出関数138、照合関数141及び署名関数144のうちいずれか一つ以上とする。そして、コマンドは関数の処理が終了した場合、処理を終了する。なお、コマンドは、関数から異常事態が発生した旨を受信した場合、その旨をメイン処理部111に送信する。この異常事態が発生した旨の例としては、コマンドで関数の使用が許可されていないにもかかわらず関数が呼び出された等が考えられる。次に、コマンドから呼び出された関数が行う処理手順について説明する。図8は、関数が行う処理手順を示すフローチャートである。なお、この呼び出された関数は、メモリ読出関数138、メモリ更新関数135、照合関数141、認証関数132及び署名関数144のうちいずれの関数でも良い。関数の使用可能判断部図2参照は、まずコマンドによって呼び出された関数に対応する、呼出確認使用可フラグ管理テーブル151図4参照の当該関数の使用可フラグが‘○’か否か、すなわち当該関数が呼び出されて良いか否かを判断するステップS701。そして、使用可能判断部は、‘○’ではない、つまり当該関数が呼び出されることに問題があると判断した場合ステップS701:No、異常事態と判断しステップS702、処理を終了する。その場合、当該関数は、呼び出し元のコマンドに対して異常事態が発生した旨を送信する。使用可能判断部が、当該関数の使用可フラグを‘○’である、つまり当該関数が呼びだされて良いと判断した場合ステップS701:Yes、当該関数の更新部が、呼出確認使用可フラグ管理テーブル151の当該関数の呼出確認フラグが‘○’か否か、すなわち当該関数が呼び出されたことの確認を行う必要があるか否かを判断するステップS703。なお、当該確認は、図6で説明したので省略する。そして、当該関数の更新部が、呼出確認フラグを‘○’である、つまり当該関数が呼び出されたことの確認を行う必要があると判断した場合ステップS703:Yes、呼出フラグ管理テーブル152図5参照の、当該関数の呼出フラグを‘1’、つまり当該関数が呼び出されたことを示す値に更新するステップS704。次に、更新部が呼出確認フラグを‘○’ではない、つまり当該関数が呼び出されたことの確認を行う必要がないと判断した場合ステップS703:No、又はステップS704の処理が終了した後、関数が所定の処理例えば、認証、照合、メモリ更新、メモリ読出等を実行するステップS705。次に、ICカードリーダライタ160からコマンドが送信された場合の処理について、シーケンス図を用いて説明する。図9は、ICカードリーダライタ160からICカード100に対して認証コマンドの実行を要求した場合の処理手順を示したシーケンス図である。まず、ICカードリーダライタ160は、ICカード100に対して外部からの命令の送信を行うステップS801。なお、この例では、送信された命令に従って実行されるコマンドを、認証コマンド116とする。次に、メイン処理部111が、呼出確認使用可フラグ管理テーブル151図4参照の、認証コマンドに対応付けられた使用可フラグ及び呼出確認フラグを参照して、メモリ更新関数及び認証関数にかかる使用可フラグ換言すれば、呼び出されて良いか否かを示す値を、取得するステップS802。なお、メモリ更新関数及び認証関数の使用可フラグを取得したのは、これらの使用可フラグが‘○’のためである。そして、メイン処理部111が、呼出フラグ管理テーブル152に格納された各関数の呼出フラグを初期化するステップS803。次に、メイン処理部111は、認証コマンド116を呼び出して、認証コマンド116によるコマンド処理を実行させるステップS804。そして、認証コマンド116は、前処理関数131の呼び出しを行うステップS805。その後、前処理関数131による処理が終了した後、処理が終了したことを示すメッセージを、認証コマンド116に送信するステップS806。次に、認証コマンド116は、メモリ更新関数135の呼び出しを行うステップS807。呼び出されたメモリ更新関数135の使用可能判断部136は、認証コマンド116から呼び出されたことが良いか否かを、引数から取得したメモリ更新関数の使用可フラグが‘○’か否かで判断するステップS808。本処理手順では、使用可フラグが‘○’と判断した場合、つまり認証コマンド116からメモリ更新関数135を呼び出すことが良いと判断した場合とし、そのまま処理を続ける。次に、メモリ更新関数135の更新部137は、当該関数が呼び出されたことの確認を行う必要があるか否かを、引数から取得した当該関数の呼出確認フラグが‘○’か否か判断する。そして、更新部137が‘○’と判断した場合に、呼出フラグ管理テーブル152のメモリ更新関数の呼出フラグを‘1’、つまり当該関数が呼びだされたことを示す値に更新するステップS809。その後、メモリ更新関数135は、メモリ更新処理を行った後、正常に処理が終了したことを、認証コマンドに送信するステップS810。次に、認証コマンド116は、認証関数132の呼び出しを行うステップS811。そして、呼び出された認証関数132の使用可能判断部133は、認証コマンド116から呼び出されたことが良いか否かの判断を、引数から取得した使用可フラグから判断するステップS812。本処理手順では、図4より認証コマンド116から認証関数132を呼び出すことは適切なものと判断できるため、そのまま処理を続ける。そして、認証関数132の更新部134は、当該関数が呼び出されたことの確認を行う必要があるか否かを、引数から取得した当該関数の呼出確認フラグが‘○’か否かで判断する。そして、更新部134は呼出確認フラグが‘○’と判断した場合に、呼出フラグ管理テーブル152の認証関数の呼出フラグを‘1’、つまり当該関数が呼びだされたことを示す値に更新するステップS813。その後、認証関数132は、認証処理を行った後、正常に処理が終了したことを、認証コマンドに送信するステップS814。その後、認証コマンド116がメイン処理部111に対して処理が終了した旨のメッセージを送信するステップS815。そして、メイン処理部111の判断部113は、各関数が呼び出されたことを確認する必要があるか否かを、ステップS802で取得した各関数の呼出確認フラグが‘○’か否か判断するステップS816。本処理手順では、判断部113は、認証関数132と、メモリ更新関数135とについて呼び出されたか否かの確認が必要であると判断する。次に、メイン処理部111の呼出フラグ判断部114は、認証関数132及びメモリ更新関数135について、呼出フラグが更新されているかをつまり、呼出フラグの値が‘1’か判断するステップS817。そして、メイン処理部111は、正常に更新されていること判断した後、認証が終了した旨を、ICカードリーダライタ160に送信するステップS818。これによりICカード100を用いた認証処理が終了する。次に、ICカード100に対するレーザ照射による攻撃により、関数の呼び出し先のアドレスが変更されるという誤動作が生じている際に、ICカードリーダライタ160からコマンドが送信された場合の処理について説明する。図10は、上述した誤動作が生じている際の、ICカードリーダライタ160からICカード100に対して認証コマンドの実行を要求した場合の処理手順を示したシーケンス図である。本実施の形態の図4に示す呼出確認使用可フラグ管理テーブル151を参照すると、認証コマンドでは本来、メモリ更新関数と認証関数とが呼び出されるはずであるが、レーザ照射により誤動作が生じ、誤ってメモリ読出関数が呼び出される場合を説明する。まず、ICカードリーダライタ160とICカード100とによるステップS901~S906による処理は、ステップS801~S806による処理と同様なので説明を省略する。その後、認証コマンド116は、メモリ読出関数138を呼び出すステップS907。なお、ステップS907に示したメモリ読出関数138の呼び出しは、レーザ照射による誤動作で、認証コマンド116が呼び出す予定だったメモリ更新関数135の格納されたアドレスが、メモリ読出関数138の格納されたアドレスに変更されたことで生じている。そして、メモリ読出関数138の使用可能判断部139は、認証コマンド116から呼び出されたことが良いか否かを、引数から取得した使用可フラグが‘○’か否かで判断するステップS908。本処理手順では、使用可能判断部139は、認証コマンド116がメモリ読出関数138を呼び出すことは許可されていないため図4参照、本処理は異常な事態であると判断する。そして、メモリ読出関数138は、異常事態が生じた旨エラーを、認証コマンド116に対して送信するステップS909。次に、認証コマンド116は、異常事態が生じた旨エラーを受信した場合、特に処理を行わず、異常事態が生じた旨エラーをメイン処理部111に対して送信するステップS910。そして、メイン処理部111は、異常事態が生じた旨エラーを受信した場合、認証に失敗した旨をICカードリーダライタ160に対して送信するステップS911。上述した処理手順により、ICカード100は、レーザ照射により不正な関数が呼び出された場合、異常事態が生じたものと判断することが可能となる。次に、ICカード100に対するレーザ照射による攻撃により、関数がスキップされるという誤動作が生じている際に、ICカードリーダライタ160からコマンドが送信された場合の処理について説明する。図11は、上述した誤動作が生じている際の、ICカードリーダライタ160からICカード100に対して認証コマンドの実行を要求した場合の処理手順を示したシーケンス図である。図11に示すシーケンス図は、本来、図9に示したようにメモリ更新関数135が実行された後に、認証関数132が呼び出されるはずであったが、ICカード100に対するレーザ照射による誤動作で、認証関数132の呼び出しがスキップされた場合の処理を説明する。まず、ICカードリーダライタ160とICカード100とによるステップS1001~S1010による処理は、ステップS801~S810による処理と同様なので説明を省略する。その後、本来は認証関数132が呼び出されるはずであったが、ICカード100に対するレーザ照射による誤動作で、認証関数132の呼び出しがスキップされることとなった。その後、レーザ照射により誤動作により、認証コマンド116から処理が終了した旨のメッセージがメイン処理部111に対して送信されるステップS1011。そして、メイン処理部111の判断部113は、各関数が呼び出されたことを確認する必要があるか否かを、ステップS1002で取得した各関数の呼出確認フラグが‘○’か否かで判断するステップS1012。本処理手順では、判断部113は、認証関数132と、メモリ更新関数135とについて、呼び出されたか否かの確認が必要であると判断する。次に、呼出フラグ判断部114は、認証関数132及びメモリ更新関数135について、呼出フラグが更新されているかつまり、それぞれの関数の呼出フラグの値が‘1’かを判断するステップS1013。この場合、呼出フラグ判断部114は、メモリ更新関数の呼出フラグは更新されていることを確認できるが、認証関数132の呼出フラグは更新されていることを確認できないつまり、認証関数の呼出フラグの値が‘0’であることを確認した。これは、認証関数132の処理がレーザ照射の誤動作によりスキップされたためである。そこで、メイン処理部111は、適切に関数が呼び出されなかったものと判断し、認証に失敗した旨をICカードリーダライタ160に対して送信するステップS1014。このように本実施の形態では、ICカード100により使用可フラグによる使用可能か否かの判断処理及び呼出フラグ管理テーブル152の呼出フラグの更新処理を行うことにより、レーザ照射の攻撃による誤動作が生じたときに、当該誤動作を検出できるので、データまたは条件分岐命令ごとに二重化を行う必要がなくプログラムのコードサイズの増大を抑止しながら、セキュリティを向上させることができる。これにより、悪意ある第三者によるICカード100の不正利用を防止することができる。なお、本実施の形態では、ICカードとアクセスする装置がICカードリーダライタの場合について説明したが、ICカードリーダライタに制限するものではなく、様々な外部装置を適用しても良い。第2の実施の形態上述した第1の実施の形態にかかるICカード100では、認証コマンド116が呼び出したメモリ更新関数135及び認証関数132が、使用可フラグによる使用可能か否かの判断処理、及び呼出フラグ管理テーブル152の呼出フラグの更新処理のいずれの処理も行っていた。しかしながら、関数は、使用可フラグによる使用可能か否かの判断処理、及び呼出フラグ管理テーブル152の呼出フラグの更新処理のうちいずれか一方の処理のみを行うことにしてもよい。そこで、第2の実施の形態では、コマンドで関数が呼び出された場合、使用可フラグによる使用可能か否かの判断処理、及び呼出フラグ管理テーブル152の呼出フラグの更新処理のうちいずれか一方のみ処理を行う例について説明する。図12は、本実施の形態に係るICカード1100の構成を示すブロック図である。上述した第1の実施の形態に係るICカード100とは、プログラム部1104にユーザコマンド1101と、メッセージ表示関数1102が追加された点で異なる。なお、本実施の形態のICカード1100の構成で、第1の実施の形態のICカード100と共通な構成については説明を省略する。また、上述した構成の変更に伴い、呼出確認使用可フラグ記憶部101に格納されている呼出確認使用可フラグ管理テーブル1111のテーブル構造も変更される。図13は、呼出確認使用可フラグ管理テーブル1111のテーブル構造の例を示した図である。図13に示す呼出確認使用可フラグ管理テーブル1111は、図4に示す呼出確認使用可フラグ管理テーブル151と異なる点として、‘ユーザコマンド’のレコード1301が追加された点と、ICカード1100から呼出可能な関数としてメッセージ表示関数のフィールドが追加された点とする。図13に示すように、‘ユーザコマンド’のレコード1301では、メッセージ表示関数の使用可フラグに‘―’が格納されている。この‘―’は当該関数が、コマンドから呼び出された場合に、呼び出されて良いか否か判断する必要がないことを示している。なお、図示していないが、呼出フラグ記憶部102が保持する呼出フラグ管理テーブル152においても、当然にメッセージ表示関数1102の呼出フラグを示すフィールドが追加されているものとする。図12に戻り、ユーザコマンド1101は、ユーザによるカスタマイズで生成されたコマンドとする。当該コマンドではユーザによりメモリ読出関数138とメッセージ表示関数1102とを呼び出すように設定されている。メッセージ表示関数1102は、更新部1103を備え、予め定められたメッセージをICカードリーダライタ等に備え付けられた表示部等に、表示する処理を行うための関数とする。なお、更新部1103が行う処理については、更新部134等と同様として説明を省略する。なお、メッセージ表示関数1102は上述したように、コマンドから呼び出された際、当該関数が呼び出されて良いか否か判断を行わないものとする。つまり、メッセージ表示関数1102は、どこから呼び出されたとしても不正な利用に用いられることはないので、呼び出されて良いか否かの判断を行わず、ICカード1100の処理負担を軽減させるように設計されたものとする。次に、メッセージ表示関数1102が行う処理手順について説明する。図14は、メッセージ表示関数1102が行う処理手順を示すフローチャートである。まず、メッセージ表示関数1102がコマンドから呼び出された場合、更新部1103が、呼出確認使用可フラグ管理テーブル1111の当該メッセージ表示関数1102の呼出確認フラグが‘○’か否か、すなわち当該関数が呼び出されたことの確認を行う必要があるか否かを判断するステップS1401。そして、更新部1103は、呼出確認フラグが‘○’である、つまり当該関数が呼び出されたことの確認を行う必要があると判断した場合ステップS1401:Yes、呼出フラグ管理テーブル152の、当該メッセージ表示関数1102の呼出フラグを‘1’、つまり当該関数が呼び出されたことを示す値に更新するステップS1402。次に、更新部1103は、呼出確認フラグが‘○’ではない、つまり当該関数が呼び出されたことの確認を行う必要がないと判断した場合ステップS1401:No、又はステップS1402の処理が終了した後、メッセージ表示関数1102が所定の処理予め定められたメッセージの表示処理を実行するステップS1403。次に、ICカードリーダライタ160からコマンドが送信された場合の処理について、シーケンス図を用いて説明する。図15は、ICカードリーダライタ160からICカード100に対してユーザコマンドの実行を要求した場合の処理手順を示したシーケンス図である。まず、ICカードリーダライタ160は、ICカード100に対して外部からの命令の送信を行うステップS1201。なお、この例では、送信された命令に従って実行されるコマンドを、ユーザコマンド1101とする。次に、メイン処理部111が、呼出確認使用可フラグ管理テーブル1111図13参照の、ユーザコマンドに対応付けられた使用可フラグ及び呼出確認フラグを参照して、メモリ読出関数にかかる使用可フラグと、メッセージ表示関数にかかる使用可フラグ及び呼出確認フラグを取得するステップS1202。なお、メモリ更新関数及びメッセージ表示関数の使用可フラグを取得したのは、これらの使用可フラグが‘○’又は‘―’のためである。そして、メイン処理部111が、呼出フラグ管理テーブル152に格納された各関数の呼出フラグを初期化するステップS1203。次に、メイン処理部111は、ユーザコマンド1101を呼び出して、ユーザコマンド1101によるコマンド処理を実行させるステップS1204。そして、ユーザコマンド1101は、前処理関数131の呼び出しを行うステップS1205。その後、前処理関数131による処理が終了した後、処理が終了したことを示すメッセージを、ユーザコマンド1101に送信するステップS1206。次に、ユーザコマンド1101は、メモリ読出関数138の呼び出しを行うステップS1207。そして、呼び出されたメモリ読出関数138は、ユーザコマンド1101から呼び出されたことが良いか否かを、引数から取得したメモリ更新関数の使用可フラグが‘○’か否かで判断するステップS1208。本処理手順では、ユーザコマンド1101からメモリ読出関数138を呼び出すことが良い場合とし、そのまま処理を続ける。次に、メモリ読出関数138は、当該関数が呼び出されたことの確認を行う必要があるか否かを、引数から取得した呼出確認フラグが‘○’か否かで判断する。そして、メモリ読出関数138は、‘○’ではないつまり‘’空白であると判断した場合に、呼出フラグ管理テーブル152のメモリ読出関数138の呼出フラグの更新処理を行わず、メモリからの読出処理のみ行う。その後、メモリ読出関数138は、メモリ読出処理を行った後、正常に処理が終了したことを、ユーザコマンド1101に送信するステップS1209。次に、ユーザコマンド1101は、メッセージ表示関数1102の呼び出しを行うステップS1210。なお、メッセージ表示関数1102は呼び出された際、使用可フラグが‘―’のため、ユーザコマンド1101から呼び出されたことが適切か否かの判断を特に行わない。そして、呼び出されたメッセージ表示関数1102の更新部1103は、当該関数が呼び出されたことの確認を行う必要があるか否かを、引数から取得したメッセージ表示関数の呼出確認フラグが‘○’か否かで判断する。そして、更新部1103は‘○’であると判断した場合、呼出フラグ管理テーブル152のメッセージ表示関数1102の呼出フラグを‘1’、つまり当該関数が呼びだされたことを示す値に更新するステップS1211。その後、メッセージ表示関数1102は、メッセージの表示処理を行った後、正常に処理が終了したことを、ユーザコマンド1101に送信するステップS1212。その後、ユーザコマンド1101からもメイン処理部111に対して処理が終了した旨のメッセージを送信するステップS1213。そして、メイン処理部111の判断部113は、各関数が呼び出されたことを確認する必要があるか否かを、ステップS1202で取得した各関数の呼出確認フラグが‘○’か否かで判断するステップS1214。本処理手順では、判断部113は、呼び出したメモリ読出関数138及びメッセージ表示関数1102のうち、メッセージ表示関数1102について呼び出されたか否かの確認が必要であると判断する。次に、メイン処理部111の呼出フラグ判断部114は、メッセージ表示関数1102について、呼出フラグが更新されているか否かつまり、呼出フラグの値が‘1’か否かを判断するステップS1215。なお、本処理手順にかかる呼出フラグ判断部114は、メッセージ表示関数1102の呼出フラグの値が‘1’に更新されていたため、全ての呼出フラグが正常に更新されているものと判断する。そして、メイン処理部111は、全ての呼出フラグが正常に更新されていること判断した後、認証が終了した旨を、ICカードリーダライタ160に送信するステップS1216。これによりICカード100を用いた認証処理が終了する。本実施の形態では、第1の実施形態のように関数が呼び出された際に使用可能か否かの判断処理及び適切に呼び出されたか否かの確認処理のいずれも行う場合ではなく、関数が呼び出された際にいずれか一方のみ処理を行う例として、メモリ読出関数138では使用可フラグによる使用可能か否かの判断処理のみ行い、メッセージ表示関数1102では適切に呼び出されたか否かの確認処理のみ行う例について説明した。このように、関数が実行する処理は、関数の重要度等を考慮して、関数毎に変更しても良い。上述した第2の実施の形態にかかるICカード100では、関数が呼び出された際に、使用可フラグによる使用可能か否かの判断処理、及び呼出フラグ管理テーブル152の呼出フラグの更新つまり、関数が適切に呼び出されたか否かの確認処理のうち、いずれか一方の処理を行うことにより、レーザ照射の攻撃による誤動作が生じたときに、当該誤動作を検出できるので、プログラムのコードサイズの増大をより効果的に抑止しながら、セキュリティを向上させることができる。