説明

組み込み機器、暗号化・復号方法、プログラム

【課題】ユーザへパスワードを要求せずに、組み込み機器のディスクに記憶されたプログラム等を保護する。
【解決手段】パスワード27を記憶するBIOS11と、起動プログラム、前記パスワード27により暗号化された暗号化・復号キー28、及び、暗号化されたアプリケーションプログラムを記憶するディスク14と、パスワード27を読み出すパスワード読み出し手段と、暗号化・復号キー28をディスク14から読み出し復号するキー復号手段と、ディスクアクセス要求をフックするアクセス要求フック手段と、暗号化・復号キー28により書き込み対象のデータを暗号化した後、前記ディスク14に書き込む暗号化手段と、ディスク14からデータを読み出し、暗号化・復号キー28により復号する復号手段と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムなどが組み込まれた組み込み機器に関し、特に、プログラムが暗号化された組み込み機器等に関する。
【背景技術】
【0002】
組み込み機器にはファームウェアやプログラムなどが記憶されている。これらは知的な生産物であるため改竄やコピーから保護する必要がある。このため、ファームウェアやプログラムを組み込み機器内のディスクに暗号化して保存しておき、組み込み機器が起動する際、暗号化されているファームウェアやプログラムを復号する技術が知られている(例えば、特許文献1参照。)。特許文献1には、PC(Personal Computer)がデータベースの内容をメモリカードに記憶する際、データベースをDBキーで暗号化すると共に、DBキーをユーザに対応した暗号化パスワードで暗号化して、暗号化パスワードと共にメモリカードに記憶させておき、携帯端末がメモリカードからデータベースにアクセスする際、ユーザからパスワードの入力を受け付け、該パスワードをパスワード自体で暗号化し、その暗号化されたパスワードとメモリカードに記憶された暗号化パスワードとが一致する場合に、データベースへのアクセスを許可するデータ検索システムが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に記載されているように認証時にパスワードの入力をユーザに要求する場合、ユーザがパスワードを入力するためのインターフェースが必要になるという問題がある。組み込み機器の多くは、キーボードやマウスなど入力用のインターフェースを有しておらず、ユーザからパスワードの入力を受け付けることができない。また、組み込み機器が仮に入力用のインターフェースを有していても、起動の度に、ユーザにパスワードの入力を要求するのでは操作性が低下してしまう。
【0004】
本発明は、上記課題に鑑み、ユーザへパスワードを要求せずに、組み込み機器のディスクに記憶されたプログラム等を保護する組み込み機器を提供することを目的とする。
【課題を解決するための手段】
【0005】
上記課題に鑑み、本発明は、パスワードを記憶するBIOSと、起動プログラム、前記パスワードにより暗号化された暗号化・復号キー、及び、暗号化されたアプリケーションプログラムを記憶するディスクと、前記起動プログラムを実行する演算回路と、前記パスワードを読み出すパスワード読み出し手段と、前記暗号化・復号キーを前記ディスクから読み出し、前記パスワードを用いて復号するキー復号手段と、アプリケーションプログラムのディスクアクセス要求をフックするアクセス要求フック手段と、前記アクセス要求フック手段がフックした書き込み要求に応じて、前記暗号化・復号キーにより書き込み対象のデータを暗号化した後、前記ディスクに書き込む暗号化手段と、前記アクセス要求フック手段がフックした読み出し要求に応じて前記ディスクからデータを読み出し、前記暗号化・復号キーにより復号する復号手段と、を有する組み込み機器を提供する。
【発明の効果】
【0006】
ユーザへパスワードを要求せずに、組み込み機器のディスクに記憶されたプログラム等を保護する組み込み機器を提供することができる。
【図面の簡単な説明】
【0007】
【図1】ディスクの暗号化・復号方法の概略を説明する図の一例である。
【図2】PC(Personal Computer)のハードウェア構成図の一例を示す。
【図3】PCが起動する手順を説明する図の一例を示す図である。
【図4】起動を模式的に説明する図の一例である。
【図5】ディスク全体が暗号化されている場合のPCの起動手順の一例を示す図である。
【図6】割り込みベクタとファンクション本体を模式的に説明する図の一例である。
【図7】BIOSファンクションのフックを模式的に説明する図の一例である。
【図8】組み込み機器のハードウェア構成図の一例を示す図である。
【図9】組み込み機器の構成を模式的に説明する図の一例である。
【図10】ディスク全体が暗号化されている組み込み機器の起動手順の一例を示す図である。
【図11】アプリケーションプログラムがディスクにデータを書き込み、又は、ディスクからデータを読み出す手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【0008】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施形態のディスク14の暗号化・復号方法の概略を説明する図の一例である。ディスク14はMBR(Master Boot Record)21があるTrack0の領域を除き暗号化キー・復号キーにより暗号化されている。また、ディスク14にはパスワードにより暗号化された暗号化・復号キー28が記憶されている。
【0009】
まず、ディスク14に記憶されたデータは暗号化キー・復号キーにより暗号化されていることで保護されている。ディスク14の復号に必要な暗号化キー・復号キーは、パスワードにより暗号化されているので、仮に、第三者がディスク14だけを取り出してもデータを読み出すことはできない。
(1)CPU12は一般的な起動処理として、起動時にBIOSプログラム23を実行して、デバイスの初期化、起動ドライブの決定やMBR21のRAM13へのコピー等を行う。
(2)MBR21にはディスク14上の各種のプログラムを起動させるブートストラップローダ22が記憶されており、ブートストラップローダ22が本実施形態に特徴的な処理を提供する。従来のブートストラップローダ22と区別するため、図では専用ブートローダとした。
(3)この専用ブートローダはBIOS11から(RAMに転送されたBIOS領域から読み出してもよい)パスワード27を読み出す。
(4)そして、パスワード27で暗号化・復号キー28を復号する。こうすることで、ディスク14に記憶されたデータが復号可能になる。専用ブートローダは、暗号化・復号キー28をRAM13やレジスタに記憶しておく。
(5)なお、専用ブートローダは、Track0の暗号化プログラムと復号プログラムをRAM13に読み込むことで、暗号化プログラムが暗号化・復号キー28を用いてデータを暗号化することが、復号プログラムが暗号化・復号キー28を用いてデータを復号することが可能になっている。
(6)また、専用ブートローダは、暗号化・復号処理のためのセットアップ処理を行う。このセットアップ処理は、ディスク14へのアクセス要求をフックするための処理である(暗号化プログラム又は復号プログラムへジャンプする。)。セットアップ処理により、アプリケーションプログラムの先頭セクタなどがまず最初に復号され、アプリケーションプログラムは、常に、ディスク14から読み出したデータを復号し、復号処理を経てディスク14へデータを書き込むことができる。
【0010】
このように、アプリケーションプログラムがディスク14へアクセスするために必要なパスワード27がBIOS11に記憶されているので、ユーザがパスワードを入力しなくても、ディスク14のデータを読み書きすることができる。なお、以下では、ディスク14に記憶されているプログラムやデータを問わず、単にデータという場合がある。
【0011】
〔一般的なPCの起動手順〕
図2は、PC(Personal Computer)のハードウェア構成図の一例を示す。BIOS11、ディスク14、ディスプレイ15、CPU12、RAM13、及び、キーボード16がバスを介して接続されている。この他、ネットワーク接続用の通信装置、メモリカード装着部、又は、マウスなどは省略したが、図示する以外のハードウェアを有していてもよい。
【0012】
ディスク14は、HDD(ハードディスドライブ)であることが多いが、SSD(Solid State Drive)や、HDDとSDDを組み合わせたものでもよい。ディスク14には、アプリケーションプログラムやOS(Operating System)が記憶されている。なお、アプリケーションプログラムは、PCであればワープロやブラウザなどであり、組み込み機器であればその組み込み機器に特有のソフトウェアである。
【0013】
BIOS11は各社又は種々の周辺機器の入出力に対し統一したインターフェースを提供したり、OSを起動したり、マザーボード上の各種のハードウェアを設定する等の機能を提供する。BIOS11の実体はROMとROMに記憶されたBIOSプログラム23等である。Windows(登録商標)が一般に普及した後は、Windowsが提供するドライバが利用されるようになったため、周辺機器に対する統一したインターフェースとしての機能が利用されることが減少したが、本実施形態の後述するアプリケーションプログラムはBIOS11が提供するインターフェースを利用して(フックして)暗号化・復号を行う。
【0014】
なお、CPU12はBIOSプログラムやOS、アプリケーションプログラムを実行してPCの全体を制御する。RAM13は、CPU12がBIOSプログラムやOS、アプリケーションプログラムを実行する際のワークエリアとなる。ディスプレイ15は、OSやアプリケーションプログラムが生成するGUI又はCUIベースのユーザインターフェースを表示する。キーボード16は、ユーザのPCへの操作を受け付ける。
【0015】
図3は、PCが起動する手順を説明する図の一例を、図4は、起動を模式的に説明する図の一例である。なお図3の手順はディスク14が暗号化されていない一般的なPCの起動手順である。
【0016】
まず、ユーザが電源をオンにする(S201)。
【0017】
すると、CPU12はBIOS11に保存されているBIOSプログラム23の実行を開始する(202)。まず、BIOSプログラム23は、RAM13など初期化が必要な周辺機器の初期化と、各周辺機器の診断を行う。そして、BIOS11のCMOS等に記憶されている起動ドライブの優先順位に従って、起動するドライブを決定する。例えば、CD−ROM、フロッピーディスク、ハードディスク、又は、USBメモリ等からユーザにより起動の優先順位が設定されている。
【0018】
次に、BIOSプログラム23は、優先順位の高い起動ドライブからメディアが装着されているか否かを検索して、起動デバイスにメディアが装着されていれば、そのメディアのMBR21にあるコードをRAM13へコピーすると共に、CPU12のプログラムカウンタにコードのアドレスを設定する(S203)。本実施形態では、起動ドライブはディスク14であるとして説明する。これにより、CPU12はBIOS制御から、ディスク制御へと移行する。
【0019】
CPU12が実行するコードは、多くの場合、起動プログラムであるブートストラップローダ22へジャンプする命令である。これにより、ブートストラップローダ22がRAM13へコピーされ、CPU12がブートストラップローダ22を実行することができる(S204)。MBR21に直接、ブートストラップローダ22を記憶しないのは、MBR21の容量が小さく、ブートストラップローダ22を格納することが困難なためである。
【0020】
CPU12がブートストラップローダ22を実行すると、ディスク14からOSや必要であればアプリケーションをRAM13にコピーして、PCの起動が完了する(205)。
【0021】
なお、BIOS11に記憶されたBIOSファンクション24はRAM13の所定の領域(640kバイト〜1024kバイト)にコピーされることが一般的である。BIOSファンクション24は、上記の周辺機器に対する統一したインターフェースを提供するもので、CPU12が実行するプログラムから呼び出せるようになっている。具体的には、CPU12の所定のレジスタにファンクションの引数を設定し、「Int」という命令を実行することでBIOSファンクション24を呼び出すことができる。例えば、INT10はディスプレイ関係のBIOSファンクションコールであり、INT13はディスク関係のBIOSファンクションコールである。
【0022】
〔ディスクが暗号化されている場合の起動手順〕
ディスク14に記憶されたアプリケーションプログラムやアプリケーションプログラムが使用するテーブル又はユーザ情報などのデータを保護するために、ディスク14全体を暗号化する技術がある。ディスク14の全体が暗号化されているので、ディスク14の一部のファイルさえ第三者が閲覧したり及び改竄することを抑制できる。
【0023】
ディスク14の全体が暗号化されると、PCがMBR21から起動することもできなくなるので、ディスク全体が暗号化されていても、ディスク14のMBR21を含むTrack0のみは平文のままである(復号状態又は暗号化されていない状態)。そして、このTrack0内にTrack1以上のTrackのデータを復号するための暗号化・復号に対応した専用のブートストラップローダ22が記憶されている(以下、ディスク14の暗号化に対応したブートストラップローダを専用ブートローダ22Aという)。1つのTrackの容量は、記録密度やトラック番号によって変わるが20000バイト程度を確保できるので、専用ブートローダ22Aを格納できる。
【0024】
専用ブートローダ22Aについてはフローチャート図で説明するが、専用ブートローダ22Aは、
(i)パスワードの受け付け処理
(ii)暗号化・復号キーの取得処理
(iii)暗号化・復号処理のためのセットアップ処理
を行う。
【0025】
図5は、ディスク全体が暗号化されている場合のPCの起動手順の一例を示す図である。ステップS201〜S203の処理は図3と同じなので説明は省略する。
【0026】
ステップS203までの処理にて、CPU12はMBR21から呼び出された専用ブートローダ22Aの実行を開始する(S304)。
【0027】
専用ブートローダ22Aはまずパスワードをユーザへ要求する(S3041)。このようなパスワードの表示においても、BIOS11が提供する周辺機器への統一したインターフェースを利用できる。この場合の周辺機器はディスプレイ15である。
【0028】
x86系のCPU12を例にすれば、専用ブートローダ22Aは、
・レジスタAHに「0x0e」を設定し、
・レジスタALに「キャラクターコード」を設定し、
・「int $0x10」を実行する。
【0029】
これによりディスプレイ用の割り込みベクタが指定され、対応するファンクション本体(割り込みハンドラ)が呼び出される。
【0030】
図6は、割り込みベクタとファンクション本体を模式的に説明する図の一例である。上記のように「0x10」番の割込みベクタはディスプレイ用であり、「0x13」番の割込みベクタはディスク14の入出力用である。ファンクション本体はBIOSファンクション内にRAM13に記憶されている。図では割り込みベクタとファンクション本体を共にBIOSファンクション内に配置したが、割り込みベクタは640kバイト以下の領域に配置してもよい。「0x10」番の割込みベクタが指示されると、CPU12は内部割込み(ソフトウェア割り込み)により割り込みベクタに対応するファンクション本体を実行する。
【0031】
このような処理をパスワードを要求する文字の数だけ繰り返すことで、例えば「INPUT PASSWORD」などのメッセージをディスプレイ15に表示できる。
【0032】
ユーザがキーボード16から入力した文字は例えばIRQ2の割込みとしてCPU12に通知され、IRQ2に対応した割り込みベクタから呼び出された割り込みハンドラが、キーボード16から入力した文字を受け付ける。この文字はRAM13の所定の領域に記憶される。キーボード16から入力されたパスワードは「●」などに置き換えられて、ディスプレイ15に表示されることが好ましい。
【0033】
図5に戻り、次に、専用ブートローダ22Aは、ディスク14の予め固定のアドレスに保存されている暗号化・復号キー28をセクタ単位で読み出し、RAM13やレジスタに記憶する(S3042)。読み出すためにはBIOSファンクション24を利用するが、この説明は次述する。
【0034】
また、専用ブートローダ22Aは、暗号化プログラム25と復号プログラム26をTrack0から読み出す。専用ブートローダ22Aは、Track0から読み出されるので、暗号化プログラム25と復号プログラム26を専用ブートローダ22Aと一体に構成することもできる。
【0035】
なお、ディスク14は暗号化されているが、暗号化・復号キー28がディスク14の暗号化された領域に記憶されていると、暗号化・復号キー28そのものを復号することが困難なので、暗号化・復号キー28はTrack0の非暗号化領域に記憶されている。ただし、暗号化・復号キー28はパスワードにより暗号化されている。このため、専用ブートローダ22Aは、パスワードをRAM13から読み出してパスワードをキーにして、暗号化・復号キー28を復号する。暗号化・復号キー28が復号されることで、専用ブートローダ22Aがディスク14のデータを復号したりデータを暗号化してディスク14に記憶することが可能になる。
【0036】
次に、専用ブートローダ22Aは、暗号化・復号処理用のセットアップ処理を行う(S3043)。本実施形態のようにOSが起動する前の段階ではOSが提供するドライバは使用できないので、BIOSファンクション24を利用することが好ましいと言える。
【0037】
CPU12がディスクの割り込みベクタを指定する割込み命令(INT)を実行すると、BIOS割込み(内部割込み)が発生し、BIOSファンクション24がディスク14との入出力を制御する。このため、CPU12がディスク14からデータを読み込む時であれば、読み込まれた後にアプリケーションプログラムがデータを暗号化・復号キー28で復号することも困難ではない。しかし、書き込み時は、BIOSファンクション24が平文のままデータを記憶してしまう。このため、BIOSファンクション24に渡すデータを暗号化するデータ制御が必要である。
【0038】
本実施形態では、BIOSファンクション24をフックする(横取りする)ことで、ディスク14からの読み込み後のデータの復号、ディスク14への書き込み前のデータの暗号化を行う。
図7は、BIOSファンクション24のフックを模式的に説明する図の一例である。専用ブートローダ22Aは「0x13」番の割り込みベクタへの割り込みをフックするため、「0x13」番に暗号化・復号用の割り込みベクタを書き込む。暗号化・復号用の割り込みベクタは、レジスタに設定されるパラメータにより、暗号化プログラム25又は復号プログラム26を呼び出す割り込みベクタである。
【0039】
こうすることで、CPU12がディスク14にアクセスする際、BIOSファンクション24を利用した読み取り・書き込みのソフトウェア割り込みを、暗号化・復号用の割り込みベクタがフックすることができ、暗号化処理・復号処理ができるようになる。
【0040】
専用ブートローダ22Aが暗号化・復号処理用のセットアップ処理を終えると、従来の未暗号化ディスク14と同様に、専用ブートローダ22Aがディスク上のOS等のプログラムを起動する(S205)。Track0以外のTrackは暗号化されているので、専用ブートローダ22AはRAM13の容量が許容する範囲で、フックの仕組みを介して、ディスク14のデータを復号しRAM13に記憶する。そして、最初に実行すべきアプリケーションプログラムのアドレスをプログラムカウンタに設定するので、CPU12はアプリケーションプログラムの実行を開始することができる。
【0041】
〔組み込み機器におけるディスク暗号化〕
以上のようなPCの暗号化では、ユーザがパスワードを入力すればディスク14のデータの暗号化・復号が可能になるが、上記のように組み込み機器100では、入力手段がない場合があるし、そもそも、組み込み機器100の場合はユーザが復号するためのパスワードを知らされていない。
【0042】
図8は、組み込み機器100のハードウェア構成図の一例を、図9は、組み込み機器100の構成を模式的に説明する図の一例である。図8において図2と同一部の説明は省略する。図8の組み込み機器100では、PCと異なりディスプレイ15及びキーボード16がない。なお、組み込み機器100でもディスプレイ15及びキーボード16を有するものはあるので、あくまで図8は説明のための一例である。
【0043】
図9に示すように、専用ブートローダ22Aはパスワード読み出し部221、キー復号部222、及び、フック配置部223を有する。このうちフック配置部223は図5のS3043で説明した機能(暗号化・復号処理のセットアップ処理)を提供する。
【0044】
本実施形態では、PCにおいてユーザが入力していたパスワードを、BIOS11が記憶している。これにより、ブートストラップローダがBIOS11からパスワードを読み出すことができ、キーボード16やディスプレイ15を有していなくても、ディスク14のデータの暗号化・復号が可能となる。なお、このパスワード27を暗号化した状態で記憶していてもよい。BIOS11の生成時、メーカはパスワード27をBIOS11の固定のアドレスに記憶する。
【0045】
なお、専用ブートローダ22Aはディスク14に記憶されているが、第三者がディスク14だけを取り出してもパスワード27がないためディスク14を復号できない点に変わりはない。
【0046】
また、パスワード27は組み込み機器100毎に異なることが好ましい。パスワード27が異なることで、第三者がBIOS11からパスワード27を探し出すことを困難にできる。
【0047】
また、BIOS11においてパスワード27が記憶されるアドレスは1つの組み込み機器100では固定だが、組み込み機器毎に又は所定のロット毎に変えることもできる。この場合、専用ブートローダ22Aがパスワード27をBIOS11から読み出せるように、パスワード27のアドレスを修正する必要がある。しかし、パスワード27の記憶場所が異なることで、第三者がBIOS11からパスワード27を探し出すことをさらに困難にできる。
【0048】
図10は、ディスク全体が暗号化されている組み込み機器100の起動手順の一例を示す図である。ステップS201〜S203の処理は図3と同じなので説明は省略する。
【0049】
ステップS203までの処理により、CPU12はMBR21の専用ブートローダ22Aの実行を開始する(S504)。また、RAM13には暗号化プログラム25と復号プログラム26が記憶される。
【0050】
専用ブートローダ22Aのパスワード読み出し部221は、まずBIOS内に記憶されているパスワード27を読み出す(S5041)。パスワード27のアドレスは固定なのでCPU12がレジスタに設定する値も既知である。これにより、パスワード27を取得できる。
【0051】
以降の処理は、図5と同様である。すなわち、専用ブートローダ22Aのキー復号部222は、ディスク14の予め固定のアドレス(非暗号化領域)に保存されている暗号化・復号キー28を読み出し、パスワード27で復号してRAM13やレジスタに記憶する(S3042)。
【0052】
次に、専用ブートローダ22Aは、暗号化・復号処理用のセットアップ処理を行うので(S3043)、「0x13」番に暗号化・復号の割り込みベクタが記述される。
【0053】
この後、専用ブートローダ22Aは、ディスク上のアプリケーションやOSをRAM13に読み出すが(S205)、ディスク14への入出力処理は暗号化・復号の割り込みベクタによりフックされるので、RAM13には復号されたOSやアプリケーションプログラムが記憶される。また、次述するように、OSやアプリケーションプログラムが行うディスク14への入出力処理も、暗号化・復号の割り込みベクタによりフックされる。
【0054】
〔組み込み機器の読み出し処理、書き込み処理〕
図11(a)は、アプリケーションプログラムがディスク14にデータを書き出す手順を示すフローチャート図の一例である。
【0055】
まず、アプリケーションプログラムは、ディスクの割り込みベクタを指定する割込み命令を実行する(S601)。すなわち、アプリケーションプログラムは、
・レジスタAHに「0x03(書き込みを意味する)」を、
・レジスタALに処理するセクタ数を、
・レジスタCHにシリンダ番号を、
・レジスタCLにセクタ番号を、
・レジスタDHにヘッド番号を、
・レジスタES:BXにバッファアドレス(暗号化対象のデータが記憶されているRAM13のアドレス)を設定して、
・「int $0x13」を実行する。
【0056】
CPU12は内部割込みにより「0x13」番の割り込みベクタを参照するが、ディスク用の割り込みベクタは暗号化・復号の割り込みベクタによりフックされている。したがって、CPU12は内部割込みにより暗号化・復号の割り込みベクタが示すアドレスに記憶されている暗号化プログラム25の実行を開始する
CPU12が実行する暗号化プログラム25は、RAM13又はレジスタに記憶されている暗号化・復号キー28を用いて、データを暗号化する(S602)。暗号化されたデータはレジスタES:BXが指定するアドレスに記憶される。
【0057】
暗号化したらCPU12は、暗号化されたデータをディスク14に記憶する(S603)。具体的には、暗号化プログラム25が、「0x13」番のディスク用の割り込みベクタをセットアップ処理の前の状態に戻し、再度、上記のようにレジスタを設定して「int $0x13」を実行することで、ディスク14への書き込みを行うBIOSファンクション24の本体を実行する。
【0058】
これにより、CPU12は、レジスタES:BXが指定するアドレスの暗号化されたデータを、レジスタCH、CL、DHが指定するディスク14のセクタに書き込む。このようにして、BIOS11を利用してディスク14に暗号化されたデータを書き込むことができる。
【0059】
なお、「int $0x13」を実行した後、暗号化プログラム25は、「0x13」番のディスク用の割り込みベクタを、セットアップ処理後の状態に戻すことで、次回の書き込み要求に備える。
【0060】
図11(b)は、アプリケーションプログラムがディスク14からデータを読み出す手順を示すフローチャート図の一例である。
【0061】
まず、アプリケーションプログラムは、ディスクの割り込みベクタを指定する割込み命令を実行する(S701)。すなわち、アプリケーションプログラムは、
・レジスタAHに「0x02(読み出しを意味する)」を設定し、
・レジスタALに処理するセクタ数を、
・レジスタCHにシリンダ番号を、
・レジスタCLにセクタ番号を、
・レジスタDHにヘッド番号を、
・レジスタES:BXに バッファアドレス(読み出したデータを記憶するRAM13のアドレス)、を設定して、
・「int $0x13」を実行する。
【0062】
CPU12は内部割込みにより「0x13」番の割り込みベクタを参照するが、ディスク用の割り込みベクタは暗号化・復号の割込みベクタによりフックされている。したがって、CPU12は内部割込みにより暗号化・復号の割込みベクタが示すアドレスに記憶されている復号プログラム26の実行を開始する。
【0063】
CPU12が実行する復号プログラム26は、「0x13」番のディスク用の割り込みベクタをセットアップ処理の前の状態に戻し、再度、上記のようにレジスタを設定して「int $0x13」を実行することで、レジスタES:BXが指定するアドレスに、レジスタCH、CL、DHが指定するディスク14のセクタのデータを読み出す(S702)。
【0064】
そして、復号プログラム26は、RAM13又はレジスタに記憶されている暗号化・復号キー28を用いて、データを復号しRAM13に記憶する(S703)。このようにして、暗号化されたデータをディスク14を読み出して復号することができる。
【0065】
なお、「int $0x13」を実行した後、暗号化プログラム25は、「0x13」番のディスク用の割り込みベクタをセットアップ処理後の状態に戻すことで、次回の読み出し要求に備える。
【0066】
以上、説明したように、本実施形態の組み込み機器100は、アプリケーションプログラムがディスク14へアクセスするために必要なパスワードがBIOS11に記憶されているので、ユーザがパスワードを入力しなくても、ディスク14のデータを読み書きすることができる。
【符号の説明】
【0067】
11 BIOS
12 CPU
13 RAM
14 ディスク
21 MBR
22 ブートストラップローダ
22A 専用ブートローダ
23 BIOSプログラム
24 BIOSファンクション
25 暗号化プログラム
26 復号プログラム
27 パスワード
28 暗号化・復号キー
100 組み込み機器
【先行技術文献】
【特許文献】
【0068】
【特許文献1】特許第3945088号公報

