説明

プログラムコードの生成方法、プログラム開発システム、携帯用データキャリア、及びプログラム

【課題】携帯用データキャリア(12)のプログラムコード(24、30)をロードフォーマットで生成でき、かつ携帯用データキャリア(12)に実行可能プログラムコード(40)を提供できる、安全でプライバシーを保護する技術を提供する。
【解決手段】携帯用データキャリア(12)のためのプログラムコード(24、30)をロードフォーマットで生成する方法において、データキャリア(12)に配置されるライブラリ(38)の内部の仕組みの少なくともいくらかが擬似ライブラリにない、隠されている、またはマスクされるという点で、データキャリア(12)に配置されるライブラリ(38)と異なる擬似ライブラリ(20)が使用される。携帯用データキャリア(12)に実行可能プログラムコード(40)を提供する方法において、ロードフォーマットのプログラムコード(24、30)が、データキャリア(12)に配置されるライブラリ(38)にリンクされる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に携帯用データキャリアおよびこのようなデータキャリアのソフトウェア作成の分野に関する。特に、本発明は、携帯用データキャリアのプログラムコードの生成、プログラムコードのデータキャリアへのロード、およびデータキャリアのプロセッサによる実行のためのプログラムコードの提供の分野に関する。本明細書では、携帯用データキャリアはチップカード(スマートカード)またはコンパクトチップモジュールの形態をとることができ、本発明のいくつかの実施形態では、他の種類の構造のリソースの限られたシステムの形態をとることもできる。
【背景技術】
【0002】
近年、携帯用データキャリアは、絶え間ない技術進歩の中でますます強力になった。これは、ハードウェアおよび記憶域によって提供される計算能力ならびにオペレーティングシステムによって提供される機能の両方に対して言える。近代の携帯用データキャリアでは、プログラムコードの事後ロード(post−load)、すなわちデータキャリアの動作中でのプログラムコードのロードを可能にする機能もみられる。アプリケーションプログラムを事後ロードできるデータキャリアは以前からすでに知られていたが、現在は、オペレーティングシステムの部分、たとえばドライバ、ライブラリ、または機能モジュールを事後ロードできるデータキャリアも開発中である。この事後ロードオプションが、将来、携帯用データキャリアの柔軟なオペレーティングシステムの重要部になるものと予想される。
【0003】
一般に、携帯用データキャリアに関連する重要な要素は、セキュリティおよびスパイ保護の側面である。これは、携帯用データキャリアが、多くの場合、セキュリティが極めて重要なアプリケーションに使用され、不正使用またはスパイにより多大な損害が発生する恐れがあるためである。プログラムコードを事後ロードできるデータキャリアに固有の問題は、データキャリアの内部の仕組みを可能な限り露出してはいけないことである。特に、事後ロードされるプログラムコードの外部開発者が、データキャリアの内部構造および内部プログラム構造についての情報を取得できないことを保証しなければならない。したがって、たとえば、データキャリアのプラットフォームに依存する関数は、事後ロードされるプログラムコードが最終的にこういった関数を利用する場合であっても、可能な限り隠されていなければならない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、上記問題を完全に、または部分的に解消することである。特に、本発明は、プログラムコードを携帯用データキャリアのロードフォーマットで生成でき、かつ携帯用データキャリアに実行可能プログラムコードを提供できる、安全でプライバシーを保護する技術を提供することを意図する。
【課題を解決するための手段】
【0005】
本発明によれば、この目的は、請求項1または4に記載の特徴を有する方法、請求項16の特徴を有する装置、および請求項17または18の特徴を有するコンピュータプログラム製品によって完全に、または部分的に達成される。従属請求項は本発明の好ましい実施形態を規定する。
【0006】
本発明の基底を成す本発明の基本原理は、擬似ライブラリのみをデータキャリア外に設けることであり、この擬似ライブラリは、データキャリアに配置されるライブラリの内部の仕組みの少なくともいくらかが擬似ライブラリにない、隠される、またはマスクされるという点でデータキャリアに配置されるライブラリと異なる。外部プログラム開発者がアクセスできるようにする必要があるのは、擬似ライブラリ、およびオプションとして関連するドキュメンテーションのみである。このようにして、第3者がデータキャリアの内部の仕組みについて望ましくない結論を導き出す恐れのある情報の機密性が保たれる。このようにして、本発明は、第三者、たとえば、独立したソフトウェアハウスまたはデータキャリアの業界ユーザであっても、事後ロード可能なプログラムコードを安全に開発できるようにする。
【0007】
オブジェクトコードフォーマットのプログラムコードは、少なくとも部分的に擬似ライブラリにリンクされる。これは、特に、本発明のいくつかの実施形態では、ロードフォーマットのプログラムコードが依然として、従来のオブジェクトコードフォーマットで含まれていたタイプのシンボル情報を含むことができることを意味する。他の実施形態では、これとは対照的に、擬似ライブラリに完全にリンクされたプログラムコードがロードフォーマットで生成される。
【0008】
さらなるリンキングプロセスがデータキャリアに対して行われ、これは、好ましい実施形態では、ダイナミックリンキングプロセスの形態をとる。このリンキングプロセスは、別の実施形態では、ロード時、実行時、またはロード時に一部、実行時に一部、行うことができる。データキャリアで行われるリンキングプロセスは、データキャリアに配置されるプライベートライブラリに対して行われる。
【0009】
好ましい実施形態では、データキャリア外で行われるリンキングは、擬似ライブラリの仮想関数に対する仮想リンキングである。したがって、いくつかの実施形態では、ロードフォーマットのプログラムコード中の仮想関数呼び出しは、データキャリア内で、データキャリアに配置されるライブラリの実際の関数呼び出しで置き換えることができる。
【0010】
本発明は、ロードフォーマットのプログラムコードが、データキャリアでリンキングされる場合のみ実際のライブラリを参照するエントリが入った分岐テーブルまたはリファレンステーブルを有する実施形態も提供する。このような実施形態では、特に、仮想関数呼び出しはデータキャリアに配置されるライブラリにおいて解決することができるが、これに限定されない。これは、ロード時、実行時、またはロード時に一部、実行時に一部、行うことができる。
【0011】
本発明の好ましい実施形態では、擬似ライブラリは、データキャリアに配置されるライブラリの呼び出しインタフェースと異なる呼び出しインタフェースを提供する。特に、擬似ライブラリによって提供される呼び出しインタフェースは仮想呼び出しインタフェースであることができる。
【0012】
プログラムコードの破損および許可されていないプログラムコードの望ましくない事後ロードに対する高水準のセキュリティを実現するために、好ましい実施形態では、認証データが作成され、プログラムコードのロード時にチェックされる。
【0013】
好ましい実施形態では、プログラムコードによって提供される関数がデータキャリアの管理ユニットに入力され、データキャリアのオペレーティングシステムおよび/またはアプリケーションプログラムにより事後ロードされるプログラムコードの柔軟で自動的な検出が可能になる。
【0014】
生成されてデータキャリアにロードされるプログラムコードは、たとえば、アプリケーションプログラムまたはカーネルモジュールであることができる。好ましい実施形態では、プログラムコードはネイティブプログラムコードであってよい。特にバイナリコードは、ネイティブプログラムコードであるものとする。バイナリコードは、翻訳の介在なく、かつ仮想マシンなしでデータキャリアのプロセッサによって実行可能なコードである。
【0015】
本発明によるコンピュータプログラム製品は、本発明による方法を実施するプログラムコマンドまたは本発明による方法によって生成されたプログラムコマンドを備える。このようなコンピュータプログラム製品は、物理的な媒体、たとえば半導体メモリ、フロッピー(登録商標)ディスク、またはCD−ROMであってよい。しかし、コンピュータプログラム製品は、非物理的な媒体、たとえばコンピュータネットワークを介して伝送される信号であってもよい。特に、コンピュータプログラム製品は、プログラム開発システムまたは携帯用データキャリアのソフトウェアを含んでいてもよいし、携帯用データキャリアの生成、初期化、パーソナライズ、もしくは動作と併せて使用されるものでもよい。
【0016】
本発明による装置は、特に、プログラム開発システムまたは携帯用データキャリアであることができる。さらなる好ましい実施形態では、コンピュータプログラム製品および/または装置は、本説明および/または従属方法請求項に記載の特徴に対応する特徴を備える。
【0017】
本発明のさらなる特徴、目的、および利点が、例示的な実施形態および複数の代替の実施形態の以下の説明から明らかになる。
【図面の簡単な説明】
【0018】
【図1】本発明の例示的な実施形態によるプログラム開発システムおよびデータキャリアのデータ構造およびデータ処理段階の概念図である。
【図2】ロードフォーマットのプログラムコードを生成する図1のプログラム開発システムで実行される方法のフローチャートである。
【図3】実行可能プログラムコードを提供する図1のデータキャリアで実行される方法のフローチャートである。
【図4】データキャリアにあるライブラリと擬似ライブラリとの関係の例示的な表現である。
【発明を実施するための形態】
【0019】
図1は、プログラム開発システム10および携帯用データキャリア12の概略図である。プログラム開発システム10は、適したソフトウェアを有する従来のパーソナルコンピュータまたはワークステーションの形態をとることができる。例示的な本実施形態では、データキャリア12は、それ自体既知のハードウェアを有するチップカードまたはチップモジュールである。詳細には、データキャリア12は、プロセッサ、異なる技術に向けて構成された複数のメモリフィールド、および有線または無線での通信のためのインタフェース回路を有する単一チップマイクロコントローラを含んでいる。
【0020】
図1に示す例示的な実施形態では、プログラムコードの生成はソーステキスト14から始まり、これがコンパイラ16によってオブジェクトコードフォーマットの対応するプログラムコード18に翻訳される。プログラム開発システム10では、擬似ライブラリ20が利用可能であり、これについて以下においてより詳細に考察する。オブジェクトコードフォーマットで存在するプログラムコード18および擬似ライブラリ20から、リンカ22がロードフォーマットの、少なくとも部分的にリンクされたプログラムコード24を生成する。
【0021】
プログラムコード24を不注意による、または悪意のある破損から保護するために、認証データ28、たとえばプログラムコード24に適したチェックサムを生成する認証データ生成器26が使用される。認証データ28によって保護されたロードフォーマットのプログラムコード30は、プログラム開発システム10の助けにより開発プロセスの結果を形成する。このプログラムコード30は、後で使用するために記憶される。
【0022】
プログラムコード30は、データキャリア12の動作中にデータキャリア12にロードすることができる。ロードプロセスは、たとえば、末端顧客の構内機器で、またはデータキャリア12の生成、初期化、またはパーソナライズと併せて行うことができる。プログラムコード30は、この場合では、プログラム開発システム10内、初期化装置、パーソナライズ装置、または末端顧客の端末内にあり、データキャリア12に転送される。ロードプロセス中、データキャリア12は動作している。
【0023】
これは、データキャリア12のプロセッサにより、そのロードプロセス中にプログラムコード30がアクティブに処理され変更されることを意味するものと理解されたい。
【0024】
図1の破線矢印は、ロードフォーマットの安全なプログラムコード30が、ロードプログラム32により、オプションとして上記中間ステーションの1つを介してデータキャリア12に受信されることを示している。認証チェッカ34は、プログラムコード30が破損していないこと、および認証データ28が許可を受けたステーションによって提供されたことを確かめる。チェックをパスした場合、ロードフォーマットのプログラムコード24が、リンカ36によって、データキャリア12に記憶されているライブラリ38にリンクされる。ダイナミックリンカによって行われるこの手順について、以下においてより詳細に考察する。
【0025】
リンカ36は実行可能プログラムコード40を生成し、これは次いで、データキャリア12のプロセッサによる実行に提供される。いくつかの実施形態では、実行可能プログラムコード40は、データキャリア12のアプリケーションプログラム(アプリケーション)である。これとは対照的に、本明細書において述べる例示的な実施形態では、実行可能プログラムコード40は、データキャリア12のカーネルモジュール、すなわち、たとえばオペレーティングシステムの部分であるドライバ、またはライブラリである。カーネルモジュールは、たとえば、メモリ管理ドライバ、擬似ライブラリ、または各種インタフェース、たとえばUSB、無線、TCP/IPと通信するための機能を提供する。
【0026】
実行可能プログラムコード40の関数は、データキャリア12のオペレーティングシステムおよびデータキャリア12に記憶されたアプリケーションプログラムに提供される。いくつかの実施形態では、ロードされた関数の柔軟な検出が行われる。このために、実行可能プログラムコード40は、特にカーネルモジュールである場合、予め指定されたインタフェースを利用できるようにする。さらに、本明細書において述べる例示的な実施形態は、提供される関数と共にデータキャリア12の管理ユニット内のレジストレーションプログラム42により、プログラムコード40のためのエントリを提供する。この管理ユニットは、たとえば、データキャリア12のレジストレーションファイル(レジストリ)または別のデータ構造であることができる。
【0027】
図2に、プログラム開発システム10での方法シーケンスを再び示す。ステップ50において、プログラムコード18がオブジェクトコードフォーマットで生成される。ステップ52は、擬似ライブラリ20へのプログラムコード18のリンキングに関連し、それによってロードフォーマットの非セキュアプログラムコード24が得られる。ステップ54において、認証データ28およびロードフォーマットのセキュアプログラムコード30が最終的に生成される。
【0028】
図3に示すフローチャートは、データキャリア12において行われる方法ステップをまとめたものである。ステップ56におけるセキュアプログラムコード30の入力およびステップ58における認証チェックの後に、ステップ60におけるデータキャリア12に記憶されているライブラリ38へのプログラムコード24のリンキングが続き、それによって実行可能プログラムコード40が得られる。実行可能プログラムコード40が、ステップ62において提供されて実行され、オプションとして、データキャリア12の管理ユニットに入力される。
【0029】
本明細書において述べる例示的な実施形態の本質的な部分は、ステップ52および60での2つのリンキングプロセスである。リンカ22によって行われるステップ52での最初のリンキングプロセスでは、擬似ライブラリ20(ダミーライブラリ)が使用される。擬似ライブラリ20は、特に、データキャリア12に記憶されるライブラリ38の実際の関数を含まず、単に本明細書で「仮想関数」と称される関数を含むだけであるという点でデータキャリア12に記憶されるライブラリ38と異なる。
【0030】
したがって、データキャリア12外のリンキングプロセスは仮想的に、すなわちデータキャリア12に含まれるライブラリ38の実際の関数ではなく擬似ライブラリ20の仮想関数に対して行われる。換言すれば、リンキングは、データキャリア12内のライブラリ38の実際の呼び出しインタフェースに対してではなく、擬似ライブラリ20の仮想呼び出しインタフェースに対して行われる。したがって、データキャリア12の内部の仕組み、すなわち特にライブラリ38の内部関数および内部機能は、隠されたままである。こういった内部関数および内部機能は、擬似ライブラリ20を解析した場合であっても求めることができない。
【0031】
今述べた、擬似ライブラリ20とデータキャリア12に含まれるライブラリ38との関係を、例を参照して図4において説明する。擬似ライブラリ20は、たとえば、関数VirtFunc1、VirtFunc2、およびVirtFunc3を有する仮想呼び出しインタフェースを提供する。データキャリア12の実際の関数を有するライブラリ38の呼び出しインタフェースは、データキャリア12にのみ記憶される。
【0032】
データキャリア12に含まれるライブラリ38の実際の呼び出しインタフェースは、仮想関数呼び出しを解決して、たとえば、内部関数Func1、Func2、Func3、およびFunc4を提供する。リンカ22によるステップ52でのプログラムコード18のリンキングは擬似ライブラリ20に対して行われ、これにより利用できるようになるのは呼び出しインタフェースのみである。これとは対照的に、データキャリア12での参照の実際の解決は、ステップ60まで行われない。このプロセス中、仮想関数VirtFunc1〜VirtFunc3が実際の関数Func1〜Func4で置き換えられる。これを図4に破線矢印で示す。
【0033】
全般的に、こうして、データキャリア12で実行されるプログラムコード40がプラットフォーム依存および/またはプライベート関数を使用できることが保証される。しかし、擬似ライブラリ20の使用を通して、プログラム開発者に既知の外部関数のプラットフォーム依存関数への変換(データキャリア12内のみで行われる変換)を明らかにする必要がない。この手段により、データキャリア12でネイティブプログラムコード、たとえばアプリケーションプログラムおよびドライバのロードが可能な場合であっても、データキャリア12のセキュリティが大幅に向上する。
【0034】
上記説明の詳細は単に本発明の可能な実施形態の例として意図されることは言うまでもない。特にデータキャリア12の内外で行われるリンキングプロセス52、60ならびに擬似ライブラリ20およびデータキャリア12内に配置されるライブラリ38の各内容に関するさらなる変更が可能であり、当業者にとって自明である。

