(57)【特許請求の範囲】
【請求項１】
デジタルコンテンツを含むデジタル情報を記録するドライブ部と、
前記ドライブ部に対するデジタル情報の記録および読み出しを制御するホスト部と、を備え、
前記ホスト部は、
サーバとの通信を行うネットワーク処理部と、
ブートプログラムに先だって実行されるシャドウ・ブートプログラムの実行が可能か否かを判定するシャドウ判定部と、
前記シャドウ判定部により実行可能と判定された場合に、前記ドライブ部から前記シャドウ・ブートプログラムを読み込むシャドウ読み込み部と、
前記シャドウ・ブートプログラムを実行するシャドウ実行部と、
前記シャドウ・ブートプログラムの処理手順に従って、前記サーバとの認証を行うサーバ認証部と、
前記サーバとの認証に成功した場合に、前記ドライブ部に前記ドライブ部のアンロックに使用するパスワードを送信するパスワード送信部と、を備え、
前記ドライブ部は、
前記シャドウ・ブートプログラムを格納するシャドウ・ブートプログラム格納部と、
前期ブートプログラムを格納するブートプログラム格納部と、
任意のデジタルデータを含むユーザデータを格納するユーザデータ格納部と、
前記ホスト部から送信されたパスワードが予め登録されたパスワードと一致するか否かを判定するパスワード照合部と、
前記パスワード照合部にて一致すると判定されると、前記ユーザデータ格納部のロックを解除してアクセスを許可するロック制御部と、を備えることを特徴とする情報記録装置。
【請求項２】
前記ホスト部は、
前記パスワードを生成するパスワード生成部と、
前記シャドウ・ブートプログラムの実行時に、コード情報およびデータが展開される主メモリと、
前記シャドウ・ブートプログラムが特定命令を実行した場合における前記主メモリの特定位置または特定範囲の値、あるいは前記サーバ認証部による認証成功後に前記サーバから取得した値を用いて、前記パスワードを暗号化した暗号化パスワードを生成する暗号処理部と、を有し、
前記ロック制御部は、前記パスワードを用いて前記ユーザデータ格納部をロックすることを特徴とする請求項１に記載の情報記録装置。
【請求項３】
前記ホスト部は、
前記サーバ認証部による認証成功後に前記サーバから前記パスワードを取得するパスワード取得部と、
前記シャドウ・ブートプログラムの実行時に、コード情報およびデータが展開される主メモリと、
前記シャドウ・ブートプログラムが特定命令を実行した場合における前記主メモリの特定位置または特定範囲の値、あるいは前記サーバ認証部による認証成功後に前記サーバから取得した値を用いて、前記パスワードを暗号化した暗号化パスワードを生成する暗号処理部と、を有し、
前記ロック制御部は、前記パスワードを用いて前記ユーザデータ格納部をロックすることを特徴とする請求項１に記載の情報記録装置。
【請求項４】
前記サーバ認証部による認証成功後に、前記シャドウ・ブートプログラムが前記特定命令を実行した場合における前記主メモリの特定位置または特定範囲の値、あるいは前記サーバ認証部による認証成功後に前記サーバから取得した値を用いて、前記前記暗号化パスワードを復号する復号処理部を備え、
前記ロック制御部は、前記復号処理部で復号されたパスワードが前記パスワード照合部にて一致すると判定されると、前記ユーザデータ格納部のロックを解除してアクセスを許可することを特徴とする請求項２に記載の情報記録装置。
【請求項５】
前記ユーザデータ格納部は、複数のデータ領域に分かれており、
前記暗号処理部は、前記複数のデータ領域のそれぞれごとに、固有の前記暗号化パスワードを生成し、
前記ロック制御部は、前記複数のデータ領域のそれぞれごとに、ロックおよびアンロックの制御を行うことを特徴とする請求項２に記載の情報記録装置。
【請求項６】
プログラムを記録するドライブ部と、
プログラムを実行するホスト部と、を備え、
前記ホスト部は、
ブートプログラムに先だって実行されるシャドウ・ブートプログラムの実行が可能か否かを判定するシャドウ判定部と、
前記シャドウ判定部により実行可能と判定された場合に、前記ドライブ部から前記シャドウ・ブートプログラムを読み込むシャドウ読み込み部と、
暗号化されたプログラム鍵を格納する暗号化データ蓄積部と、
固有の鍵を格納する秘密情報格納部と、
前記シャドウ・ブートプログラムは、暗号化されていない平文プログラムと、暗号化された暗号化プログラムとを含み、
前記シャドウ・ブートプログラムの平文プログラムにて特定の命令が発行されると、前記シャドウ・ブートプログラムを展開した主メモリの特定位置または特定範囲のハッシュ値を計算し、前記秘密情報格納部に格納するハッシュ計算部と、
前記秘密情報格納部に格納したハッシュ値と、前記秘密情報格納部に格納した前記固有の鍵を用いて前記暗号化データ蓄積部に格納された前記暗号化された秘密鍵を復号する復号処理部と、
前期復号処理部で復号した復号した前記秘密鍵を使い、前記シャドウ・ブートプログラムの前記暗号化された暗号化プログラムを復号するプログラム復号部と、
前記シャドウ・ブートプログラムを実行する演算処理部と、を有することを特徴とする情報記録装置。
【請求項７】
前記シャドウ・ブートプログラム格納部は、
前記ドライブ部に元からインストール済で最初に実行される初期プログラムを格納する初期プログラム格納部と、
所定の条件を満たしたときに前記サーバからダウンロードされて前記初期プログラムに引き続いて実行されるダウンロードプログラムを格納するダウンロード格納部と、を有し、
前記ユーザデータ格納部は、前記初期プログラムに対応したユーザデータを格納する第１のデータ領域と、前記ダウンロードプログラムに対応したユーザデータを格納する第２のデータ領域とを有し、
前記ロック制御部は、前記シャドウ実行部が前記初期プログラムを実行した結果、前記所定の条件を満たす場合には前記第１のデータ領域のロックを解除し、その後に前記シャドウ実行部が前記ダウンロードプログラムを実行し、前記サーバとの認証に成功した場合には前記第２のデータ領域のロックを解除することを特徴とする請求項１に記載の情報記録装置。
【請求項８】
前記ホスト部は、前記シャドウ・ブートプログラムの実行時に、コード情報およびデータが展開される主メモリを有し、
前記ロック制御部は、前記シャドウ実行部が前記初期プログラムを実行した結果、前記所定の条件を満たす場合には前記第１のデータ領域のロックを解除し、その後に前記シャドウ実行部が前記ダウンロードプログラムを実行し、前記主メモリの特定位置または特定範囲の値が期待値と一致し、かつ前記サーバとの認証に成功した場合には前記第２のデータ領域のロックを解除することを特徴とする請求項７に記載の情報記録装置。
【請求項９】
前記ドライブ部は、オペレーティング・システムのプログラムを格納するＯＳ格納部を有し、
前記ロック制御部は、前記シャドウ実行部が前記初期プログラムを実行した結果、前記所定の条件を満たす場合には、前記ＯＳ格納部および前記第１のデータ領域のロックを解除することを特徴とする請求項７に記載の情報記録装置。
【請求項１０】
デジタル情報を記録するドライブ部と、
前記ドライブ部に対するデジタル情報の記録および読み出しを制御するホスト部と、を備え、
前記ホスト部は、
サーバとの通信を行うネットワーク処理部と、
ブートプログラムに先だって実行されるシャドウ・ブートプログラムの実行が可能か否かを判定するシャドウ判定部と、
前記シャドウ判定部により実行可能と判定された場合に、前記ドライブ部から前記シャドウ・ブートプログラムを読み込むシャドウ読み込み部と、
前記シャドウ・ブートプログラムを実行する演算処理部と、
暗号化された秘密鍵を格納する秘密鍵格納部と、
前記演算処理部により生成された暗号情報を用いて前記秘密鍵を復号する秘密鍵復号部と、
前記秘密鍵復号部で復号された前記秘密鍵を用いて、前記サーバとの認証を行うサーバ認証部と、を有し、
前記演算処理部は、前記シャドウ・ブートプログラムにて特定の命令が発行されると、前記シャドウ・ブートプログラムを展開した主メモリの特定位置または特定範囲の値を用いて前記暗号情報を生成することを特徴とする情報記録装置。
【請求項１１】
前記ドライブ部は、前記シャドウ・ブートプログラムを格納するシャドウ・ブートプログラム格納部と
前記ブートプログラムを格納するブートプログラム格納部とを有し、
前記シャドウ・ブートプログラムは、暗号化されていない平文プログラムと、暗号化された暗号化プログラムとを含み、
前記ホスト部は、前記暗号情報を用いて前記暗号化プログラムを復号するプログラム復号部を有することを特徴とする請求項１０に記載の情報記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ネットワークサービスや著作権保護の必要なコンテンツ等を保存する情報記録装置に関する。
【背景技術】
【０００２】
近年、ＨＤＤ（ハードディスクドライブ）やＳＳＤ（Solid State Drive）などのストレージデバイスそのものに暗号化機能を持たせ、ストレージデバイスに蓄積するデータを暗号化して保存する手法や、ＰＩＮコード(パスワード)をストレージデバイスに登録しておき、正しいＰＩＮコードを入力した場合のみストレージデバイスへのアクセスを許可する手法など、種々の提案がなされている（例えば、非特許文献１参照）。【０００３】
一方、従来のＰＣシステムでは、コンテンツ配信用のアプリケーションをサービス事業者あるいはサービスごとにインストールし、そのアプリケーションの中に秘密情報を含ませておくか、あるいは秘密情報を格納するためのアルゴリズムを含ませて秘密情報は暗号化してファイルとして保存するといった手法が一般的である(例えば、特許文献１)。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】TCG Storage Architecture Core Specification、http://www.trustedcomputinggroup.org/developers/storage/specifications
【特許文献】
【０００５】
【特許文献１】米国特許公報No.7559091
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ソフトウェアはＣＰＵで実行可能な形式でなければならないため、１ステップずつ命令を解析していけば秘密情報を取得できてしまう。【０００７】
また、従来の種々の電子機器では、機器の性能上の制約から、サービス固有のアプリケーションをユーザが追加でインストールできるようにすることは一般的には難しい。そこで、電子機器の工場出荷後に、追加的にサービス事業者のサービスに対応した機器とするために、サービスプロバイダに依存せずに電子機器のプラットホームとしてサービス事業者の情報を適切に保護する仕組みを備えていることが望ましい。もちろんＰＣシステムにおいても、サービス事業者やサービスに関わらず、共通で適用可能なプラットホームを利用できれば、電子機器を安価に製造することができる。【０００８】
本発明の一観点は、デジタル情報の不正利用を確実に防止し、ユーザの使い勝手を損なわずに、デジタル情報の著作権保護を図りつつデジタル情報を有効利用可能な情報記録装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一態様では、デジタルコンテンツを含むデジタル情報を記録するドライブ部と、
前記ドライブ部に対するデジタル情報の記録および読み出しを制御するホスト部と、を備え、
前記ホスト部は、
サーバとの通信を行うネットワーク処理部と、
ブートプログラムに先だって実行されるシャドウ・ブートプログラムの実行が可能か否かを判定するシャドウ判定部と、
前記シャドウ判定部により実行可能と判定された場合に、前記ドライブ部から前記シャドウ・ブートプログラムを読み込むシャドウ読み込み部と、
前記シャドウ・ブートプログラムを実行するシャドウ実行部と、
前記シャドウ・ブートプログラムの処理手順に従って、前記サーバとの認証を行うサーバ認証部と、
前記サーバとの認証に成功した場合に、前記ドライブ部に前記ドライブ部のアンロックに使用するパスワードを送信するパスワード送信部と、を備え、
前記ドライブ部は、
前記シャドウ・ブートプログラムを格納するシャドウ・ブートプログラム格納部と、
前期ブートプログラムを格納するブートプログラム格納部と、
任意のデジタルデータを含むユーザデータを格納するユーザデータ格納部と、
前記ホスト部から送信されたパスワードが予め登録されたパスワードと一致するか否かを判定するパスワード照合部と、
前記パスワード照合部にて一致すると判定されると、前記ユーザデータ格納部のロックを解除してアクセスを許可するロック制御部と、を備えることを特徴とする情報記録装置が提供される。
【発明の効果】
【００１０】
本発明の一観点によれば、デジタル情報の不正利用を確実に防止でき、ユーザの使い勝手も損なうことなく、デジタル情報の著作権保護を図りつつ、デジタル情報の有効活用を図ることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係る情報処理システムの第１の実施形態の全体構成を示すブロック図。
【図２】図１のデータ記録装置３の内部構成の一例を示すブロック図。
【図３】MBR Shadow格納部３５に格納されるプログラムの処理手順を示すフローチャート。
【図４】第２の実施形態によるデータ記録装置３の内部構成の一例を示すブロック図。
【図５】秘密情報格納部１５の内部構成の一例を示すブロック図。
【図６】公開鍵方式を使う場合の秘密情報格納部１５ａの内部構成の一例を示す図。
【図７】Shadowプログラムが行うパスワード設定フェーズの処理手順の一例を示すフローチャート。
【図８】Shadowプログラムが行うアンロックフェーズの処理手順の一例を示すフローチャート。
【図９】サーバ１からパスワードを入手する場合におけるShadowプログラムの処理手順の一例を示すフローチャート。
【図１０】Shadowプログラムが行うパスワード設定フェーズの処理手順の一例を示すフローチャート。
【図１１】Shadowプログラムが行うパスワード設定フェーズの処理手順の他の一例を示すフローチャート。
【図１２】サーバ１から取得した値を状態管理部４５のレジスタに記憶した場合に対応するアンロックフェーズの処理手順の一例を示すフローチャート。
【図１３】第３の実施形態におけるデータ記録装置３の概略構成を示すブロック図。
【図１４】Shadowプログラムが行うアンロックフェーズの処理手順の一例を示すフローチャート。
【図１５】図１４の処理に、初期インストール用格納部３５ａに格納されたプログラムが確実に実行されたか否かを確認する処理を追加した一例を示すフローチャート。
【図１６】第４の実施形態におけるデータ記録装置３の概略構成を示すブロック図。
【図１７】特殊命令Ｘを実行可能なプロセッサ２６ａの内部構成の一例を示すブロック図。
【図１８】第４の実施形態に係る秘密情報格納部１５ｂの概略構成の一例を示すブロック図。
【図１９】（ａ）は公開鍵方式を採用する場合の認証用秘密鍵の設定フェーズの処理手順の一例を示すフローチャート、（ｂ）は共通鍵方式を採用する場合の認証用秘密鍵の設定フェーズの処理手順の一例を示すフローチャート。
【図２０】第４の実施形態におけるShadowプログラムの処理手順の一例を示すフローチャート。
【図２１】アンロック制御用のパスワードを保護可能な第４の実施形態におけるデータ記録装置３の概略構成の一例を示すブロック図。
【図２２】第４の実施形態におけるShadowプログラムが行うアンロックフェーズの処理手順の一例を示すフローチャート。
【図２３】第５の実施形態におけるShadowプログラムの構造の一例を示す図。
【図２４】第５の実施形態におけるShadowプログラムが行う復号処理手順の一例を示すフローチャート。
【図２５】次世代電力網の概略構成の一例を示すブロック図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の実施形態について詳細に説明する。
【００１３】
（第１の実施形態）
以下、図面を参照しながら、本発明による情報記録装置の一実施形態を説明する。
【００１４】
図１は本発明に係る情報処理システムの第１の実施形態の全体構成を示すブロック図である。図１の情報処理システムは、サーバ１（例えばサービス提供サーバＡ，Ｂ）からインターネット２を介してデジタル情報の受信および蓄積が可能なデータ記録装置３を備えている。なお、図１において、インターネット２に接続されたデータ記録装置３およびサーバ１は、不図示のルータ機器等に接続されていてもよい。
【００１５】
データ記録装置３とサーバ１は、物理レイヤおよびリンクレイヤとして、IEEE802.11に準拠した無線LAN、イーサネット(登録商標)などの種々の形態を採用可能である。ネットワークレイヤとして、インターネット２プロトコル(IP)を使用する場合は、IPv4でもよいし、IPv6でもよい。
【００１６】
ここで、デジタル情報とは、例えばMPEG2やMPEG4のような動画データや、MP3のような音声データ、またはテキストデータや画像データ等のデジタル化されたコンテンツを指し、ユーザの所有するクレジットカードの番号などの個人情報を含んでもよい。
【００１７】
本実施の形態によるデータ記録装置３は、主としてドライブ部４とホスト部５を備える。ドライブ部４はハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）のようなデジタル情報を記録する装置を想定しており、その内部にはデータ記録部６とアクセス制御部７が設けられる。一方、ホスト部５は、不図示のＣＰＵやメモリ、通信インターフェースなどデータを処理する機能と、サービス提供サーバ１と通信する機能を持つ。なお、ホスト部５はＩＤＥやＳＣＳＩ、ＵＳＢなどのバスインターフェースによってドライブ部４と接続されている。
【００１８】
データ記録部６は、ＯＳや、動画データなどのＡＶデータ、ユーザの生成したデータ、サービス提供サーバ１から受信したデータなどのデジタル情報を格納する処理を行う。ホスト部５、より正確にはホスト部５で処理されるＯＳはそれらのデータとそのデータが格納されたアドレスを管理する。
【００１９】
ホスト部５がデータ記録部６からデータを読み込む際にはデータ記録部６のアドレス(Logical Block Address)を指定し、データ記録部６は指定されたアドレス（ＬＢＡ）の領域に格納されたデータをホスト部５に送信する。データ記録部６はホスト部５から複数の独立した領域(パーティション)として見えるように論理的に分割されていてもよい。
【００２０】
図１の例では、データ記録部６は、ＭＢＲ格納部８、ＯＳ格納部９、ユーザデータ格納部１０に分割して構成されている。ＭＢＲ格納部８はＭＢＲ（Master Boot Record）とよばれる起動時に実行されるプログラム（ブートプログラム）が格納される領域である。ＯＳ格納部９とはＯＳを格納する処理部である。ユーザデータ格納部１０とは、ＡＶデータやユーザの生成したデータ、サービス提供サーバ１から受信したデータなど（ユーザデータ）を格納し、管理する処理部である。ユーザデータとは、ユーザが所有するデータであればどのようなデジタルデータであってもよく、たとえば、テキストファイルや動画データ・画像データなどを指す。ユーザデータは、ユーザによってキーボードやマイクを使って入力されたデータでも良く、ユーザによってデジタルカメラやカムコーダーで撮影（作成）されたプライベートなデータであっても良く、コンテンツプロバイダ等が作成してユーザが(有償・無償に関わらず)購入したような商用データであっても良く、友人や家族から受領したようなデータであっても良い。ＯＳ格納部９とユーザデータ格納部１０はこの実施形態では別領域として設定しているが、一つの領域にまとめてもよい。
【００２１】
ホスト部５は、プログラム処理部１１と起動処理部１２を備える。プログラム処理部１１は起動処理やＯＳの処理などを処理する。起動処理部１２は起動時にＭＢＲをロードするために実行されるプログラムを格納しており、このプログラムの格納には、ＢＩＯＳや機器に内蔵されたフラッシュメモリなどの汎用の記憶装置を用いることができる。
【００２２】
データ記録装置３が起動する際、まずプロセッサは、起動処理部１２に格納されたプログラムを実行する。このプログラムではシステムの初期化処理などを行い、次にＭＢＲ格納部８に格納されているブートプログラムを読み込んで実行する。言いかえると、データ記録部６に記録されているプログラムのうち最初に実行されるものがブートプログラムである。ブートプログラムはデータ記録部６の領域がどのように設定されているかなどをチェックした後、ＯＳ格納部９に格納されているＯＳがホスト部５に読み込まれて実行される。ＯＳはサービス提供サーバ１と通信するためのアプリケーションなどを実行する。
【００２３】
ここで、ドライブ部４のアクセス制御部７は、ホスト部５からデータ記録部６にアクセスしてよいかどうか判定処理を行う。ホスト部５からデータ読み込み要求があった場合に拒絶するリードロック、データ書き込み要求があった場合に拒絶するライトロック、またはその両方を判定する機能を持つ。リードは許可するがライトは不許可といったようにリードロックとライトロックはそれぞれ独立して設定可能である。またリードロックとライトロックの設定と制御はパーティションごとに行えるようにしてもよい。リードロックとライトロックの設定手法およびロックの解除手法については後述する。
【００２４】
図２は図１のデータ記録装置３の内部構成の一例を示すブロック図である。以下、図２を用いて、ホスト部５の詳細構成を説明する。ホスト部５は、上述したプログラム処理部１１と起動処理部１２の他に、ドライブ部４と通信を行うための通信処理部１３を有する。起動処理部１２は、ブートプログラムをロードするために実行されるプログラムを格納する起動プログラム格納部２１を有する。
【００２５】
プログラム処理部１１は、ネットワーク処理部２２と、サーバ認証処理部２３と、MBR Shadow書き込み部２４と、データ管理部２５とを有する。ネットワーク処理部２２は、サービス提供サーバ１と通信を行うための物理レイヤ処理、データリンクレイヤ処理、ネットワークレイヤ処理、トランスポートレイヤ処理を行う。サーバ認証処理はサービス提供サーバ１との認証処理を行う。
【００２６】
MBR Shadow書き込み部２４はドライブ部４のMBR Shadow格納部に後述するShadowプログラム（シャドウ・ブートプログラム）を書き込む処理を行う。データ管理部２５はＯＳ格納部９やユーザデータ格納部１０に対するデータの読み込みや書き込み処理を行う。通信処理部１３はドライブ部４との通信処理を行う。具体的には、通信処理部１３は、ドライブ部４の内部の通信処理部１４と各種情報の送受を行う。
【００２７】
次にドライブ部４の詳細構成を説明する。ドライブ部４のアクセス制御部７は、要求データ範囲確認部３１と、ホスト認証部３２と、ロック制御部３３と、MBR Shadow設定部３４とを有する。MBR Shadow設定部３４には、MBR Shadow格納部３５が接続されている。
【００２８】
ホスト部５からアドレス指定にてドライブ部４に対してデータの読み込みや書き込み要求があった場合、要求データ範囲確認部３１はそのアドレスに対応する部分がリードロックされているか、あるいはライトロックされているかを判定し、もしロックがかかっている状態であればエラーを返してデータ記録部６へのアクセスを行わない。アンロックの状態(ロックされていない状態)であれば、ホスト部５がそのアドレスに対応したデータにアクセスすることを許可する。ホスト認証部３２は通信処理部１３を介してホストと認証処理を行う。ロック制御部３３は、データ記録部６に対するロックの設定を制御する。すなわち、ホスト認証処理部の認証結果を確認し、認証に成功している場合に限りロックを解除したりロックを設定したりする。MBR Shadow設定部３４はMBR Shadow格納部３５にプログラム(シャドウ・プログラム)を設定したり、MBR Shadow機能が有効かどうかを管理したりする処理を行う。処理手順としては、ホスト認証処理部の認証結果を確認し、認証に成功している場合に限りMBR Shadow設定部３４に対してMBR Shadowにプログラムを書き込んだり、MBR Shadow機能の有効・無効を設定したりする。
【００２９】
なお、MBR Shadow格納部３５に予めプログラムを書き込んで出荷したり、MBR Shadow機能を常に有効あるいは無効の設定で出荷したりする場合はMBR Shadow設定部３４は必ずしも必要ではない。
【００３０】
次に、MBR Shadow設定部３４でオン・オフを設定するMBR Shadow機能について説明する。前述のとおりデータ記録装置３が起動する際、起動処理部１２に格納されたプログラムは、機器をブートさせるためのプログラムを読み込み実行しようとする。MBR Shadow設定部３４にMBR Shadow機能のオフが設定されている場合、前述のとおりデータ記録部６のＭＢＲ格納部８に格納されたプログラムが読み出される。一方、MBR Shadow設定部３４にMBR Shadow機能のオンが設定されている場合、ドライブ部４はかりにＭＢＲ格納部８の範囲にあるアドレスを指定したとしても、ＭＢＲ格納部８に記録されたデータ(ブートプログラム)ではなく、MBR Shadow格納部３５に格納されたデータ(Shadowプログラム)をホスト部５に送信する。すなわち、MBR Shadow機能がオンの場合、MBR Shadow格納部３５に格納されたプログラム(Shadowプログラム)が起動処理部１２に格納されたプログラムの次に実行されることになる。
【００３１】
本実施形態のデータ記録装置３は、ホスト部５がデータ記録部６をロックする機能を備え、MBR Shadow格納部３５に格納されたプログラムをＯＳないしＯＳ上で動作するアプリケーションに先立ち実行し、そのプログラム上でサービス提供サーバ１と認証処理を行い、その認証結果によってデータ記録部６のロック解除の制御を行う点に特徴がある。
【００３２】
次にMBR Shadow格納部３５に格納されるプログラムの処理手順について述べる。図３はMBR Shadow格納部３５に格納されるShadowプログラムの処理手順を示すフローチャートである。まず、プロセッサは、起動処理部１２に格納された起動プログラムの実行を開始する（ステップＳ１）。
【００３３】
プロセッサは起動プログラムに従って、ドライブ部４の所定の領域(例えばＬＢＡ０番地、すなわちMBRに格納されたプログラムが格納されているアドレス)にアクセスして、データを読み出す（ステップＳ２）。このとき、LBA０番地の読み出し命令を受信したドライブ部はMBR Shadow設定部の設定を確認し、MBR Shadow機能が有効かどうかを判定する（ステップＳ３）。このステップはシャドウ判定部に対応する。MBR Shadow機能が有効な場合は、データ記録部６のＭＢＲ格納部８に格納されているブートプログラム(ＭＢＲ)ではなく、MBR Shadow格納部３５に格納されているプログラム(以後、Shadowプログラムと呼ぶ)が読み出されてホスト部５に送信されて、起動処理部１２に格納される（ステップＳ４）。このステップＳ４はシャドウ読み込み部に対応する。
【００３４】
ここで、ドライブ部４内のＯＳ格納部９とユーザデータ格納部１０に対する読み出しと書き込みはロックされているものとする。すなわち、ホスト認証部３２はホスト部５との認証が未完了の状態にあり、ロック制御部３３の設定によりＯＳ格納部９とユーザデータ格納部１０はロックされているものとする。
【００３５】
次に、ホスト部５はShadowプログラムを実行し、サーバ認証処理部２３にてサービス提供サーバ１と認証を行う（ステップＳ５）。このステップＳ５はシャドウ実行部に対応する。
【００３６】
ここで、ステップＳ５の認証（サーバ認証）処理とは、(1)サービス提供サーバ１が期待する通信相手であるかどうかをデータ記録装置３が認証する手法、(2)データ記録装置３が期待する通信相手であるかどうかをサービス提供サーバ１が認証する手法、(3)相互に認証する手法の３通りがある。認証の手法にはISO/IEC 9798-3やISO/IEC 9798-2のようなよく知られた手法を用いればよい。また、公開鍵方式の認証手法を用いる場合、(1)のケースではデータ記録装置３はサービス提供サーバ１の公開鍵、または公開鍵を含んだ証明書を保持しておく必要がある。(2)のケースではデータ記録装置３は秘密鍵を保持しておく必要がある。(3)のケースではデータ記録装置３はサービス提供サーバ１の公開鍵、または公開鍵を含んだ証明書と秘密鍵の両方を保持しておく必要がある。これら認証に必要なデータも予めMBR Shadow格納部３５に格納しておく。
【００３７】
次に、サービス提供サーバ１との認証に成功したか否かを判定し（ステップＳ６）、認証に失敗するとエラー処理を行う（ステップＳ７）。認証に成功すると、ホスト認証処理を行う（ステップＳ８〜Ｓ１５）。
【００３８】
ホスト認証処理では、まずＯＳ格納部９はロックされているか否かを判定し（ステップＳ８）、ＯＳがロックされている場合にはホスト部５からドライブ部４にパスワードを送信する（ステップＳ９）。ここで、パスワードとは、ドライブ部のロック、アンロックに使うデータである。パスワードはドライブ部４のホスト認証部３２に予め登録しておく。このホスト認証部３２への登録の方法として、製造時に埋め込んでおく方法、ホスト部５のプロセッサ上で動作するプログラムを使ってユーザが任意の値を設定する方法、ホスト部５のプロセッサ上で動作するプログラムを使ってネットワーク経由でサーバから配信した値を設定する方法などがある。ホスト部５がドライブ部４を解除するために使うパスワードは、例えばShadowプログラムに予め含めておいてもよいし、ホスト部５の任意の領域（たとえばフラッシュメモリ）に保存しておきShadowプログラムがその領域から読みだしてもよい。
【００３９】
次に、ホスト部５から送信されたパスワードがホスト認証部３２に予め登録されているパスワードと一致するか否かを判定する（ステップＳ１０）。一致しない場合はエラー処理を行い（ステップＳ７）、一致する場合はロック制御部３３にロック解除命令を送信する。これにより、ＯＳ格納部９はアンロックされる（ステップＳ１１）。
【００４０】
次に、ユーザデータ格納部１０はロックされているか否かを判定し（ステップＳ１２）、ロックされている場合にはホスト部５からドライブ部４にパスワードを送信する（ステップＳ１３）。
【００４１】
次に、ホスト部５から送信されたパスワードがホスト認証部３２に予め登録されているパスワードと一致するか否かを判定する（ステップＳ１４）。一致しない場合はエラー処理を行い（ステップＳ７）、一致する場合はロック制御部３３にロック解除命令を送信する。これにより、ユーザデータ格納部１０はアンロックされる（ステップＳ１５）。
【００４２】
上述したステップＳ９とＳ１３はパスワード送信部に対応し、ステップＳ１０とＳ１４はパスワード照合部に対応する。
【００４３】
ここで、ＯＳ格納部９をアンロックするか否かを判断するためのパスワードと、ユーザデータ格納部１０をアンロックするか否かを判断するためのパスワードは、それぞれ別個にホスト部５に登録されている。これらのパスワードをまとめて登録してから、ステップＳ８〜Ｓ１５の処理を続けて行ってもよいし、ＯＳ格納部９用のパスワード登録とアンロック制御を行った後に、ユーザデータ格納部１０用のパスワード登録とアンロック制御を行ってもよい。
【００４４】
上記ステップＳ１２でユーザデータ格納部１０はロックされていないと判定された場合、あるいはステップＳ１５の処理が終了した場合は、プロセッサはＯＳ格納部９からＯＳを読み込んで（ステップＳ１６）、ＯＳを起動する（ステップＳ１７）。これにより、起動処理は完了する。
【００４５】
なお、ホスト部５からドライブ部４に送信されるパスワードは、前述のShadowプログラムの中に埋め込む方法以外にも、サービス提供サーバ１との認証に成功した場合に限りサービス提供サーバ１から配信されているようになっていてもよい。サービス提供サーバ１から配信される場合は、サービス提供サーバ１とデータ記録装置３との間でパスワードが漏えいしないように暗号化等の手段を用いて保護して送信することが望ましい。
【００４６】
また、ドライブ部４が複数のＯＳ格納部９を備えている場合にはロックする領域ごとに異なるパスワードを設定し、サービス提供サーバ１によってアンロックするＯＳを切り替えてもよい。具体的には、第１のＯＳ格納部９と第２のＯＳ格納部９をそれぞれ別の領域として設定しておき、起動時にはロック状態に設定しておく。そして、ロックを解除するための認証にはそれぞれ別々のパスワードが必要となるように設定しておく。第１のサービス提供サーバ１との認証に成功した場合には、第１のＯＳ格納部９のパスワードを使って第１のＯＳ格納部９のロックを解除し、第２のＯＳ格納部９のロックは解除しない。これにより、第１のサービス提供サーバ１用のＯＳを実行させることができる。
【００４７】
このように、データ記録装置３の起動前にはドライブ部４の各領域にはロックがかかっており、サービス提供側がデータ記録装置３との認証に成功しなければデータ記録装置３に記録したデータは外部に公開されないため、サービス提供サーバ１は安全にデータを格納する領域を外部に確保できる。
【００４８】
図３のフローチャートでは、ＯＳ格納部９のアンロック制御を行った後にユーザデータ格納部１０のアンロック制御を行っているが、その順番は特に問わない。また、ＯＳ格納部９のロック／アンロック制御は省略してもよい。すなわち、ＯＳ格納部９にはロックをかけずに、ユーザデータ格納部１０のみをロックしておき、サーバ１との認証やパスワード照合などの所定の条件を満たしたときにユーザデータ格納部１０をアンロックしてもよい。
【００４９】
なお、サービス提供サーバ１との認証時に、Shadowプログラムはプラットホームが予め想定した状態と一致するかチェックを行ってもよい。ここで、プラットホームとは、例えば、ＭＡＣアドレスやＣＰＵ ＩＤ、ＯＳのシリアルＩＤなどであり、これらの情報が期待された値であるかのチェックを行ってもよい。これにより、仮にドライブ部４が物理的に他のデータ記録装置３から取り外されて他のデータ記録装置３に取り付けられたとしても、データ記録装置３のＭＡＣアドレスやＣＰＵ ＩＤ、ＯＳのシリアルＩＤは異なるため、ドライブ部４が取り外されたことを検出できる。すなわち、サービス提供サーバ１にとってみれば、特定のデータ記録装置３でしか起動しないシステムを構築できる。
【００５０】
また、ドライブ部４のユーザデータ格納部１０が複数のユーザにそれぞれ異なるパーティションを割り当てていれば、サービス提供サーバ１によって、またはサービス提供サーバ１との認証の結果によってShadowプログラムがアンロックするユーザデータ格納部１０内の領域を切り替えることで、ユーザデータ格納部１０に格納されたＯＳやアプリケーションが使うライブラリを変更できる。
【００５１】
例えば、サービス提供サーバ１との認証に成功した場合にはライブラリＡが格納された領域をアンロックし、失敗した場合にはライブラリＢが格納された領域をアンロックするように設定してもよい。ＯＳはそのアンロックされた領域を利用する。これはサービス提供者がデータ記録装置３で実行されるプログラムを秘匿したいという要望がある際に特に有用である。典型的な例は映画や動画コンテンツの保護に利用される著作権保護ソフトウェア（ＤＲＭソフトウェア）に用いられるライブラリである。著作権保護ソフトウェアは一般的に暗号化されたコンテンツを復号するための鍵やアルゴリズムをソフトウェア内部に隠ぺいしておく必要がある。ところが、それら秘匿すべき情報をソフトウェアライブラリ内部に隠ぺいしておく手法は解析に対して脆弱である。本実施形態では、サービス提供サーバ１との認証に成功しない限り、ライブラリが格納された領域はＰＩＮコード等のパスワードによってロック状態が維持されるため、ロックされた領域に格納されたライブラリを取り出すことはできない。
【００５２】
また、本実施形態では、サービス提供サーバ１との認証時にプラットホームのチェックも行えるため、不正なプラットホームであると判断した場合にはアンロック処理を中断することも可能である。
【００５３】
このように、本実施形態によれば、ライブラリをソフトウェアで実装したとしても、不正なプラットホームではロックを解除できないため、ライブラリの不正取得と不正な解析を防止できる。
【００５４】
また、ユーザの観点からは、正当なサービス事業者に限りデータを公開するという要求がある場合にも有用である。例えば写真などのプライベートなデータをユーザデータ格納部１０に記録しておき、正当なサービス事業者に限りそのサービス（サービス事業者が運営するサーバ
）からユーザデータ格納部１０にアクセスできるように公開するといったケースを考える。この時も、サービス提供サーバ１と認証に成功しない限り、プライベートデータが格納されたユーザデータ格納部１０はＰＩＮコードでロックされたままであり、アンロックされないため、ロックされた領域に格納されたプライベートデータを取り出すことはできない。
【００５５】
非特許文献１に記載されているような従来の方式ではユーザが直接キーボードからパスワードを入力することによりデータ記録部６全体ないし一部を解除する。一方、本実施形態では、サーバ１と認証を行うことによりユーザが直接パスワードを入力するのではなく、サーバ１との認証成功後にMBR Shadow格納部３５に含まれたパスワードまたはネットワーク処理部２２によりサービス提供サーバ１から与えられたパスワードを利用する点が異なる。また、サービス提供サーバ１との認証に成功した場合に限り、どの領域のロックを解除するかを動的に選択することができる。
【００５６】
本実施形態では、ＭＢＲ格納部８のプログラムやＯＳの処理に先んじて、MBR Shadow格納部３５に格納されたShadowプログラムを利用してサーバ１との認証処理やデータ記録部６のアンロック処理を起動時に行うことが第一の特徴である。一般的にＯＳが起動してから不正なプログラムを挿入したりメモリに不正な処理を挿入したりすることでＯＳの処理を改変したり、アプリケーションの挙動を変更したりするアプリケーションレベルでの攻撃については様々な手法が存在するが、本実施形態では、ＭＢＲやＯＳの起動前に、サーバ１との認証処理やデータ記録部６のロック制御を行うため、データ記録部６に格納された情報をより安全に保護することができる。
【００５７】
また、MBR Shadow格納部３５に格納されたShadowプログラムを改変するには、ドライブ部４に内蔵されたフラッシュメモリ等に格納されたデータにアクセスする必要があり、攻撃者にとって難易度が高くなるため、Shadowプログラムが改変されるリスクは低い。これによりセキュリティの安全レベルを向上させることができる。
【００５８】
また、データ記録装置３のドライブ部４とホスト部５は別々のベンダーから供給されるのが一般的である。従来のドライブ部４はMBR Shadow格納部３５やアクセス制御部７を備えていなかったため、MBR Shadow格納部３５に相当する機能をホスト部５に設けるしかなかった。このような場合に、仮にドライブ部４だけを取り出して、別のデータ記録装置３に入れて起動することを考えると、差し替えた先のデータ記録装置３のホスト部５がMBR Shadow格納部３５に相当する機能を持っていない限り、上述したセキュリティ保護は行えない。また、この別のデータ記録装置３のホスト部５がMBR Shadow格納部３５に相当する機能を持っていた場合でも、Shadowプログラムをホスト部５にインストールする必要があり、作業が繁雑で使い勝手が悪くなる。
【００５９】
本実施形態では、MBR Shadow格納部３５をホスト部５とは独立したドライブ部４に備えている。これにより、ドライブ部４を別のデータ記録装置３に差し替えたとしても、Shadowプログラムはドライブ部４に備わっているため、ホスト部５がMBR Shadow格納部３５に相当する機能を備えている必要もなく、元のデータ記録装置３と同じShadowプログラムを別のデータ記録装置３でも継続して利用できるようにすることを比較的容易に実現できる。
【００６０】
また、本実施形態のデータ記録装置３は、データ記録装置３を組み込んだ機器（例えばＰＣ）を製造および販売するセットメーカ側にとって以下の利点がある。ＰＣのセットメーカは、ドライブ部４（例えばＨＤＤ）を他社から購入してＰＣに組み込んで販売する。データ記録部６のロック／アンロック方式は標準化されていないため、MBR Shadowの機能がないと、組み込むＨＤＤの種類により、データ記録部６のロック／アンロックを制御するプログラムをホスト部５にインストールする必要がある。
【００６１】
一方、MBR Shadow機能があると、データ記録部６をロック／アンロックするプログラムはMBR Shadow格納部３５にインストールされるため、ＨＤＤのメーカ側で適切なShadowプログラムをMBR Shadow格納部３５にインストールして販売すれば、ＰＣメーカ側はそれを利用するだけであるため、ＨＤＤのメーカに依存せずにＰＣに組み込むことができ、機器の製造コストを削減できる。
【００６２】
また、本実施形態のデータ記録装置３は、ユーザ側にとっても以下の利点がある。例えば、データ記録装置３が組み込まれた機器（例えばＰＣやレコーダ）からドライブ部４を抜き出して、別の機器に入れた場合でも、ドライブ部４にMBR Shadowの機能があるため、ホスト部５を改変せずに、データ記録部６のロック／アンロック制御を行うことができる。
【００６３】
このように、第１の実施形態では、ＭＢＲやＯＳの起動に先立って、ＭＢＲのshadowプログラムを起動させ、このshadowプログラムの中で、サーバ認証を行い、サーバ認証に成功した場合には、Shadowプログラムに登録されたパスワードとホスト認証部３２に予め登録されたパスワードとの照合を行って、照合に成功すると、そのパスワードを使ってＯＳ格納部９とユーザデータ格納部１０のアンロックを行うため、データ記録部６内の情報をより安全に保護できる。
【００６４】
（第２の実施形態）
第１の実施形態では、データ記録部６のロックを解除するためのパスワードをMBR Shadow格納部３５に格納されたプログラム(Shadowプログラム)に保存しておいた。これに対して、第２の実施形態のホスト部５は、秘密情報格納部に保存しておくものである。
【００６５】
図４は第２の実施形態によるデータ記録装置３の内部構成の一例を示すブロック図である。図４では、ホスト部５に秘密情報格納部１５を備える点が図２と異なる。また、図２では省略していたが、ホスト部５には、プロセッサ２６と主メモリ２７が設けられる。
【００６６】
図５は秘密情報格納部１５の内部構成の一例を示すブロック図である。図５の秘密情報格納部１５は、ＩＤ管理部４１と、鍵管理部４２と、暗号処理部４３と、復号処理部４４と、状態管理部４５と、コマンド処理部４６とを有する。
【００６７】
ＩＤ管理部４１は秘密情報格納部１５に固有のＩＤを格納する。ＩＤは工場出荷時に決めた値、ないしは最初に生成した値から変更できないように保護して保存しておくのが望ましい。
【００６８】
鍵管理部４２は、ホスト部５からのコマンドに基づいて秘密情報格納部１５の内部で鍵を生成する機能と、生成した鍵を保存しておく機能を備える。なお、秘密情報格納部１５は、秘密鍵の値を外部に出力するインターフェースを持たないため、秘密鍵の値が秘密情報格納部１５の外に漏えいするおそれはない。
【００６９】
状態管理部４５はデータを記憶するレジスタ（不図示）を内部に備えている。レジスタは起動時(電源をONした時)にのみリセットすることができ、リセット時の初期値は固定の一定の値（例えば０）とする。状態管理部４５は、入力データ"Input"が与えられると、次の（１）式にしたがってレジスタの値を更新する。  
NewValue = hash (Input || OriginalValue)    …（１）
【００７０】
ここで、||はデータを結合する記号を表す。またhashはSHAファミリー(SHA1, SHA256など)やMD5のようなハッシュ関数を示す。（１）式は、もともとレジスタに記憶されていたデータ（OriginalValue）と入力データ（Input）を結合してハッシュ関数の入力とし、ハッシュ関数の出力値(NewValue)をレジスタの新しい値として記憶する。このレジスタは、外部から任意の値をセットするインターフェースを持たない。つまり、
NewValue = Input
というように入力値をそのままレジスタの値に設定するようなインターフェースは持たない。
【００７１】
状態管理部４５は内部に複数のレジスタを備えていてもよい。その場合、以下の（２）式のように、hash関数の引数にどのレジスタの値を更新させるかを示すレジスタ番号(Register#)を設ければよい。  
NewValue = hash (Register#, Input || OriginalValue)    …（２）
【００７２】
状態管理部はRegister #に対応するレジスタの値を使い、（１）式に従ってRegister#に対応するレジスタの値を更新する。
【００７３】
また、暗号処理部４３は暗号化対象の入力値(Input)とレジスタの値(RegisterValue)を入力とし、入力値を鍵管理部４２が持つ秘密鍵で暗号化した値を出力する。具体的には以下の（３）式にしたがって入力されたデータを暗号化する。  
Output = Encrypt (Input, RegisterValue, Key)    …（３）
【００７４】
ここで、EncryptはAESやDESのようなよく知られた共通鍵方式の暗号化関数であり、第２引数(RegisterValue)と第３引数(Key)を鍵として第１引数の値を暗号化し、その暗号化結果が出力(Output)である。第２引数と第３引数を鍵とする手法とは、第２引数と第３引数を結合する手法や、第３引数によって第２引数をAESなどの関数により暗号化した値を鍵とする手法などの手法を用いればよい。
【００７５】
暗号処理部４３を使ってデータを暗号化する際、ホスト部５は秘密情報格納部１５のコマンド処理部４６にInputとRegister#の二つの引数を与える。もしもレジスタが一つしかない場合はRegister #は不要である。
【００７６】
（３）式のInputは暗号化対象となる平文のデータであり、Register#は状態管理部４５のレジスタ番号である。つまりRegisterValueはRegister#で指定されたレジスタ番号に対応するレジスタの現在の値である。つまり暗号処理部４３は、鍵管理部４２が持つ秘密鍵と状態管理部４５のレジスタの二つの値を使って入力データを暗号化することにより、入力データは鍵管理部４２と状態管理部４５のレジスタの両方にバインドされることになる。ここで、入力データとは、後述するように、Shadowプログラムで生成されるパスワードであり、暗号処理部４３は（３）式に基づいて暗号化パスワードを生成する。
【００７７】
復号処理部４４は復号対象の入力値とレジスタの値(RegisterValue)を入力とし、入力値(Input)を鍵管理部４２が持つ秘密鍵の値(Key)で復号した値を出力する。具体的には、以下の（４）式にしたがって入力値を復号する。  
Output = Decrypt (Input, RegisterValue, Key)    …（４）
【００７８】
ここで、Decryptは暗号化に用いた暗号化関数に対応する復号関数であり、第２および第３引数を鍵として第１引数の値を復号し、その復号結果が出力(Output)である。復号処理部４４の入力値は、暗号化パスワードであり、（４）式にて暗号化前のパスワードが復元される。
【００７９】
この復号処理部４４を使ってデータ（暗号化パスワード）を復号する場合、ホスト部５は秘密情報格納部１５のコマンド処理部４６に対して暗号化処理と同様にInputとRegister#の二つの引数を与える。もしもレジスタが一つしかない場合はRegister #は不要である。
【００８０】
上述したように、（４）式のInputは復号対象の暗号化パスワードであり、またRegister#は状態管理部４５が備えるレジスタの番号である。RegisterValueはRegister#で指定されたレジスタ番号に対応するレジスタの現在の値である。つまり鍵管理部４２の秘密鍵と状態管理部４５のレジスタの二つの値を使って暗号化パスワードを復号する。
【００８１】
以上は暗号処理部４３に共通鍵暗号を用いた場合の例であるが、共通鍵方式の代わりに公開鍵方式を用いてもよい。図６は公開鍵方式を使う場合の秘密情報格納部１５ａの内部構成の一例を示す図である。公開鍵管理部４７を備える点と、鍵管理部４２の代わりに秘密鍵管理部４８を備える点が図５と異なる。
【００８２】
公開鍵管理部４７は、公開鍵ペアを備えており、ホスト部５からのコマンドに基づいて公開鍵管理部４７に格納された秘密鍵を使ってデータ（暗号化パスワード）を復号したり、データに対する署名を生成したりする機能を持つ。公開鍵暗号方式としてはＲＳＡのようなよく知られた方式を用いればよい。
【００８３】
秘密鍵管理部４８は、ホスト部５からのコマンドに基づいて秘密情報格納部１５ａの内部で秘密鍵と共通鍵を生成する機能と、生成した秘密鍵を保存しておく機能を備える。
【００８４】
公開鍵方式を採用する場合の秘密情報格納部１５ａは、公開鍵を外部に出力するためのインターフェースを備えており、Shadowプログラムやデータ記録装置３で実行されるその他のプログラムから公開鍵情報を参照できるようにしてもよい。
【００８５】
なお、公開鍵には秘密情報格納部１５ａを製造したベンダー、データ記録装置３を実装した製造、あるいは業界で秘密情報管理部を管理するような組織の秘密鍵によって署名が施されていてもよい。
【００８６】
また、公開鍵を用いて入力値(Input)を暗号化する場合は上述の暗号化関数EncryptのKeyの部分を鍵管理部４２が持つ公開鍵と置き換えればよい。なお、入力値を暗号化する際、公開鍵を用いるため、暗号化の処理は必ずしも秘密情報格納部１５ａで実行する必要はなく、秘密情報格納部１５ａが暗号処理部４３を備えている必要は必ずしもない。秘密情報格納部１５ａで入力値の暗号化処理を行わない場合は、Shadowプログラムなどホスト部５で動作するプログラムで暗号化計算を行うようにすればよい。同様に復号する場合は復号関数DecryptのKeyの部分を鍵管理部４２が持つ秘密鍵と置き換えればよい。
【００８７】
以下では特に記載のない限り共通鍵方式を用いた例について説明する。
【００８８】
状態管理部４５に入力されるデータ(ハッシュ関数のInput)を、暗号処理もしくは復号処理のコマンドを発行するプログラムしか知らない秘密の値とすることで、Inputデータを保護することができる。この秘密の値はコマンドを送信するプログラムしか知り得ない鍵の値でもよいし、メモリ上の任意のデータでもよい。
【００８９】
プロセッサ２６がプログラムを実行する際には、そのプログラムが主メモリ２７上に展開されるため、例えば、プログラムが特定の命令を実行するときの主メモリ２７の特定位置Ａ（あるいは特定範囲Ａ）の値(例えばステップＸを実行した時の主メモリ２７に存在するデータＡ)をInputの値とすることで、特定のプログラムがある特定の状態にある時のみデータを暗号化／復号することを実現できる。他にもこれを応用することにより、特定のプログラムがステップＡ、ステップＢの順序で実行したときの主メモリ２７に存在するデータをInputの値とすることによって、悪意のある第三者がプログラムを改変した場合には正しいInputの値をDecrypt関数に入力できなくなり、セキュリティ性能が向上する。
【００９０】
あるいは、特定のプログラムがステップＣを実行した時の主メモリ２７に存在するデータと、ステップＤを実行したときの主メモリ２７に存在するデータとをつなぎ合わせたデータを状態管理部４５のレジスタに記憶してもよい。この場合、ステップＣをスキップした場合や、ステップＤからステップＣの順番で実行した場合には、状態管理部４５のレジスタに記憶される値が異なった値になるため、正しい暗号化および復号化が行えなくなり、不正なプログラムの改変を防止できる。
【００９１】
上述したように、第２の実施形態は、ドライブ部４と認証を行うためのパスワードを格納する際、秘密情報格納部１５（または１５ａ）を利用する点が第１の実施形態と異なる。
【００９２】
第２の実施形態の処理手順の技術的特徴は、パスワードを秘密情報格納部１５に保護して格納するパスワード設定フェーズと、設定したパスワードを使ってドライブ部４をアンロックするアンロックフェーズの二つを備えることである。
【００９３】
図７はShadowプログラムが行うパスワード設定フェーズの処理手順の一例を示すフローチャートである。なお、以降では、特に断りがない限り、MBR Shadow機能が有効であるとする。
【００９４】
図７のパスワード設定フェーズでは、まずプロセッサ２６は起動プログラムを実行し（ステップＳ３１）、このプログラムの中でShadowプログラムを読み込む（ステップＳ３２）。
【００９５】
状態管理部４５のレジスタの値は電源ON時にリセットされ、ShadowプログラムはＯＳ起動前に実行されるので、状態管理部４５のレジスタの値は初期値であることが保証される。Shadowプログラムは不図示の乱数生成器（Shadowプログラム内部でソフトウェアとして乱数を生成してもよいし、秘密情報格納部１５に乱数生成器を備えている場合はその乱数生成器を使ってもよい）を使ってパスワードを生成する（ステップＳ３３）。このステップＳ３３はパスワード生成部に対応する。
【００９６】
Shadowプログラムは、ステップＳ３３で生成されたパスワードを、ドライブ部４をアンロックするか否かのパスワード照合に使用するべく、ドライブ部４のホスト認証部３２に送信する（ステップＳ３４）。ホスト認証部３２は、送信されてきたパスワードを登録する（ステップＳ３５）。
【００９７】
次に、プロセッサ２６は、Shadowプログラムの特定命令を実行するたびに（ステップＳ３６）、Shadowプログラムを展開した主メモリ２７の特定位置または特定範囲の値を状態管理部４５のレジスタに登録する（ステップＳ３７）。これにより状態管理部４５のレジスタの値は更新される（ステップＳ３８）。
【００９８】
Shadowプログラムは、状態管理部４５のレジスタの値を1回以上更新した後に、まだ暗号化されていない平文パスワードを秘密情報格納部１５に送信し（ステップＳ３９）、秘密情報格納部１５の鍵管理部４２に格納されている秘密鍵と上述した状態管理部４５のレジスタの値を用いて暗号処理部４３により暗号化する（ステップＳ４０）。ここでは、例えば上述した（３）式に従って暗号化を行う。
【００９９】
公開鍵暗号を使う場合は鍵管理部４２に格納されている秘密鍵に対応する公開鍵を用いて暗号処理部４３ないしはShadowプログラムが暗号化する。暗号化したパスワードはホスト部５の不揮発性主メモリ２７ないしはドライブ部４のロックがかかっていないデータ記録部６に保存すればよい。
【０１００】
次に、Shadowプログラムは、ドライブ部４にロック命令を送信する（ステップＳ４１）。ロック命令を受けたロック制御部３３は、データ記録部６をロックする（ステップＳ４２）。以後、データ記録部６は登録されたパスワードが送信されない限りはアンロック状態となる。
【０１０１】
なお、図７のパスワード設定フェーズは、実際には、ＯＳ格納部９用のパスワード設定フェーズと、ユーザデータ格納部１０用のパスワード設定フェーズの二つに分けて行われる。二つのパスワード設定フェーズを連続して行って二種類の暗号化パスワードを生成した後に、ＯＳ格納部９とユーザデータ格納部１０をともにロックしてもよいし、いずれか一方（例えばＯＳ格納部９）のパスワード設定フェーズを行ってＯＳ格納部９をロックした後に、他方（例えばユーザデータ格納部１０）のパスワード設定フェーズを行ってユーザデータ格納部１０をロックしてもよい。
【０１０２】
次に、アンロックフェーズについて説明する。このアンロックフェーズも、ＯＳ格納部９のアンロックフェーズとユーザデータ格納部１０のアンロックフェーズが別個に行われる。以下では、どちらか一方のアンロックフェーズについて説明する。
【０１０３】
図８はShadowプログラムが行うアンロックフェーズの処理手順の一例を示すフローチャートである。起動プログラムがShadowプログラムを読み込む手順までは第１の実施形態と同じである（ステップＳ５１，Ｓ５２）。
【０１０４】
アンロックフェーズではShadowプログラムがサーバ認証を行う（ステップＳ５３）。そして、サーバ認証に成功したか否かを判定し（ステップＳ５４）、サーバ認証に失敗した場合はエラー処理を行う（ステップＳ５５）。
【０１０５】
サーバ認証に成功した場合はパスワード設定フェーズで設定した状態管理部４５の値と同じ値になるような処理（図７のステップＳ３６〜Ｓ３７と同様の処理）を実行し（ステップＳ５６、Ｓ５７）、状態管理部４５の値を更新する（ステップＳ５８）。このとき、正規のShadowプログラムであれば、パスワードを暗号化したときの状態管理部４５のレジスタの値と、現在のレジスタの値は一致するはずである。したがって、秘密情報格納部１５に暗号化パスワードを送信して（ステップＳ５９）、秘密情報格納部１５内の復号処理部４４で暗号化パスワードを復号することができる（ステップＳ６０）。復号されたパスワードは、正規のShadowプログラムであれば、図７で暗号化パスワードを生成する元のパスワードと同じはずである。
【０１０６】
Shadowプログラムは、復号されたパスワードをドライブ部４に送信する（ステップＳ６１）。ドライブ部４のホスト認証部３３は、送信したパスワードと予め登録されているパスワードとを照合し、照合に成功すれば、ロック制御部３３はデータ記録部６をアンロックする（ステップＳ６２）。
【０１０７】
なお、上述した処理フローの例ではShadowプログラムがアンロック用のパスワードを生成する手法について示したが、Shadowプログラムがインターネット２上のサーバ１と通信を行い、サーバ１からネットワーク経由でパスワードを入手してもよい。この場合、サーバ１から送信されるパスワードがサーバ１とデータ記録装置３間の通信経路上で第三者に盗み見られないようにパスワードを保護して伝送する必要がある。これを実現する手法としては、データ記録装置３の公開鍵による公開鍵暗号を用いればよい。
【０１０８】
上述のように鍵管理部４２が公開鍵方式を採用する場合、鍵管理部４２は公開鍵ペアを備えており、ホスト部５からのコマンドに基づいて鍵管理部４２に格納された秘密鍵を使ってデータを復号したり、データに対する署名を生成したりする。
【０１０９】
図９はサーバ１からパスワードを入手する場合におけるShadowプログラムの処理手順の一例を示すフローチャートである。起動プログラムがShadowプログラムを読み込むまでの処理（ステップＳ７１，Ｓ７２）は図７と同様であるが、その後に、サーバ認証を実行する（ステップＳ７３）。この認証処理は、公開鍵管理部４７の証明書を用いて、サーバ１がデータ記録装置３を認証するクライアント認証処理である。証明書の署名を検証することによって認証に成功したか否かを判断し（ステップＳ７４）、データ記録装置３が正しい証明書を持たないとサーバ１が判断した場合は認証に失敗したとみなしてエラー処理を行う（ステップＳ７５）。
【０１１０】
一方、データ記録装置３が正しい証明書を持っているとサーバ１が判断できれば、認証に成功したとみなして、証明書に含まれる公開鍵の値を用いてパスワードを暗号化して送信する。一方、サーバ１との認証に失敗した場合にはパスワードは送信しない。
【０１１１】
Shadowプログラムは、サーバ１からの暗号化パスワードを受信すると（ステップＳ７６）、そのパスワードを復号してドライブ部４のホスト認証部３２に送信する（ステップＳ７７）。その後、ステップＳ３６〜Ｓ４２と同様の処理が行われ、パスワードによってデータ記録部６がロックされる（ステップＳ７９〜Ｓ８５）。
【０１１２】
図９の処理手順によりロックしたドライブのアンロック処理は、図８と同様のアンロックフェーズにて行われる。
【０１１３】
一般に、パスワードの値はデータ記録装置３ごとに異なる方が望ましい。なぜならば、一台のデータ記録装置３のパスワードが漏えいした場合、ほかの同一のパスワードを設定しているデータ記録装置３もアンロック可能となってしまうからである。したがって、もしShadowプログラムにパスワードの値を含める場合にはShadowプログラムにデータ記録装置３ごとに異なるパスワードを設定する必要がある。
【０１１４】
これに対して、ドライブ部４をアンロックするのに用いるパスワードをサーバ１が発行して管理する場合は、Shadowプログラムにパスワードの値を含ませる必要がなくなる。
【０１１５】
Shadowプログラムにデータ記録装置３ごとに異なるパスワードを設定する場合は、異なるパスワードを含む複数のShadowプログラムを生成し、それぞれ別のデータ記録装置３にインストールする必要があるが、パスワードをサーバ１が発行する場合には同じ内容のShadowプログラムをすべてのデータ記録装置３にインストールできるため、データ記録装置３へのインストール作業が容易になり、製造コスト削減が図れる。また、Shadowプログラムを更新する際にも同じプログラムを配布できるため、メンテナンスコストも下げることができる。また、パスワードはサーバ１が管理しているため、MBR Shadow格納部３５が故障してShadowプログラムが破損してしまった場合や、Shadowプログラムが何らかの原因でクラッシュした場合でも、サーバ１が管理するパスワードをデータ記録装置３に送信することにより、簡易にパスワードを回復でき、Shadowプログラムの復旧も容易であるという利点もある。
【０１１６】
なお、図７と図９のフローチャートでは、状態管理部４５のレジスタに特定命令の実行後の主メモリ２７の状態を記憶させてパスワードの暗号化の鍵の一部としていたが、この他にも、いくつかのバリエーションが考えられる。
【０１１７】
例えば、図１０および図１１はそれぞれ、Shadowプログラムが行うパスワード設定フェーズの処理手順の一例を示すフローチャートである。図１０は、サーバ１が管理するパスワードを取得するのと同様の手順で、サーバ１から別の値を取得し、この値を状態管理部４５のレジスタに記憶して状態管理部４５のレジスタを更新する処理手順を示している。また、図１１は、図７の手順でパスワードを生成するが、サーバ１から取得した値を状態管理部４５のレジスタに記憶して状態管理部４５のレジスタを更新する処理手順を示している。
【０１１８】
図１０の処理では、サーバ１からパスワードを取得してホスト認証部３２に登録した後（ステップＳ９７）、サーバ１から別の値を取得し（ステップＳ９９）、この取得した値を状態管理部４５のレジスタに記憶して状態管理部４５のレジスタを更新する（ステップＳ１０１）。
【０１１９】
図１１の処理では、Shadowプログラムを用いてパスワードを生成してホスト認証部３２に登録した後（ステップＳ１１５）、サーバ１から値を取得し（ステップＳ１１６）、この取得した値を状態管理部４５のレジスタに記憶して状態管理部４５のレジスタを更新する（ステップＳ１１８）。
【０１２０】
図１２はサーバ１から取得した値を状態管理部４５のレジスタに記憶した場合に対応するアンロックフェーズの処理手順の一例を示すフローチャートである。この処理手順は、図１０および図１１のパスワード設定フェーズに対応するアンロックフェーズの処理手順を示している。
【０１２１】
図１２の処理では、Shadowプログラムを起動処理部１２に格納して実行した後（ステップＳ１３１，Ｓ１３２）、サーバ認証を実行する（ステップＳ１３３）。サーバ認証に成功すると、サーバ１から値を取得し（ステップＳ１３６）、この取得した値を秘密情報格納部１５に送信する（ステップＳ１３７）。この値は、秘密情報格納部１５の状態管理部４５のレジスタに記憶され、状態管理部４５のレジスタが更新される（ステップＳ１３８）。
【０１２２】
その後は、図８のステップＳ５９〜Ｓ６２と同様の処理が行われる（ステップＳ１３９〜Ｓ１４２）。これにより、復号されたパスワードを用いてドライブをアンロックする（ステップＳ１０９）。
【０１２３】
第１および第２の実施形態では、MBR Shadow格納部３５に格納されるShadowプログラムにパスワードが含まれる例を説明した。Shadowプログラムはもともと最初に実行されるプログラムであり、ホスト部５の起動処理部１２にロードされた後に実行されるため、起動処理部１２が改変されない限り、Shadowプログラムの内容を取得することは困難である。しかし、何らかの手法でプログラムの解析が成功するとドライブ部４をアンロックするパスワードの値も解析される危険性がある。
【０１２４】
一方、この実施形態では、パスワードの値がサーバ１から送られてくる値と、秘密情報格納部１５の秘密鍵によって暗号化して格納される例も説明した。Shadowプログラムを解析しただけではパスワードを取得することができず、サーバ１から送信される暗号化されたパスワードを復号するためには、正規の証明書と秘密情報格納部１５の秘密鍵を使ってサーバ１と認証を行い、サーバ１から送られてくる値を復号して入手する必要があるが、秘密情報格納部１５は秘密鍵を秘密情報格納部１５の外に出力するインターフェースを持たないため、不正に秘密鍵を取得することは非常に困難であり、よってパスワードを不正に取得することも非常に困難である。
【０１２５】
このように、第２の実施形態では、ホスト部５の秘密情報格納部１５にてアンロック用のパスワードを生成するようにしたため、パスワードを不正に取得されるおそれが少なくなり、より安全にデータ記録部６のアンロック制御を行える。
【０１２６】
（第３の実施形態）
第１および第２の実施形態では、MBR Shadow格納部３５に格納するプログラム(Shadowプログラム)は、機器製造メーカが機器出荷時に予め埋め込んでおくことを前提としていた。これに対して、以下に説明する第３の実施形態では、Shadowプログラムを機器製造時に組み込まれる部分と、サーバ１からダウンロードしてくる部分とに分けることを特徴とする。
【０１２７】
図１３は第３の実施形態におけるデータ記録装置３の概略構成を示すブロック図である。図１３に示すように、MBR Shadow格納部３５が初期インストール用格納部３５ａとダウンロード用格納部３５ｂを有することと、データ記録部６のユーザデータ格納部１０が複数のデータ領域１０ａに分けられていることとが図４と異なる。初期インストール用格納部３５ａは、機器製造メーカが機器出荷時に予め埋め込んでおくプログラムを格納しておく処理部である。ダウンロード用格納部３５ｂは、サーバ１からダウンロードしてくるプログラムを格納しておく処理部である。
【０１２８】
第１の実施形態で説明したように、ユーザデータ格納部１０はロックする領域ごとに異なるパスワードを設定することができる。例えば、データ記録装置３内部に留めておきたいようなプライバシーに関するユーザデータなどはデータ領域１に、第１のサービス提供サーバ１との認証が完了するまでは第１のサービス提供サーバ１に対するアクセスを拒否しておきたいようなサービスに関する設定データや管理データはデータ領域２に、第２のサービス提供サーバ１との認証が完了するまでは第２のサービス提供サーバ１に対するアクセスを拒否しておきたいようなサービスに関する設定データや管理データはデータ領域３にそれぞれ保存しておくものとする。
【０１２９】
まずパスワード設定フェーズについて説明する。初期インストール用格納部３５ａに格納したプログラムでデータ領域１に格納したユーザデータをどのような条件の時に公開するかを設定する。この条件としては、例えば秘密情報格納部１５のＩＤ管理部４１に格納されたＩＤの値と一致することとしてもよいし、サーバ１との認証に成功することとしてもよい。ＩＤ管理部４１のＩＤと一致するかどうかを確認する手段としては、ＩＤ管理部４１のＩＤの値を状態管理部４５のレジスタにセットしておき、その状態で暗号処理部４３を用いてパスワードを暗号化しておく。初期インストール用格納部３５ａに格納したプログラムを実行する際、同プログラムの中でＩＤ管理部４１のＩＤの値をレジスタにセットし、暗号化したパスワードを入力として復号処理部４４で復号させて、レジスタにセットした値と一致するかどうかを照合する。このように、予めパスワードを暗号化して保存しておけば、初期インストール用格納部３５ａに格納したプログラムを実行する際、暗号化に用いたＩＤ管理部４１のＩＤの値と同じ値でなければパスワードを正しく復号できないため、データ領域１のアンロックを禁止できる。
【０１３０】
このような仕組みにより、仮にドライブ部４を別のデータ記録装置３に差し替えて起動させたとしても、その別のデータ記録装置３に備わっているＩＤ管理部４１のＩＤの値は、もともとドライブ部４がインストールされていたデータ記録装置３に備わっているＩＤ管理部４１のＩＤの値は異なるため、初期インストール用格納部３５ａに格納したプログラムを実行しても状態管理部４５のレジスタにセットするＩＤは別の値であり、その状態で復号処理部４４で暗号化パスワードを復号しても正しい値を得ることはできない。このように、ドライブ部４とデータ記録装置３を関連づけることができる。
【０１３１】
同様に、ダウンロード用格納部３５ｂに格納したプログラム（以下、ダウンロードプログラム）で、データ領域２に格納したサーバ１の扱うデータをどのような条件の時に公開するかを設定する。なお、この設定はユーザが条件を指定してもよいし、予めダウンロードプログラムに条件を記述しておき、サーバ１がこのプログラムを配布することによりユーザが条件を指定できなくしてもよい。サーバ１からダウンロードプログラムをダウンロードする指示方法としては、初期インストール用格納部３５ａに格納されたプログラムの命令によりダウンロードを指示してもよいし、ＯＳ起動後にアプリケーションがダウンロードプログラムをダウンロードし、それをダウンロード用格納部３５ｂに格納してもよい。
【０１３２】
次にアンロックフェーズについて説明する。図１４はShadowプログラムが行うアンロックフェーズの処理手順の一例を示すフローチャートである。図１４の処理では、起動プログラムがShadowプログラムを読み込む処理までは図８と同じである（ステップＳ１５１，Ｓ１５２）。次に、Shadowプログラムのうち、初期インストール用格納部３５ａに格納されたプログラムが実行される（ステップＳ１５３）。このプログラムの中で、データ領域１をアンロックしてもよいかどうかの条件検査がなされる（ステップＳ１５４）。
【０１３３】
条件に合致しているか否かを判定し（ステップＳ１５５）、もしも条件に合致しなければエラー処理を行い（ステップＳ１５６）、データ領域１はアンロックされない。条件に合致すれば、まずはＯＳ格納部９がアンロックされ（ステップＳ１５７）、引き続いてデータ領域１がアンロックされる（ステップＳ１５８）。
【０１３４】
次に、Shadowプログラムに含まれるダウンロード用格納部３５ｂのプログラムが実行される（ステップＳ１５９）。ダウンロード用格納部３５ｂのプログラムはサーバ１と認証処理を行う（ステップＳ１６０）。
【０１３５】
次に、サーバ認証に成功したか否かを判定し（ステップＳ１６１）、サーバ認証に失敗した場合はエラー処理を行う（ステップＳ１５６）。サーバ認証に成功した場合はデータ領域２をアンロックする（ステップＳ１６２）。
【０１３６】
初期インストール用格納部３５ａに格納されたプログラムが最後の命令を実行する際、主メモリ２７上の値を使って状態管理部４５のレジスタに記憶する処理を実行すれば、ダウンロード用格納部３５ｂのプログラムはこのときの状態管理部４５のレジスタの値を確認することにより、初期インストール用格納部３５ａに格納されたプログラムが確実に実行されたか否かを確認できる。この確認処理を追加した処理手順は図１５に示している。
【０１３７】
図１５において、データ領域１をアンロックするまでの処理（ステップＳ１７１〜Ｓ１７８）は図１４と同様である。初期インストール用格納部３５ａに格納されたプログラムは特定のステップを実行するごとに状態管理部４５に特定の主メモリ２７上の値を入力として与える。これにより状態管理部４５のレジスタの値は更新される（ステップＳ１７９，Ｓ１８０）。
【０１３８】
初期インストール用格納部３５ａに格納されたプログラムの実行が終了すると、次にダウンロード用格納部３５ｂのプログラムを実行する（ステップＳ１８１）。ダウンロード用格納部３５ｂに格納されたプログラムは、現在の状態管理部４５の値を確認する（ステップＳ１８２）。
【０１３９】
現在の状態管理部４５の値が期待値と一致するか否かを判定し（ステップＳ１８３）、一致しなければエラー処理を行う（ステップＳ１７６）。一致した場合は、ダウンロード用格納部３５ｂに格納されたプログラムはサーバ認証処理を行って、認証に成功したらデータ領域２をアンロックする（ステップＳ１８４〜Ｓ１８６）。
【０１４０】
もし仮にデータを不正に復号することを目的として初期インストール用格納部３５ａに格納したプログラムを改変した場合、状態管理部４５のレジスタには期待する値が記憶されない。したがってダウンロード用格納部３５ｂに格納されたプログラムは状態管理部４５のレジスタの値を確認することで、不正なプログラムがそうでないかを確認することができる。
【０１４１】
なお、状態管理部４５の値が期待値と一致しているか否かを確認する手段として、状態管理部４５の値を直接比較する手法の他に、秘密情報格納部１５の暗号処理部４３と復号処理部４４を使う手法もある。初期インストール用格納部３５ａに格納されたプログラムとダウンロード用格納部３５ｂに格納されたプログラムが予め同じ値を合意しておき、初期インストール用格納部３５ａに格納されたプログラムは秘密情報格納部１５の暗号処理部４３によりその値を暗号化しておく。もし状態管理部４５の値が期待された値と一致していれば、ダウンロード用格納部３５ｂに格納されたプログラムが秘密情報格納部１５の復号処理部４４により暗号化した値を復号すれば、予め合意した値を得ることができる。そうでなければ状態管理部４５のレジスタの値が異なるため、合意した値を得ることはできない。
【０１４２】
このように、第３の実施形態では、Shadowプログラムを機器製造時に組み込んでおく部分とサーバ１からダウンロードしてくる部分とに分け、かつユーザデータ格納部１０の領域を分割することにより、ローカルで使うデータとサーバ１が使うデータについてそれぞれ異なるロック／アンロック制御を行うことができる。また、初期インストール用格納部３５ａに格納されたプログラムを実行させた段階で、プログラムの改変を行ったか否かを確認できるため、不正の疑いがあれば、ダウンロード用格納部３５ｂに格納されたプログラムの実行を禁止でき、その後のＯＳの起動やユーザデータ格納部１０のアンロックも阻止できる。
【０１４３】
（第４の実施形態）  
上述した第２および第３の実施形態では、MBR Shadow格納部３５に格納されたShadowプログラム自身が状態管理部４５に主メモリ２７上の特定の値を設定して現在の値を確認することで、その時点までプログラムが正しく実行されたことを確認し、かつ状態管理部４５の値を使って保護対象のパスワードを復号していた。これに対して、以下に説明する第４の実施形態では、Shadowプログラムを実行するプロセッサ２６が状態管理部４５に主メモリ２７上の特定の値を設定する機能を持つ点が第２および第３の実施形態と異なる。
【０１４４】
図１６は第４の実施形態におけるデータ記録装置３の概略構成を示すブロック図である。図１６のプログラム処理部１１のプロセッサ２６ａは特殊命令Ｘを実行可能で、かつ不図示の暗号化データ蓄積部を備えている点に特徴がある。なお、第４の実施形態におけるデータ記録装置３では、必ずしもデータ記録部６にユーザデータ格納部１０を設ける必要はないため、図示を省略している。同様にＭＢＲを介してＯＳを起動するのではなく、起動処理部１２が直接ＯＳを読み込んで起動する構成でもよいため、図１６ではＭＢＲ格納部８も省略している。これに伴い、アクセス制御部７の要求データ範囲確認部３１、ホスト認証部３２、ロック制御部３３もそれぞれ省略している。なお、省略した各部は、省略せずに設けても構わない。
【０１４５】
図１７は特殊命令Ｘを実行可能なプロセッサ２６ａの内部構成の一例を示すブロック図である。第１、第２および第３の実施形態でもプロセッサ２６を備えていたが、汎用の命令セットを備えていればよかった。これに対して、本実施形態のプロセッサ２６ａは、特殊命令Ｘを実行可能であり、特殊命令Ｘに必要なレジスタを備えている。より具体的には、図１７のプロセッサ２６ａは、汎用コマンド処理部５１と、特殊命令処理部５２と、主メモリ２７範囲指定レジスタ５３と、実行開始アドレス指定レジスタ５４と、ハッシュ計算処理部５５とを有する。
【０１４６】
汎用コマンド処理部５１は汎用の命令を処理する処理部である。主メモリ２７範囲指定レジスタ５３は、特殊命令Ｘが発行された場合に主メモリ２７上のどこからどこまでのハッシュ値を計算すべきか、その位置を指定するためのレジスタである。
【０１４７】
ハッシュ計算処理部５５は、特殊命令Ｘが発行された場合に主メモリ２７範囲指定レジスタ５３によって指定された主メモリ２７範囲のデータのハッシュ値を計算する処理を行う。
【０１４８】
実行開始アドレス指定レジスタ５４は特殊命令Ｘが発行された最後の処理として、汎用コマンド処理部５１に対してどの命令から実行すべきかを指示する。
【０１４９】
特殊命令処理部５２は、主メモリ２７範囲指定レジスタ５３で指定された範囲の主メモリ２７のハッシュ値を計算してプロセッサ状態管理部４９に設定し、実行開始アドレス指定レジスタ５４で指定されたアドレスに格納された命令を汎用コマンド処理部５１で実行する機能を備える。すなわち、プロセッサ２６ａが特殊命令Ｘを実行した後は実行開始アドレス指定レジスタ５４で指定されたアドレスに格納された命令から処理が継続されることになる。
【０１５０】
図１８は第４の実施形態に係る秘密情報格納部１５ｂの概略構成の一例を示すブロック図である。図１８の秘密情報格納部１５ｂは、図５の秘密情報格納部１５にプロセッサ状態管理部４９と判定部５０を追加した構成になっている。
【０１５１】
プロセッサ状態管理部４９は、不図示のレジスタを有し、指定された値をこのレジスタに設定する機能を備える。
【０１５２】
判定部５０はプロセッサ２６ａからの指示に基づいてのみ、プロセッサ状態管理部４９のレジスタに指定された値を設定する制御を行う。図５や図６に示した状態管理部４５が、プログラムから特殊命令Ｘを介さずに指定された値を状態管理部４５のレジスタに設定することができたのに対し、プロセッサ状態管理部４９はプログラムから特殊命令Ｘを介さずに設定命令を受けた場合にはエラーを返す点が異なる。
【０１５３】
この他、暗号化されたデータを蓄積しておく暗号化データ蓄積部を設けてもよいが、必須ではないため、図１８では省略している。
【０１５４】
第４の実施形態では、サーバ１と認証を行う処理に先立ち、サーバ１と認証を行うための秘密鍵をデータ記録装置３にインストールする処理を行う。秘密鍵を生成する際に、公開鍵方式を採用する場合と共有鍵を採用する場合がある。
【０１５５】
図１９（ａ）は公開鍵方式を採用する場合の認証用秘密鍵の設定フェーズの処理手順の一例を示すフローチャート、図１９（ｂ）は共通鍵方式を採用する場合の認証用秘密鍵の設定フェーズの処理手順の一例を示すフローチャートである。
【０１５６】
図１９（ａ）の処理では、データ記録装置３の製造側またはサーバ１側で、まずShadowプログラムと認証用の秘密鍵を生成する（ステップＳ１９１）。そして、Shadowプログラムのハッシュ値（HashValue）を計算し（ステップＳ１９２）、データ記録装置３の公開鍵を取得する（ステップＳ１９３）。次に、以下の（５）式にしたがって認証用の秘密鍵鍵（ServerKey）を暗号化して（ステップＳ１９４）、データ記録装置３の暗号化データ蓄積部（不図示）に保存しておく（ステップＳ１９５）。データ記録装置３が暗号化データ蓄積部を備えていない場合は、Shadowプログラムと共にMBR Shadow格納部３５に保存してもよい。  
Output = Encrypt (ServerKey, HashValue, Key)    …（５）
【０１５７】
ここで、Encryptとは第２の実施形態で示した関数と同一である。すなわち、第２および第３引数を鍵として第１引数の値を暗号化し、その暗号化結果が出力（Output）となる。Key（鍵）には秘密情報格納部１５の鍵管理部４２に格納された鍵の値を用いる。
【０１５８】
暗号化方式に公開鍵方式を用いる場合、秘密情報格納部１５の鍵管理部４２の秘密鍵に対応する公開鍵によって認証用の秘密鍵を暗号化することになるが、サーバ１が公開鍵をデータ記録装置３からネットワーク経由で取得して認証用の秘密鍵を暗号化してもよいし、データ記録装置３の製造時に暗号化してもよいし、認証用の秘密鍵はサーバ１からネットワーク上に配布してデータ記録装置３がインストールする際にデータ記録装置３内のプログラムで鍵管理部４２の公開鍵で暗号化して暗号化認証鍵を保存するようにしてもよい。
【０１５９】
図１９（ｂ）の処理は、ステップＳ２０３の処理だけが図１９（ａ）と異なる。ステップＳ２０３では、データ記録装置３の秘密鍵を取得する。ステップＳ２０４では、秘密鍵を暗号化する。
【０１６０】
暗号化に共通鍵方式を用いる場合、秘密情報格納部１５の鍵管理部４２に格納された値をサーバ１側でも管理している場合は、上述の認証用秘密鍵の暗号化処理をサーバ１側で行ってもよいし、データ記録装置３の製造時に行ってもよいし、認証用の秘密鍵はサーバ１からネットワーク上で配布してデータ記録装置３がインストールする際にデータ記録装置３内のプログラムで鍵管理部４２の秘密鍵で暗号化して暗号化認証鍵を保存するようにしてもよい。
【０１６１】
次に、Shadowプログラムと認証用秘密鍵を使ってサーバ１と認証を行う処理について説明する。
【０１６２】
図２０は第４の実施形態におけるShadowプログラムの処理手順の一例を示すフローチャートである。
【０１６３】
一般に、プログラムが実行される際、プログラムを主メモリ２７上に展開し、プロセッサ２６ａはその主メモリ２７上のプログラムを実行する。Shadowプログラムも同様に主メモリ２７上に展開されてプロセッサ２６ａにより実行される（ステップＳ２１１）。主メモリ２７上に展開するまでの処理は起動プログラム格納部２１に格納された起動プログラムが行えばよい。この起動プログラムがShadowプログラムを読み込んで実行する。
【０１６４】
Shadowプログラムは、プロセッサ２６ａの特殊命令Ｘが発行された場合に、主メモリ２７上に展開されたプログラム情報のどこからどこまでのハッシュ値を計算すべきかを指示するために、主メモリ２７のアドレスと範囲をプロセッサ２６ａの主メモリ２７範囲指定レジスタ５３に設定する（ステップＳ２１２）。このときにShadowプログラムが設定する範囲は、主メモリ２７上に展開されたShadowプログラムのプログラム部分、もしくはプログラム部分とデータ部分となるように設定する。さらに、プログラム開始アドレスはハッシュ値計算に用いたアドレス範囲に含まれる位置とするように設定する。また、プロセッサ２６ａが特殊命令Ｘの実行後に実行するプログラムのアドレスを指定するために実行開始アドレス指定レジスタ５４にアドレスを設定する。
【０１６５】
その後、Shadowプログラムはプロセッサ２６ａに対して特殊命令Ｘを発行する（ステップＳ２１３）。プロセッサ２６ａは特殊命令Ｘを実行するが、この時に特定のレジスタに設定された値を参照し、その値が指し示す主メモリ２７アドレスの範囲のハッシュ値を計算し（ステップＳ２１４）、計算されたハッシュ値を秘密情報格納部１５のプロセッサ状態管理部４９に格納することを指示するコマンドを発行する（ステップＳ２１５）。このハッシュ値の計算とコマンドの発行の処理はプログラムではなく、プロセッサ２６ａ自身が行う。
【０１６６】
秘密情報格納部１５は、受信したコマンドがプロセッサ２６ａからか、あるいはプロセッサ２６ａで実行されたプログラムからかを判別し（ステップＳ２１６）、プロセッサ２６ａからの場合のみ受け付け、プロセッサ２６ａで実行されたプログラムからであれば拒否してエラーを返す（ステップＳ２１７）。
【０１６７】
受信したコマンドがプロセッサ２６ａであれば、プロセッサ状態管理部４９にハッシュ値が設定される（ステップＳ２１８）。
【０１６８】
その後、プロセッサ２６ａは実行開始アドレス指定レジスタ５４で指定されたアドレスに存在する命令を汎用コマンド処理部５１で処理する。このアドレスにはShadowプログラムのコード部分が指定されており、Shadowプログラムの処理が継続する。
【０１６９】
Shadowプログラムは秘密情報格納部１５に対して、サーバ認証用暗号化秘密鍵に蓄積されているデータを復号するようコマンドを送信する（ステップＳ２１９）。秘密情報格納部１５はこのコマンドを受信すると、以下の（６）式にしたがって暗号化秘密鍵を復号する（ステップＳ２２０）。
Output = Decrypt (Input, RegisterValue, Key)    …（６）
【０１７０】
ここで、Decryptとは第２の実施形態で示した関数と同一である。すなわち、第２および第３引数を鍵として第１引数の値を復号し、その復号結果が出力(Output)である。ここで、Inputは暗号化サーバ認証用秘密鍵であり、RegisterValueにはプロセッサ状態管理部４９の値が入力値となる。出力値(Output)が平文サーバ認証用秘密鍵の値となる。
【０１７１】
次に、この平文サーバ認証用秘密鍵の値を使ってサーバ１と認証処理を行うが（ステップＳ２２１）、その処理手順については、上述した第１〜第３実施形態で述べた手順に従えばよい。
【０１７２】
なお、特殊命令Ｘを送信してから平文サーバ認証用秘密鍵を取得するまでの処理については、割り込み処理が発生して他のプログラムが動作することや、デバッグモードに遷移することのないようプロセッサ２６ａを制御することが望ましい。
【０１７３】
なお、Shadowプログラムを終了する前に、主メモリ２７上で平文サーバ認証用秘密鍵を配置した部分を別の値で上書きするなどして消去しておくことが望ましい。
【０１７４】
このように、第４の実施形態では、RegisterValueはプロセッサ状態管理部４９の値、すなわちプロセッサ２６ａしか設定できない値である点がポイントである。一般にプロセッサ２６ａは、ハードウェアで実現される。ハードウェアの改変は非常に困難であるため、プロセッサ状態管理部４９にShadowプログラムのハッシュ値以外の値を格納するよう攻撃することも困難である。また、秘密情報格納部１５に格納されたShadowプログラムのハッシュ値が正当な値でないと平文サーバ１用認証秘密鍵を取得することができない。これにより、Shadowプログラムしか平文サーバ１用認証秘密鍵を復号できないことが保証できるため、安全にパスワードを保護することができる。また平文サーバ認証用秘密鍵はShadowプログラムとは独立して配布することができるため、サーバ認証用秘密鍵を更新する場合でも、Shadowプログラムを更新する必要がない。
【０１７５】
なお、これまでは説明を簡略化するためにドライブ部４がデータ記録部６を備えていない構成を説明した。ドライブ部４にデータ記録部６があり、サーバ認証用秘密鍵を保護する代わりに、データ記録部６のアンロック制御に用いるパスワードを保護する場合にも、本実施形態を適用可能である。
【０１７６】
図２１はアンロック制御用のパスワードを保護可能な第４の実施形態におけるデータ記録装置３の概略構成の一例を示すブロック図である。図２１のデータ記録装置３は、図１６のアクセス制御部７とデータ記録部６の内部構成を図４と同様にしたものであり、ブロック構成として比較すると、図４のプロセッサ２６とは別個のプロセッサ２６ａを設けたことのみが異なる。
【０１７７】
図２０の処理でShadowプログラムとサーバ認証用暗号化秘密鍵をデータ記録装置３にインストールした手順と同様の手順で、Shadowプログラムとデータ記録部６のアンロック制御用の暗号化パスワードをインストールすればよい。暗号化パスワードを復号したパスワードは、データ記録部６をアンロックするために用いられ、このパスワードは、アクセス制御部７のホスト認証部３２に格納されたパスワードの値と一致するようにしておく。
【０１７８】
暗号化パスワードのインストール処理は、データ記録装置３の製造時に行ってもよいし、データ記録装置３の製造時にデータ記録装置３のShadowプログラムの中に暗号化パスワードを含めてMBR Shadow設定部３４にインストールしておいてもよいし、インターネット２のサーバ１側でパスワードを生成し、インターネット２経由でパスワードをデータ記録装置３に送信し、データ記録装置３のShadowプログラムが上述の式にしたがってパスワードを暗号化して暗号化データ蓄積部（不図示）に保存してもよいし、暗号化パスワードを含んだShadowプログラムを生成してインターネット２経由でShadowプログラムをデータ記録装置３に送信し、データ記録装置３がMBR Shadow設定部３４にインストールしてもよい。
【０１７９】
次に、Shadowプログラムとパスワードを使ってデータ記録部６をアンロックする処理について説明する。
【０１８０】
図２２は第４の実施形態におけるShadowプログラムが行うアンロックフェーズの処理手順の一例を示すフローチャートである。図２０ではサーバ認証用秘密鍵を保護対象として、プロセッサ状態管理部４９の値を使って復号したのに対し、図２２ではデータ記録部６をアンロックするためのパスワードを保護対象とする点が異なるが、全体的な処理の流れは図２０と同様である。
【０１８１】
なお、ステップＳ２４０で暗号化パスワードを復号して平文パスワードを生成する。その後、サーバ１との認証を行い（ステップＳ２４１）、サーバ１との認証に成功すると、平文パスワードの値をドライブ部４に送信して、ロック制御部３３によりデータ記録部６をアンロックする（ステップＳ２４２）。ステップＳ２４２の処理については、上述した第１〜第３実施形態で説明した手順に従えばよい。これにより、特定のShadowプログラムでしか平文パスワードを取得できなくなり、安全にパスワードを保護することができる
このように、第４の実施形態では、プロセッサ２６ａが特殊命令Ｘを実行することにより、サーバ認証用秘密鍵やデータ記録部６のアンロック制御用の暗号化パスワードを生成するため、Shadowプログラム自体で秘密鍵やパスワードを暗号化する場合よりも、より安全に暗号化処理を行え、不正に暗号化の仕組みを解読されるおそれが少なくなる。
【０１８２】
(第５の実施形態)
第４の実施形態では、Shadowプログラムが暗号化されていない平文の状態か、暗号化されていてもShadowプログラムを復号するための鍵はShadowプログラムに内包されていた。第５の実施形態では、Shadowプログラムを機器にインストールする前に、Shadowプログラムそのものを事前に暗号化しておき、かつ暗号化Shadowプログラムと、暗号化Shadowプログラムを復号する鍵を別々に配布することに特徴がある。
【０１８３】
第５の実施形態によるデータ記録装置３の概略構成は図１６と同一である。第５の実施形態では、Shadowプログラムとパスワードを使ってデータ記録部６をアンロックする処理に先立ち、暗号化プログラム鍵とShadowプログラムをデータ記録装置３にインストールする処理を行う。このインストール処理を行うために、まずShadowプログラムと平文パスワードを生成する。
【０１８４】
図２３は第５の実施形態におけるShadowプログラムの構造の一例を示す図である。Shadowプログラムは平文コード部分７１、暗号化コード部分７２、それにデータ部分７３から構成される。
【０１８５】
平文コード部分７１は少なくともShadowプログラムの最初に実行される部分（エントリーポイント７４）を含む。
【０１８６】
暗号化コード部分７２は平文コード部分７１の次に実行される部分である。この部分は後述するプログラム鍵によって暗号化されている。
【０１８７】
データ部分７３はShadowプログラムの保有するデータが格納されている部分である。
【０１８８】
プログラム鍵は暗号化コード部分７２を暗号化する鍵であり、Shadowプログラムとは別に用意しておく。このプログラム鍵（ProgramKey）は少なくとも暗号化コード部分７２を含むプログラムのハッシュ値（HashValue）を使って以下の（７）式にしたがって暗号化する。  
Output = Encrypt (Program Key, HashValue, Key)    …（７）
【０１８９】
ここで、Encryptとは第２の実施形態で示した関数と同一である。すなわち、第２および第３引数を鍵として第１引数の値を暗号化し、その暗号化結果が出力（Output）となる。Key（鍵）には秘密情報格納部１５の鍵管理部４２に格納された鍵の値を用いる。
【０１９０】
暗号化方式に公開鍵方式を用いる場合、秘密情報格納部１５の鍵管理部４２の秘密鍵に対応する公開鍵によってプログラム鍵を暗号化することになるが、サーバ１が公開鍵をデータ記録装置３からネットワーク経由で取得してプログラム鍵を暗号化してもよいし、データ記録装置３の製造時に暗号化してもよいし、プログラム鍵はサーバ１からネットワーク上で配布してデータ記録装置３がインストールする際にデータ記録装置３内のプログラムで鍵管理部４２の公開鍵で暗号化して暗号化プログラム鍵を保存してもよい。
【０１９１】
暗号化に共通鍵方式を用いる場合、秘密情報格納部１５の鍵管理部４２に格納された値をサーバ１側でも管理している場合は、上述のプログラム鍵の暗号化処理をサーバ１側で行ってもよいし、データ記録装置３の製造時に行ってもよいし、プログラム鍵はサーバ１からネットワーク上で配布してデータ記録装置３がインストールする際にデータ記録装置３内のプログラムで鍵管理部４２のプログラム鍵で暗号化して暗号化プログラム鍵を保存するようにしてもよい。
【０１９２】
次に、Shadowプログラムを復号する処理について説明する。図２４は第５の実施形態におけるShadowプログラムが行う復号処理手順の一例を示すフローチャートである。
【０１９３】
まず、プロセッサ２６ａは、起動プログラム格納部２１に格納された起動プログラムを実行し、この起動プログラムからShadowプログラムを読み込む。Shadowプログラム中の最初に実行される部分は平文コードのエントリーポイント７４(通常は平文コードの最初のアドレス)である（ステップＳ２５１）。
【０１９４】
次に、Shadowプログラムは、プロセッサ２６ａの特殊命令Ｘが発行された場合にどこからどこまでのハッシュ値を計算すべきかを指示するために、アドレスと範囲をプロセッサ２６ａの主メモリ２７範囲指定レジスタ５３に設定する（ステップＳ２５２）。この主メモリ２７範囲は少なくとも暗号化コード部分７２を含み、主メモリ２７の内容は上述したプログラム鍵を暗号化する時に用いた内容と一致していなければならない。
【０１９５】
その後、Shadowプログラムはプロセッサ２６ａに対して特殊命令Ｘを発行する。プロセッサ２６ａは第４の実施形態で示したのと同じ手法で特殊命令Ｘを実行する（ステップＳ２５３）。その後、図２２のステップＳ１９４〜Ｓ１９８と同様の手順で、ハッシュ値をプロセッサ状態管理部４９に蓄積する（ステップＳ２５４〜Ｓ２５８）。
【０１９６】
次に、Shadowプログラムは秘密情報格納部１５に対して、暗号化プログラム鍵を復号するようコマンドを送信する（ステップＳ２５９）。暗号化プログラム鍵は、予めホスト部５の不図示の暗号化データ蓄積部に保存されているか、あるいはShadowプログラムに含まれているか、あるいはサーバから取得するものとする。秘密情報格納部１５はこのコマンドを受信すると、以下の（８）式にしたがってデータを復号する（ステップＳ２６０）。  
Output = Decrypt (Input, RegisterValue, Key)    …（８）
【０１９７】
ここで、Decryptとは第２の実施形態で示した関数と同一である。すなわち、第２および第３引数を鍵として第１引数の値を復号し、その復号結果が出力(Output)である。ここで、Inputは暗号化プログラム鍵であり、RegisterValueにはプロセッサ状態管理部４９の値が入力値となる。出力値(Output)が平文プログラム鍵の値となる。
【０１９８】
Shadowプログラムは平文プログラム鍵を使い、暗号コード部分を復号する（ステップｓ２６１）。そして平文の暗号コード部分に含まれた命令を実行する。
【０１９９】
この後、暗号コード部分のShadowプログラムの中で、サーバ認証を行ったり、ドライブ部４のデータ記録部６がロックされている場合はアンロック処理を行ったりする。Shadowプログラムの中でサーバ認証用の秘密鍵やデータ記録部６をアンロックするパスワードなどの秘密データを取得する手法として、(1)予め暗号コードの中に秘密データを埋め込んでおく手法、(2)暗号コードの中には秘密データを復号する鍵を埋め込んでおき、秘密データはデータ部分７３に暗号化して埋め込んでおく。暗号化コード部分７２に埋め込んでおいた鍵を使ってデータ部分７３の秘密データを復号する手法などがある。
【０２００】
なお、暗号コードの中に予め暗号コード部分のハッシュ値を埋め込んでおき、そのハッシュ値と秘密情報管理部のプロセッサ状態管理部４９の値が一致するか確認処理を行い、値が一致しない場合は以降の処理は行わずにエラー処理を行うようにしてもよい。
【０２０１】
このように、第５の実施形態では、Shadowプログラムと、Shadowプログラムの復号に用いるプログラム鍵を別々に暗号化しておき蓄積しておく。MBR Shadow格納部３５に格納されている間、Shadowプログラムは暗号化されている。したがって、仮に攻撃者がファイルやイメージデータとしてShadowプログラムを入手したとしても、暗号化されているため解析は困難である。また暗号化されたShadowプログラムを復号するためのプログラム鍵はShadowプログラムの実行時にのみ平文になり、プログラム鍵の復号も容易ではない。また、Shadowプログラムの中に秘密のデータを含めても解読されるおそれがないため、サーバ認証用の秘密データや、データ記録部６をアンロックするパスワードなど別のデータをShadowプログラムに安全に含めることができる。
【０２０２】
さらに、Shadowプログラムとプログラム鍵は暗号化された状態でMBR Shadow格納部３５に格納されるため、サーバ１で予め暗号化したShadowプログラムとプログラム鍵を生成すれば、サーバ１とデータ記録装置３の間の通信経路での漏洩を気にする必要はない。このため、サーバ１側でShadowプログラムとプログラム鍵を更新して配布する作業を安全かつ簡易に行うことができる。
【０２０３】
最後に、本明細書に出てくる種々の鍵あるいはパスワードの役割をまとめて説明する。プログラム鍵とは、プログラムを復号するために使用する鍵である。パスワードとは、ドライブ部４をアンロックするために使用する値である。サーバ認証用の秘密鍵とは、サーバとの認証を行うために使用する鍵である。鍵管理部４２の秘密鍵とは鍵管理部４２に格納されており、秘密情報格納部１５ｂが入力データを暗号化・復号するために使用する値である。これら鍵およびパスワードは、以下の順序で使用される。
【０２０４】
１）暗号化プログラム鍵を秘密情報格納部で復号する。この時の鍵は鍵管理部の秘密鍵を用いる暗号化プログラム鍵は、暗号化データ蓄積部に保存されているか、Shadowプログラムに含まれているか、サーバから受信する。  
２）プログラム鍵を使ってプログラムを復号する。  
３）暗号化パスワードと暗号化サーバ認証用秘密鍵を復号し、それぞれパスワードとサーバ認証用の秘密鍵を取得する。暗号化パスワードと暗号化サーバ認証用秘密鍵は、Shadowプログラムに含まれている。  
４）復号したサーバ認証用秘密鍵を使用してサーバ認証を行う。  
５）復号したパスワードを使用してドライブ部４をアンロックする。
【０２０５】
なお、昨今では原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際、電力品質の安定化を図るために次世代電力網(スマートグリッド)が構築されている。
【０２０６】
図２５は次世代電力網の概略構成の一例を示すブロック図である。図２５に示すように、次世代電力網では、電力使用量を集計するスマートメーター（SM）６１と、家電機器を管理するホームサーバ（Home Energy Management System, HEMS）６２が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバ（Building Energy Management System, BEMS）６３がビル毎に設置される。SM６１は、コンセントレータ６４とよばれる中継器によって数台ごとにまとめられ、通信網を介してメーターデータ管理システム（Meter Data Management System, MDMS）６５と通信する。MDMS６５は、各家庭のSMから一定の間隔で電力使用量を受信して、記憶する。エネルギー管理システム（Energy Management System, EMS）６６は、MDMS６５に集まった複数の家庭の電力使用量あるいは、電力系統に設置されたセンサからの情報に基づいて、各家庭のSM６１やホームサーバ６２に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS６６は遠隔端末ユニット（Remote Terminal Unit, RTU）６７に接続された太陽光発電や風力発電などの分散電源６８、同じくRTU６７に接続された蓄電装置６９、またRTU６７に接続された発電側との間を制御する送配電制御装置７０を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【０２０７】
このように、MDMS６５とコンセントレータ６４、BEMS６３とEMS６６、EMS６６とHEMS６２はネットワーク７１で接続されており、かつ、スマートメーター６１で動作するプログラムはプライバシー情報などの秘密情報を格納する可能性がある。
【０２０８】
上述した各実施形態で示した構成において、データ記録装置３をスマートメーター６１内に設置し、サービス提供サーバ１をMDMS６５内に設けることにより、上記各実施形態に係る情報提供システムは次世代電力網にも応用することが可能である。
【０２０９】
さらに、上述した第３の実施形態を応用すれば、サーバ１を介してShadowプログラムを容易に配布できるため、スマートメーター６１で動作するプログラムの一部をShadowプログラムとして構成することにより、プログラムの改変等を確実に防止して、プログラムの更新を安全に行うことができる。
【０２１０】
上述した実施形態で説明した情報記録装置は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、情報処理装置の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の携帯可能なものに限定されず、ハードディスク装置や主メモリ２７などの固定型の記録媒体でもよい。
【０２１１】
また、情報記録装置の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【０２１２】
上記の記載に基づいて、当業者であれば、本発明の追加の効果や種々の変形を想到できるかもしれない。したがって、本発明の態様は、上述した個々の実施形態には限定されない。特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【０２１３】
１  サーバ
３  データ記録装置
４  ドライブ部
５  ホスト部
６  データ記録部
７  アクセス制御部
８  ＭＢＲ格納部
９  ＯＳ格納部
１０  ユーザデータ格納部
１１  プログラム処理部
１２  起動処理部
１５  秘密情報格納部
２６  プロセッサ
２７  主メモリ
３２  ホスト認証部
３３  ロック制御部
３４  MBR Shadow設定部
３５  MBR Shadow格納部
４２  鍵管理部
４３  暗号処理部
４４  復号処理部
４５  状態管理部
５２  特殊命令処理部
５５  ハッシュ計算処理部
６１  スマートメーター
【図１】
0005380604.tif 000002
【図２】
0005380604.tif 000003
【図３】
0005380604.tif 000004
【図４】
0005380604.tif 000005
【図５】
0005380604.tif 000006
【図６】
0005380604.tif 000007
【図７】
0005380604.tif 000008
【図８】
0005380604.tif 000009
【図９】
0005380604.tif 000010
【図１０】
0005380604.tif 000011
【図１１】
0005380604.tif 000012
【図１２】
0005380604.tif 000013
【図１３】
0005380604.tif 000014
【図１４】
0005380604.tif 000015
【図１５】
0005380604.tif 000016
【図１６】
0005380604.tif 000017
【図１７】
0005380604.tif 000018
【図１８】
0005380604.tif 000019
【図１９】
0005380604.tif 000020
【図２０】
0005380604.tif 000021
【図２１】
0005380604.tif 000022
【図２２】
0005380604.tif 000023
【図２３】
0005380604.tif 000024
【図２４】
0005380604.tif 000025
【図２５】
0005380604.tif 000026