"外部装置と接続される記憶装置であって、データを記憶するデータ記憶部と、鍵を記憶する鍵記憶部と、乱数を発生する乱数発生部と、前記乱数発生部が発生した乱数を記憶する乱数記憶部と、前記乱数を前記外部装置に送信する乱数送信部と、前記データ記憶部に書き込む書き込みデータと、第1認証情報と、を前記外部装置から受信するデータ受信部と、前記書き込みデータと前記乱数記憶部が記憶している乱数とから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて第2認証情報を計算する計算部と、前記第1認証情報と前記第2認証情報とが一致するか否かを判定する判定部と、前記第1認証情報と前記第2認証情報とが一致すると判定された場合に、前記書き込みデータをデータ記憶部に記憶する記憶制御部と、を備えることを特徴とする記憶装置。記憶装置と接続される書き込み装置であって、鍵を記憶する鍵記憶部と、前記記憶装置から乱数を受信する乱数受信部と、前記乱数と、前記記憶装置に書き込む書き込みデータとから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて認証情報を計算する計算部と、前記書き込みデータと前記認証情報とを前記記憶装置に送信するデータ送信部と、を備えることを特徴とする書き込み装置。外部装置と接続される記憶装置であって、データを記憶するデータ記憶部と、鍵を記憶する鍵記憶部と、前記データのバージョンを表す第1バージョン情報を記憶するバージョン記憶部と、前記データ記憶部に書き込む書き込みデータと、前記書き込みデータのバージョンを表す第2バージョン情報と、前記第2バージョン情報および前記書き込みデータに基づいて計算された第1認証情報と、を前記外部装置から受信するデータ受信部と、前記書き込みデータと前記第1バージョン情報とから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて第2認証情報を計算する計算部と、前記第1認証情報と前記第2認証情報とが一致するか否かを判定する第1判定部と、前記第2バージョン情報により表されるバージョンが、前記第1バージョン情報により表されるバージョンより後のバージョンであるか否かを判定する第2判定部と、前記第1認証情報と前記第2認証情報とが一致すると判定され、かつ、前記第2バージョン情報により表されるバージョンが前記第1バージョン情報により表されるバージョンより後のバージョンであると判定された場合に、前記書き込みデータをデータ記憶部に記憶する記憶制御部と、を備えることを特徴とする記憶装置。前記記憶制御部は、前記データ記憶部に前記書き込みデータを記憶した後、前記第2バージョン情報によって、前記バージョン記憶部に記憶された前記第1バージョン情報を更新すること、を特徴とする請求項3に記載の記憶装置。記憶装置と接続される書き込み装置であって、鍵を記憶する鍵記憶部と、前記記憶装置に書き込む書き込みデータのバージョンを表すバージョン情報の入力を受付ける受付部と、前記バージョン情報と、前記書き込みデータとから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて認証情報を計算する計算部と、前記書き込みデータと前記バージョン情報と前記認証情報とを前記記憶装置に送信するデータ送信部と、を備えることを特徴とする書き込み装置。しかしながら、RPMB技術をシステムプログラムの改ざん防止に利用する際には問題点がある。それは、RPMB技術では、システムプログラムのアップデートが保障されないことである。書き込みデータに付与されたMAC値さえ正しければeMMCは書き込み要求を受理する。従って、当該eMMCに記録されたシステムプログラムのイメージを保存しておけば、後にシステムプログラムがアップデートされた後に、古いシステムプログラムのイメージを再度eMMCに書き込んで、アップデートを無効にすることが可能である。実施形態の記憶装置は、データ記憶部と鍵記憶部と乱数発生部と乱数送信部とデータ受信部と計算部と判定部と記憶制御部とを備える。データ記憶部はデータを記憶する。鍵記憶部は外部装置と共有する共有鍵を記憶する。乱数発生部は乱数を発生する。乱数送信部は乱数を外部装置に送信する。データ受信部は、書き込みデータと、乱数および書き込みデータに基づいて計算された第1認証情報とを外部装置から受信する。計算部は、書き込みデータと乱数とから生成されるデータについて共有鍵を用いて第2認証情報を計算する。判定部は第1認証情報と第2認証情報とが一致するか否かを判定する。記憶制御部は、第1認証情報と第2認証情報とが一致すると判定された場合に、書き込みデータをデータ記憶部に記憶する。以下に添付図面を参照して、この発明にかかる記憶装置および書き込み装置の好適な実施形態を詳細に説明する。第1の実施形態第1の実施形態にかかる情報処理システムは、データを格納する記憶装置と、記憶装置にデータを書き込む書き込み装置ホストとを含む。RPMB技術と同様、書き込み装置と記憶装置とは予め共有鍵を共有している。第1の実施形態にかかる情報処理システムでは、記憶装置が生成する乱数を用いてシステムプログラムを安全にアップデートする。本実施形態の情報処理システムによるデータの書き込み処理の概要を以下に説明する。以下では書き込み装置から記憶装置に書き込むデータを書き込みデータという。書き込みデータとして上記のようなシステムプログラムなどを適用できるが、これに限られるものではない。まず、記憶装置は生成した乱数を内部に保持する。書き込み装置は記憶装置から乱数を読み取り、当該乱数と書き込みデータとを結合したデータに関する認証情報であるMAC値を計算する。書き込み装置は、共有鍵を用いてMAC値を計算する。書き込み装置は、書き込みデータにMAC値を添えて、記憶装置に送る。記憶装置は、内部に保持する乱数と受信した書き込みデータを結合し、MAC値を計算する。当該MAC値が、書き込み装置から受信したMAC値と一致した場合に、指定されたアドレスに書き込みデータを記録する。MAC値が一致しない場合、記憶装置は書き込み装置からの当該書き込み要求を受理しない。この方法によれば、書き込みデータのMAC値が有効であるのは一度限りとなる。従って、記憶装置への書き込みに成功したデータを保持していて、当該データを再度書き込もうとしても、書き込みは不可能である。図1は、第1の実施形態の記憶装置100の構成の一例を示すブロック図である。記憶装置100は、データ記憶部110と、鍵記憶部105と、乱数発生部104と、乱数記憶部103と、乱数送信部101と、データ受信部102と、計算部107と、判定部108と、記憶制御部109と、制御部106と、を備えている。データ記憶部110は、書き込み装置200により書き込まれるデータ書き込みデータを記憶する。データ記憶部110は、例えば不揮発メモリで構成される。鍵記憶部105は、MAC計算用の共有鍵を記憶する。この共有鍵は、記憶装置100と書き込み装置200との間で共有される鍵である。乱数発生部104は、乱数を発生する。乱数記憶部103は、乱数発生部104により発生された乱数を記憶する。乱数送信部101は、乱数記憶部103が格納する乱数を記憶装置100の外部に出力する。データ受信部102は、記憶装置100の外部から書き込みデータとMAC値とを受け取り、受け取った書き込みデータおよびMAC値を保持する。計算部107は、書き込みデータと乱数記憶部103が格納する乱数とから生成されるデータについて、鍵記憶部105が格納する共有鍵を用いてMAC値を計算する。MAC値の計算に用いるMACアルゴリズムとしては、ハッシュ関数を用いる方法HMACなどの従来から用いられているあらゆるアルゴリズムを適用できる。判定部108は、計算部107が計算したMAC値と、データ受信部102が受信したMAC値と、を比較し、両者が一致するか否かを判定する。判定部108は、両者が一致した場合に限り書き込みデータを受理する。記憶制御部109は、判定部108が受理した書き込みデータをデータ記憶部110に記録する。制御部106は、記憶装置100全体を制御する。次に、このように構成された第1の実施形態にかかる記憶装置100による記憶処理について図2を用いて説明する。図2は、第1の実施形態の記憶装置100の動作の一例を示すフローチャートである。データ受信部102は、書き込み装置200から書き込み要求を受信するステップS11。乱数発生部104は、乱数を発生し、発生した乱数を乱数記憶部103に記憶するステップS12。乱数送信部101は、乱数記憶部103に記憶された乱数を読み取り、読み取った乱数を書き込み装置200に送信するステップS13。データ受信部102は、書き込み装置200から、書き込みデータとMAC値とを受信しステップS14、それらを保持する。その後、計算部107は、データ受信部102から書き込みデータを読み出す。また、計算部107は、乱数記憶部103から乱数を読み出し、鍵記憶部105からMAC計算用の共有鍵を読み出す。計算部107は、それらを用いて、次の1式のようにMACの値Mを計算するステップS15。M=MACK,D||R1ここに、KはMAC計算用の共有鍵、Dは書き込みデータ、Rは乱数値である。D||RはDとRとを結合したデータを示す。また、MACK,D||RはKを用いてD||RのMAC値を計算する関数である。この関数により得られたMAC値をMとしている。なお、D||Rが、書き込みデータDと乱数Rとから生成されるデータに相当する。書き込みデータDと乱数Rとから生成されるデータは、DとRとを結合したデータに限られるものではない。次に判定部108は、計算部107からMAC値Mを読み出し、また、データ受信部102からMAC値以下、MAC値M’とするを読み出す。そして、判定部108は、読み出したMとM’とを比較し、両者が一致するか否かを判定するステップS16。MとM’とが一致しなければステップS16:No、判定部108は、書き込みデータを受理しない。その場合、記憶装置100は動作を終了する。一方、MとM’とが一致する場合ステップS16:Yes、判定部108は、書き込みデータを受理する。その場合、記憶制御部109は、データ受信部102から書き込みデータを読み取り、当該書き込みデータをデータ記憶部110に記憶するステップS17。図3は、第1の実施形態の書き込み装置200の構成の一例を示すブロック図である。書き込み装置200は、鍵記憶部203と、乱数受信部201と、計算部205と、データ送信部202と、書き込みデータ記憶部204と、制御部206と、を備えている。鍵記憶部203は、MAC計算用の共有鍵を記憶する。この共有鍵は、記憶装置100と書き込み装置200との間で共有される鍵である。乱数受信部201は、記憶装置100の外部から乱数を受信する。計算部205は、乱数受信部201が受信したデータと書き込みデータとから生成されるデータについて、鍵記憶部203が格納する共有鍵を用いてMAC値を計算する。データ送信部202は、書き込みデータと計算部205が計算したMAC値とを書き込み装置200の外部に送信する。書き込みデータ記憶部204は、書き込みデータを保持する。制御部206は、書き込み装置200全体を制御する。次に、このように構成された第1の実施形態にかかる書き込み装置200による書き込み処理について図4を用いて説明する。図4は、第1の実施形態の書き込み装置200の動作の一例を示すフローチャートである。書き込みデータを書き込む際、書き込み装置200のデータ送信部202は、記憶装置100に対して書き込み要求を発行するステップS21。書き込み要求に応じて記憶装置100から乱数が送信されるので、乱数受信部201が当該乱数を受信して保持するステップS22。計算部205は、書き込みデータ記憶部204から書き込みデータを受け取り、乱数受信部201から乱数を受け取る。計算部205は、鍵記憶部203の共有鍵を用いて、書き込みデータと乱数とを結合したデータのMAC値Mを、上記1式を用いて計算するステップS23。その後、データ送信部202は、書き込みデータ記憶部204から書き込みデータDを受け取り、計算部205からMAC値Mを受け取るステップS24。データ送信部202は、書き込みデータDとMAC値Mとを、記憶装置100に送信するステップS25。このように、第1の実施形態にかかる情報処理システムでは、記憶装置が生成する乱数を用いて計算したMAC値により正当であると認証された場合にのみ書き込みデータを記憶装置に記憶する。乱数を用いるため、書き込みデータのMAC値が有効であるのは一度限りとなる。従って、記憶装置への書き込みに成功したデータを保持していて、当該データを再度書き込もうとしても、書き込みは不可能である。すなわち、システムプログラムなどのデータを安全にアップデート可能となる。第2の実施形態第2の実施形態にかかる情報処理システムは、バージョン番号を用いてシステムプログラムを安全にアップデートする。本実施形態の情報処理システムによるデータの書き込み処理の概要を以下に説明する。書き込み装置は、システムプログラムなどの書き込みデータのバージョンを表すバージョン情報バージョン番号を、書き込みデータと共に記憶装置に送信する。その際、書き込み装置は書き込みデータとバージョン番号とを結合したデータに関するMAC値を計算し、当該MAC値も書き込みデータとバージョン番号に付随させて送信する。MAC値の計算には、記憶装置と共有している共有鍵を用いる。記憶装置は現在のバージョン番号を保持している。記憶装置は、書き込みデータとバージョン番号のMACを確認した後、バージョン番号が、記憶装置が保持する現在のバージョン番号より真に大きい場合に限り、指定アドレスにデータを書き込む。書き込みデータのバージョン番号が現在のバージョン番号より大きくない場合、記憶装置は書き込み装置からの当該書き込み要求を受理しない。この方法では、書き込み装置は乱数を受け取る必要がない。なお、上記説明では、バージョン番号は真に単調増加することを前提とした。しかし、古くないデータを受け入れても良い場合は、記憶装置は、書き込みデータに付随するバージョン番号が、書き込み先アドレスのバージョン番号と同一である場合にも、書き込み先アドレスへの書き込みを行う。さらに、バージョン番号は単調減少であっても良い。また、書き込み装置と記憶装置との間で予め決められているルールによって、次のバージョン番号が計算できるように構成しても良い。例えば、関数fを、書き込み装置と記憶装置との間で共有する。記憶装置が現在保持しているバージョン番号をVcとする。この時、次のバージョン番号VnをVn=fVcと定める。記憶装置は、バージョン番号Vnが付随する書き込みデータだけを受理する。図5は、第2の実施形態の記憶装置100-2の構成の一例を示すブロック図である。図5に示すように、記憶装置100-2は、データ記憶部110と、鍵記憶部105と、乱数送信部101と、データ受信部102-2と、計算部107-2と、バージョン記憶部111-2と、第1判定部112-2と、第2判定部113-2と、記憶制御部109-2と、制御部106と、を備えている。第1の実施形態の記憶装置100と同様の構成については、図1と同一符号を付し、ここでの説明は省略する。バージョン記憶部111-2は、書き込みデータのバージョン番号を格納する。なお、記憶装置100-2を初期化した直後などのように、まだデータが何も書き込まれていない時点では、バージョン記憶部111-2は、最も小さいバージョン番号、例えば0を格納する。データ受信部102-2は、記憶装置100-2の外部から書き込みデータとバージョン番号とMAC値とを受け取り、それらのデータを保持する。計算部107-2は、書き込みデータとバージョン番号とから生成されるデータについて、鍵記憶部105が格納する共有鍵を用いてMAC値を計算する。第1判定部112-2は、計算部107-2が計算したMAC値とデータ受信部102-2が受信したMAC値とを比較し、両者が一致するか否かを判定する。第1判定部112-2は、両者が一致した場合に限り書き込みデータを受理する。第2判定部113-2は、データ受信部102-2が受信したバージョン番号とバージョン記憶部111-2が格納するバージョン番号とを比較し、前者が後者より後のバージョンであるか否かを判定する。バージョン番号が真に単調増加する場合は、第2判定部113-2は、データ受信部102-2が受信したバージョン番号とバージョン記憶部111-2が格納するバージョン番号とを比較し、前者が後者より大であるか否かを判定する。第2判定部113-2は、前者が後者より大である場合に限り書き込みデータを受理する。記憶制御部109-2は、第1判定部112-2と第2判定部113-2が共に書き込みデータを受理した場合に限り書き込みデータをデータ記憶部110に記録する。次に、このように構成された第2の実施形態にかかる記憶装置100-2による記憶処理について図6を用いて説明する。図6は、第2の実施形態の記憶装置100-2の動作の一例を示すフローチャートである。まず、データ受信部102-2が、書き込み装置200-2から書き込みデータ、バージョン番号、およびMAC値を受信するステップS31。計算部107-2は、データ受信部102-2から書き込みデータとバージョン番号とを受け取る。さらに計算部107-2は、鍵記憶部105からMAC計算用の共有鍵を読み出す。計算部107-2は、共有鍵を用いて、書き込みデータとバージョン番号とを結合したデータのMAC値を計算するステップS32。すなわち、計算部107-2は以下の2式のようにMAC値Mを計算するステップS32。M=MACK,D||Vn2ここに、Kは鍵記憶部105が格納している共有鍵、Dは書き込みデータ、Vnは書き込み装置200-2が送信しデータ受信部102-2が保持しているバージョン番号である。次に、第1判定部112-2は、書き込み装置200-2が送信しデータ受信部102-2が保持しているMAC値M’を読み出す。第1判定部112-2は、MとM’とを比較し、両者が一致するか否かを判定するステップS33。両者が一致した場合ステップS33:Yes、第1判定部112-2は、書き込みデータを受理する。両者が一致しない場合ステップS33:No、記憶装置100-2は、書き込みデータを破棄して動作を停止する。第1判定部112-2が書き込みデータを受理した場合、第2判定部113-2は、バージョン記憶部111-2からバージョン番号Vcを読み出す。また、第2判定部113-2は、データ受信部102-2が保持しているバージョン番号Vnを読み出す。第2判定部113-2は、VnとVcとを比較し、VnがVcより大きいか否かを判定するステップS34。VnがVcより大きくない場合ステップS34:No、第2判定部113-2は、書き込みデータを受理しない。この場合、データ受信部102-2の書き込みデータは破棄され、記憶装置100-2は動作を停止する。VnがVcより大きいVn>Vc場合ステップS34:Yes、第2判定部113-2は、書き込みデータを受理する。第1判定部112-2と第2判定部113-2とが共にデータを受理した場合、記憶制御部109-2は、データ受信部102-2から書き込みデータを読み出し、当該書き込みデータをデータ記憶部110に記録するステップS35。記憶制御部109-2は、データ受信部102-2が保持しているバージョン番号を読み出し、当該バージョン番号によってバージョン記憶部111-2が格納するバージョン番号を上書き更新する。例えば、システムプログラムのアップデートの際など、システムプログラムのバージョン番号をバージョン記憶部111-2に格納しておく。これにより、システムプログラムのロールバック後戻りを効果的に防止することができる。図7は、第2の実施形態の書き込み装置200-2の構成の一例を示すブロック図である。書き込み装置200-2は、鍵記憶部203と、バージョン受付部201-2と、計算部205-2と、データ送信部202-2と、書き込みデータ記憶部204と、制御部206と、を備えている。第1の実施形態の書き込み装置200と同様の構成については、図3と同一符号を付し、ここでの説明は省略する。バージョン受付部201-2は、書き込みデータのバージョン番号の入力を受付け、当該バージョン番号を保持する。計算部205-2は、書き込みデータと入力されたバージョン番号とから生成されるデータについて、鍵記憶部203が格納する共有鍵を用いてMAC値を計算する。データ送信部202-2は、書き込みデータとバージョン番号と計算部205-2が計算したMAC値とを、書き込み装置200-2の外部に送信する。次に、このように構成された第2の実施形態にかかる書き込み装置200-2による書き込み処理について図8を用いて説明する。図8は、第2の実施形態の書き込み装置200-2の動作の一例を示すフローチャートである。まず、バージョン受付部201-2が、バージョン番号の入力を受付けるステップS41。入力されるバージョン番号として、書き込み対象である記憶装置100-2に対して最後に書き込んだバージョン番号より大きいバージョン番号が選択される。計算部205-2は、書き込みデータ記憶部204から書き込みデータDを受け取り、バージョン受付部201-2からバージョン番号Vnを受け取る。計算部205-2は、鍵記憶部105の共有鍵Kを用いて、書き込みデータとバージョン番号とを結合したデータのMAC値Mを、上記2式のように計算するステップS42。その後、データ送信部202-2は、書き込みデータ記憶部204から書き込みデータDを受け取り、バージョン受付部201-2からバージョン番号Vnを受け取り、計算部205-2からMAC値Mを受け取るステップS43。データ送信部202-2は、書き込みデータD、バージョン番号Vn、および、MAC値Mを記憶装置に送信するステップS44。このように、第2の実施形態にかかる情報処理システムでは、書き込みデータのバージョン番号が、既に書き込まれているデータのバージョン番号より大きい場合にのみ書き込みデータを記憶装置に記憶する。記憶装置への書き込みに成功したデータを保持していて、当該データを再度書き込もうとしても、バージョン番号が現在のバージョン番号より大きくないため、書き込みは不可能である。すなわち、システムプログラムなどのデータを安全にアップデート可能となる。なお、ここではバージョン番号は数値であり、2つのバージョンの間には自明な大小関係が存在する。あるバージョン番号V1が別のバージョン番号V2より小さい時、バージョン番号V2はバージョン番号V1より後のバージョンであるということがある。バージョン番号は一般には全順序集合の要素である。全順序集合の定義は、例えば、日本数学会編集岩波数学辞典第三版に記載されている。バージョン番号の全順序集合における順序関係を≦で表す。バージョンV2がバージョンV1より大であるV1<V2とは、V1≦V2であってV1≠V2であることをいう。以上説明したとおり、第1から第2の実施形態によれば、記憶装置にデータを書き込む場合のセキュリティを向上させることができる。例えば、記憶装置に記憶するシステムプログラムなどのデータのアップデートを保障することができる。次に、第1および第2の実施形態にかかる装置記憶装置および書き込み装置のハードウェア構成について図9を用いて説明する。図9は、第1および第2の実施形態にかかる装置のハードウェア構成を示す説明図である。第1および第2の実施形態にかかる装置は、CPUCentralProcessingUnit51などの制御装置と、ROMReadOnlyMemory52やRAMRandoMACcessMemory53などの記憶部と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。第1および第2の実施形態にかかる装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。第1および第2の実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROMCompactDiskReadOnlyMemory、フレキシブルディスクFD、CD-RCompactDiskRecordable、DVDDigitalVersatileDisk等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成しても良い。さらに、第1および第2の実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第1および第2の実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。第1および第2の実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した装置の各部として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"