【特許請求の範囲】
【請求項1】
携帯用データキャリア(12)外のプログラム開発装置(10)においてロードフォーマットのプログラムコード(24、30)を生成する方法であって、前記プログラムコードは、携帯用データキャリア(12)の動作中に該携帯用データキャリア(12)にロードされて、前記データキャリア(12)のプロセッサによって実行され、該実行中に、前記データキャリア(12)に配置されたプライベートライブラリ(38)の関数を使用することを意図され、該方法は、以下のステップ:
前記プログラム開発装置(10)のコンパイラ(16)が、オブジェクトコードフォーマットのプログラムコード(18)を生成するステップと、
前記プログラム開発装置(10)が、前記オブジェクトコードフォーマットのプログラムコード(18)を少なくとも部分的に、擬似ライブラリ(20)にリンクするステップであって、それによってロードフォーマットのプログラムコード(24、30)を取得し、前記擬似ライブラリ(20)は、前記データキャリア(12)に配置されるプライベートライブラリ(38)の内部の仕組みの少なくともいくらかが前記擬似ライブラリ(20)にない、隠される、またはマスクされるという点で前記データキャリア(12)に配置される前記プライベートライブラリ(38)と異なる、ステップとを有し、
前記疑似ライブラリ(20)は前記プログラム開発装置(10)で利用可能であるが、前記プライベートライブラリ(38)は前記プログラム開発装置(10)では利用できないことを特徴とする方法。
【請求項2】
前記リンクするステップは、前記擬似ライブラリ(20)の仮想関数に仮想的にリンクするステップであることを特徴とする、請求項1記載の方法。
【請求項3】
認証データ(28)が作成され、それによって前記ロードフォーマットのプログラムコード(24、30)を破損から保護することを特徴とする、請求項1または2記載の方法。
【請求項4】
携帯用データキャリア(12)に実行可能プログラムコード(40)を提供する方法であって、前記実行可能プログラムコード(40)は、前記データキャリア(12)のプロセッサによる実行中に、前記データキャリア(12)に配置されるプライベートライブラリ(38)の関数を使用するようにセットアップされ、該方法は、以下のステップ:
前記携帯用データキャリアが、該データキャリア(12)の動作中にロードフォーマットのプログラムコード(24、30)をロードするステップであって、前記ロードフォーマットのプログラムコード(24、30)は少なくとも部分的に擬似ライブラリ(20)にリンクされており、前記擬似ライブラリ(20)は、前記データキャリア(12)に配置されるプライベートライブラリ(38)の内部の仕組みの少なくともいくらかが前記擬似ライブラリ(20)にない、隠される、またはマスクされるという点で前記データキャリア(12)に配置されるプライベートライブラリ(38)と異なる、ステップと、
前記携帯用データキャリア(12)が、前記ロードフォーマットのプログラムコード(24、30)を前記データキャリア(12)に配置される前記プライベートライブラリ(38)にリンクするステップであって、それによって実行可能プログラムコード(40)を取得するステップとを有し、
前記携帯用データキャリア(12)のプロセッサは、ロード処理を行っている間に前記プログラムコード(24、30)を変換することを特徴とする方法。
【請求項5】
前記リンクするステップはダイナミックリンクするステップであることを特徴とする、請求項4記載の方法。
【請求項6】
リンク中、前記ロードフォーマットのプログラムコード(24、30)での仮想関数呼び出しは、前記データキャリア(12)に配置される前記プライベートライブラリ(38)の実際の関数呼び出しで置き換えられることを特徴とする、請求項4または5記載の方法。
【請求項7】
前記ロードフォーマットのプログラムコード(24、30)は認証データ(28)によって保護され、前記実行可能プログラムコード(40)は、認証チェックが成功した後でのみ実行のために提供されることを特徴とする、請求項4から6のいずれか一項に記載の方法。
【請求項8】
前記実行可能プログラムコード(40)によって提供される関数は、前記データキャリア(12)の管理ユニットに入力されることを特徴とする、請求項4から7のいずれか一項に記載の方法。
【請求項9】
前記擬似ライブラリ(20)は、前記データキャリアに配置される前記プライベートライブラリ(38)の呼び出しインタフェースと異なる呼び出しインタフェースを提供することを特徴とする、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記擬似ライブラリ(20)によって提供される前記呼び出しインタフェースは仮想呼び出しインタフェースであることを特徴とする、請求項9に記載の方法。
【請求項11】
仮想関数呼び出しは、前記データキャリア(12)に配置される前記プライベートライブラリ(38)において解決されることを特徴とする、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記プログラムコード(24、30、40)はアプリケーションプログラムであることを特徴とする、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記プログラムコード(24、30、40)はカーネルモジュールであることを特徴とする、請求項1から11のいずれか一項に記載の方法。
【請求項14】
前記プログラムコード(24、30、40)はネイティブプログラムコードであることを特徴とする、請求項1から13のいずれか一項に記載の方法。
【請求項15】
プログラム開発システム(10)であって、請求項1から3のいずれか一項に記載の方法を実行するようにセットアップされることを特徴とするプログラム開発システム(10)。
【請求項16】
携帯用データキャリア(12)であって、請求項4から8のいずれか一項に記載の方法を実行するようにセットアップされることを特徴とする携帯用データキャリア(12)。
【請求項17】
プログラム開発システム(10)を制御する複数のプログラムコマンドを備えるコンピュータプログラムであって、前記プログラムコマンドは、前記プログラム開発システム(10)に請求項1から3のいずれか一項に記載の方法を実行させるようにセットアップされることを特徴とするコンピュータプログラム。
【請求項18】
携帯用データキャリア(12)を制御する複数のプログラムコマンドを備えるコンピュータプログラムであって、前記プログラムコマンドは、前記携帯用データキャリア(12)に請求項4から8のいずれか一項に記載の方法を実行させるようにセットアップされることを特徴とするコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−41598(P2013−41598A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2012−222975(P2012−222975)
【出願日】平成24年10月5日(2012.10.5)
【分割の表示】特願2007−544782(P2007−544782)の分割
【原出願日】平成17年12月1日(2005.12.1)
【出願人】(596007511)ギーゼッケ ウント デフリエント ゲーエムベーハー (47)
【氏名又は名称原語表記】Giesecke & Devrient GmbH
【Fターム(参考)】