(57)【要約】【課題】記憶するデータのセキュリティを向上させる。【解決手段】記憶装置は、データ記憶部と鍵記憶部と乱数発生部と乱数送信部とデータ受信部と計算部と判定部と記憶制御部とを備える。データ記憶部はデータを記憶する。鍵記憶部は外部装置と共有する共有鍵を記憶する。乱数発生部は乱数を発生する。乱数送信部は乱数を外部装置に送信する。データ受信部は、書き込みデータと、乱数および書き込みデータに基づいて計算された第１認証情報とを外部装置から受信する。計算部は、書き込みデータと乱数とから生成されるデータについて共有鍵を用いて第２認証情報を計算する。判定部は第１認証情報と第２認証情報とが一致するか否かを判定する。記憶制御部は、第１認証情報と第２認証情報とが一致すると判定された場合に、書き込みデータをデータ記憶部に記憶する。【選択図】図１
2013069250.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と接続される記憶装置であって、
データを記憶するデータ記憶部と、
鍵を記憶する鍵記憶部と、
乱数を発生する乱数発生部と、
前記乱数発生部が発生した乱数を記憶する乱数記憶部と、
前記乱数を前記外部装置に送信する乱数送信部と、
前記データ記憶部に書き込む書き込みデータと、第１認証情報と、を前記外部装置から受信するデータ受信部と、
前記書き込みデータと前記乱数記憶部が記憶している乱数とから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて第２認証情報を計算する計算部と、
前記第１認証情報と前記第２認証情報とが一致するか否かを判定する判定部と、
前記第１認証情報と前記第２認証情報とが一致すると判定された場合に、前記書き込みデータをデータ記憶部に記憶する記憶制御部と、
を備えることを特徴とする記憶装置。
【請求項２】
記憶装置と接続される書き込み装置であって、
鍵を記憶する鍵記憶部と、
前記記憶装置から乱数を受信する乱数受信部と、
前記乱数と、前記記憶装置に書き込む書き込みデータとから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて認証情報を計算する計算部と、
前記書き込みデータと前記認証情報とを前記記憶装置に送信するデータ送信部と、
を備えることを特徴とする書き込み装置。
【請求項３】
外部装置と接続される記憶装置であって、
データを記憶するデータ記憶部と、
鍵を記憶する鍵記憶部と、
前記データのバージョンを表す第１バージョン情報を記憶するバージョン記憶部と、
前記データ記憶部に書き込む書き込みデータと、前記書き込みデータのバージョンを表す第２バージョン情報と、前記第２バージョン情報および前記書き込みデータに基づいて計算された第１認証情報と、を前記外部装置から受信するデータ受信部と、
前記書き込みデータと前記第１バージョン情報とから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて第２認証情報を計算する計算部と、
前記第１認証情報と前記第２認証情報とが一致するか否かを判定する第１判定部と、
前記第２バージョン情報により表されるバージョンが、前記第１バージョン情報により表されるバージョンより後のバージョンであるか否かを判定する第２判定部と、
前記第１認証情報と前記第２認証情報とが一致すると判定され、かつ、前記第２バージョン情報により表されるバージョンが前記第１バージョン情報により表されるバージョンより後のバージョンであると判定された場合に、前記書き込みデータをデータ記憶部に記憶する記憶制御部と、
を備えることを特徴とする記憶装置。
【請求項４】
前記記憶制御部は、前記データ記憶部に前記書き込みデータを記憶した後、前記第２バージョン情報によって、前記バージョン記憶部に記憶された前記第１バージョン情報を更新すること、
を特徴とする請求項３に記載の記憶装置。
【請求項５】
記憶装置と接続される書き込み装置であって、
鍵を記憶する鍵記憶部と、
前記記憶装置に書き込む書き込みデータのバージョンを表すバージョン情報の入力を受付ける受付部と、
前記バージョン情報と、前記書き込みデータとから生成されるデータについて、前記鍵記憶部が記憶している鍵を用いて認証情報を計算する計算部と、
前記書き込みデータと前記バージョン情報と前記認証情報とを前記記憶装置に送信するデータ送信部と、
を備えることを特徴とする書き込み装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置および書き込み装置に関する。
【背景技術】
【０００２】
ＰＣ、タブレットＰＣおよびスマートフォンなどのデバイスにおいて、ＤＲＭ（Digital  Rights  Management：著作権保護管理機能）などを実装する場合、セキュリティの確保が重要となる。ＯＳ（オペレーティングシステム）やＢＩＯＳ（Basic  Input／Output  System）などのシステムプログラムが改ざんされていた場合、ＤＲＭ機能は意味を持たない。そのようなシステムプログラムの下でＤＲＭ機能を実現するプログラムが動作している場合、ＤＲＭが定義するデータの保護を無効化して、自由に出力したり読み書きしたりすることができるからである。
【０００３】
システムプログラムの改ざんを防ぐためには、ディスクや不揮発性メモリの書き込みを防止することが重要である。システムプログラムを改ざんする攻撃者は、一般に、システムプログラムのデータやパラメータに永続的な書き変えを行うことを試みる。システムプログラムのセキュリティを解除するには、システムプログラムのデータやパラメータを書き変えた後に、システムを再立ち上げする必要があるからである。
【０００４】
ディスクや不揮発性メモリの書き変えを防止する技術の１つとして、ｅＭＭＣ（Embedded  MultiMediaCard）メモリにおけるＲＰＭＢ（Reply  Protected  Memory  Block）の技術が存在する。この技術では、ホスト（書き込み装置）とｅＭＭＣとが予め鍵（共有鍵）を共有しておく。ホストがｅＭＭＣにデータを書き込む際に、書きこむデータのＭＡＣ（Message  Authentication  Code：メッセージ認証コード）を、共有鍵を用いて計算し、書き込みデータにＭＡＣを付加してｅＭＭＣに送信する。ｅＭＭＣの側では、受信したデータの中の書き込みデータのＭＡＣを、ｅＭＭＣが保持する共有鍵を用いて計算する。次に、ｅＭＭＣは、受信データ中のＭＡＣと、ｅＭＭＣ自身が計算したＭＡＣ値とを比較する。両者が一致している場合に限り、ｅＭＭＣは受信データ中の書き込みデータを指定されたｅＭＭＣ内のアドレスに記録する。
【０００５】
書き込みデータに関するＭＡＣの値は、当該ｅＭＭＣと鍵を共有するホストだけが計算することができる。従って、ｅＭＭＣは、ＭＡＣをチェックすることによって、受信データが正しいホストから送信されたデータであることを確認した上で書き込みを行うことができる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】JEDEC  STANDARD：EMBEDDED  MULTI-MEDIA  CARD  （eMMC）,  ELECTRICAL  STANDARD  （4.5  Device），JESD84-B45，June  2011
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＲＰＭＢ技術をシステムプログラムの改ざん防止に利用する際には問題点がある。それは、ＲＰＭＢ技術では、システムプログラムのアップデートが保障されないことである。書き込みデータに付与されたＭＡＣ値さえ正しければｅＭＭＣは書き込み要求を受理する。従って、当該ｅＭＭＣに記録されたシステムプログラムのイメージを保存しておけば、後にシステムプログラムがアップデートされた後に、古いシステムプログラムのイメージを再度ｅＭＭＣに書き込んで、アップデートを無効にすることが可能である。
【課題を解決するための手段】
【０００８】
実施形態の記憶装置は、データ記憶部と鍵記憶部と乱数発生部と乱数送信部とデータ受信部と計算部と判定部と記憶制御部とを備える。データ記憶部はデータを記憶する。鍵記憶部は外部装置と共有する共有鍵を記憶する。乱数発生部は乱数を発生する。乱数送信部は乱数を外部装置に送信する。データ受信部は、書き込みデータと、乱数および書き込みデータに基づいて計算された第１認証情報とを外部装置から受信する。計算部は、書き込みデータと乱数とから生成されるデータについて共有鍵を用いて第２認証情報を計算する。判定部は第１認証情報と第２認証情報とが一致するか否かを判定する。記憶制御部は、第１認証情報と第２認証情報とが一致すると判定された場合に、書き込みデータをデータ記憶部に記憶する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の記憶装置のブロック図。
【図２】第１の実施形態の記憶装置の動作のフローチャート。
【図３】第１の実施形態の書き込み装置のブロック図。
【図４】第１の実施形態の書き込み装置の動作のフローチャート。
【図５】第２の実施形態の記憶装置のブロック図。
【図６】第２の実施形態の記憶装置の動作のフローチャート。
【図７】第２の実施形態の書き込み装置のブロック図。
【図８】第２の実施形態の書き込み装置の動作のフローチャート。
【図９】第１および第２の実施形態の装置のハードウェア構成図。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる記憶装置および書き込み装置の好適な実施形態を詳細に説明する。
【００１１】
（第１の実施形態）
第１の実施形態にかかる情報処理システムは、データを格納する記憶装置と、記憶装置にデータを書き込む書き込み装置（ホスト）とを含む。ＲＰＭＢ技術と同様、書き込み装置と記憶装置とは予め共有鍵を共有している。第１の実施形態にかかる情報処理システムでは、記憶装置が生成する乱数を用いてシステムプログラムを安全にアップデートする。
【００１２】
本実施形態の情報処理システムによるデータの書き込み処理の概要を以下に説明する。以下では書き込み装置から記憶装置に書き込むデータを書き込みデータという。書き込みデータとして上記のようなシステムプログラムなどを適用できるが、これに限られるものではない。
【００１３】
まず、記憶装置は生成した乱数を内部に保持する。書き込み装置は記憶装置から乱数を読み取り、当該乱数と書き込みデータとを結合したデータに関する認証情報であるＭＡＣ値を計算する。書き込み装置は、共有鍵を用いてＭＡＣ値を計算する。書き込み装置は、書き込みデータにＭＡＣ値を添えて、記憶装置に送る。記憶装置は、内部に保持する乱数と受信した書き込みデータを結合し、ＭＡＣ値を計算する。当該ＭＡＣ値が、書き込み装置から受信したＭＡＣ値と一致した場合に、指定されたアドレスに書き込みデータを記録する。ＭＡＣ値が一致しない場合、記憶装置は書き込み装置からの当該書き込み要求を受理しない。この方法によれば、書き込みデータのＭＡＣ値が有効であるのは一度限りとなる。従って、記憶装置への書き込みに成功したデータを保持していて、当該データを再度書き込もうとしても、書き込みは不可能である。
【００１４】
図１は、第１の実施形態の記憶装置１００の構成の一例を示すブロック図である。記憶装置１００は、データ記憶部１１０と、鍵記憶部１０５と、乱数発生部１０４と、乱数記憶部１０３と、乱数送信部１０１と、データ受信部１０２と、計算部１０７と、判定部１０８と、記憶制御部１０９と、制御部１０６と、を備えている。
【００１５】
データ記憶部１１０は、書き込み装置２００により書き込まれるデータ（書き込みデータ）を記憶する。データ記憶部１１０は、例えば不揮発メモリで構成される。
【００１６】
鍵記憶部１０５は、ＭＡＣ計算用の共有鍵を記憶する。この共有鍵は、記憶装置１００と書き込み装置２００との間で共有される鍵である。
【００１７】
乱数発生部１０４は、乱数を発生する。乱数記憶部１０３は、乱数発生部１０４により発生された乱数を記憶する。乱数送信部１０１は、乱数記憶部１０３が格納する乱数を記憶装置１００の外部に出力する。
【００１８】
データ受信部１０２は、記憶装置１００の外部から書き込みデータとＭＡＣ値とを受け取り、受け取った書き込みデータおよびＭＡＣ値を保持する。
【００１９】
計算部１０７は、書き込みデータと乱数記憶部１０３が格納する乱数とから生成されるデータについて、鍵記憶部１０５が格納する共有鍵を用いてＭＡＣ値を計算する。ＭＡＣ値の計算に用いるＭＡＣアルゴリズムとしては、ハッシュ関数を用いる方法（ＨＭＡＣ）などの従来から用いられているあらゆるアルゴリズムを適用できる。
【００２０】
判定部１０８は、計算部１０７が計算したＭＡＣ値と、データ受信部１０２が受信したＭＡＣ値と、を比較し、両者が一致するか否かを判定する。判定部１０８は、両者が一致した場合に限り書き込みデータを受理する。
【００２１】
記憶制御部１０９は、判定部１０８が受理した書き込みデータをデータ記憶部１１０に記録する。
【００２２】
制御部１０６は、記憶装置１００全体を制御する。
【００２３】
次に、このように構成された第１の実施形態にかかる記憶装置１００による記憶処理について図２を用いて説明する。図２は、第１の実施形態の記憶装置１００の動作の一例を示すフローチャートである。
【００２４】
データ受信部１０２は、書き込み装置２００から書き込み要求を受信する（ステップＳ１１）。乱数発生部１０４は、乱数を発生し、発生した乱数を乱数記憶部１０３に記憶する（ステップＳ１２）。乱数送信部１０１は、乱数記憶部１０３に記憶された乱数を読み取り、読み取った乱数を書き込み装置２００に送信する（ステップＳ１３）。データ受信部１０２は、書き込み装置２００から、書き込みデータとＭＡＣ値とを受信し（ステップＳ１４）、それらを保持する。
【００２５】
その後、計算部１０７は、データ受信部１０２から書き込みデータを読み出す。また、計算部１０７は、乱数記憶部１０３から乱数を読み出し、鍵記憶部１０５からＭＡＣ計算用の共有鍵を読み出す。計算部１０７は、それらを用いて、次の（１）式のようにＭＡＣの値Ｍを計算する（ステップＳ１５）。
Ｍ＝ＭＡＣ（Ｋ，Ｄ｜｜Ｒ）  ・・・（１）
【００２６】
ここに、ＫはＭＡＣ計算用の共有鍵、Ｄは書き込みデータ、Ｒは乱数値である。Ｄ｜｜ＲはＤとＲとを結合したデータを示す。また、ＭＡＣ（Ｋ，Ｄ｜｜Ｒ）はＫを用いてＤ｜｜ＲのＭＡＣ値を計算する関数である。この関数により得られたＭＡＣ値をＭとしている。
【００２７】
なお、Ｄ｜｜Ｒが、書き込みデータＤと乱数Ｒとから生成されるデータに相当する。書き込みデータＤと乱数Ｒとから生成されるデータは、ＤとＲとを結合したデータに限られるものではない。
【００２８】
次に判定部１０８は、計算部１０７からＭＡＣ値Ｍを読み出し、また、データ受信部１０２からＭＡＣ値（以下、ＭＡＣ値Ｍ’とする）を読み出す。そして、判定部１０８は、読み出したＭとＭ’とを比較し、両者が一致するか否かを判定する（ステップＳ１６）。
【００２９】
ＭとＭ’とが一致しなければ（ステップＳ１６：Ｎｏ）、判定部１０８は、書き込みデータを受理しない。その場合、記憶装置１００は動作を終了する。一方、ＭとＭ’とが一致する場合（ステップＳ１６：Ｙｅｓ）、判定部１０８は、書き込みデータを受理する。その場合、記憶制御部１０９は、データ受信部１０２から書き込みデータを読み取り、当該書き込みデータをデータ記憶部１１０に記憶する（ステップＳ１７）。
【００３０】
図３は、第１の実施形態の書き込み装置２００の構成の一例を示すブロック図である。書き込み装置２００は、鍵記憶部２０３と、乱数受信部２０１と、計算部２０５と、データ送信部２０２と、書き込みデータ記憶部２０４と、制御部２０６と、を備えている。
【００３１】
鍵記憶部２０３は、ＭＡＣ計算用の共有鍵を記憶する。この共有鍵は、記憶装置１００と書き込み装置２００との間で共有される鍵である。
【００３２】
乱数受信部２０１は、記憶装置１００の外部から乱数を受信する。計算部２０５は、乱数受信部２０１が受信したデータと書き込みデータとから生成されるデータについて、鍵記憶部２０３が格納する共有鍵を用いてＭＡＣ値を計算する。
【００３３】
データ送信部２０２は、書き込みデータと計算部２０５が計算したＭＡＣ値とを書き込み装置２００の外部に送信する。
【００３４】
書き込みデータ記憶部２０４は、書き込みデータを保持する。制御部２０６は、書き込み装置２００全体を制御する。
【００３５】
次に、このように構成された第１の実施形態にかかる書き込み装置２００による書き込み処理について図４を用いて説明する。図４は、第１の実施形態の書き込み装置２００の動作の一例を示すフローチャートである。
【００３６】
書き込みデータを書き込む際、書き込み装置２００のデータ送信部２０２は、記憶装置１００に対して書き込み要求を発行する（ステップＳ２１）。書き込み要求に応じて記憶装置１００から乱数が送信されるので、乱数受信部２０１が当該乱数を受信して保持する（ステップＳ２２）。計算部２０５は、書き込みデータ記憶部２０４から書き込みデータを受け取り、乱数受信部２０１から乱数を受け取る。計算部２０５は、鍵記憶部２０３の共有鍵を用いて、書き込みデータと乱数とを結合したデータのＭＡＣ値Ｍを、上記（１）式を用いて計算する（ステップＳ２３）。
【００３７】
その後、データ送信部２０２は、書き込みデータ記憶部２０４から書き込みデータＤを受け取り、計算部２０５からＭＡＣ値Ｍを受け取る（ステップＳ２４）。データ送信部２０２は、書き込みデータＤとＭＡＣ値Ｍとを、記憶装置１００に送信する（ステップＳ２５）。
【００３８】
このように、第１の実施形態にかかる情報処理システムでは、記憶装置が生成する乱数を用いて計算したＭＡＣ値により正当であると認証された場合にのみ書き込みデータを記憶装置に記憶する。乱数を用いるため、書き込みデータのＭＡＣ値が有効であるのは一度限りとなる。従って、記憶装置への書き込みに成功したデータを保持していて、当該データを再度書き込もうとしても、書き込みは不可能である。すなわち、システムプログラムなどのデータを安全にアップデート可能となる。
【００３９】
（第２の実施形態）
第２の実施形態にかかる情報処理システムは、バージョン番号を用いてシステムプログラムを安全にアップデートする。本実施形態の情報処理システムによるデータの書き込み処理の概要を以下に説明する。
【００４０】
書き込み装置は、システムプログラムなどの書き込みデータのバージョンを表すバージョン情報（バージョン番号）を、書き込みデータと共に記憶装置に送信する。その際、書き込み装置は書き込みデータとバージョン番号とを結合したデータに関するＭＡＣ値を計算し、当該ＭＡＣ値も書き込みデータとバージョン番号に付随させて送信する。ＭＡＣ値の計算には、記憶装置と共有している共有鍵を用いる。記憶装置は現在のバージョン番号を保持している。記憶装置は、書き込みデータとバージョン番号のＭＡＣを確認した後、バージョン番号が、記憶装置が保持する現在のバージョン番号より真に大きい場合に限り、指定アドレスにデータを書き込む。書き込みデータのバージョン番号が現在のバージョン番号より大きくない場合、記憶装置は書き込み装置からの当該書き込み要求を受理しない。この方法では、書き込み装置は乱数を受け取る必要がない。
【００４１】
なお、上記説明では、バージョン番号は真に単調増加することを前提とした。しかし、「古くないデータ」を受け入れても良い場合は、記憶装置は、書き込みデータに付随するバージョン番号が、書き込み先アドレスのバージョン番号と同一である場合にも、書き込み先アドレスへの書き込みを行う。さらに、バージョン番号は単調減少であっても良い。また、書き込み装置と記憶装置との間で予め決められているルールによって、次のバージョン番号が計算できるように構成しても良い。例えば、関数ｆを、書き込み装置と記憶装置との間で共有する。記憶装置が現在保持しているバージョン番号をＶｃとする。この時、次のバージョン番号ＶｎをＶｎ＝ｆ（Ｖｃ）と定める。記憶装置は、バージョン番号Ｖｎが付随する書き込みデータだけを受理する。
【００４２】
図５は、第２の実施形態の記憶装置１００−２の構成の一例を示すブロック図である。図５に示すように、記憶装置１００−２は、データ記憶部１１０と、鍵記憶部１０５と、乱数送信部１０１と、データ受信部１０２−２と、計算部１０７−２と、バージョン記憶部１１１−２と、第１判定部１１２−２と、第２判定部１１３−２と、記憶制御部１０９−２と、制御部１０６と、を備えている。第１の実施形態の記憶装置１００と同様の構成については、図１と同一符号を付し、ここでの説明は省略する。
【００４３】
バージョン記憶部１１１−２は、書き込みデータのバージョン番号を格納する。なお、記憶装置１００−２を初期化した直後などのように、まだデータが何も書き込まれていない時点では、バージョン記憶部１１１−２は、最も小さいバージョン番号、例えば０を格納する。
【００４４】
データ受信部１０２−２は、記憶装置１００−２の外部から書き込みデータとバージョン番号とＭＡＣ値とを受け取り、それらのデータを保持する。
【００４５】
計算部１０７−２は、書き込みデータとバージョン番号とから生成されるデータについて、鍵記憶部１０５が格納する共有鍵を用いてＭＡＣ値を計算する。
【００４６】
第１判定部１１２−２は、計算部１０７−２が計算したＭＡＣ値とデータ受信部１０２−２が受信したＭＡＣ値とを比較し、両者が一致するか否かを判定する。第１判定部１１２−２は、両者が一致した場合に限り書き込みデータを受理する。
【００４７】
第２判定部１１３−２は、データ受信部１０２−２が受信したバージョン番号とバージョン記憶部１１１−２が格納するバージョン番号とを比較し、前者が後者より後のバージョンであるか否かを判定する。バージョン番号が真に単調増加する場合は、第２判定部１１３−２は、データ受信部１０２−２が受信したバージョン番号とバージョン記憶部１１１−２が格納するバージョン番号とを比較し、前者が後者より大であるか否かを判定する。第２判定部１１３−２は、前者が後者より大である場合に限り書き込みデータを受理する。
【００４８】
記憶制御部１０９−２は、第１判定部１１２−２と第２判定部１１３−２が共に書き込みデータを受理した場合に限り書き込みデータをデータ記憶部１１０に記録する。
【００４９】
次に、このように構成された第２の実施形態にかかる記憶装置１００−２による記憶処理について図６を用いて説明する。図６は、第２の実施形態の記憶装置１００−２の動作の一例を示すフローチャートである。
【００５０】
まず、データ受信部１０２−２が、書き込み装置２００−２から書き込みデータ、バージョン番号、およびＭＡＣ値を受信する（ステップＳ３１）。計算部１０７−２は、データ受信部１０２−２から書き込みデータとバージョン番号とを受け取る。さらに計算部１０７−２は、鍵記憶部１０５からＭＡＣ計算用の共有鍵を読み出す。計算部１０７−２は、共有鍵を用いて、書き込みデータとバージョン番号とを結合したデータのＭＡＣ値を計算する（ステップＳ３２）。すなわち、計算部１０７−２は以下の（２）式のようにＭＡＣ値Ｍを計算する（ステップＳ３２）。
Ｍ＝ＭＡＣ（Ｋ，Ｄ｜｜Ｖｎ）  ・・・（２）
【００５１】
ここに、Ｋは鍵記憶部１０５が格納している共有鍵、Ｄは書き込みデータ、Ｖｎは書き込み装置２００−２が送信しデータ受信部１０２−２が保持しているバージョン番号である。
【００５２】
次に、第１判定部１１２−２は、書き込み装置２００−２が送信しデータ受信部１０２−２が保持しているＭＡＣ値Ｍ’を読み出す。第１判定部１１２−２は、ＭとＭ’とを比較し、両者が一致するか否かを判定する（ステップＳ３３）。両者が一致した場合（ステップＳ３３：Ｙｅｓ）、第１判定部１１２−２は、書き込みデータを受理する。両者が一致しない場合（ステップＳ３３：Ｎｏ）、記憶装置１００−２は、書き込みデータを破棄して動作を停止する。
【００５３】
第１判定部１１２−２が書き込みデータを受理した場合、第２判定部１１３−２は、バージョン記憶部１１１−２からバージョン番号Ｖｃを読み出す。また、第２判定部１１３−２は、データ受信部１０２−２が保持しているバージョン番号Ｖｎを読み出す。第２判定部１１３−２は、ＶｎとＶｃとを比較し、ＶｎがＶｃより大きいか否かを判定する（ステップＳ３４）。
【００５４】
ＶｎがＶｃより大きくない場合（ステップＳ３４：Ｎｏ）、第２判定部１１３−２は、書き込みデータを受理しない。この場合、データ受信部１０２−２の書き込みデータは破棄され、記憶装置１００−２は動作を停止する。
【００５５】
ＶｎがＶｃより大きい（Ｖｎ＞Ｖｃ）場合（ステップＳ３４：Ｙｅｓ）、第２判定部１１３−２は、書き込みデータを受理する。第１判定部１１２−２と第２判定部１１３−２とが共にデータを受理した場合、記憶制御部１０９−２は、データ受信部１０２−２から書き込みデータを読み出し、当該書き込みデータをデータ記憶部１１０に記録する（ステップＳ３５）。
【００５６】
記憶制御部１０９−２は、データ受信部１０２−２が保持しているバージョン番号を読み出し、当該バージョン番号によってバージョン記憶部１１１−２が格納するバージョン番号を上書き更新する。例えば、システムプログラムのアップデートの際など、システムプログラムのバージョン番号をバージョン記憶部１１１−２に格納しておく。これにより、システムプログラムのロールバック（後戻り）を効果的に防止することができる。
【００５７】
図７は、第２の実施形態の書き込み装置２００−２の構成の一例を示すブロック図である。書き込み装置２００−２は、鍵記憶部２０３と、バージョン受付部２０１−２と、計算部２０５−２と、データ送信部２０２−２と、書き込みデータ記憶部２０４と、制御部２０６と、を備えている。第１の実施形態の書き込み装置２００と同様の構成については、図３と同一符号を付し、ここでの説明は省略する。
【００５８】
バージョン受付部２０１−２は、書き込みデータのバージョン番号の入力を受付け、当該バージョン番号を保持する。計算部２０５−２は、書き込みデータと入力されたバージョン番号とから生成されるデータについて、鍵記憶部２０３が格納する共有鍵を用いてＭＡＣ値を計算する。
【００５９】
データ送信部２０２−２は、書き込みデータとバージョン番号と計算部２０５−２が計算したＭＡＣ値とを、書き込み装置２００−２の外部に送信する。
【００６０】
次に、このように構成された第２の実施形態にかかる書き込み装置２００−２による書き込み処理について図８を用いて説明する。図８は、第２の実施形態の書き込み装置２００−２の動作の一例を示すフローチャートである。
【００６１】
まず、バージョン受付部２０１−２が、バージョン番号の入力を受付ける（ステップＳ４１）。入力されるバージョン番号として、書き込み対象である記憶装置１００−２に対して最後に書き込んだバージョン番号より大きいバージョン番号が選択される。
【００６２】
計算部２０５−２は、書き込みデータ記憶部２０４から書き込みデータＤを受け取り、バージョン受付部２０１−２からバージョン番号Ｖｎを受け取る。計算部２０５−２は、鍵記憶部１０５の共有鍵Ｋを用いて、書き込みデータとバージョン番号とを結合したデータのＭＡＣ値Ｍを、上記（２）式のように計算する（ステップＳ４２）。
【００６３】
その後、データ送信部２０２−２は、書き込みデータ記憶部２０４から書き込みデータＤを受け取り、バージョン受付部２０１−２からバージョン番号Ｖｎを受け取り、計算部２０５−２からＭＡＣ値Ｍを受け取る（ステップＳ４３）。データ送信部２０２−２は、書き込みデータＤ、バージョン番号Ｖｎ、および、ＭＡＣ値Ｍを記憶装置に送信する（ステップＳ４４）。
【００６４】
このように、第２の実施形態にかかる情報処理システムでは、書き込みデータのバージョン番号が、既に書き込まれているデータのバージョン番号より大きい場合にのみ書き込みデータを記憶装置に記憶する。記憶装置への書き込みに成功したデータを保持していて、当該データを再度書き込もうとしても、バージョン番号が現在のバージョン番号より大きくないため、書き込みは不可能である。すなわち、システムプログラムなどのデータを安全にアップデート可能となる。
【００６５】
なお、ここではバージョン番号は数値であり、２つのバージョンの間には自明な大小関係が存在する。あるバージョン番号Ｖ１が別のバージョン番号Ｖ２より小さい時、バージョン番号Ｖ２はバージョン番号Ｖ１より「後の」バージョンであるということがある。バージョン番号は一般には全順序集合の要素である。全順序集合の定義は、例えば、日本数学会編集「岩波数学辞典第三版」に記載されている。バージョン番号の全順序集合における順序関係を≦で表す。バージョンＶ２がバージョンＶ１より大である（Ｖ１＜Ｖ２）とは、Ｖ１≦Ｖ２であってＶ１≠Ｖ２であることをいう。
【００６６】
以上説明したとおり、第１から第２の実施形態によれば、記憶装置にデータを書き込む場合のセキュリティを向上させることができる。例えば、記憶装置に記憶するシステムプログラムなどのデータのアップデートを保障することができる。
【００６７】
次に、第１および第２の実施形態にかかる装置（記憶装置および書き込み装置）のハードウェア構成について図９を用いて説明する。図９は、第１および第２の実施形態にかかる装置のハードウェア構成を示す説明図である。
【００６８】
第１および第２の実施形態にかかる装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（RandoＭＡＣcess  Memory）５３などの記憶部と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【００６９】
第１および第２の実施形態にかかる装置で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【００７０】
第１および第２の実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成しても良い。
【００７１】
さらに、第１および第２の実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第１および第２の実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００７２】
第１および第２の実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した装置の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１００、１００−２  記憶装置
１０１  乱数送信部
１０２  データ受信部
１０３  乱数記憶部
１０４  乱数発生部
１０５  鍵記憶部
１０６  制御部
１０７  計算部
１０８  判定部
１０９  記憶制御部
１１０  データ記憶部
１１１  バージョン記憶部
１１２−２  第１判定部
１１３−２  第２判定部
２００、２００−２  書き込み装置
２０１  乱数受信部
２０１−１  バージョン受付部
２０２  データ送信部
２０３  鍵記憶部
２０４  データ記憶部
２０５  計算部
２０６  制御部
【図１】
2013069250.tif 000003
【図２】
2013069250.tif 000004
【図３】
2013069250.tif 000005
【図４】
2013069250.tif 000006
【図５】
2013069250.tif 000007
【図６】
2013069250.tif 000008
【図７】
2013069250.tif 000009
【図８】
2013069250.tif 000010
【図９】
2013069250.tif 000011