(57)【要約】【課題】ある機能は信頼性のある実行オブジェクト、例えばＯＳにのみ提供し、信頼性のない実行オブジェクトには機能を制限したり、機能を変更し、デバイスの不正利用を防止する。【解決手段】ＯＳ６１内の評価部６１１が実行オブジェクト７３を評価する。ＯＳ６１の付加部６１２はメッセージに指標を付加してデバイスドライバ６２に送る。デバイスドライバ６２の選択部６２１は、メッセージの種類と指標とに基づいて処理の手順６２２１−１，６２２１−２…から実行するものを選択する。操作部６２２は、選択された処理の手順に従ってデバイス５を操作する。【選択図】  図１
2006330835.tif 000002
【特許請求の範囲】
【請求項１】
実行オブジェクトから受信したメッセージを操作手段に送信する中継手段と、該メッセージを受信すると該メッセージに対応して予め設定された手順に従ってデバイスを制御する制御手段とを備えた装置であって、
前記中継手段は、
前記実行オブジェクトから前記メッセージを受信すると、当該実行オブジェクトの信頼性を示す指標を作成する評価手段と、
受信した前記メッセージに前記指標を付加する指標付加手段とを有し、
前記制御手段は、
前記指標と対応して前記手順を複数記憶する記憶手段を有し、
前記メッセージを受信すると前記指標を参照し、前記記憶手段に記憶された複数の手順の中から、所定の手順を実行するように制御すること、
を特徴とするデバイス制御装置。
【請求項２】
前記中継手段は、操作手段に送信するメッセージに認証を付加する認証付加手段を有し、
前記制御手段は、
中継手段からメッセージを受け取ると前記認証の正当性を判定する判定手段と、
認証の正当性が成立しないときは当該メッセージを送信した実行オブジェクトに対する防御を行うことを有すること
を特徴とする請求項１記載のデバイス制御装置。
【請求項３】
実行オブジェクトから受信したメッセージを中継手段により操作手段に送信し、該操作手段はメッセージを受信すると該メッセージに対応して予め設定された操作手順に従ってデバイスを操作するデバイス制御装置を制御する方法であって、
前記中継手段は、
実行オブジェクトからメッセージを受信すると、当該実行オブジェクトの信頼性を示す指標を取得するステップと、
受信したメッセージに前記指標を付加して、宛先の操作手段に送信するメッセージとするステップとを実行し、
前記制御手段は、
メッセージを受信すると前記指標を参照し、実行オブジェクトの信頼性に対応して予め設定された複数の操作手順の中から、実行すべきものを選択するステップとを実行すること
を特徴とするデバイス制御方法。
【請求項４】
デバイス操作に関するメッセージを実行オブジェクトから受信するステップと、
該メッセージを送信した実行オブジェクトの信頼性を示す指標を取得するステップと、
受信したメッセージに前記指標を付加し、対応するデバイス側に送信するステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項５】
デバイス操作に関するメッセージを送信した実行オブジェクトの信頼性を示す指標を該メッセージに付加したものを受信するステップと、
前記指標を参照し、メッセージごとに実行オブジェクトの信頼性に対応して複数設定された操作手順の中から１つを選択するステップと、
選択された操作手順に従ってデバイスを操作するステップと
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに結合されたデバイスを制御するデバイス制御装置、デバイス制御方法およびプログラムに関する。
【背景技術】
【０００２】
従来コンピュータに接続されたデバイスを制御するために、デバイスドライバが使用されている。コンピュータにおいて実行されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、デバイスドライバに対する汎用的なインタフェースを提供しており、新規なデバイスが提供されてもそれに対するデバイスドライバを組み込むことによってアプリケーションやＯＳなどの実行オブジェクトから利用可能になる。デバイスドライバはデバイスメーカーが提供し、ＯＳはシステムコールを通じてデバイス制御機能をアプリケーションに提供している。
【０００３】
ＯＳのシステムコールはメッセージを引数に取り、これをデバイスドライバに渡す。デバイスドライバは与えられたメッセージに従ってデバイスを操作する。例えば、Ｃ言語でデバイスを制御するプログラムを作る場合、ｏｐｅｎ（）、ｃｌｏｓｅ（）、ｒｅａｄ（）、ｗｒｉｔｅ（）、ｉｏｃｔｌ（）といったシステムコールが使われる。これらはデバイスを開き、閉じ、読み出し、書き込み、メッセージによって制御を行うものである。ＯＳの違いや実行環境によって関数の名前は変わるが、同等の機能が提供されていることが多い。システムコールが実行されるとＯＳのカーネルのサービスが呼び出される。
【０００４】
図２は従来のデバイス制御装置を示すブロック図である。デバイス５をデバイスドライバ６２が操作し、デバイスドライバ６２はＯＳ６１にリンクされる。アプリケーション７１は高レベルＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）７２を利用し、高レベルＡＰＩ７２はシステムコール７４を実行する。ＯＳ６１はシステムコール７４と高レベルＡＰＩ７２を提供している。
【０００５】
従来のデバイスドライバはデバイスのサポートする機能を提供するために、デバイスドライバに対するメッセージや、そのやり取りの手順といった、インタフェースを公開していた。またメッセージのインタフェースを標準化することによって、異なるメーカーのデバイスであっても同一のプログラムを変更なしに動作させることができ、デバイスの普及を促すのに役立った。
【０００６】
メッセージのインタフェースが標準化されている場合、システムコールの上位に高レベルＡＰＩを設定し、この高レベルＡＰＩをＯＳがライブラリやＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）として提供している場合が多い。実行オブジェクトが高レベルＡＰＩを呼ぶと、高レベルＡＰＩはシステムコールを呼んでデバイスドライバ宛てのメッセージを送る。
【０００７】
通常、単一のデバイスに対してデバイスドライバのインスタンスは単一であり、高レベルＡＰＩのインスタンスはアプリケーションごとに複数存在する。デバイスドライバインスタンスが単一であれば、複数のアプリケーションが同時にデバイスを制御しようとした場合に、競合を検出して排他制御を行うことができるからである。
【０００８】
一方でこのような汎用のＯＳを携帯電話機に搭載し、ＯＳの持つ優れた機能を利用したり、ＯＳ上で動作する優れたアプリケーションを携帯電話の無線ネットワークに接続して利用したりする装置が現れている。
【０００９】
この種の装置では、携帯電話や無線データ通信を実現するデバイスをＯＳが動作する携帯型コンピュータに結合し、デバイスとＯＳとのインタフェースをデバイスドライバとして実現していた。この方式は、ＯＳ及びアプリケーションからデバイスを制御するためのオープンな手段を提供すること、ユーザ空間とカーネル空間とを分離するメモリの保護機能を備えるＯＳにおいてはこうしたメモリ保護の恩恵を受けられること、携帯電話メーカーにはＯＳの開発コストを削減しつつ高度な機能が利用できること、ＯＳメーカーにはデバイスが変わってもＯＳやアプリケーションを移植する手間が省け、常に最新の高性能なデバイスを利用することができること、などといったメリットがあった。
【特許文献１】特開平９−２１８８４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
デバイスメーカーや携帯電話メーカーでは、デバイスの持つある種の機能はＯＳなどの信頼できるソフトウエアにのみ利用を許可し、ユーザアプリケーションなどの信頼できないソフトウエアに対しては利用を制限したい場合があったが、従来のデバイスドライバによるデバイス制御装置やデバイス制御方法では不可能であった。つまり実行プログラムにｏｐｅｎ（）、ｃｌｏｓｅ（）、ｒｅａｄ（）、ｗｒｉｔｅ（）、ｉｏｃｔｌ（）といったシステムコールの利用を許容すると、信頼できないソフトウエアでもデバイスを操作できてしまうという問題があった。例えばデバイスの動作に支障をきたすような操作、ユーザに対して使用料金を発生させる操作、ユーザのプライバシー情報を読み出す操作などは信頼できないソフトウエアに対しては制限を設けるべきであるが、そのような選択的な制限は困難であった。
【００１１】
デバイスドライバと実行オブジェクトとの間のメッセージインタフェースが標準化されている場合、特定のメッセージに関してＯＳがその利用を制限することは可能であったが、デバイス独自の機能を利用しつつその利用制限を設ける場合には、ＯＳが個々の条件に対応していなければならず、ＯＳの改変を必要とするケースも多くなる。デバイスの利用制限の設定に伴って、ＯＳメーカーがＯＳを改変するのは合理的な対処方法ではなかった。
【００１２】
本発明は、このような事情に鑑み、メッセージインタフェースの汎用性を確保しつつ、デバイスドライバ側においてアプリケーションに対するデバイスの利用制限を設定するにあたっての自由度を向上させるのに好適な技術を提供することを課題とする。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、第１の発明は、実行オブジェクトから受信したメッセージを操作手段に送信する中継手段と、該メッセージを受信すると該メッセージに対応して予め設定された手順に従ってデバイスを制御する制御手段とを備えた装置であって、前記中継手段は、前記実行オブジェクトから前記メッセージを受信すると、当該実行オブジェクトの信頼性を示す指標を作成する評価手段と、受信した前記メッセージに前記指標を付加する指標付加手段とを有し、前記制御手段は、前記指標と対応して前記手順を複数記憶する記憶手段を有し、前記メッセージを受信すると前記指標を参照し、前記記憶手段に記憶された複数の手順の中から、所定の手順を実行するように制御すること、を特徴とするデバイス制御装置を提供する。
【００１４】
また第２の発明は、第１の発明に係るデバイス制御装置において、前記中継手段は、操作手段に送信するメッセージに認証を付加する認証付加手段を有し、前記制御手段は、中継手段からメッセージを受け取ると前記認証の正当性を判定する判定手段と、認証の正当性が成立しないときは当該メッセージを送信した実行オブジェクトに対する防御を行うことを有することを特徴とするデバイス制御装置を提供する。
【００１５】
また第３の発明は、実行オブジェクトから受信したメッセージを中継手段により操作手段に送信し、該操作手段はメッセージを受信すると該メッセージに対応して予め設定された操作手順に従ってデバイスを操作するデバイス制御装置を制御する方法であって、前記中継手段は、実行オブジェクトからメッセージを受信すると、当該実行オブジェクトの信頼性を示す指標を取得するステップと、受信したメッセージに前記指標を付加して、宛先の操作手段に送信するメッセージとするステップとを実行し、前記制御手段は、実行オブジェクトの信頼性に対応して前記操作手順を複数記憶するステップと、メッセージを受信すると前記指標を参照し、メッセージを受信すると前記指標を参照し、実行オブジェクトの信頼性に対応して予め設定された複数の操作手順の中から、実行すべきものを選択するステップとを実行することを特徴とするデバイス制御方法を提供する。
【００１６】
また第４の発明は、デバイス操作に関するメッセージを実行オブジェクトから受信するステップと、該メッセージを送信した実行オブジェクトの信頼性を示す指標を取得するステップと、受信したメッセージに前記指標を付加し、対応するデバイス側に送信するステップとをコンピュータに実行させることを特徴とするプログラムを提供する。
【００１７】
また第５の発明は、デバイス操作に関するメッセージを送信した実行オブジェクトの信頼性を示す指標を該メッセージに付加したものを受信するステップと、前記指標を参照し、メッセージごとに実行オブジェクトの信頼性に対応して複数設定された操作手順の中から１つを選択するステップと、選択された操作手順に従ってデバイスを操作するステップとをコンピュータに実行させることを特徴とするプログラムを提供する。
【発明の効果】
【００１８】
本発明によれば、実行オブジェクトから受信したメッセージを、デバイスを操作する操作手段に中継するにあたって、当該実行オブジェクトの信頼性を示す指標を取得してメッセージに付加する一方、前記の指標を参照して信頼性に応じた操作手順を操作手段が選択し得るようにしているので、コンピュータに汎用のＯＳを組み込み、このＯＳに各種のデバイスに対応したデバイスドライバを実装したシステムに適用して好適となる利点がある。
【００１９】
すなわち、中継手段側では前記の指標を取得する機能を構成するだけで済むから、デバイスの特性に依存しない画一的な処理を実行するだけで足り、実行オブジェクト側およびデバイスドライバ側のインタフェースを標準化したＯＳを用いて中継手段を構築する形態に好適となる利点がある。また、操作手段側では実行オブジェクトや中継手段側に支配されずに操作手段側で処理手順を選択することが可能であり、しかも処理手順を選択するにあたって実行オブジェクトの信頼性を示す指標を参照できるので、デバイスドライバを用いて操作手段を構築し、デバイスへの外部からの不正なアクセス等に対しデバイスドライバのみの処理で柔軟に対処する形態をとるのに好適となる利点がある。
【００２０】
かかる形態によれば、メッセージを送信した実行オブジェクトの信頼性をメッセージごとに取得してデバイスの機能を提供するか否かをデバイスドライバが判断でき、さらに提供する場合の動作内容もデバイスドライバが選択できる。これによって信頼できる実行オブジェクトに対してのみ機能を提供し、信頼できない実行オブジェクトに対しては機能を制限したり、異なった機能に変えることができる。この機能制限や変更はデバイスドライバが判断するため、ＯＳの変更を要請することなくデバイスとデバイスドライバのメーカーの方針に基づいて制御することができる。
【００２１】
また、中継手段が操作手段に送信するメッセージに電子認証を付加し、不正なアクセス等に対する防御を強化する形態をとることもできる。操作手段は、中継手段からメッセージの正当性が成立しないときは、所定の防御処理、たとえば当該メッセージを無視してメッセージを返送しない処理や、自己（デバイスドライバ等）にセキュリティレベルの設定等がある場合そのレベルを高くする処理、中継手段側（ＯＳ等）に対し防御強化を促す通知を行う処理等を行うことができる。
【００２２】
かかる形態によれば、ＯＳからのメッセージを偽装してデバイスを不正に操作する意図が存在することをデバイスドライバが判別し、そのような攻撃にさらされている状況に対応してデバイスドライバ自体が高セキュリティモードをとると共に、ＯＳにも攻撃の存在を通知してセキュリティ強化を促すといったシステムの構築に好適となる利点がある。
【発明を実施するための最良の形態】
【００２３】
以下、図面を用いてこの発明の実施形態を説明する。
図３は本発明の一実施形態が適用される携帯電話機の回路構成例を示すブロック図である。この携帯電話機は、装置全体の制御を司るＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１に内部バス２を介して各機能ブロックが接続された構成を有する。メモリ１０２は、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）からなり、ＣＰＵ１０１のメインメモリを構成するものである。タイマ１０３はＣＰＵ１０１の指示に基づいて指定時刻での起動等の処理を行うものである。
【００２４】
アンテナ３０１は、通信に使用する電波の送受信を行うものである。無線部３０２は、アンテナ３０１を用いて通信を行うものである。ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３０３は、送受信信号の変復調処理その他の処理を行うものである。Ｄ／Ａ（Ｄｉｇｉｔａｌ／Ａｎａｌｏｇ）コンバータ３０４は、ＤＳＰ３０３の出力するディジタル音声信号や着信音等をアナログ音声信号に変換して、スピーカ３０５に供給するものである。Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）コンバータ３０６はマイクロホン３０７から入力されるアナログ音声信号をディジタル音声信号に変換してＤＳＰ３０３に供給するものである。マイクロホン３０７は、通話音声等を入力するものである。
【００２５】
キー操作部４０１は、例えばテンキーやオンフックキー、オフフックキー、電源ボタン、シャッタボタン、機能選択キー（ファンクションキー）等を有し、ダイアル入力の他、各種のキー入力の取込処理を行うものである。画面表示部４０２は、たとえば液晶ディスプレイや液晶タッチパネルなどからなり、通信に関する各種表示の他、メッセージ等の表示やメニュー画面、さらに各種のアプリケーションソフトの実行画面などの表示を行うものである。
【００２６】
以上の構成においてこの携帯電話機は、通常の音声通話モードの他にアプリケーション実行モードをとって動作することが可能となっている。アプリケーション実行モードでは、ユーザが任意にインストールしたアプリケーションソフトを立ち上げて実行することができる。
【００２７】
図１は本発明の実施の一形態を示すデバイス制御装置のブロック図である。同図において５は説明の便宜上１つしか図示しないが各種のデバイスであり、６はデバイス５を制御するデバイス制御装置、７はデバイス５宛にメッセージを送信する実行オブジェクトである。デバイス制御装置６や実行オブジェクト７は、たとえば図３に示したＣＰＵ１０１やメモリ１０２などのハードウエア資源と、ＯＳやＯＳに実装されたデバイスドライバソフト、ＯＳにインストールされたアプリケーションソフトなどのソフトウエア資源との協調動作により実現されるものである。
【００２８】
図１に示すようにＯＳ６１は、アプリケーション７１を実行するためにプロセスを作成する。アプリケーション７１は高レベルＡＰＩ７２をリンクしており、実行時にダウンロードされる外部の実行オブジェクト７３もリンクしている。高レベルＡＰＩ７２はさらにシステムコール７４をリンクしている。システムコール７４はカーネルのサービスを呼び出すための標準関数であるためアプリケーション７１のプロセスにリンクされて存在する。アプリケーション７１と高レベルＡＰＩ７２と実行オブジェクト７３とシステムコール７４はアプリケーション７１のプロセスインスタンスとして実行オブジェクト７を形成する。
【００２９】
ここで実行オブジェクトとは、実行可能なソフトウエアのひとかたまりのことである。実行オブジェクトは、ユーザやソフトウエアメーカーが作成したアプリケーションや、ＯＳが提供するライブラリやＤＬＬや、ネットワークやメディアを通じて外部から入手するオブジェクトなどがある。例えばアプリケーション、実行時に動的にリンクされるオブジェクトやＤＬＬ、インタープリタ上で実行されるプログラムやスクリプト、あるいは仮想マシン上で実行されるバイトコードのオブジェクト、などが実行オブジェクトである。さらにこれらをリンクしたユーザプロセスや、カーネルプロセスなども実行オブジェクトとみなすことができる。
【００３０】
アプリケーション７１が高レベルＡＰＩ７２を呼び出すと、高レベルＡＰＩ７２はデバイスドライバ６２に宛てた適切なメッセージを引数にしてシステムコール７４を呼び出す。システムコール７４はｏｐｅｎ（）、ｃｌｏｓｅ（）、ｒｅａｄ（）、ｗｒｉｔｅ（）、ｉｏｃｔｌ（）といった関数群であり、メッセージはｉｏｃｔｌ（）によって、ＯＳ６１へ送られる。ＯＳ（カーネル）６１には評価部６１１が存在しており、メッセージをデバイスドライバ６２に送る前に実行オブジェクト７を評価する。
【００３１】
評価はまず実行オブジェクト７がユーザプロセスに属するかＯＳ６１のカーネルプロセスに属するかを判別する。その上で既知のプロセスであるか未知のプロセスであるかを調査する。プロセスの動作モードを判別することによってこの調査の範囲を絞ることができるのである。
【００３２】
既知のカーネルプロセスであった場合はその評価値を事前に定めておくことができるので、直ちに評価を決定できる。評価値は符号なしの１６ビットで表され、上位の８ビットがクラスを表し、下位８ビットがクラス内での詳細な評価値を表している。クラスとして４種類を定義してあり、「既知のオブジェクト」「未知のデジタル署名付きのオブジェクト」「未知の安全なオブジェクト」「その他のオブジェクト」に分類する。評価値の上位８ビットにおいて、この４種類以外の値はリザーブされ無効である。
【００３３】
未知のプロセスであった場合、評価部６１１は、そのプロセスインスタンスがその時点でリンクしている実行オブジェクトを全て調査し、各実行オブジェクトの評価値の最低値を実行オブジェクト７の評価値とする。ここではアプリケーション７１と高レベルＡＰＩ７２と動的にリンクされた実行オブジェクト７３とシステムコール７４がリンクされているため、これらの評価値を求めてその最低値を求める。高レベルＡＰＩ７２とシステムコール７４はＯＳ６１が提供したＤＬＬであるから既知で信頼でき、評価値は高くクラス１に属する値とする。クラス１は既知のオブジェクトを意味する。既知のオブジェクトとはＯＳ６１にバンドルされた実行オブジェクトでＯＳ６１がその信頼性を保証する。
【００３４】
アプリケーション７１は未知であるから通常は評価値が低いが、信頼性を増すために作成者や提供者の署名が付加されている場合があり、その場合は評価値をやや高くし、クラス２に属する値とすることができる。クラス２は未知のデジタル署名付きのオブジェクトを意味する。未知のデジタル署名付きのオブジェクトとはＯＳ６１にとっては未知であるが、デジタル署名が施されておりＯＳ６１がこの署名を検証して信頼性が確認できた実行オブジェクトである。
【００３５】
ダウンロードして動的にリンクした実行オブジェクト７３は危険とみなされ、評価値は低くクラス４に属する値とする。クラス４は改竄された実行オブジェクトか一定の判定基準によって危険と判定された実行オブジェクトを意味する。クラス４のオブジェクトは、デジタル署名を検証した際に改竄があったものや、判定基準に基づいた判定の結果危険とされる実行オブジェクトである。ちなみにクラス３は未知の安全なオブジェクトであり、デジタル署名が無く、一定の判定基準に基づいて安全と判定される実行オブジェクトである。
【００３６】
評価部６１１は、実行オブジェクト７の評価値として実行オブジェクト７３の評価値を適用する。ネットワークから必要なオブジェクトをダウンロードして実行を進めるネットワーク志向の実行オブジェクトの場合、実際に呼び出されるまでリンクを行わないことがある。このような実行環境においては、時々刻々とリンクしているオブジェクトが変化する。このような実行オブジェクトはリンクしている実行オブジェクトの評価値を全て調査することは不可能であるから、クラス４に属する低い評価値を付けることにする。
【００３７】
付加部６１２は、メッセージに指標を付加したうえでデバイスドライバ６２へ送る。デバイスドライバ６２は、メッセージに付加した指標に応じて処理を選択する選択部６２１と、メッセージごとにデバイス５に対する操作を実行する操作部６１２とを有している。この操作部６２２は、予め設定された処理の手順を記憶する領域６２２１を参照するようになっている。この領域は、たとえばメッセージが４種類であるとすると、各メッセージに対応して４種類Ｉ〜IVの処理区分が設定されている。各処理区分には、評価値に対応して複数の処理の手順６２２１−１，６２２１−２…を格納している。
【００３８】
選択部６２１は、指標を調べ、それに応じて処理の内容を変化させる。指標において、実行オブジェクト７がカーネルプロセスであることを通知しており、かつ既知のプロセスであればデバイスドライバ６２は広範囲な機能を提供する。カーネルプロセスであっても未知の場合は機能を制限する。例えばあるデバイスドライバが別のデバイスドライバを呼び出す場合は未知のカーネルプロセスとなる。指標がユーザプロセスであることを通知していている場合、さらにその評価値の高低に応じてデバイス５に対する操作の内容を変化させ、提供する機能を制限する。例えばあるメッセージに対するデバイス５の操作を一切省略してエラーコードをリターンすることによって、実行オブジェクト７がデバイス５を制御することを防ぐことができる。
【００３９】
図４は本発明の一実施の形態におけるＯＳのメインフローを示すフローチャートである。図１，４を用いて説明すると、まず実行オブジェクト７がデバイスドライバ６２に宛てたメッセージをＯＳ６１に送る処理が実行される（Ｓ１０１）。これはＯＳ６１がアプリケーションに対して提供しているｉｏｃｔｌ（）システムコールを呼ぶことによって実現される。ｉｏｃｔｌ（）システムコールはオープンしたデバイスのディスクリプタ（ｄｅｓｃｒｉｐｔｏｒ）と、メッセージと、入力データへのポインタと、出力データへのポインタを引数にとり、成功すると「０」をリターンし、エラーがあると「−１」をリターンする関数である。なおデバイス５は図４のメインフローを実行する前にオープン済みで、有効なディスクリプタが得られているものとする。ｉｏｃｔｌ（）の中ではＯＳ６１のカーネルのサービスを呼び出し、ステップＳ１０２に進む。
【００４０】
ステップＳ１０２では、ＯＳ６１内の評価部６１１により、メッセージを発生させた実行オブジェクト７を評価して指標を作成する。ＯＳ６１は、その時点で実行中のプロセスを調べ、それがカーネルモードで実行されているか、ユーザモードで実行されているかを判別する。さらに実行プロセスが既知のカーネルプロセスであるかを調べ、既知のプロセスであれば既に定義済みの指標を参照する。未知のプロセスであった場合は、それに対する指標を作成する。その際デジタル署名が付加されているか、さらにその署名が正しくて改竄がないかを判別する。未知でデジタル署名が無いプロセスについては、公開されている一定の判定基準に従って判定を行う。この判定によって安全な実行オブジェクトとその他の実行オブジェクトに分類する。指標には、プロセスの実行モードを示すフラグ、評価値、プロセスの中でその評価値を決定している実行オブジェクトの識別情報と信頼性情報などを格納する。
【００４１】
次にステップＳ１０３に進む。ステップＳ１０３では、ＯＳ６１がメッセージと指標をデバイスドライバ６２に送る処理を行う。ＯＳ６１はデバイスドライバ６２を登録しておく管理テーブルを持ち、ディスクリプタで指定されたデバイス５に応じたデバイスドライバ６２を呼び出すことができる。
【００４２】
次にステップＳ１０４に進む。ステップＳ１０４では、デバイスドライバ６２がメッセージと指標に基づいてデバイス５に対する操作の内容を変えて実行する。図５は、デバイスドライバにおける処理フローを示すフローチャートである。図１，５を用いて説明するとデバイスドライバ６２はまず、引数に与えられたメッセージに応じて処理を選択する（Ｓ２０１）。引数のメッセージがメッセージ１ならば第１の処理（Ｓ２０２−１）を実行し、メッセージ２ならば第２の処理（Ｓ２０２−２）を実行し、メッセージ３ならば第３の処理（Ｓ２０２−３）を実行し、メッセージ４ならば第４の処理（Ｓ２０２−４）を実行する。メッセージと処理の数は、デバイスを制御するのに必要なだけ存在してよい。
【００４３】
第１ないし第４の処理（Ｓ２０２−１〜２０２−４）では、詳細は後述するが、指標に基づいて処理の内容を変えて実行することによりドライバ５を操作する。第１ないし第４の処理（Ｓ２０２−１〜Ｓ２０２−４）がリターンするとステップＳ２０３を実行する。ステップＳ２０３では、第１ないし第４の処理（Ｓ２０２−１〜Ｓ２０２−４）の戻り値を図５の処理の結果として戻り値にセットする。戻り値は、エラーがなければ「０」で、エラーがあれば「−１」となる。
【００４４】
図６は、第１ないし第４の処理におけるフローの具体例を示すフローチャートである。図６を用いて説明するとまず、指標に含まれている評価値のクラスを参照し、分岐処理を行う（Ｓ３０１）。評価値の上位８ビットはクラスを表しているから容易にクラスを判別することができる。ここでは評価値によって更に４種類の処理に分岐する例を示す。すなわち、評価値のクラスがクラス１ならば第１の処理（Ｓ３０２−１）を、クラス２ならば第２の処理（Ｓ３０２−２）を、クラス３ならば第３の処理（Ｓ３０２−３）を、クラス４ならば第４の処理（Ｓ３０２−４）を実行する。
【００４５】
クラス１は既知のオブジェクトであるから、第１の処理（Ｓ３０２−１）ではいずれのオブジェクトであるかをさらに指標の中から取り出して、処理内容を分岐させることができる。クラス２は未知のデジタル署名付きのオブジェクトであるから、第２の処理（Ｓ３０２−２）では、その署名をした者がデバイスメーカー自身の場合にだけデバイスに対する書き込みを許し、その他の信頼する関連会社であった場合はデバイスの状態の読み出しだけを許し、その他の団体であった場合は公開してもよい限定された状態の読み出しだけを許可する。クラス３は未知の安全なオブジェクトであるので、第３の処理（Ｓ３０２−３）ではそのオブジェクトの出所が不明であるが、一定の判定基準によって安全と判定されているので、公開してもよい限定された状態の読み出しだけを許可する。
【００４６】
クラス４は改竄されたか、あるいは危険と判定された実行オブジェクトであるから、第４の処理（Ｓ３０２−４）ではほとんどの機能を拒否する。場合によっては、危険な実行オブジェクトにさらされていることをデバイス５に通知して、防衛体制に遷移させてもよい。デバイス５が防衛体制に遷移した場合、高額な料金を発生させる特定のサービスに対するアクセスを禁止したり、ユーザの個人情報の読み出しを禁止するなどの措置が可能である。
【００４７】
かかる構成により、あるメッセージに対する操作の実際の実行内容を、指標に基づいてデバイスドライバ６２の判断で変えることができることになる。このためデバイスを提供するデバイスメーカーがＯＳメーカーに依存することなく、独自の基準で提供する機能を制限したり、機能の提供を拒否したりできるようになるのである。
【００４８】
図１を用いて説明すると、上述の実施の形態では、デバイスドライバ６２に送るメッセージと指標が本当に評価部６１１とＯＳ６１が作成したものであるかを確認していない。このため悪意のアプリケーションがデバイスドライバ６２をＤＬＬとして直接リンクして操作するおそれがある。しかし最初にＯＳ６１のカーネルがデバイスドライバ６２をリンクするので、２回目以降にリンクした場合のデバイスドライバインスタンスは、自分が２個目のインスタンスであることを認識して動作を拒否することができる。
【００４９】
さらに安全性を重視するならば、ＯＳ６１がメッセージと指標をデバイスドライバ６２に送るステップＳ１０３（図４参照）において、それらが評価部６１１とＯＳ６１によって作成され改竄されていないことを証明するデジタル署名を付加し、デバイスドライバ６２がその検証を行うこともできる。この場合、ＯＳ６１は連番あるいは擬似乱数をメッセージと指標に付加し、これら三つのデータのハッシュを作成し、これをＯＳ６１の持つ秘密鍵で暗号化してデバイスドライバ６２に送る（認証付加手段）。デバイスドライバは受けた三つのデータのハッシュを作成し、ＯＳ６１の公開鍵を用いて暗号を復号し、ハッシュと一致することを確かめれば改竄がなかったことを確認できる（判定手段）。もし改竄されたメッセージを受け取ったらデバイスドライバ６２は、デバイスを不正に操作する攻撃にさらされている可能性が極めて高いとして防御モードに移行する（防御手段）。この防御モードでは、当該実行オブジェクトからのメッセージは一切無視する他、自己に設定されているセキュリティレベルを高める形態をとることができ、さらにＯＳ６１に通知して防衛を促す形態等も考えられる。なおＯＳ６１において、秘密鍵をさらに別の鍵で暗号化して保管する形態をとれば、悪意のアプリケーションに秘密鍵を盗まれる危険性を抑えることができる。
【００５０】
以上、この発明の実施形態を詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。たとえば組み込み機器においてはユーザモードとカーネルモードといったメモリ保護を備えないＯＳがあるが、そうした場合でも本発明は適用可能である。さらにマルチプロセス機能を備えないＯＳもあるが、こうした場合でも、アプリケーションを実行する単位としての実行オブジェクトはＯＳが管理しているので、その管理手法に応じて実行オブジェクト内のコンポーネントオブジェクト群を調べることにより、本発明を有効に適用できる。
【００５１】
また、本発明に係るプログラムは、コンピュータ読み取り可能な記録媒体に記録されて頒布されることができ、機能の一部を実現する形態で頒布されるものであっても良い。たとえばコンピュータシステムにすでに記録されている既存システムのプログラムとの組み合わせで所定の機能を実現できるもの、いわゆる差分プログラムで頒布される形態をとることも可能である。
【００５２】
また上記のコンピュータ読み取り可能な記録媒体には、可搬型の磁気ディスクや光磁気ディスク等の記憶媒体等以外にも、ハードディスク等の記憶装置その他不揮発性の記憶装置を含む。さらにインターネットその他のネットワーク等、任意の伝送媒体を介して他のコンピュータシステムから提供される形態でも良い。この場合、「コンピュータ読み取り可能な記録媒体」には、ネットワーク上のホストやクライアントとなるコンピュータシステム内部の揮発性メモリのように、伝送媒体において一定時間プログラムを保持しているものも含む。
【図面の簡単な説明】
【００５３】
【図１】本発明によるデバイス制御装置のブロック図である。
【図２】従来のデバイス制御装置のブロック図である。
【図３】本発明の一実施形態である携帯電話機の回路構成例を示すブロック図である。
【図４】本発明の一実施の形態におけるＯＳのメインフローを示すフローチャートである。
【図５】デバイスドライバにおける処理フローを示すフローチャートである。
【図６】図５の第１ないし第４の処理におけるフローの具体例を示すフローチャートである。
【符号の説明】
【００５４】
１０１：ＣＰＵ  １０２：メモリ  １０３：タイマ  ２０１：内部バス  ３０１：アンテナ  ３０２：無線部  ３０３：ＤＳＰ  ３０４：Ｄ／Ａコンバータ  ３０５：スピーカ  ３０６：Ａ／Ｄコンバータ  ３０７：マイクロホン  ４０１：キー操作部  ４０２：画面表示部  ５：デバイス  ６：デバイス制御装置  ６１：ＯＳ（中継手段）  ６１１：評価部  ６１２：付加部（指標付加手段）  ６２：デバイスドライバ（操作手段）  ６２１：選択部（選択手段）  ６２２：操作部  ６２２１：処理の手順を記憶する領域（記憶手段）  ６２２１−１，６２２１−２…：処理の手順（操作手順）  ７：実行オブジェクト  ７１：アプリケーション  ７２：高レベルＡＰＩ  ７３：外部の実行オブジェクト  ７４：システムコール
【図１】
2006330835.tif 000003
【図２】
2006330835.tif 000004
【図３】
2006330835.tif 000005
【図４】
2006330835.tif 000006
【図５】
2006330835.tif 000007
【図６】
2006330835.tif 000008