(57)【特許請求の範囲】
【請求項１】
パスワードを記憶する第１の記憶手段と、
前記第１の記憶手段と異なる記憶手段であって、起動プログラムと復号プログラムと前記パスワードにより暗号化された暗号化・復号キーを非暗号化領域に記憶し、前記暗号化・復号キーにより暗号化されたプログラムを暗号化領域に記憶する第２の記憶手段と、
自身の電源オンを契機として、前記起動プログラムによって前記第１の記憶手段から前記パスワードを読み出すパスワード読み出し手段と、
前記パスワード読み出し手段によって読み出された前記パスワードを用いて前記第２の記憶手段に記憶されている前記暗号化・復号キーを復号するキー復号手段と、
前記起動プログラムによって、前記第２の記憶手段へのアクセス要求をフックするアクセス要求フックプログラムを自身の演算回路が命令を読み出すための第３の記憶手段に記憶させる設定手段と、を有し、
前記起動プログラムが実行されることで生じた前記第２の記憶手段へのアクセス要求を前記設定手段によって記憶された前記アクセス要求フックプログラムがフックして前記復号プログラムを呼び出し、前記復号プログラムが前記第２の記憶手段に記憶された前記暗号化されたプログラムを前記キー復号手段によって復号された暗号化・復号キーを用いて復号して前記第３の記憶手段に記憶させ、前記演算回路が前記第３の記憶手段に記憶された前記復号されたプログラムを実行する、ことを特徴とする組み込み機器。
【請求項２】
前記起動プログラムが前記プログラムのアドレスをプログラムカウンタに設定することで、前記演算回路は前記アドレスが示す前記第３の記憶手段に記憶された前記プログラムを実行する、ことを特徴とする請求項１に記載の組み込み機器。
【請求項３】
前記第２の記憶手段の非暗号化領域にはさらに暗号化プログラムが記憶されており、
前記プログラムが実行されることで生じた前記第２の記憶手段への書き込み要求を前記アクセス要求フックプログラムがフックして前記暗号化プログラムを呼び出し、
前記暗号化プログラムは前記キー復号手段によって復号された暗号化・復号キーを用いて書き込み対象のデータを暗号化した後、前記第２の記憶手段に書き込む、ことを特徴とする請求項１又は２に記載の組み込み機器。
【請求項４】
前記第１の記憶手段はＢＩＯＳであり、前記第２の記憶手段は不揮発性のメモリであり、前記第３の記憶手段はＲＡＭであることを特徴とする請求項１〜３いずれか１項に記載の組み込み機器。
【請求項５】
前記第２の記憶手段に記憶された前記プログラムは自機のＯＳを含むことを特徴とする請求項１〜４いずれか１項に記載の組み込み機器。
【請求項６】
パスワードを記憶する第１の記憶手段と、
前記第１の記憶手段と異なる記憶手段であって、起動プログラムと復号プログラムと前記パスワードにより暗号化された暗号化・復号キーを非暗号化領域に記憶し、前記暗号化・復号キーにより暗号化されたプログラムを暗号化領域に記憶する第２の記憶手段と、を有する組み込み機器の暗号化・復号方法であって、
パスワード読み出し手段が、自身の電源オンを契機として、前記起動プログラムによって前記第１の記憶手段から前記パスワードを読み出すステップと、
キー復号手段が、前記パスワード読み出し手段によって読み出された前記パスワードを用いて前記第２の記憶手段に記憶されている前記暗号化・復号キーを復号するステップと、
設定手段が、前記起動プログラムによって、前記第２の記憶手段へのアクセス要求をフックするアクセス要求フックプログラムを自身の演算回路が命令を読み出すための第３の記憶手段に記憶させるステップと、を有し、
前記起動プログラムが実行されることで生じた前記第２の記憶手段へのアクセス要求を前記設定手段によって記憶された前記アクセス要求フックプログラムがフックして前記復号プログラムを呼び出し、前記復号プログラムが前記第２の記憶手段に記憶された前記暗号化されたプログラムを前記キー復号手段によって復号された暗号化・復号キーを用いて復号して前記第３の記憶手段に記憶させ、前記演算回路が前記第３の記憶手段に記憶された前記復号されたプログラムを実行する、ことを特徴とする暗号化・復号方法。
【請求項７】
パスワードを記憶する第１の記憶手段と、
前記第１の記憶手段と異なる記憶手段であって、起動プログラムと復号プログラムと前記パスワードにより暗号化された暗号化・復号キーを非暗号化領域に記憶し、前記暗号化・復号キーにより暗号化されたプログラムを暗号化領域に記憶する第２の記憶手段と、を有する組み込み機器に、
自身の電源オンを契機として、前記起動プログラムによって前記第１の記憶手段から前記パスワードを読み出すパスワード読み出しステップと、
前記パスワード読み出しステップによって読み出された前記パスワードを用いて前記第２の記憶手段に記憶されている前記暗号化・復号キーを復号するキー復号ステップと、
前記起動プログラムによって、前記第２の記憶手段へのアクセス要求をフックするアクセス要求フックプログラムを自身の演算回路が命令を読み出すための第３の記憶手段に記憶させる設定ステップと、を実行させ、
前記起動プログラムが実行されることで生じた前記第２の記憶手段へのアクセス要求を前記設定ステップによって記憶された前記アクセス要求フックプログラムがフックして前記復号プログラムを呼び出し、前記復号プログラムが前記第２の記憶手段に記憶された前記暗号化されたプログラムを前記キー復号ステップによって復号された暗号化・復号キーを用いて復号して前記第３の記憶手段に記憶させ、前記演算回路が前記第３の記憶手段に記憶された前記復号されたプログラムを実行する、ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムなどが組み込まれた組み込み機器に関し、特に、プログラムが暗号化された組み込み機器等に関する。
【背景技術】
【０００２】
組み込み機器にはファームウェアやプログラムなどが記憶されている。これらは知的な生産物であるため改竄やコピーから保護する必要がある。このため、ファームウェアやプログラムを組み込み機器内のディスクに暗号化して保存しておき、組み込み機器が起動する際、暗号化されているファームウェアやプログラムを復号する技術が知られている（例えば、特許文献１参照。）。特許文献１には、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）がデータベースの内容をメモリカードに記憶する際、データベースをＤＢキーで暗号化すると共に、ＤＢキーをユーザに対応した暗号化パスワードで暗号化して、暗号化パスワードと共にメモリカードに記憶させておき、携帯端末がメモリカードからデータベースにアクセスする際、ユーザからパスワードの入力を受け付け、該パスワードをパスワード自体で暗号化し、その暗号化されたパスワードとメモリカードに記憶された暗号化パスワードとが一致する場合に、データベースへのアクセスを許可するデータ検索システムが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載されているように認証時にパスワードの入力をユーザに要求する場合、ユーザがパスワードを入力するためのインターフェースが必要になるという問題がある。組み込み機器の多くは、キーボードやマウスなど入力用のインターフェースを有しておらず、ユーザからパスワードの入力を受け付けることができない。また、組み込み機器が仮に入力用のインターフェースを有していても、起動の度に、ユーザにパスワードの入力を要求するのでは操作性が低下してしまう。
【０００４】
本発明は、上記課題に鑑み、ユーザへパスワードを要求せずに、組み込み機器のディスクに記憶されたプログラム等を保護する組み込み機器を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題に鑑み、本発明は、パスワードを記憶する第１の記憶手段と、前記第１の記憶手段と異なる記憶手段であって、起動プログラムと復号プログラムと前記パスワードにより暗号化された暗号化・復号キーを非暗号化領域に記憶し、前記暗号化・復号キーにより暗号化されたプログラムを暗号化領域に記憶する第２の記憶手段と、自身の電源オンを契機として、前記起動プログラムによって前記第１の記憶手段から前記パスワードを読み出すパスワード読み出し手段と、前記パスワード読み出し手段によって読み出された前記パスワードを用いて前記第２の記憶手段に記憶されている前記暗号化・復号キーを復号するキー復号手段と、前記起動プログラムによって、前記第２の記憶手段へのアクセス要求をフックするアクセス要求フックプログラムを自身の演算回路が命令を読み出すための第３の記憶手段に記憶させる設定手段と、を有し、前記起動プログラムが実行されることで生じた前記第２の記憶手段へのアクセス要求を前記設定手段によって記憶された前記アクセス要求フックプログラムがフックして前記復号プログラムを呼び出し、前記復号プログラムが前記第２の記憶手段に記憶された前記暗号化されたプログラムを前記キー復号手段によって復号された暗号化・復号キーを用いて復号して前記第３の記憶手段に記憶させ、前記演算回路が前記第３の記憶手段に記憶された前記復号されたプログラムを実行する、ことを特徴とする組み込み機器を提供する。
【発明の効果】
【０００６】
ユーザへパスワードを要求せずに、組み込み機器のディスクに記憶されたプログラム等を保護する組み込み機器を提供することができる。
【図面の簡単な説明】
【０００７】
【図１】ディスクの暗号化・復号方法の概略を説明する図の一例である。
【図２】ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のハードウェア構成図の一例を示す。
【図３】ＰＣが起動する手順を説明する図の一例を示す図である。
【図４】起動を模式的に説明する図の一例である。
【図５】ディスク全体が暗号化されている場合のＰＣの起動手順の一例を示す図である。
【図６】割り込みベクタとファンクション本体を模式的に説明する図の一例である。
【図７】ＢＩＯＳファンクションのフックを模式的に説明する図の一例である。
【図８】組み込み機器のハードウェア構成図の一例を示す図である。
【図９】組み込み機器の構成を模式的に説明する図の一例である。
【図１０】ディスク全体が暗号化されている組み込み機器の起動手順の一例を示す図である。
【図１１】アプリケーションプログラムがディスクにデータを書き込み、又は、ディスクからデータを読み出す手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【０００８】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態のディスク１４の暗号化・復号方法の概略を説明する図の一例である。ディスク１４はＭＢＲ（Master  Boot  Record）２１があるＴｒａｃｋ０の領域を除き暗号化キー・復号キーにより暗号化されている。また、ディスク１４にはパスワードにより暗号化された暗号化・復号キー２８が記憶されている。
【０００９】
まず、ディスク１４に記憶されたデータは暗号化キー・復号キーにより暗号化されていることで保護されている。ディスク１４の復号に必要な暗号化キー・復号キーは、パスワードにより暗号化されているので、仮に、第三者がディスク１４だけを取り出してもデータを読み出すことはできない。
（１）ＣＰＵ１２は一般的な起動処理として、起動時にＢＩＯＳプログラム２３を実行して、デバイスの初期化、起動ドライブの決定やＭＢＲ２１のＲＡＭ１３へのコピー等を行う。
（２）ＭＢＲ２１にはディスク１４上の各種のプログラムを起動させるブートストラップローダ２２が記憶されており、ブートストラップローダ２２が本実施形態に特徴的な処理を提供する。従来のブートストラップローダ２２と区別するため、図では専用ブートローダとした。
（３）この専用ブートローダはＢＩＯＳ１１から（ＲＡＭに転送されたＢＩＯＳ領域から読み出してもよい）パスワード２７を読み出す。
（４）そして、パスワード２７で暗号化・復号キー２８を復号する。こうすることで、ディスク１４に記憶されたデータが復号可能になる。専用ブートローダは、暗号化・復号キー２８をＲＡＭ１３やレジスタに記憶しておく。
（５）なお、専用ブートローダは、Ｔｒａｃｋ０の暗号化プログラムと復号プログラムをＲＡＭ１３に読み込むことで、暗号化プログラムが暗号化・復号キー２８を用いてデータを暗号化することが、復号プログラムが暗号化・復号キー２８を用いてデータを復号することが可能になっている。
（６）また、専用ブートローダは、暗号化・復号処理のためのセットアップ処理を行う。このセットアップ処理は、ディスク１４へのアクセス要求をフックするための処理である（暗号化プログラム又は復号プログラムへジャンプする。）。セットアップ処理により、アプリケーションプログラムの先頭セクタなどがまず最初に復号され、アプリケーションプログラムは、常に、ディスク１４から読み出したデータを復号し、復号処理を経てディスク１４へデータを書き込むことができる。
【００１０】
このように、アプリケーションプログラムがディスク１４へアクセスするために必要なパスワード２７がＢＩＯＳ１１に記憶されているので、ユーザがパスワードを入力しなくても、ディスク１４のデータを読み書きすることができる。なお、以下では、ディスク１４に記憶されているプログラムやデータを問わず、単にデータという場合がある。
【００１１】
〔一般的なＰＣの起動手順〕
図２は、ＰＣ（Personal  Computer）のハードウェア構成図の一例を示す。ＢＩＯＳ１１、ディスク１４、ディスプレイ１５、ＣＰＵ１２、ＲＡＭ１３、及び、キーボード１６がバスを介して接続されている。この他、ネットワーク接続用の通信装置、メモリカード装着部、又は、マウスなどは省略したが、図示する以外のハードウェアを有していてもよい。
【００１２】
ディスク１４は、ＨＤＤ（ハードディスドライブ）であることが多いが、ＳＳＤ（Solid  State  Drive）や、ＨＤＤとＳＤＤを組み合わせたものでもよい。ディスク１４には、アプリケーションプログラムやＯＳ（Operating  System）が記憶されている。なお、アプリケーションプログラムは、ＰＣであればワープロやブラウザなどであり、組み込み機器であればその組み込み機器に特有のソフトウェアである。
【００１３】
ＢＩＯＳ１１は各社又は種々の周辺機器の入出力に対し統一したインターフェースを提供したり、ＯＳを起動したり、マザーボード上の各種のハードウェアを設定する等の機能を提供する。ＢＩＯＳ１１の実体はＲＯＭとＲＯＭに記憶されたＢＩＯＳプログラム２３等である。Windows（登録商標）が一般に普及した後は、Windowsが提供するドライバが利用されるようになったため、周辺機器に対する統一したインターフェースとしての機能が利用されることが減少したが、本実施形態の後述するアプリケーションプログラムはＢＩＯＳ１１が提供するインターフェースを利用して（フックして）暗号化・復号を行う。
【００１４】
なお、ＣＰＵ１２はＢＩＯＳプログラムやＯＳ、アプリケーションプログラムを実行してＰＣの全体を制御する。ＲＡＭ１３は、ＣＰＵ１２がＢＩＯＳプログラムやＯＳ、アプリケーションプログラムを実行する際のワークエリアとなる。ディスプレイ１５は、ＯＳやアプリケーションプログラムが生成するGUI又はCUIベースのユーザインターフェースを表示する。キーボード１６は、ユーザのＰＣへの操作を受け付ける。
【００１５】
図３は、ＰＣが起動する手順を説明する図の一例を、図４は、起動を模式的に説明する図の一例である。なお図３の手順はディスク１４が暗号化されていない一般的なＰＣの起動手順である。
【００１６】
まず、ユーザが電源をオンにする（Ｓ２０１）。
【００１７】
すると、ＣＰＵ１２はＢＩＯＳ１１に保存されているＢＩＯＳプログラム２３の実行を開始する（２０２）。まず、ＢＩＯＳプログラム２３は、ＲＡＭ１３など初期化が必要な周辺機器の初期化と、各周辺機器の診断を行う。そして、ＢＩＯＳ１１のＣＭＯＳ等に記憶されている起動ドライブの優先順位に従って、起動するドライブを決定する。例えば、ＣＤ−ＲＯＭ、フロッピーディスク、ハードディスク、又は、ＵＳＢメモリ等からユーザにより起動の優先順位が設定されている。
【００１８】
次に、ＢＩＯＳプログラム２３は、優先順位の高い起動ドライブからメディアが装着されているか否かを検索して、起動デバイスにメディアが装着されていれば、そのメディアのＭＢＲ２１にあるコードをＲＡＭ１３へコピーすると共に、ＣＰＵ１２のプログラムカウンタにコードのアドレスを設定する（Ｓ２０３）。本実施形態では、起動ドライブはディスク１４であるとして説明する。これにより、ＣＰＵ１２はＢＩＯＳ制御から、ディスク制御へと移行する。
【００１９】
ＣＰＵ１２が実行するコードは、多くの場合、起動プログラムであるブートストラップローダ２２へジャンプする命令である。これにより、ブートストラップローダ２２がＲＡＭ１３へコピーされ、ＣＰＵ１２がブートストラップローダ２２を実行することができる（Ｓ２０４）。ＭＢＲ２１に直接、ブートストラップローダ２２を記憶しないのは、ＭＢＲ２１の容量が小さく、ブートストラップローダ２２を格納することが困難なためである。
【００２０】
ＣＰＵ１２がブートストラップローダ２２を実行すると、ディスク１４からＯＳや必要であればアプリケーションをＲＡＭ１３にコピーして、ＰＣの起動が完了する（２０５）。
【００２１】
なお、ＢＩＯＳ１１に記憶されたＢＩＯＳファンクション２４はＲＡＭ１３の所定の領域（６４０ｋバイト〜１０２４ｋバイト）にコピーされることが一般的である。ＢＩＯＳファンクション２４は、上記の周辺機器に対する統一したインターフェースを提供するもので、ＣＰＵ１２が実行するプログラムから呼び出せるようになっている。具体的には、ＣＰＵ１２の所定のレジスタにファンクションの引数を設定し、「Ｉｎｔ」という命令を実行することでＢＩＯＳファンクション２４を呼び出すことができる。例えば、ＩＮＴ１０はディスプレイ関係のＢＩＯＳファンクションコールであり、ＩＮＴ１３はディスク関係のＢＩＯＳファンクションコールである。
【００２２】
〔ディスクが暗号化されている場合の起動手順〕
ディスク１４に記憶されたアプリケーションプログラムやアプリケーションプログラムが使用するテーブル又はユーザ情報などのデータを保護するために、ディスク１４全体を暗号化する技術がある。ディスク１４の全体が暗号化されているので、ディスク１４の一部のファイルさえ第三者が閲覧したり及び改竄することを抑制できる。
【００２３】
ディスク１４の全体が暗号化されると、ＰＣがＭＢＲ２１から起動することもできなくなるので、ディスク全体が暗号化されていても、ディスク１４のＭＢＲ２１を含むＴｒａｃｋ０のみは平文のままである（復号状態又は暗号化されていない状態）。そして、このＴｒａｃｋ０内にＴｒａｃｋ１以上のＴｒａｃｋのデータを復号するための暗号化・復号に対応した専用のブートストラップローダ２２が記憶されている（以下、ディスク１４の暗号化に対応したブートストラップローダを専用ブートローダ２２Ａという）。1つのＴｒａｃｋの容量は、記録密度やトラック番号によって変わるが20000バイト程度を確保できるので、専用ブートローダ２２Ａを格納できる。
【００２４】
専用ブートローダ２２Ａについてはフローチャート図で説明するが、専用ブートローダ２２Ａは、
（ｉ）パスワードの受け付け処理
（ii）暗号化・復号キーの取得処理
(iii)暗号化・復号処理のためのセットアップ処理
を行う。
【００２５】
図５は、ディスク全体が暗号化されている場合のＰＣの起動手順の一例を示す図である。ステップＳ２０１〜Ｓ２０３の処理は図３と同じなので説明は省略する。
【００２６】
ステップＳ２０３までの処理にて、ＣＰＵ１２はＭＢＲ２１から呼び出された専用ブートローダ２２Ａの実行を開始する（Ｓ３０４）。
【００２７】
専用ブートローダ２２Ａはまずパスワードをユーザへ要求する（Ｓ３０４１）。このようなパスワードの表示においても、ＢＩＯＳ１１が提供する周辺機器への統一したインターフェースを利用できる。この場合の周辺機器はディスプレイ１５である。
【００２８】
ｘ８６系のＣＰＵ１２を例にすれば、専用ブートローダ２２Ａは、
・レジスタＡＨに「0x0e」を設定し、
・レジスタＡＬに「キャラクターコード」を設定し、
・「int  $0x10」を実行する。
【００２９】
これによりディスプレイ用の割り込みベクタが指定され、対応するファンクション本体（割り込みハンドラ）が呼び出される。
【００３０】
図６は、割り込みベクタとファンクション本体を模式的に説明する図の一例である。上記のように「0x10」番の割込みベクタはディスプレイ用であり、「0x13」番の割込みベクタはディスク１４の入出力用である。ファンクション本体はＢＩＯＳファンクション内にＲＡＭ１３に記憶されている。図では割り込みベクタとファンクション本体を共にＢＩＯＳファンクション内に配置したが、割り込みベクタは６４０ｋバイト以下の領域に配置してもよい。「0x10」番の割込みベクタが指示されると、ＣＰＵ１２は内部割込み（ソフトウェア割り込み）により割り込みベクタに対応するファンクション本体を実行する。
【００３１】
このような処理をパスワードを要求する文字の数だけ繰り返すことで、例えば「INPUT  PASSWORD」などのメッセージをディスプレイ１５に表示できる。
【００３２】
ユーザがキーボード１６から入力した文字は例えばIRQ２の割込みとしてＣＰＵ１２に通知され、IRQ２に対応した割り込みベクタから呼び出された割り込みハンドラが、キーボード１６から入力した文字を受け付ける。この文字はＲＡＭ１３の所定の領域に記憶される。キーボード１６から入力されたパスワードは「●」などに置き換えられて、ディスプレイ１５に表示されることが好ましい。
【００３３】
図５に戻り、次に、専用ブートローダ２２Ａは、ディスク１４の予め固定のアドレスに保存されている暗号化・復号キー２８をセクタ単位で読み出し、ＲＡＭ１３やレジスタに記憶する（Ｓ３０４２）。読み出すためにはＢＩＯＳファンクション２４を利用するが、この説明は次述する。
【００３４】
また、専用ブートローダ２２Ａは、暗号化プログラム２５と復号プログラム２６をＴｒａｃｋ０から読み出す。専用ブートローダ２２Ａは、Ｔｒａｃｋ０から読み出されるので、暗号化プログラム２５と復号プログラム２６を専用ブートローダ２２Ａと一体に構成することもできる。
【００３５】
なお、ディスク１４は暗号化されているが、暗号化・復号キー２８がディスク１４の暗号化された領域に記憶されていると、暗号化・復号キー２８そのものを復号することが困難なので、暗号化・復号キー２８はＴｒａｃｋ０の非暗号化領域に記憶されている。ただし、暗号化・復号キー２８はパスワードにより暗号化されている。このため、専用ブートローダ２２Ａは、パスワードをＲＡＭ１３から読み出してパスワードをキーにして、暗号化・復号キー２８を復号する。暗号化・復号キー２８が復号されることで、専用ブートローダ２２Ａがディスク１４のデータを復号したりデータを暗号化してディスク１４に記憶することが可能になる。
【００３６】
次に、専用ブートローダ２２Ａは、暗号化・復号処理用のセットアップ処理を行う（Ｓ３０４３）。本実施形態のようにＯＳが起動する前の段階ではＯＳが提供するドライバは使用できないので、ＢＩＯＳファンクション２４を利用することが好ましいと言える。
【００３７】
ＣＰＵ１２がディスクの割り込みベクタを指定する割込み命令（ＩＮＴ）を実行すると、ＢＩＯＳ割込み（内部割込み）が発生し、ＢＩＯＳファンクション２４がディスク１４との入出力を制御する。このため、ＣＰＵ１２がディスク１４からデータを読み込む時であれば、読み込まれた後にアプリケーションプログラムがデータを暗号化・復号キー２８で復号することも困難ではない。しかし、書き込み時は、ＢＩＯＳファンクション２４が平文のままデータを記憶してしまう。このため、ＢＩＯＳファンクション２４に渡すデータを暗号化するデータ制御が必要である。
【００３８】
本実施形態では、ＢＩＯＳファンクション２４をフックする（横取りする）ことで、ディスク１４からの読み込み後のデータの復号、ディスク１４への書き込み前のデータの暗号化を行う。
図７は、ＢＩＯＳファンクション２４のフックを模式的に説明する図の一例である。専用ブートローダ２２Ａは「0x13」番の割り込みベクタへの割り込みをフックするため、「0x13」番に暗号化・復号用の割り込みベクタを書き込む。暗号化・復号用の割り込みベクタは、レジスタに設定されるパラメータにより、暗号化プログラム２５又は復号プログラム２６を呼び出す割り込みベクタである。
【００３９】
こうすることで、ＣＰＵ１２がディスク１４にアクセスする際、ＢＩＯＳファンクション２４を利用した読み取り・書き込みのソフトウェア割り込みを、暗号化・復号用の割り込みベクタがフックすることができ、暗号化処理・復号処理ができるようになる。
【００４０】
専用ブートローダ２２Ａが暗号化・復号処理用のセットアップ処理を終えると、従来の未暗号化ディスク１４と同様に、専用ブートローダ２２Ａがディスク上のＯＳ等のプログラムを起動する（Ｓ２０５）。Ｔｒａｃｋ０以外のＴｒａｃｋは暗号化されているので、専用ブートローダ２２ＡはＲＡＭ１３の容量が許容する範囲で、フックの仕組みを介して、ディスク１４のデータを復号しＲＡＭ１３に記憶する。そして、最初に実行すべきアプリケーションプログラムのアドレスをプログラムカウンタに設定するので、ＣＰＵ１２はアプリケーションプログラムの実行を開始することができる。
【００４１】
〔組み込み機器におけるディスク暗号化〕
以上のようなＰＣの暗号化では、ユーザがパスワードを入力すればディスク１４のデータの暗号化・復号が可能になるが、上記のように組み込み機器１００では、入力手段がない場合があるし、そもそも、組み込み機器１００の場合はユーザが復号するためのパスワードを知らされていない。
【００４２】
図８は、組み込み機器１００のハードウェア構成図の一例を、図９は、組み込み機器１００の構成を模式的に説明する図の一例である。図８において図２と同一部の説明は省略する。図８の組み込み機器１００では、ＰＣと異なりディスプレイ１５及びキーボード１６がない。なお、組み込み機器１００でもディスプレイ１５及びキーボード１６を有するものはあるので、あくまで図８は説明のための一例である。
【００４３】
図９に示すように、専用ブートローダ２２Ａはパスワード読み出し部２２１、キー復号部２２２、及び、フック配置部２２３を有する。このうちフック配置部２２３は図５のＳ３０４３で説明した機能(暗号化・復号処理のセットアップ処理)を提供する。
【００４４】
本実施形態では、ＰＣにおいてユーザが入力していたパスワードを、ＢＩＯＳ１１が記憶している。これにより、ブートストラップローダがＢＩＯＳ１１からパスワードを読み出すことができ、キーボード１６やディスプレイ１５を有していなくても、ディスク１４のデータの暗号化・復号が可能となる。なお、このパスワード２７を暗号化した状態で記憶していてもよい。ＢＩＯＳ１１の生成時、メーカはパスワード２７をＢＩＯＳ１１の固定のアドレスに記憶する。
【００４５】
なお、専用ブートローダ２２Ａはディスク１４に記憶されているが、第三者がディスク１４だけを取り出してもパスワード２７がないためディスク１４を復号できない点に変わりはない。
【００４６】
また、パスワード２７は組み込み機器１００毎に異なることが好ましい。パスワード２７が異なることで、第三者がＢＩＯＳ１１からパスワード２７を探し出すことを困難にできる。
【００４７】
また、ＢＩＯＳ１１においてパスワード２７が記憶されるアドレスは１つの組み込み機器１００では固定だが、組み込み機器毎に又は所定のロット毎に変えることもできる。この場合、専用ブートローダ２２Ａがパスワード２７をＢＩＯＳ１１から読み出せるように、パスワード２７のアドレスを修正する必要がある。しかし、パスワード２７の記憶場所が異なることで、第三者がＢＩＯＳ１１からパスワード２７を探し出すことをさらに困難にできる。
【００４８】
図１０は、ディスク全体が暗号化されている組み込み機器１００の起動手順の一例を示す図である。ステップＳ２０１〜Ｓ２０３の処理は図３と同じなので説明は省略する。
【００４９】
ステップＳ２０３までの処理により、ＣＰＵ１２はＭＢＲ２１の専用ブートローダ２２Ａの実行を開始する（Ｓ５０４）。また、ＲＡＭ１３には暗号化プログラム２５と復号プログラム２６が記憶される。
【００５０】
専用ブートローダ２２Ａのパスワード読み出し部２２１は、まずＢＩＯＳ内に記憶されているパスワード２７を読み出す（Ｓ５０４１）。パスワード２７のアドレスは固定なのでＣＰＵ１２がレジスタに設定する値も既知である。これにより、パスワード２７を取得できる。
【００５１】
以降の処理は、図５と同様である。すなわち、専用ブートローダ２２Ａのキー復号部２２２は、ディスク１４の予め固定のアドレス（非暗号化領域）に保存されている暗号化・復号キー２８を読み出し、パスワード２７で復号してＲＡＭ１３やレジスタに記憶する（Ｓ３０４２）。
【００５２】
次に、専用ブートローダ２２Ａは、暗号化・復号処理用のセットアップ処理を行うので（Ｓ３０４３）、「0x13」番に暗号化・復号の割り込みベクタが記述される。
【００５３】
この後、専用ブートローダ２２Ａは、ディスク上のアプリケーションやＯＳをＲＡＭ１３に読み出すが（Ｓ２０５）、ディスク１４への入出力処理は暗号化・復号の割り込みベクタによりフックされるので、ＲＡＭ１３には復号されたＯＳやアプリケーションプログラムが記憶される。また、次述するように、ＯＳやアプリケーションプログラムが行うディスク１４への入出力処理も、暗号化・復号の割り込みベクタによりフックされる。
【００５４】
〔組み込み機器の読み出し処理、書き込み処理〕
図１１（ａ）は、アプリケーションプログラムがディスク１４にデータを書き出す手順を示すフローチャート図の一例である。
【００５５】
まず、アプリケーションプログラムは、ディスクの割り込みベクタを指定する割込み命令を実行する（Ｓ６０１）。すなわち、アプリケーションプログラムは、
・レジスタＡＨに「0x03（書き込みを意味する）」を、
・レジスタＡＬに処理するセクタ数を、
・レジスタＣＨにシリンダ番号を、
・レジスタＣＬにセクタ番号を、
・レジスタＤＨにヘッド番号を、
・レジスタＥＳ：ＢＸにバッファアドレス（暗号化対象のデータが記憶されているＲＡＭ１３のアドレス）を設定して、
・「int  $0x13」を実行する。
【００５６】
ＣＰＵ１２は内部割込みにより「0x13」番の割り込みベクタを参照するが、ディスク用の割り込みベクタは暗号化・復号の割り込みベクタによりフックされている。したがって、ＣＰＵ１２は内部割込みにより暗号化・復号の割り込みベクタが示すアドレスに記憶されている暗号化プログラム２５の実行を開始する
ＣＰＵ１２が実行する暗号化プログラム２５は、ＲＡＭ１３又はレジスタに記憶されている暗号化・復号キー２８を用いて、データを暗号化する（Ｓ６０２）。暗号化されたデータはレジスタES:BXが指定するアドレスに記憶される。
【００５７】
暗号化したらＣＰＵ１２は、暗号化されたデータをディスク１４に記憶する（Ｓ６０３）。具体的には、暗号化プログラム２５が、「0x13」番のディスク用の割り込みベクタをセットアップ処理の前の状態に戻し、再度、上記のようにレジスタを設定して「int  $0x13」を実行することで、ディスク１４への書き込みを行うＢＩＯＳファンクション２４の本体を実行する。
【００５８】
これにより、ＣＰＵ１２は、レジスタES:BXが指定するアドレスの暗号化されたデータを、レジスタＣＨ、ＣＬ、ＤＨが指定するディスク１４のセクタに書き込む。このようにして、ＢＩＯＳ１１を利用してディスク１４に暗号化されたデータを書き込むことができる。
【００５９】
なお、「int  $0x13」を実行した後、暗号化プログラム２５は、「0x13」番のディスク用の割り込みベクタを、セットアップ処理後の状態に戻すことで、次回の書き込み要求に備える。
【００６０】
図１１（ｂ）は、アプリケーションプログラムがディスク１４からデータを読み出す手順を示すフローチャート図の一例である。
【００６１】
まず、アプリケーションプログラムは、ディスクの割り込みベクタを指定する割込み命令を実行する（Ｓ７０１）。すなわち、アプリケーションプログラムは、
・レジスタＡＨに「0x02（読み出しを意味する）」を設定し、
・レジスタＡＬに処理するセクタ数を、
・レジスタＣＨにシリンダ番号を、
・レジスタＣＬにセクタ番号を、
・レジスタＤＨにヘッド番号を、
・レジスタＥＳ：ＢＸに バッファアドレス（読み出したデータを記憶するＲＡＭ１３のアドレス）、を設定して、
・「int  $0x13」を実行する。
【００６２】
ＣＰＵ１２は内部割込みにより「0x13」番の割り込みベクタを参照するが、ディスク用の割り込みベクタは暗号化・復号の割込みベクタによりフックされている。したがって、ＣＰＵ１２は内部割込みにより暗号化・復号の割込みベクタが示すアドレスに記憶されている復号プログラム２６の実行を開始する。
【００６３】
ＣＰＵ１２が実行する復号プログラム２６は、「0x13」番のディスク用の割り込みベクタをセットアップ処理の前の状態に戻し、再度、上記のようにレジスタを設定して「int  $0x13」を実行することで、レジスタＥＳ:ＢＸが指定するアドレスに、レジスタＣＨ、ＣＬ、ＤＨが指定するディスク１４のセクタのデータを読み出す（Ｓ７０２）。
【００６４】
そして、復号プログラム２６は、ＲＡＭ１３又はレジスタに記憶されている暗号化・復号キー２８を用いて、データを復号しＲＡＭ１３に記憶する（Ｓ７０３）。このようにして、暗号化されたデータをディスク１４を読み出して復号することができる。
【００６５】
なお、「int  $0x13」を実行した後、暗号化プログラム２５は、「0x13」番のディスク用の割り込みベクタをセットアップ処理後の状態に戻すことで、次回の読み出し要求に備える。
【００６６】
以上、説明したように、本実施形態の組み込み機器１００は、アプリケーションプログラムがディスク１４へアクセスするために必要なパスワードがＢＩＯＳ１１に記憶されているので、ユーザがパスワードを入力しなくても、ディスク１４のデータを読み書きすることができる。
【符号の説明】
【００６７】
１１    ＢＩＯＳ
１２    ＣＰＵ
１３    ＲＡＭ
１４    ディスク
２１    ＭＢＲ
２２    ブートストラップローダ
２２Ａ  専用ブートローダ
２３    ＢＩＯＳプログラム
２４    ＢＩＯＳファンクション
２５    暗号化プログラム
２６    復号プログラム
２７    パスワード
２８    暗号化・復号キー
１００  組み込み機器
【先行技術文献】
【特許文献】
【００６８】
【特許文献１】特許第３９４５０８８号公報
【図１】
0005673045.tif 000002
【図２】
0005673045.tif 000003
【図３】
0005673045.tif 000004
【図４】
0005673045.tif 000005
【図５】
0005673045.tif 000006
【図６】
0005673045.tif 000007
【図７】
0005673045.tif 000008
【図８】
0005673045.tif 000009
【図９】
0005673045.tif 000010
【図１０】
0005673045.tif 000011
【図１１】
0005673045.tif 000012