(57)【要約】【課題】外部への漏洩が許されない機能を機密性を確保しつつ部品化することを可能とするコンピュータシステムの関数呼び出し方法を提供する。【解決手段】動的ライブラリ２が提供する関数Ｚ２２１のアプリケーションプログラム１による呼び出しを隠すため、関数パラメータ暗号化復号処理部１２は、アプリケーションプログラム本体部１１による関数Ｚ２２１の呼び出しを関数Ｚｘの呼び出しに改ざんするとともに、そのパラメータを暗号化する。一方、動的ライブラリ２側の関数パラメータ暗号化復号処理部２１は、この関数Ｚｘの呼び出しを関数Ｚの呼び出しに戻すとともに、暗号化されたパラメータを復号して関数Ｚに引き渡す。【選択図】      図３
2007164595.tif 000002
【特許請求の範囲】
【請求項１】
複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムの関数呼び出し方法であって、
前記ライブラリおよび前記プログラムの双方で、データを暗号化するための同一の共有鍵を予め保有し、
前記プログラムは、
前記ライブラリとの間で送受信するパラメータおよび戻り値を暗号化するためのパラメータ鍵の生成を前記ライブラリに要求し、前記ライブラリから送信されたパラメータ鍵を前記共有鍵で復号するステップと、
第１の関数を呼び出す際、この呼び出しに用いるパラメータを前記パラメータ鍵で暗号化し、この暗号化後のパラメータを用いて、前記第１の関数の呼び出しを改ざんするために設けられる第２の関数の呼び出しを前記ライブラリに要求するステップと、
前記ライブラリから返送された前記第２の関数の戻り値を前記パラメータ鍵で復号し、この復号後の戻り値を前記第１の関数の戻り値とするステップと、
を具備し、
前記ライブラリは、
前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を前記共有鍵で暗号化して前記プログラムに送信するステップと、
前記第２の関数の呼び出しが前記プログラムから要求された際、この呼び出しに用いられたパラメータを前記パラメータ鍵で復号し、この復号後のパラメータを用いて前記第１の関数を呼び出すステップと、
前記第１の関数からの戻り値を前記パラメータ鍵で暗号化し、前記第２の関数の戻り値として前記プログラムに返送するステップと、
を具備することを特徴とするコンピュータシステムの関数呼び出し方法。
【請求項２】
複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムにおいて、
前記プログラムは、
前記ライブラリが提供する第１の関数を呼び出す際、この第１の関数の呼び出しを第２の関数の呼び出しに改ざんする関数呼び出し手段と、
前記ライブラリから返送された前記第２の関数の戻り値を前記第１の関数の戻り値とする戻り値取得手段と、
を具備し、
前記ライブラリは、
前記第２の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第１の関数の呼び出しに変換する関数呼び出し受け付け手段と、
前記第１の関数の戻り値を前記第２の関数の戻り値として前記プログラムに返送する戻り値返送手段と、
を具備することを特徴とするコンピュータシステム。
【請求項３】
前記プログラムは、
前記関数呼び出し手段が、前記第１の関数の呼び出しに用いるパラメータをパラメータ鍵で暗号化し、この暗号化後のパラメータを用いて前記第２の関数を呼び出し、
前記戻り値取得手段が、前記ライブラリから返送された前記第２の関数の戻り値を前記パラメータ鍵で復号し、
前記ライブラリは、
前記関数呼び出し受け付け手段が、前記第２の関数の呼び出しに用いられたパラメータを前記パラメータ鍵で復号し、
前記戻り値返送手段が、前記第１の関数の戻り値を前記パラメータ鍵で暗号化する、
ことを特徴とする請求項２記載のコンピュータシステム。
【請求項４】
前記ライブラリおよび前記プログラムの双方は、データを暗号化するための同一の共有鍵を予め保有し、
前記プログラムは、前記パラメータ鍵の生成を前記ライブラリに要求し、前記ライブラリから送信されたパラメータ鍵を前記共有鍵で復号するパラメータ鍵取得手段をさらに具備し、
前記ライブラリは、前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を前記共有鍵で暗号化して前記プログラムに送信するパラメータ鍵生成手段をさらに具備することを特徴とする請求項３記載のコンピュータシステム。
【請求項５】
コンピュータシステムに搭載され、前記コンピュータシステム上で動作するプログラムに複数の関数を提供するライブラリにおいて、
第１の関数の呼び出しを改ざんするために設けられる第２の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第１の関数の呼び出しに変換する関数呼び出し受け付け手段と、
前記第１の関数の戻り値を前記第２の関数の戻り値として前記プログラムに返送する戻り値返送手段と、
を具備することを特徴とするライブラリ。
【請求項６】
前記関数呼び出し受け付け手段は、前記第２の関数の呼び出しに用いられたパラメータをパラメータ鍵で復号し、
前記戻り値返送手段は、前記第１の関数の戻り値を前記パラメータ鍵で暗号化する、
ことを特徴とする請求項５記載のライブラリ。
【請求項７】
前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を予め与えられた共有鍵で暗号化して前記プログラムに送信するパラメータ鍵生成手段をさらに具備することを特徴とする請求項６記載のライブラリ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば暗号データの復号処理等、外部への漏洩が許されない機能を機密性を確保しつつ部品化することを実現する関数呼び出し制御技術に関する。
【背景技術】
【０００２】
近年の圧縮符号化技術や画像処理技術の向上に伴い、パーソナルコンピュータ上で動作するソフトウェアを使って、映画や音楽ビデオなどを楽しむといったことが広く行われるようになってきている。また、最近では、テレビジョン放送を受信・再生するＴＶ機能を備えたパーソナルコンピュータも普及し始めており、このＴＶ機能を備えた、バッテリ駆動可能なノートブックタイプのパーソナルコンピュータを携行すれば、外出先や移動中などにおいても、テレビ番組を楽しむことが可能となる。
【０００３】
デジタルＴＶ放送局から放送されるデジタルＴＶ放送番組は、正規のユーザ以外の者が視聴できないように暗号化されており、このデジタルＴＶ放送番組を受信・再生するためのＴＶ機能を搭載する場合には、暗号化されたデジタルＴＶ放送番組データを復号する処理手続きをソフトウェアに組み込むことなどが必要となる。
【０００４】
ある機能を新たにソフトウェアに組み込む場合、その機能を実現するための処理手続きを個々のソフトウェアに保持させるのではなく、複数のソフトウェアから利用できるように部品化することが良く行われる。つまり、ライブラリの一関数として構成するといったことが行われる。
【０００５】
暗号化されたデジタルＴＶ放送番組データを復号する処理手続きをライブラリの一関数として構成すると、原則的には、どのプログラムからも利用可能なものとして提供されることになる。しかしながら、この復号処理をはじめ、その手続きの特性によっては、機密保護その他の理由によって例外的に、正規のプログラムからのみ呼び出せるようにしているものも少なくない。このようなことから、ライブラリの関数を特定のプログラムからのみ呼び出し可能とする手法についての提案が、これまで種々なされている（例えば特許文献１等参照）。
【特許文献１】特開２００２−９９４３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、この特許文献１の手法を含むこれまでの手法では、ある関数について特定のプログラム（正規のプログラム）からしか呼び出せないようには制限できるが、正規のプログラムと関数との間で実行されるパラメータや戻り値の送受信は、通常のプログラムからの関数の呼び出しと同様に行われる。つまり、この関数の存在自体を秘匿することはできないことになる。従って、この正規のプログラムと関数との間の通信を盗聴・解析することにより、この関数の処理手続きが外部に漏洩してしまうおそれもある。よって、この種の機密保護が求められる機能は、結局のところ、部品化できずに個々のソフトウェアに保持させざるを得ないのが現状であった。
【０００７】
この発明は、このような事情を考慮してなされたものであり、外部への漏洩が許されない機能を機密性を確保しつつ部品化することを可能とするコンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリを提供することを目的とする。
【課題を解決するための手段】
【０００８】
前述した目的を達成するために、この発明は、複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムの関数呼び出し方法であって、前記ライブラリおよび前記プログラムの双方で、データを暗号化するための同一の共有鍵を予め保有し、前記プログラムは、前記ライブラリとの間で送受信するパラメータおよび戻り値を暗号化するためのパラメータ鍵の生成を前記ライブラリに要求し、前記ライブラリから送信されたパラメータ鍵を前記共有鍵で復号するステップと、第１の関数を呼び出す際、この呼び出しに用いるパラメータを前記パラメータ鍵で暗号化し、この暗号化後のパラメータを用いて、前記第１の関数の呼び出しを改ざんするために設けられる第２の関数の呼び出しを前記ライブラリに要求するステップと、前記ライブラリから返送された前記第２の関数の戻り値を前記パラメータ鍵で復号し、この復号後の戻り値を前記第１の関数の戻り値とするステップと、を具備し、前記ライブラリは、前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を前記共有鍵で暗号化して前記プログラムに送信するステップと、前記第２の関数の呼び出しが前記プログラムから要求された際、この呼び出しに用いられたパラメータを前記パラメータ鍵で復号し、この復号後のパラメータを用いて前記第１の関数を呼び出すステップと、前記第１の関数からの戻り値を前記パラメータ鍵で暗号化し、前記第２の関数の戻り値として前記プログラムに返送するステップと、を具備することを特徴とする。
【０００９】
また、この発明は、複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムにおいて、前記プログラムは、前記ライブラリが提供する第１の関数を呼び出す際、この第１の関数の呼び出しを第２の関数の呼び出しに改ざんする関数呼び出し手段と、前記ライブラリから返送された前記第２の関数の戻り値を前記第１の関数の戻り値とする戻り値取得手段と、を具備し、前記ライブラリは、前記第２の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第１の関数の呼び出しに変換する関数呼び出し受け付け手段と、前記第１の関数の戻り値を前記第２の関数の戻り値として前記プログラムに返送する戻り値返送手段と、を具備することを特徴とする。
【００１０】
また、この発明は、コンピュータシステムに搭載され、前記コンピュータシステム上で動作するプログラムに複数の関数を提供するライブラリにおいて、第１の関数の呼び出しを改ざんするために設けられる第２の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第１の関数の呼び出しに変換する関数呼び出し受け付け手段と、前記第１の関数の戻り値を前記第２の関数の戻り値として前記プログラムに返送する戻り値返送手段と、を具備することを特徴とする。
【発明の効果】
【００１１】
この発明によれば、外部への漏洩が許されない機能を機密性を確保しつつ部品化することを可能とするコンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照してこの発明の実施形態について説明する。
【００１３】
図１には、この発明の一実施形態に係るコンピュータシステムの概略構成が示されている。本実施形態のコンピュータシステムは、例えばノートブックタイプやデスクトップタイプ等の一般ユーザ向けのパーソナルコンピュータであり、図１に示すように、ＣＰＵ１０１、ＲＡＭ１０２、磁気ディスク駆動装置（ＨＤＤ）１０３、表示コントローラ１０４およびキーボードコントローラ１０５を有している。
【００１４】
ＣＰＵ１０１は、このコンピュータシステム全体の制御を司り、ＨＤＤ１０３からＲＡＭ１０２にロードされたオペレーティングシステム、ユーティリティプログラム、アプリケーションプログラム等の各種プログラムを実行する。
【００１５】
ＲＡＭ１０２は、このコンピュータシステムの主記憶となるメモリデバイスであり、ＣＰＵ１０１の作業領域として各種プログラムや各種データを格納する。一方、ＨＤＤ１０３は、このコンピュータシステムの外部記憶となるメモリデバイスであり、ＲＡＭ１０２の補助装置として各種プログラムや各種データを大量に格納する。
【００１６】
また、表示コントローラ１０４は、このコンピュータシステムが提供するユーザインタフェースのアウトプット側を担うデバイスであり、ＣＰＵ１０１により実行されるプログラムが作成する各種画面をディスプレイに表示制御する。一方、キーボードコントローラ１０５は、このコンピュータシステムが提供するユーザインタフェースのインプット側を担うデバイスであり、キーボードの操作内容をデータ化してＣＰＵ１０１により実行されるプログラムに供給する。
【００１７】
このようなハードウェア構成をもつ本コンピュータシステムは、複数の関数を提供するライブラリを搭載しており、このライブラリの関数を、種々のアプリケーションプログラムが利用する。ライブラリの関数は、部品化されたサブモジュールとも言えるので、原則的には、いずれのプログラムからも呼び出し可能である。しかしながら、部品化は行いたいものの、特定のプログラムからしか呼び出せないように制限するだけでなく、特定のプロラム以外にはその存在自体を秘匿したいという関数も例外的に存在する。そこで、本コンピュータシステムは、図２に示すように、正規アプリケーションプログラム１と動的ライブラリ２との間で実行される、例えば関数Ｚについてのパラメータおよび戻り値の送受信を不正アプリケーションプログラム９から盗聴できないようにするための仕組みを備えたものであり、以下、この点について詳述する。
【００１８】
図３は、本コンピュータシステム上で動作するアプリケーションプログラム１と、このアプリケーションプログラム１に関数Ｚを提供する動的ライブラリ２の機能ブロックを示す図である。ここでは、この関数Ｚが、例えば暗号化されたデジタルＴＶ放送番組データを復号する処理手続き等、外部への漏洩が許されない機能を部品化したものであり、パラメータＡ，Ｂの２つのパラメータを持っているものと想定する。
【００１９】
図３に示すように、アプリケーションプログラム１は、アプリケーションプログラム本体部１１と、関数パラメータ暗号化復号処理部１２とからなり、関数パラメータ暗号化復号処理部１２は、パラメータ鍵処理部１２１と、関数Ｚ２２１の呼び出しを改ざんするための関数Ｚ１２２とを有している。一方、動的ライブラリ２は、関数パラメータ暗号化復号処理部２１と、ライブラリ関数処理部２２とからなり、関数パラメータ暗号化復号処理部２１は、パラメータ鍵処理部２１１と、改ざん後の呼び出しで呼び出され、関数Ｚ２２１の呼び出しを仲介するための関数Ｚｘ２１２とを有している。
【００２０】
また、アプリケーションプログラム１の関数パラメータ暗号化復号処理部１２と、動的ライブラリ２の関数パラメータ暗号化復号処理部２１とは、同じ値の共有鍵をそれぞれが予め保有している。そして、関数パラメータ暗号化復号処理部１２および関数パラメータ暗号化復号処理部２１は、アプリケーションプログラム本体部１１からの関数Ｚ２２１の呼び出しを（関数Ｚｘの呼び出しに）改ざんする形式でアプリケーションプログラム１および動的ライブラリ２にそれぞれ実装される。即ち、アプリケーションプログラム本体部１１および関数Ｚ２２１は、この改ざんをまったく意識することがない。
【００２１】
アプリケーションプログラム本体部１１は、関数Ｚの呼び出し（ａ２）に先立ち、パラメータ鍵処理部１２１の呼び出し（ａ１）を実行する。関数パラメータ暗号化復号処理部１２のパラメータ鍵処理部１２１は、この呼び出しを受けると、動的ライブラリ２側のパラメータ鍵処理部２１１に対してパラメータ鍵の生成を依頼する。一方、この依頼を受けたパラメータ鍵処理部２１１は、任意に生成したパラメータ鍵を共有鍵で暗号化してアプリケーションプログラム１側のパラメータ鍵処理部１２１に返送すると共に、この生成したパラメータ鍵を関数Ｚｘ２１２に引き渡す。パラメータ鍵処理部１２１は、動的ライブラリ２側のパラメータ鍵処理部２１１から返送されたパラメータ鍵を共有鍵で復号し、関数Ｚ１２２に引き渡す。
【００２２】
このパラメータ鍵処理部１２１の呼び出し（ａ１）の完了後、アプリケーションプログラム本体部１１において関数Ｚの呼び出し（ａ２）が実行されると、実際には、関数パラメータ暗号化復号処理部１２の関数Ｚ１２２が呼び出される。この時、本来であれば動的ライブラリ２に送信されるべきパラメータＡ，Ｂが、この関数パラメータ暗号化復号処理部１２の関数Ｚ１２２に引き渡される。
【００２３】
関数Ｚ１２２は、呼び出しを受けると、前述のパラメータ鍵処理部１２１から渡されたパラメータ鍵を使って、この呼び出し時に渡されたパラメータＡ，Ｂを暗号化する。そして、この暗号化したパラメータ（パラメータＡｘ，Ｂｘ）を使って、関数Ｚ１２２は、動的ライブラリ２の関数Ｚｘ２１２を呼び出す。従って、アプリケーションプログラム１と動的ライブラリ２との間で、関数Ｚ２２１の呼び出しおよびパラメータの送受信が直接的に行われることはない。
【００２４】
関数Ｚｘ２１２は、呼び出しを受けると、前述のパラメータ鍵処理部２１１から渡されたパラメータ鍵を使って、この呼び出し時に渡されたパラメータＡｘ，Ｂｘを復号し、本来の値であるパラメータＡ，Ｂを取得する。そして、この取得したパラメータＡ，Ｂを使って、関数Ｚｘ２１２は、同じ動的ライブラリ２内の関数Ｚ２２１を呼び出す。このように、本コンピュータシステムは、その存在自体を秘匿しながら関数Ｚ２２１を呼び出すことが可能となるので、外部への漏洩が許されない機能を関数Ｚ２２１として部品化することを実現する。
【００２５】
また、関数Ｚ２２１の処理結果、つまり戻り値は、呼び出し元である関数Ｚｘ２１２に返却されることになるが、関数Ｚｘ２１２は、パラメータ鍵処理部２１１から渡されたパラメータ鍵を使って、この受け取った戻り値を暗号化する。そして、自身の呼び出し元である関数Ｚ１２２に返却する。すると、関数Ｚ１２２は、パラメータ鍵処理部１２１から渡されたパラメータ鍵を使って、この返却された戻り値を復号し、さらに自身の呼び出し元であるアプリケーションモジュール本体部１１に返却する。
【００２６】
図４は、本コンピュータシステム上で動作するアプリケーションプログラム１と、このアプリケーションプログラム１に関数Ｚを提供する動的ライブラリ２との間の動作手順を示すタイミングチャートである。
【００２７】
アプリケーションプログラム本体部１１は、まず始めに、関数パラメータ暗号化復号処理部１２のパラメータ鍵処理部１２１を呼び出す鍵要求処理を行う（Ｓ１）。すると、関数パラメータ暗号化復号処理部１２は、動的ライブラリ２側の関数パラメータ暗号化復号処理部２１のパラメータ鍵処理部２１１を呼び出す（Ｓ２）。この呼び出しを受けて、関数パラメータ暗号化復号処理部２１は、パラメータ鍵を生成し（Ｓ３）、この生成したパラメータ鍵を共有鍵で暗号化して返送する（Ｓ４）。一方、関数パラメータ暗号化復号処理部１２は、この返送されてきたパラメータ鍵を取得すると（Ｓ５）、このパラメータ鍵は暗号化されているものとして共有鍵で復号する（Ｓ６）。
【００２８】
その後、アプリケーションプログラム本体部１１が動的ライブラリ２の関数Ｚ２２１を呼び出そうとすると（Ｓ７）、関数パラメータ暗号化復号処理部１２の関数Ｚ１２２が呼び出され、この関数Ｚ１２２にパラメータＡ，Ｂが引き渡される。そこで、関数Ｚ１２２は、先に動的ライブラリ２の関数パラメータ暗号化復号処理部２１に生成させたパラメータ鍵を使ってパラメータＡ，Ｂを暗号化し（Ｓ８）、この暗号化後のパラメータＡｘ，Ｂｘを使って動的ライブラリ２の関数Ｚｘを呼び出す（Ｓ９）。
【００２９】
一方、関数Ｚｘ２１２の呼び出しを受けた動的ライブラリ２の関数パラメータ暗号化復号処理部２１は、このパラメータＡｘ，Ｂｘをパラメータ鍵で復号し（Ｓ１０）、この復号により本来の値に戻ったパラメータＡ，Ｂを使って関数Ｚの呼び出す（Ｓ１１）。ライブラリ関数処理部２２は、このパラメータＡ，Ｂを使って関数Ｚ２２１の処理を行い（Ｓ１２）、その完了時、戻り値を関数Ｚｘ２１２に返却する（Ｓ１３）。
【００３０】
関数Ｚ２２１からの戻り値を受けた関数Ｚｘ２１２は、この戻り値をパラメータ鍵で今度は暗号化し、呼び出し元のアプリケーションプログラム１の関数パラメータ暗号化復号処理部１２に返却する（Ｓ１４）。一方、関数パラメータ暗号化復号処理部１２は、この戻り値をパラメータ鍵で復号してアプリケーションプログラム本体部１１に返却する（Ｓ１５）。アプリケーションプログラム本体部１１は、この戻り値を受け取って関数Ｚ２２１に関する処理を終了し、後続の処理に移行する（Ｓ１６）。
【００３１】
このように、本コンピュータシステムでは、例えば暗号化されたデジタルＴＶ放送番組データを復号する処理手続き等の外部への漏洩が許されない機能を、その機密性を確保しつつ部品化することを可能とするので、従来のように当該機能を個々のソフトウェアに保持させる場合と比較して、実行コードの削減や開発効率の向上を図ることができる。
【００３２】
また、開発パラメータ暗号化復号処理部１２および開発パラメータ暗号化復号処理部２１は、プログラムへの組み込み型として汎用性を持たせたインタフェースを用意することにより、再利用等が可能となる。
【００３３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施形態に係るコンピュータシステムの概略構成を示す図
【図２】同実施形態のコンピュータシステムが提供する関数呼び出しに関する仕組みを説明するための図
【図３】同実施形態のコンピュータシステム上で動作するアプリケーションプログラムと、このアプリケーションプログラムに関数を提供する動的ライブラリの機能ブロックを示す図
【図４】同実施形態のコンピュータシステム上で動作するアプリケーションプログラムと、このアプリケーションプログラムに関数を提供する動的ライブラリとの間の動作手順を示すタイミングチャート
【符号の説明】
【００３５】
１…正規アプリケーションプログラム、２…動的ライブラリ、９…不正アプリケーションプログラム、１１…アプリケーションプログラム本体部１１、１２…関数パラメータ暗号化復号処理部、２１…関数パラメータ暗号化復号処理部、２２…ライブラリ関数処理部、１２１…パラメータ鍵処理部、１２２…（呼び出し改ざん用）関数Ｚ、２１１…パラメータ鍵処理部、２１２…関数Ｚｘ、２２１…関数Ｚ。
【図１】
2007164595.tif 000003
【図２】
2007164595.tif 000004
【図３】
2007164595.tif 000005
【図４】
2007164595.tif 000006