(57)【要約】【課題】  コンピュータに接続されたデバイスを、該コンピュータにインストールされたアプリケーションプログラムによりデバイスドライバを介して制御するシステムの認証を行なうためのシステム認証方法に関し、コンピュータに接続されたデバイスを、該コンピュータにインストールされたアプリケーションプログラムによりデバイスドライバを介して制御するシステムのセキュリティ性を確保するためのシステム認証方法を提供することを目的とする。【解決手段】  本発明は、コンピュータ（１１１）に接続されたデバイス（１１２）を、コンピュータ（１１１）にインストールされたアプリケーションプログラム（１２２）によりデバイスドライバ（１２１）を介して制御するシステムを認証するためのシステム認証方法であって、デバイス（１１２）とデバイスドライバ（１２１）との双方及び／又はデバイスドライバ（１２１）とアプリケーションプログラム（１２２）との双方で、所定の暗号化方式を用いて認証を行なうことを特徴とする。【選択図】  図１
2006191195.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに接続されたデバイスを、該コンピュータにインストールされたデバイスドライバによって制御するシステムを認証するためのシステム認証方法であって、
前記デバイスと前記デバイスドライバとの双方で所定の暗号化方式を用いて認証を行なうことを特徴とするシステム認証方法。
【請求項２】
前記所定の暗号化方式は、公開鍵暗号化方式であることを特徴とする請求項１記載のシステム認証方法。
【請求項３】
前記暗号化方式は、乱数交換により認証を行なうことを特徴とする請求項１又は２記載のシステム認証方法。
【請求項４】
コンピュータに接続されたデバイスを、該コンピュータにインストールされたアプリケーションプログラムによりデバイスドライバを介して制御するシステムを認証するためのシステム認証方法であって、
前記デバイスドライバと前記アプリケーションプログラムとの双方で所定の暗号化方式を用いて認証を行なうことを特徴とするシステム認証方法。
【請求項５】
前記所定の暗号化方式は、公開鍵暗号化方式であることを特徴とする請求項４記載のシステム認証方法。
【請求項６】
前記暗号化方式は、乱数交換により認証を行なうことを特徴とする請求項４又は５記載のシステム認証方法。
【請求項７】
前記デバイスドライバと前記アプリケーションプログラムとは、オペレーティングシステム上で動作しており、前記デバイスドライバと前記アプリケーションプログラムとの認証時に、前記オペレーティングシステムから実体ファイルを取得し、かつ、認証相手から認証相手の実体ファイルの署名を取得することを特徴とする請求項４乃至６のいずれか一項記載のシステム認証方法。
【請求項８】
コンピュータに接続されたデバイスを、該コンピュータにインストールされたアプリケーションプログラムによりデバイスドライバを介して制御するシステムを認証するためのシステム認証方法であって、
前記デバイスと前記デバイスドライバとの双方で所定の暗号化方式を用いて認証を行なうとともに、前記デバイスドライバと前記アプリケーションプログラムとの双方で所定の暗号化方式を用いて認証を行なうことを特徴とするシステム認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシステム認証方法に係り、特に、コンピュータに接続されたデバイスを、該コンピュータにインストールされたアプリケーションプログラムによりデバイスドライバを介して制御するシステムの認証を行なうためのシステム認証方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ等のコンピュータシステムにインストールされたアプリケーションプログラムは、一般にデバイスベンダーに提供するドライバを用いてデバイスを制御している。
【０００３】
デバイスドライバのＡＰＩ（application  programming interface）を知っている、もしくは、推測できれば、デバイスを制御するアプリケーションプログラムを作成することは容易に行なえる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかるに、従来のコンピュータシステムでは、デバイスに対するセキュリティ対策は行なわれていないのが現状であり、デバイスドライバのＡＰＩ（application programming interface）を知っている、もしくは、推測できれば、デバイスを制御するアプリケーションプログラムを作成することは容易に行なえるため、例えば、デバイスが指紋センサユニットなどセキュリティを守ることが目的のデバイスにおいては、この状況はセキュリティホールとなり、セキュリティ性を確保することができないなどの課題があった。
【０００５】
本発明は上記の点に鑑みてなされたもので、コンピュータに接続されたデバイスを、該コンピュータにインストールされたアプリケーションプログラムによりデバイスドライバを介して制御するシステムのセキュリティ性を確保するためのシステム認証方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、コンピュータ（１１１）に接続されたデバイス（１１２）を、コンピュータ（１１１）にインストールされたアプリケーションプログラム（１２２）によりデバイスドライバ（１２１）を介して制御するシステムを認証するためのシステム認証方法であって、デバイス（１１２）とデバイスドライバ（１２１）との双方及び／又はデバイスドライバ（１２１）とアプリケーションプログラム（１２２）との双方で、所定の暗号化方式を用いて認証を行なうことを特徴とする。
【０００７】
なお、上記参照符号は、あくまでも参考であり、これによって、特許請求の範囲を限定しようとするものではない。
【発明の効果】
【０００８】
本発明によれば、デバイスとデバイスドライバとの双方及び／又はデバイスドライバとアプリケーションプログラムとの双方で、所定の暗号化方式を用いて認証を行なうことにより、デバイスドライバのＡＰＩを知る、もしくは、推測できたとしても、所定の暗号化方式のよる認証が正常の実行されなければ、デバイスを制御できず、また、デバイスとデバイスドライバとの双方及び／又はデバイスドライバとアプリケーションプログラムとの双方での認証される必要があるので、デバイスのみならず、デバイスドライバ、アプリケーションの成りすましからデバイスを保護でき、よって、デバイスのセキュリティ性を確保できる。
【発明を実施するための最良の形態】
【０００９】
〔第１実施例〕
〔構成〕
図１は本発明の第１実施例のブロック構成図を示す。
【００１０】
本実施例のコンピュータシステム１００は、コンピュータ本体１１１とデバイス１１２から構成されている。コンピュータ本体１１１は、いわゆる、パーソナルコンピュータから構成されており、ＯＳ上で働くデバイスドライバ１２１及びアプリケーションプログラム１２２がインストールされている。
【００１１】
デバイス１１２は、例えば、指紋読取装置であり、コンピュータ本体１１１との間でやり取りされるデータに秘匿性が要求されるデバイスであり、コンピュータ本体１１１にインストールされたデバイスドライバ１２１を介してアプリケーションプログラム１２２との間でデータをやり取りする。
【００１２】
本実施例では、起動時にデバイス１１２とコンピュータ本体１１１にインストールされたデバイスドライバ１２１との間で公開鍵暗号化方式を用いて双方に認証を行なっている。
【００１３】
〔公開鍵暗号方式〕
公開鍵暗号化方式は、秘密鍵と公開鍵と呼ばれる鍵ペアにより暗号化と復号を行なう方式であり、公開鍵で暗号化した文書は、対応する秘密鍵でしか復号できない方式である。
【００１４】
公開鍵暗号化方式は、以下のような特長を有する。
【００１５】
秘密鍵で暗号化した文章は対応する公開鍵でしか復号できない。
【００１６】
「平文」と「当該平文を暗号化した暗号文」のペアを得ても、秘密鍵及び公開鍵を推定することは事実上不可能である。
【００１７】
〔鍵の配布〕
デバイスベンダーは、契約元及びデバイスドライバ１２１を提供する先のアプリケーションプログラムベンダーに公開鍵ａと秘密鍵Ｂをデバイスドライバに組み込んだ上で配布する。
【００１８】
公開鍵ａは、デバイス１１２内部に組み込まれる秘密鍵Ａとペアになる公開鍵である。また、秘密鍵Ｂは、デバイス１１２内部に組み込まれる公開鍵ｂとペアになる秘密鍵である。公開鍵ａ及び秘密鍵Ｂは、不正なプログラマに入手できないように保護されている。
【００１９】
〔認証方法〕
起動時、下記の手順を正常終了するまで、デバイスドライバ１２１はデバイス１１２を不正なデバイスとして仮定して動作する。デバイス１１２はデバイスドライバ１２１からの認証コマンド以外のセキュリティ上重要なコマンドを受け付けないものとする。
【００２０】
図２は本発明の第１実施例のデバイスドライバの処理フローチャート、図３は本発明の第１実施例のデバイスの処理フローチャートを示す。
【００２１】
まず、デバイスドライバ１２１は、ステップＳ１−１でデバイス１１２が接続されると、ステップＳ１−２で乱数Ｒを生成し、ステップＳ１−３で認証コマンドを用いて乱数Ｒをデバイス１１２に送信する。
【００２２】
一方、デバイス１１２は、ステップＳ２−１でデバイスドライバ１２１から乱数Ｒを受信すると、ステップＳ２−２で予め組み込まれた秘密鍵Ａにより乱数Ｒを暗号化し、署名ｒを生成する。次にデバイス１１２は、ステップＳ２−３で乱数Ｓを生成する。デバイスは、ステップＳ２−４でデバイスドライバ１２１からの認証コマンドの応答として、署名ｒ及び乱数Ｓを応答する。
【００２３】
デバイスドライバ１２１は、ステップＳ１−４で、デバイス１１２から認証コマンドの応答として、署名ｒ及び乱数Ｓを受信すると、ステップＳ１−５で公開鍵ａにより署名ｒを復号し、ステップＳ１−６で乱数Ｒと一致するか否かを確認する。デバイスドライバ１２１は、ステップＳ１−６で復号化された署名ｒが乱数Ｒと一致する場合には、認証が正常に行なわれたと判断し、認証を続行する。認証処理を続行する場合には、デバイスドライバ１２１は、ステップＳ１−７でデバイス１１２から送信された乱数Ｓを秘密鍵Ｂで暗号化し、署名ｓを生成し、ステップＳ１−８で認証コマンドＣ２を用いてデバイスに送信する。なお、デバイスドライバ１２１は、ステップＳ１−６で復号化された署名ｒが乱数Ｒと一致しない場合には、異常があると判断して、ステップＳ１−９でエラーを通知する。
【００２４】
デバイス１１２は、ステップＳ２−５で署名ｓを受信すると、ステップＳ２−６で受信した署名ｓを予め組み込まれた公開鍵ｂにより復号化し、ステップＳ２−７で復号化された署名ｓが乱数Ｓと一致する否かを確認する。デバイスは、ステップＳ２−７で復号化された署名ｓが乱数Ｓと一致する場合には、ステップＳ２−８でデバイス１１２とデバイスドライバ１２１との認証が正常に終了したと判断して、デバイスドライバ１２１とデバイス１１２との間でコマンドのやり取りを可能とする。
【００２５】
デバイス１１２は、ステップＳ２−７で復号化された署名ｓが乱数Ｓと一致しない場合には、ステップＳ２−９でデバイス１１２とデバイスドライバ１２１との認証が異常終了したと判断して、認証コマンドＣ２に対してエラー通知を応答する。
【００２６】
〔効果〕
本実施例によれば、不正なデバイス１１２は秘密鍵Ａを知らないので、署名ｒを生成することができない。よって、不正なデバイス１１２が署名ｒ´を不正に生成し、公開鍵ａで復号化しても乱数Ｒを得ることができず、デバイスドライバ１２１は、デバイス１１２が不正であることを判定できる。
【００２７】
また、本実施例によれば、不正なデバイスドライバ１２１は秘密鍵Ｂを知らないので、署名ｓを生成することができない。よって、不正なデバイスドライバ１２１が不正な署名ｓ´を生成し、公開鍵ｂで復号化したとしても乱数Ｓを得ることはできず、デバイス１１２はデバイスドライバ１２１が不正であることを判定できる。
【００２８】
さらに、本実施例によれば、正規のデバイスドライバ１２１と正規のデバイス１１２との間の通信を盗聴し、正規のデバイスドライバ１２１と正規のデバイス１１２との間でやり取りされている乱数Ｒ、Ｓ、署名ｒ、ｓを取得したとしても秘密鍵Ａ、Ｂを容易に推定することはできない。
【００２９】
なお、乱数Ｒ、Ｓ、署名ｒ、ｓを大量に収集すれば、偶然、同じ乱数Ｒ、Ｓに対応する署名ｒ、ｓを認識して、応答を行なうことにより、成りすましを行なうことは可能となる。しかしながら、例えば、認証処理に時間をかけるとともに、乱数を十分に大きい値とすることにより、防止できる。
【００３０】
例えば、１手順に１秒かけるとすれば、１年間かけて得られる乱数Ｒ、Ｓと署名ｒ、ｓとの個数は、３千万個強となる。また、乱数を６４ビットとすれば、生成される乱数の数は、全部で２千万個の１兆倍弱となる。
【００３１】
よって、１年間かけて収集した乱数と偶然同じ乱数が生成される確率は、
（３千万）／（２千万の１兆倍）であり、これは２４００億分の１となり、略０に等しい。すなわち、生成不可能である。
【００３２】
したがって、デバイス１１２あるいはデバイスドライバ１２１に成りすますことが事実上不可能となる。
【００３３】
〔第２実施例〕
なお、第１実施例では、デバイス１１２とデバイスドライバ１２１との間で公開鍵暗号化方式を用いて乱数交換を行なうことにより認証を行なったが、デバイスドライバ１２１とアプリケーションプログラム１２２との間で認証を行なうようにしてもよい。
【００３４】
図４は本発明の第２実施例のブロック構成図、を示す。同図中、図１と同一構成部分には同一符号を付し、その説明は省略する。
【００３５】
本実施例のコンピュータシステム２００は、デバイスドライバ１２１とアプリケーションプログラム１２２との間で認証処理を行う。このとき、デバイスドライバ１２１及びアプリケーションプログラム１２２の実体ファイルの署名を取得するときに、オペレーティングシステム１２３を介して行なっている。
【００３６】
〔鍵の配布〕
デバイスベンダーは、契約元及びデバイスを提供する先のアプリケーションプログラムベンダーに公開鍵ｃと秘密鍵Ｄを配布する。
【００３７】
公開鍵ｃは、デバイスドライバ１２１の署名を生成するための秘密鍵Ｃとペアになる公開鍵である。また、秘密鍵Ｄは、アプリケーションプログラム１２２の署名を復号化するための公開鍵ｄとペアになる秘密鍵である。
【００３８】
秘密鍵Ｄは、不正なプログラマが入手できないように保護されている。本実施例では、秘密鍵Ｄを製品に含める必要がないので、秘匿性に優れている。
【００３９】
また、アプリケーションプログラム１２２とデバイスドライバ１２１の開発者は、それぞれの実体ファイルのハッシュを生成し、それをそれぞれの秘密鍵で暗号化して、製品と一緒に出荷する。
【００４０】
〔認証処理〕
起動時、下記の手順を正常終了するまで、アプリケーションプログラム１２２はデバイスドライバ１２１を不正なデバイスドライバとして仮定して動作する。デバイスドライバ１２１はアプリケーションプログラム１２２からの認証コマンド以外のセキュリティ上重要なコマンドを受け付けない。
【００４１】
〔アプリケーションプログラム１２２〕
図５は本発明の第２実施例のアプリケーションプログラムの処理フローチャートを示す。
【００４２】
アプリケーションプログラム１２２は、ステップＳ３−１でデバイスドライバ１２１とリンクが要求されると、ステップＳ３−２でデバイスドライバ１２１とリンクする前にオペレーティングシステム１２３に問い合せ、デバイスドライバ１２１の実体ファイルのパスを取得する。アプリケーションプログラム１２２は、ステップＳ３−３で取得した実体ファイルのハッシュ値を計算する。
【００４３】
アプリケーションプログラム１２２は、ステップＳ３−４でデバイスドライバ１２１に問い合せて、デバイスドライバ１２１の署名を得る。
【００４４】
アプリケーションプログラム１２２は、ステップＳ３−５で、取得したデバイスドライバ１２１の署名を取得すると、ステップＳ３−６で取得した署名を公開鍵ｃで復号化する。
【００４５】
次に、アプリケーションプログラム１２２は、ステップＳ３−７で計算したハッシュ値と復号化された公開鍵ｃとが一致するか否かを確認する。アプリケーションプログラム１２２は、ステップＳ３−７で計算したハッシュ値と復号化された公開鍵ｃとが一致する場合には、正常に認証が行なわれたと判断し、ステップＳ３−８で認証処理を継続する。
【００４６】
アプリケーションプログラム１２２は、ステップＳ３−６で計算したハッシュ値と復号化された公開鍵ｃとが一致しない場合には、認証が異常終了したと判断し、ステップＳ３−９でエラーを通知して処理を終了する。
【００４７】
〔デバイスドライバ１２１〕
図６は本発明の第２実施例のデバイスドライバの処理フローチャートを示す。
【００４８】
デバイスドライバ１２１は、ステップＳ４−１でアプリケーションプログラム１２２から最初の接続要求があるとステップＳ４−２で、オペレーティングシステム１２３に問い合せて、アプリケーションプログラム１２２の実体ファイルのパスを取得する。デバイスドライバ１２１は、ステップＳ４−３で取得した実体ファイルのハッシュ値を計算する。
【００４９】
次にデバイスドライバ１２１は、ステップＳ４−４でアプリケーションプログラム１２２に問い合せて、アプリケーションプログラム１２２の署名を要求する。デバイスドライバ１２１は、ステップＳ４−５でアプリケーションプログラムの署名を取得すると、ステップＳ４−６で取得した署名を公開鍵ｄで復号化する。
【００５０】
デバイスドライバ１２１は、ステップＳ４−７で計算したハッシュ値と復号化された公開鍵ｄとが一致するか否かを確認する。アプリケーションプログラム１２２は、ステップＳ４−７で計算したハッシュ値と復号化された公開鍵ｄとが一致する場合には、ステップＳ４−８で正常に認証が行なわれたと判断して、アプリケーションプログラム１２２に認証完了を通知する。これによって、アプリケーションプログラム１２２とデバイスドライバ１２１の双方で認証が正常に終了したと判断し、アプリケーションプログラム１２２とデバイスドライバ１２１との間で通常の動作が行われる。
【００５１】
また、デバイスドライバ１２１は、ステップＳ４−７で計算したハッシュ値と復号化された公開鍵ｄとが一致しない場合には、認証が異常終了したと判断し、ステップＳ４−９でアプリケーションプログラム１２２にエラーを通知する。
【００５２】
〔効果〕
不正なデバイスドライバは、秘密鍵Ｃを知らないので、デバイスドライバ１２１の署名を公開鍵ｃで復号化した場合、デバイスドライバ１２１の実体ファイルのハッシュ値を得ることはできず、ステップＳ３−６で計算したハッシュ値と復号化された公開鍵ｃとが一致せず、認証が異常終了したと判断され、ステップＳ３−８でデバイスドライバ１２１との通信が禁止され、不正なデバイスドライバは使用できなくなる。
【００５３】
また、不正なアプリケーションプログラムは、秘密鍵Ｄを知らないので、アプリケーションプログラム１２２の署名を公開鍵ｄで復号化した場合、アプリケーションプログラム１２２の実体ファイルのハッシュ値を得ることはできず、ステップＳ４−６で計算したハッシュ値と復号化された公開鍵ｄとが一致せず、認証が異常終了したと判断され、ステップＳ４−８でデバイスドライバ１２１はアプリケーションプログラム１２２との通信がエラーとされ、不正なアプリケーションプログラムは使用できなくなる。
【００５４】
本実施例では、製品内に秘密鍵が含まれないため、秘密鍵が盗難されることがなく、セキュリティ性を向上させることができる。
【００５５】
〔その他〕
第１、第２実施例では、デバイス１１２とデバイスドライバ１２１との間の認証とデバイスドライバ１２１とアプリケーションプログラム１２２との間の認証とを各々別々に行なう例について説明したが、デバイス１１２とデバイスドライバ１２１との間の認証とデバイスドライバ１２１とアプリケーションプログラム１２２との間の認証とを両方行なうようにしてもよい。デバイス１１２とデバイスドライバ１２１との間の認証とデバイスドライバ１２１とアプリケーションプログラム１２２との間の認証とを両方行なうことにより、デバイス１１２、デバイスドライバ１２１、アプリケーションプログラム１２２の全ての認証を行なうことができ、セキュリティ性を向上させることができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の第１実施例のブロック構成図である。
【図２】本発明の第１実施例のデバイスドライバの処理フローチャートである。
【図３】本発明の第１実施例のデバイスの処理フローチャートである。
【図４】本発明の第２実施例のブロック構成図である。
【図５】本発明の第２実施例のアプリケーションプログラムの処理フローチャートである。
【図６】本発明の第２実施例のデバイスドライバの処理フローチャートである。
【符号の説明】
【００５７】
１００、２００  コンピュータシステム
１１１  コンピュータ本体、１１２  デバイス
１２１  デバイスドライバ、１２２  アプリケーションプログラム
１２３  オペレーションシステム
【図１】
2006191195.tif 000003
【図２】
2006191195.tif 000004
【図３】
2006191195.tif 000005
【図４】
2006191195.tif 000006
【図５】
2006191195.tif 000007
【図６】
2006191195.tif 000008