【特許請求の範囲】
【請求項1】
パスワードを記憶するBIOSと、
起動プログラム、前記パスワードにより暗号化された暗号化・復号キー、及び、暗号化されたアプリケーションプログラムを記憶するディスクと、
前記起動プログラムを実行する演算回路と、
前記パスワードを読み出すパスワード読み出し手段と、
前記暗号化・復号キーを前記ディスクから読み出し、前記パスワードを用いて復号するキー復号手段と、
アプリケーションプログラムのディスクアクセス要求をフックするアクセス要求フック手段と、
前記アクセス要求フック手段がフックした書き込み要求に応じて、前記暗号化・復号キーにより書き込み対象のデータを暗号化した後、前記ディスクに書き込む暗号化手段と、
前記アクセス要求フック手段がフックした読み出し要求に応じて前記ディスクからデータを読み出し、前記暗号化・復号キーにより復号する復号手段と、
を有する組み込み機器。
【請求項2】
前記パスワード読み出し手段は、前記演算回路が前記起動プログラムを実行することで実現され、読み出された前記パスワードを記憶手段に記憶しておく、
ことを特徴とする請求項1記載の組み込み機器。
【請求項3】
前記起動プログラム又はアプリケーションプログラムがディスクアクセスする際にアクセスする固定のアドレスに前記アクセス要求フック手段を呼び出す割り込みベクタを配置するフック配置手段、
を有する請求項1又は2記載の組み込み機器。
【請求項4】
パスワードを記憶するBIOSと、
起動プログラム、前記パスワードにより暗号化された暗号化・復号キー、及び、暗号化されたアプリケーションプログラムを記憶するディスクと、前記起動プログラムを実行する演算回路と、を有する組み込み機器の暗号化・復号方法であって、
パスワード読み出し手段が、前記パスワードを読み出すステップと、
キー復号手段が、前記暗号化・復号キーを前記ディスクから読み出し、前記パスワードを用いて復号するステップと、
アクセス要求フック手段が、アプリケーションプログラムのディスクアクセス要求をフックするステップと、
暗号化手段が、前記アクセス要求フック手段がフックした書き込み要求に応じて、前記暗号化・復号キーにより書き込み対象のデータを暗号化した後、前記ディスクに書き込むステップと、
復号手段が、前記アクセス要求フック手段がフックした読み出し要求に応じて前記ディスクからデータを読み出し、前記暗号化・復号キーにより復号するステップと、
を有する暗号化・復号方法。
【請求項5】
パスワードを記憶するBIOSと、
起動プログラム、前記パスワードにより暗号化された暗号化・復号キー、及び、暗号化されたアプリケーションプログラムを記憶するディスクと、前記起動プログラムを実行する演算回路と、を有する組み込み機器に、
前記パスワードを読み出すステップと、
前記暗号化・復号キーを前記ディスクから読み出し、前記パスワードを用いて復号するキー復号ステップと
アプリケーションプログラムのディスクアクセス要求をフックするアクセス要求フックステップと、
前記アクセス要求フック手段がフックした書き込み要求に応じて、前記暗号化・復号キーにより書き込み対象のデータを暗号化した後、前記ディスクに書き込む暗号化ステップと、
前記アクセス要求フック手段がフックした読み出し要求に応じて前記ディスクからデータを読み出し、前記暗号化・復号キーにより復号する復号ステップと、
を実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−118947(P2012−118947A)
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2010−270838(P2010−270838)
【出願日】平成22年12月3日(2010.12.3)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】