説明

コンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリ

【課題】外部への漏洩が許されない機能を機密性を確保しつつ部品化することを可能とするコンピュータシステムの関数呼び出し方法を提供する。
【解決手段】動的ライブラリ2が提供する関数Z221のアプリケーションプログラム1による呼び出しを隠すため、関数パラメータ暗号化復号処理部12は、アプリケーションプログラム本体部11による関数Z221の呼び出しを関数Zxの呼び出しに改ざんするとともに、そのパラメータを暗号化する。一方、動的ライブラリ2側の関数パラメータ暗号化復号処理部21は、この関数Zxの呼び出しを関数Zの呼び出しに戻すとともに、暗号化されたパラメータを復号して関数Zに引き渡す。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えば暗号データの復号処理等、外部への漏洩が許されない機能を機密性を確保しつつ部品化することを実現する関数呼び出し制御技術に関する。
【背景技術】
【0002】
近年の圧縮符号化技術や画像処理技術の向上に伴い、パーソナルコンピュータ上で動作するソフトウェアを使って、映画や音楽ビデオなどを楽しむといったことが広く行われるようになってきている。また、最近では、テレビジョン放送を受信・再生するTV機能を備えたパーソナルコンピュータも普及し始めており、このTV機能を備えた、バッテリ駆動可能なノートブックタイプのパーソナルコンピュータを携行すれば、外出先や移動中などにおいても、テレビ番組を楽しむことが可能となる。
【0003】
デジタルTV放送局から放送されるデジタルTV放送番組は、正規のユーザ以外の者が視聴できないように暗号化されており、このデジタルTV放送番組を受信・再生するためのTV機能を搭載する場合には、暗号化されたデジタルTV放送番組データを復号する処理手続きをソフトウェアに組み込むことなどが必要となる。
【0004】
ある機能を新たにソフトウェアに組み込む場合、その機能を実現するための処理手続きを個々のソフトウェアに保持させるのではなく、複数のソフトウェアから利用できるように部品化することが良く行われる。つまり、ライブラリの一関数として構成するといったことが行われる。
【0005】
暗号化されたデジタルTV放送番組データを復号する処理手続きをライブラリの一関数として構成すると、原則的には、どのプログラムからも利用可能なものとして提供されることになる。しかしながら、この復号処理をはじめ、その手続きの特性によっては、機密保護その他の理由によって例外的に、正規のプログラムからのみ呼び出せるようにしているものも少なくない。このようなことから、ライブラリの関数を特定のプログラムからのみ呼び出し可能とする手法についての提案が、これまで種々なされている(例えば特許文献1等参照)。
【特許文献1】特開2002−99439号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところで、この特許文献1の手法を含むこれまでの手法では、ある関数について特定のプログラム(正規のプログラム)からしか呼び出せないようには制限できるが、正規のプログラムと関数との間で実行されるパラメータや戻り値の送受信は、通常のプログラムからの関数の呼び出しと同様に行われる。つまり、この関数の存在自体を秘匿することはできないことになる。従って、この正規のプログラムと関数との間の通信を盗聴・解析することにより、この関数の処理手続きが外部に漏洩してしまうおそれもある。よって、この種の機密保護が求められる機能は、結局のところ、部品化できずに個々のソフトウェアに保持させざるを得ないのが現状であった。
【0007】
この発明は、このような事情を考慮してなされたものであり、外部への漏洩が許されない機能を機密性を確保しつつ部品化することを可能とするコンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリを提供することを目的とする。
【課題を解決するための手段】
【0008】
前述した目的を達成するために、この発明は、複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムの関数呼び出し方法であって、前記ライブラリおよび前記プログラムの双方で、データを暗号化するための同一の共有鍵を予め保有し、前記プログラムは、前記ライブラリとの間で送受信するパラメータおよび戻り値を暗号化するためのパラメータ鍵の生成を前記ライブラリに要求し、前記ライブラリから送信されたパラメータ鍵を前記共有鍵で復号するステップと、第1の関数を呼び出す際、この呼び出しに用いるパラメータを前記パラメータ鍵で暗号化し、この暗号化後のパラメータを用いて、前記第1の関数の呼び出しを改ざんするために設けられる第2の関数の呼び出しを前記ライブラリに要求するステップと、前記ライブラリから返送された前記第2の関数の戻り値を前記パラメータ鍵で復号し、この復号後の戻り値を前記第1の関数の戻り値とするステップと、を具備し、前記ライブラリは、前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を前記共有鍵で暗号化して前記プログラムに送信するステップと、前記第2の関数の呼び出しが前記プログラムから要求された際、この呼び出しに用いられたパラメータを前記パラメータ鍵で復号し、この復号後のパラメータを用いて前記第1の関数を呼び出すステップと、前記第1の関数からの戻り値を前記パラメータ鍵で暗号化し、前記第2の関数の戻り値として前記プログラムに返送するステップと、を具備することを特徴とする。
【0009】
また、この発明は、複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムにおいて、前記プログラムは、前記ライブラリが提供する第1の関数を呼び出す際、この第1の関数の呼び出しを第2の関数の呼び出しに改ざんする関数呼び出し手段と、前記ライブラリから返送された前記第2の関数の戻り値を前記第1の関数の戻り値とする戻り値取得手段と、を具備し、前記ライブラリは、前記第2の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第1の関数の呼び出しに変換する関数呼び出し受け付け手段と、前記第1の関数の戻り値を前記第2の関数の戻り値として前記プログラムに返送する戻り値返送手段と、を具備することを特徴とする。
【0010】
また、この発明は、コンピュータシステムに搭載され、前記コンピュータシステム上で動作するプログラムに複数の関数を提供するライブラリにおいて、第1の関数の呼び出しを改ざんするために設けられる第2の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第1の関数の呼び出しに変換する関数呼び出し受け付け手段と、前記第1の関数の戻り値を前記第2の関数の戻り値として前記プログラムに返送する戻り値返送手段と、を具備することを特徴とする。
【発明の効果】
【0011】
この発明によれば、外部への漏洩が許されない機能を機密性を確保しつつ部品化することを可能とするコンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリを提供することができる。
【発明を実施するための最良の形態】
【0012】
以下、図面を参照してこの発明の実施形態について説明する。
【0013】
図1には、この発明の一実施形態に係るコンピュータシステムの概略構成が示されている。本実施形態のコンピュータシステムは、例えばノートブックタイプやデスクトップタイプ等の一般ユーザ向けのパーソナルコンピュータであり、図1に示すように、CPU101、RAM102、磁気ディスク駆動装置(HDD)103、表示コントローラ104およびキーボードコントローラ105を有している。
【0014】
CPU101は、このコンピュータシステム全体の制御を司り、HDD103からRAM102にロードされたオペレーティングシステム、ユーティリティプログラム、アプリケーションプログラム等の各種プログラムを実行する。
【0015】
RAM102は、このコンピュータシステムの主記憶となるメモリデバイスであり、CPU101の作業領域として各種プログラムや各種データを格納する。一方、HDD103は、このコンピュータシステムの外部記憶となるメモリデバイスであり、RAM102の補助装置として各種プログラムや各種データを大量に格納する。
【0016】
また、表示コントローラ104は、このコンピュータシステムが提供するユーザインタフェースのアウトプット側を担うデバイスであり、CPU101により実行されるプログラムが作成する各種画面をディスプレイに表示制御する。一方、キーボードコントローラ105は、このコンピュータシステムが提供するユーザインタフェースのインプット側を担うデバイスであり、キーボードの操作内容をデータ化してCPU101により実行されるプログラムに供給する。
【0017】
このようなハードウェア構成をもつ本コンピュータシステムは、複数の関数を提供するライブラリを搭載しており、このライブラリの関数を、種々のアプリケーションプログラムが利用する。ライブラリの関数は、部品化されたサブモジュールとも言えるので、原則的には、いずれのプログラムからも呼び出し可能である。しかしながら、部品化は行いたいものの、特定のプログラムからしか呼び出せないように制限するだけでなく、特定のプロラム以外にはその存在自体を秘匿したいという関数も例外的に存在する。そこで、本コンピュータシステムは、図2に示すように、正規アプリケーションプログラム1と動的ライブラリ2との間で実行される、例えば関数Zについてのパラメータおよび戻り値の送受信を不正アプリケーションプログラム9から盗聴できないようにするための仕組みを備えたものであり、以下、この点について詳述する。
【0018】
図3は、本コンピュータシステム上で動作するアプリケーションプログラム1と、このアプリケーションプログラム1に関数Zを提供する動的ライブラリ2の機能ブロックを示す図である。ここでは、この関数Zが、例えば暗号化されたデジタルTV放送番組データを復号する処理手続き等、外部への漏洩が許されない機能を部品化したものであり、パラメータA,Bの2つのパラメータを持っているものと想定する。
【0019】
図3に示すように、アプリケーションプログラム1は、アプリケーションプログラム本体部11と、関数パラメータ暗号化復号処理部12とからなり、関数パラメータ暗号化復号処理部12は、パラメータ鍵処理部121と、関数Z221の呼び出しを改ざんするための関数Z122とを有している。一方、動的ライブラリ2は、関数パラメータ暗号化復号処理部21と、ライブラリ関数処理部22とからなり、関数パラメータ暗号化復号処理部21は、パラメータ鍵処理部211と、改ざん後の呼び出しで呼び出され、関数Z221の呼び出しを仲介するための関数Zx212とを有している。
【0020】
また、アプリケーションプログラム1の関数パラメータ暗号化復号処理部12と、動的ライブラリ2の関数パラメータ暗号化復号処理部21とは、同じ値の共有鍵をそれぞれが予め保有している。そして、関数パラメータ暗号化復号処理部12および関数パラメータ暗号化復号処理部21は、アプリケーションプログラム本体部11からの関数Z221の呼び出しを(関数Zxの呼び出しに)改ざんする形式でアプリケーションプログラム1および動的ライブラリ2にそれぞれ実装される。即ち、アプリケーションプログラム本体部11および関数Z221は、この改ざんをまったく意識することがない。
【0021】
アプリケーションプログラム本体部11は、関数Zの呼び出し(a2)に先立ち、パラメータ鍵処理部121の呼び出し(a1)を実行する。関数パラメータ暗号化復号処理部12のパラメータ鍵処理部121は、この呼び出しを受けると、動的ライブラリ2側のパラメータ鍵処理部211に対してパラメータ鍵の生成を依頼する。一方、この依頼を受けたパラメータ鍵処理部211は、任意に生成したパラメータ鍵を共有鍵で暗号化してアプリケーションプログラム1側のパラメータ鍵処理部121に返送すると共に、この生成したパラメータ鍵を関数Zx212に引き渡す。パラメータ鍵処理部121は、動的ライブラリ2側のパラメータ鍵処理部211から返送されたパラメータ鍵を共有鍵で復号し、関数Z122に引き渡す。
【0022】
このパラメータ鍵処理部121の呼び出し(a1)の完了後、アプリケーションプログラム本体部11において関数Zの呼び出し(a2)が実行されると、実際には、関数パラメータ暗号化復号処理部12の関数Z122が呼び出される。この時、本来であれば動的ライブラリ2に送信されるべきパラメータA,Bが、この関数パラメータ暗号化復号処理部12の関数Z122に引き渡される。
【0023】
関数Z122は、呼び出しを受けると、前述のパラメータ鍵処理部121から渡されたパラメータ鍵を使って、この呼び出し時に渡されたパラメータA,Bを暗号化する。そして、この暗号化したパラメータ(パラメータAx,Bx)を使って、関数Z122は、動的ライブラリ2の関数Zx212を呼び出す。従って、アプリケーションプログラム1と動的ライブラリ2との間で、関数Z221の呼び出しおよびパラメータの送受信が直接的に行われることはない。
【0024】
関数Zx212は、呼び出しを受けると、前述のパラメータ鍵処理部211から渡されたパラメータ鍵を使って、この呼び出し時に渡されたパラメータAx,Bxを復号し、本来の値であるパラメータA,Bを取得する。そして、この取得したパラメータA,Bを使って、関数Zx212は、同じ動的ライブラリ2内の関数Z221を呼び出す。このように、本コンピュータシステムは、その存在自体を秘匿しながら関数Z221を呼び出すことが可能となるので、外部への漏洩が許されない機能を関数Z221として部品化することを実現する。
【0025】
また、関数Z221の処理結果、つまり戻り値は、呼び出し元である関数Zx212に返却されることになるが、関数Zx212は、パラメータ鍵処理部211から渡されたパラメータ鍵を使って、この受け取った戻り値を暗号化する。そして、自身の呼び出し元である関数Z122に返却する。すると、関数Z122は、パラメータ鍵処理部121から渡されたパラメータ鍵を使って、この返却された戻り値を復号し、さらに自身の呼び出し元であるアプリケーションモジュール本体部11に返却する。
【0026】
図4は、本コンピュータシステム上で動作するアプリケーションプログラム1と、このアプリケーションプログラム1に関数Zを提供する動的ライブラリ2との間の動作手順を示すタイミングチャートである。
【0027】
アプリケーションプログラム本体部11は、まず始めに、関数パラメータ暗号化復号処理部12のパラメータ鍵処理部121を呼び出す鍵要求処理を行う(S1)。すると、関数パラメータ暗号化復号処理部12は、動的ライブラリ2側の関数パラメータ暗号化復号処理部21のパラメータ鍵処理部211を呼び出す(S2)。この呼び出しを受けて、関数パラメータ暗号化復号処理部21は、パラメータ鍵を生成し(S3)、この生成したパラメータ鍵を共有鍵で暗号化して返送する(S4)。一方、関数パラメータ暗号化復号処理部12は、この返送されてきたパラメータ鍵を取得すると(S5)、このパラメータ鍵は暗号化されているものとして共有鍵で復号する(S6)。
【0028】
その後、アプリケーションプログラム本体部11が動的ライブラリ2の関数Z221を呼び出そうとすると(S7)、関数パラメータ暗号化復号処理部12の関数Z122が呼び出され、この関数Z122にパラメータA,Bが引き渡される。そこで、関数Z122は、先に動的ライブラリ2の関数パラメータ暗号化復号処理部21に生成させたパラメータ鍵を使ってパラメータA,Bを暗号化し(S8)、この暗号化後のパラメータAx,Bxを使って動的ライブラリ2の関数Zxを呼び出す(S9)。
【0029】
一方、関数Zx212の呼び出しを受けた動的ライブラリ2の関数パラメータ暗号化復号処理部21は、このパラメータAx,Bxをパラメータ鍵で復号し(S10)、この復号により本来の値に戻ったパラメータA,Bを使って関数Zの呼び出す(S11)。ライブラリ関数処理部22は、このパラメータA,Bを使って関数Z221の処理を行い(S12)、その完了時、戻り値を関数Zx212に返却する(S13)。
【0030】
関数Z221からの戻り値を受けた関数Zx212は、この戻り値をパラメータ鍵で今度は暗号化し、呼び出し元のアプリケーションプログラム1の関数パラメータ暗号化復号処理部12に返却する(S14)。一方、関数パラメータ暗号化復号処理部12は、この戻り値をパラメータ鍵で復号してアプリケーションプログラム本体部11に返却する(S15)。アプリケーションプログラム本体部11は、この戻り値を受け取って関数Z221に関する処理を終了し、後続の処理に移行する(S16)。
【0031】
このように、本コンピュータシステムでは、例えば暗号化されたデジタルTV放送番組データを復号する処理手続き等の外部への漏洩が許されない機能を、その機密性を確保しつつ部品化することを可能とするので、従来のように当該機能を個々のソフトウェアに保持させる場合と比較して、実行コードの削減や開発効率の向上を図ることができる。
【0032】
また、開発パラメータ暗号化復号処理部12および開発パラメータ暗号化復号処理部21は、プログラムへの組み込み型として汎用性を持たせたインタフェースを用意することにより、再利用等が可能となる。
【0033】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【0034】
【図1】本発明の一実施形態に係るコンピュータシステムの概略構成を示す図
【図2】同実施形態のコンピュータシステムが提供する関数呼び出しに関する仕組みを説明するための図
【図3】同実施形態のコンピュータシステム上で動作するアプリケーションプログラムと、このアプリケーションプログラムに関数を提供する動的ライブラリの機能ブロックを示す図
【図4】同実施形態のコンピュータシステム上で動作するアプリケーションプログラムと、このアプリケーションプログラムに関数を提供する動的ライブラリとの間の動作手順を示すタイミングチャート
【符号の説明】
【0035】
1…正規アプリケーションプログラム、2…動的ライブラリ、9…不正アプリケーションプログラム、11…アプリケーションプログラム本体部11、12…関数パラメータ暗号化復号処理部、21…関数パラメータ暗号化復号処理部、22…ライブラリ関数処理部、121…パラメータ鍵処理部、122…(呼び出し改ざん用)関数Z、211…パラメータ鍵処理部、212…関数Zx、221…関数Z。

【特許請求の範囲】
【請求項1】
複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムの関数呼び出し方法であって、
前記ライブラリおよび前記プログラムの双方で、データを暗号化するための同一の共有鍵を予め保有し、
前記プログラムは、
前記ライブラリとの間で送受信するパラメータおよび戻り値を暗号化するためのパラメータ鍵の生成を前記ライブラリに要求し、前記ライブラリから送信されたパラメータ鍵を前記共有鍵で復号するステップと、
第1の関数を呼び出す際、この呼び出しに用いるパラメータを前記パラメータ鍵で暗号化し、この暗号化後のパラメータを用いて、前記第1の関数の呼び出しを改ざんするために設けられる第2の関数の呼び出しを前記ライブラリに要求するステップと、
前記ライブラリから返送された前記第2の関数の戻り値を前記パラメータ鍵で復号し、この復号後の戻り値を前記第1の関数の戻り値とするステップと、
を具備し、
前記ライブラリは、
前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を前記共有鍵で暗号化して前記プログラムに送信するステップと、
前記第2の関数の呼び出しが前記プログラムから要求された際、この呼び出しに用いられたパラメータを前記パラメータ鍵で復号し、この復号後のパラメータを用いて前記第1の関数を呼び出すステップと、
前記第1の関数からの戻り値を前記パラメータ鍵で暗号化し、前記第2の関数の戻り値として前記プログラムに返送するステップと、
を具備することを特徴とするコンピュータシステムの関数呼び出し方法。
【請求項2】
複数の関数を提供するライブラリと、前記関数を呼び出すプログラムとの間で、パラメータおよび戻り値が送受信されるコンピュータシステムにおいて、
前記プログラムは、
前記ライブラリが提供する第1の関数を呼び出す際、この第1の関数の呼び出しを第2の関数の呼び出しに改ざんする関数呼び出し手段と、
前記ライブラリから返送された前記第2の関数の戻り値を前記第1の関数の戻り値とする戻り値取得手段と、
を具備し、
前記ライブラリは、
前記第2の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第1の関数の呼び出しに変換する関数呼び出し受け付け手段と、
前記第1の関数の戻り値を前記第2の関数の戻り値として前記プログラムに返送する戻り値返送手段と、
を具備することを特徴とするコンピュータシステム。
【請求項3】
前記プログラムは、
前記関数呼び出し手段が、前記第1の関数の呼び出しに用いるパラメータをパラメータ鍵で暗号化し、この暗号化後のパラメータを用いて前記第2の関数を呼び出し、
前記戻り値取得手段が、前記ライブラリから返送された前記第2の関数の戻り値を前記パラメータ鍵で復号し、
前記ライブラリは、
前記関数呼び出し受け付け手段が、前記第2の関数の呼び出しに用いられたパラメータを前記パラメータ鍵で復号し、
前記戻り値返送手段が、前記第1の関数の戻り値を前記パラメータ鍵で暗号化する、
ことを特徴とする請求項2記載のコンピュータシステム。
【請求項4】
前記ライブラリおよび前記プログラムの双方は、データを暗号化するための同一の共有鍵を予め保有し、
前記プログラムは、前記パラメータ鍵の生成を前記ライブラリに要求し、前記ライブラリから送信されたパラメータ鍵を前記共有鍵で復号するパラメータ鍵取得手段をさらに具備し、
前記ライブラリは、前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を前記共有鍵で暗号化して前記プログラムに送信するパラメータ鍵生成手段をさらに具備することを特徴とする請求項3記載のコンピュータシステム。
【請求項5】
コンピュータシステムに搭載され、前記コンピュータシステム上で動作するプログラムに複数の関数を提供するライブラリにおいて、
第1の関数の呼び出しを改ざんするために設けられる第2の関数の呼び出しが前記プログラムから要求された際、この呼び出しを前記第1の関数の呼び出しに変換する関数呼び出し受け付け手段と、
前記第1の関数の戻り値を前記第2の関数の戻り値として前記プログラムに返送する戻り値返送手段と、
を具備することを特徴とするライブラリ。
【請求項6】
前記関数呼び出し受け付け手段は、前記第2の関数の呼び出しに用いられたパラメータをパラメータ鍵で復号し、
前記戻り値返送手段は、前記第1の関数の戻り値を前記パラメータ鍵で暗号化する、
ことを特徴とする請求項5記載のライブラリ。
【請求項7】
前記プログラムからの要求に応じて、前記パラメータ鍵を生成し、この生成したパラメータ鍵を予め与えられた共有鍵で暗号化して前記プログラムに送信するパラメータ鍵生成手段をさらに具備することを特徴とする請求項6記載のライブラリ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate