(57)【要約】      （修正有）【課題】アプリケーションプログラムの不正使用を確実に防止しながら正当な利用が容易にできるようにする。【解決手段】ＣＰＵとセキュア領域を有するメモリとを備えたセキュア媒体において、保護プログラムと非保護プログラムとからなるアプリケーションプログラムの前記保護プログラムをセキュア領域に格納し前記非保護プログラムをセキュア領域とは別のメモリの領域に格納し、前記非保護プログラムはコンピュータにインストールされて実行され、前記保護プログラムは、セキュア媒体のＣＰＵに、前記非保護プログラムを実行しているコンピュータからコマンドを受信させて、このコマンドで命じられる処理を実行させて、その処理結果をコンピュータに返信させる。【選択図】図４
2010257302.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとセキュア領域を有するメモリとを備え、保護プログラムと非保護プログラムとからなるアプリケーションプログラムの保護プログラムをセキュア領域に格納し非保護プログラムをセキュア領域とは別のメモリの領域に格納しているセキュア媒体であって、
非保護プログラムは、コンピュータにインストールされて実行され、
保護プログラムは、セキュア媒体のＣＰＵに、非保護プログラムを実行しているコンピュータからコマンドを受信させて、このコマンドで命じられる処理を実行させて、その処理結果をコンピュータに返信させることを特徴とするセキュア媒体。
【請求項２】
非保護プログラムは、バイナリーデータでセキュア領域に格納され、
保護プログラムは、セキュア媒体のＣＰＵに、インストーラープログラムを実行しているコンピュータからバイナリーデータ取得コマンドを受信させて、非保護プログラムのバイナリーデータをセキュア領域から読み出させて、コンピュータに返信させることを特徴とする請求項１記載のセキュア媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュア媒体に関する。
【背景技術】
【０００２】
従来から、アプリケーションプログラムは、ディスク媒体によりユーザに配布している。
【０００３】
しかしながら、ディスク媒体によりユーザに配布するアプリケーションプログラムは、ディスクを丸ごとコピーすれば、全く同じものを作れてしまい、違法コピーをなくすことが不可能である。
【０００４】
また従来から、ドングルにより使用制限を行うアプリケーションプログラムがある。
【０００５】
しかしながら、ドングルにより使用制限を行うアプリケーションプログラムは、アプリケーションプログラムとドングルとを個別に配布する必要がある。
【０００６】
また、ドングルにより使用制限を行うアプリケーションプログラムを、リバースエンジニアリングすることで、ドングルによる認証を回避するようにアプリケーションプログラムが改変される可能性がある。
【０００７】
また従来から、ＩＣカードと、このＩＣカードによる使用制限を行うパソコン用のアプリケーションとを個別にユーザに配布することが行われている。
【０００８】
しかしながら、ＩＣカード等のセキュア媒体をパソコンで使用する場合、それを操作するためのアプリケーションプログラムを別途インストールする必要がある。
【０００９】
また従来から、プログラムを、保護が必要な部分（保護コード）とそれ以外の通常コードにあらかじめ分割して用意し、各々を保護環境と通常環境という一つのＰＣ上の独立した２つの計算機環境で連係動作させる技術がある（例えば特許文献１又は２参照）。
【００１０】
しかしながら、保護コードと通常コードとに分割されたアプリケーションプログラムは、インストール後はプログラムコードは解析から守られるが、プログラム配布段階、インストール段階ではプログラムを解析される恐れがある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００２−２５１３２６号公報
【特許文献２】特開２００６−１６４１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は斯かる背景技術に鑑みてなされたもので、アプリケーションプログラムの不正使用を確実に防止しながら正当な利用が容易にできるようにすることを課題とする。
【課題を解決するための手段】
【００１３】
本発明において上記課題を解決するために、まず請求項１の発明では、
ＣＰＵとセキュア領域を有するメモリとを備え、保護プログラムと非保護プログラムとからなるアプリケーションプログラムの保護プログラムをセキュア領域に格納し非保護プログラムをセキュア領域とは別のメモリの領域に格納しているセキュア媒体であって、
非保護プログラムは、コンピュータにインストールされて実行され、
保護プログラムは、セキュア媒体のＣＰＵに、非保護プログラムを実行しているコンピュータからコマンドを受信させて、このコマンドで命じられる処理を実行させて、その処理結果をコンピュータに返信させることを特徴とするセキュア媒体としたものである。
【００１４】
また請求項２の発明では、
非保護プログラムは、バイナリーデータでセキュア領域に格納され、
保護プログラムは、セキュア媒体のＣＰＵに、インストーラープログラムを実行しているコンピュータからバイナリーデータ取得コマンドを受信させて、非保護プログラムのバイナリーデータをセキュア領域から読み出させて、コンピュータに返信させることを特徴とする請求項１記載のセキュア媒体としたものである。
【発明の効果】
【００１５】
請求項１の発明は、セキュア媒体を購入するだけでアプリケーションプログラムを利用できるけれども、アプリケーションプログラムによる処理の一部を、セキュア媒体から外に出ることのない保護プログラムが受け持つために、保護プログラムの秘密が保たれると同時に、セキュア媒体がなければアプリケーションプログラムを利用できないので、アプリケーションプログラムの不正使用を確実に防止しながら正当な利用が容易にできるという効果がある。
【００１６】
請求項２の発明は、非保護プログラムを汎用のインストーラープログラムで容易にインストールできるという効果がある。
【図面の簡単な説明】
【００１７】
【図１】本発明に係るシステムにおけるハードウエア構成例を示す図。
【図２】本発明に係るシステムにおけるプログラム構成例を示す図。
【図３】本発明に係るシステムにおけるプログラム相互の作用を示す図。
【図４】本発明に係るシステムにおけるプログラム相互の作用を示す図。
【図５】非保護プログラムのソースコードの例と、この例の非保護プログラムからのコマンドで呼び出されると、このコマンドが命ずる処理を実行して、この結果を返す保護プログラムの部分のソースコードの例とを示す図。
【図６】アプリケーションプログラムをインストールする処理の流れを示すフローチャート。
【図７】アプリケーションプログラムを実行する処理の流れを示すフローチャート。
【図８】数式欄に計算式を入力したときの様子を示す図。
【図９】計算ボタンを押したときの様子を示す図。
【発明を実施するための形態】
【００１８】
以下に、本発明の一実施形態を説明する。
【００１９】
本発明に係るシステムは、図１に示すように、セキュア媒体と、パソコンとを備える。
【００２０】
パソコンは、ＣＰＵ、セキュア媒体リーダライタ、表示装置、入力装置、主記憶装置、補助記憶装置などを備える。図２に示すように、補助記憶装置には、インストーラープログラムがインストールされて、ＣＰＵによって実行可能である。
【００２１】
セキュア媒体は、ＣＰＵ、Ｉ／Ｆ、メモリなどを備え、耐タンパ性を有する。
【００２２】
Ｉ／Ｆは、通信インターフェースとも呼ばれ、セキュア媒体がセキュア媒体リーダライタに装着された場合に、電力とクロックの供給を受けるとともに、セキュア媒体リーダライタとＣＰＵとの間の通信を仲介するインターフェースである。
【００２３】
メモリは、通常の読み出し専用記憶装置であるＲＯＭや電気的に内容の書き換えが可能なＲＡＭなどが該当し、セキュア媒体リーダライタからデータの読み出しが可能な領域と不可能な領域とに分かれている。セキュア媒体リーダライタからデータの読み出しが不可能な領域は、セキュア領域とも呼ばれる。
【００２４】
本発明に係るアプリケーションプログラムは、非保護プログラムと、保護プログラムとからなり、図２に示すように、保護プログラムは、メモリのセキュア領域にインストールされてセキュア媒体のＣＰＵによってのみ実行可能であり、非保護プログラムは、メモリのセキュア領域とは別の領域にバイナリデータとして保存されている。
【００２５】
保護プログラムは、図３に示すように、インストーラープログラムからバイナリーデータ取得コマンドで呼び出されると、非保護プログラムのバイナリーデータを読み出して返す。そして、インストーラープログラムは、パソコンの補助記憶装置に非保護プログラムをインストールする。
【００２６】
また保護プログラムは、図４に示すように、パソコンにインストールされた非保護プログラムからのコマンドで呼び出されると、このコマンドが命ずる処理を実行して、この結果を、この非保護プログラムに返す。
【００２７】
すなわち、保護プログラムは、インストーラープログラムからバイナリーデータ取得コマンドで呼び出されると、非保護プログラムのバイナリーデータを読み出して返す部分と、非保護プログラムからのコマンドで呼び出されると、このコマンドが命ずる処理を実行して、この結果を返す部分とからなる。
【００２８】
図５に、非保護プログラムのソースコードの例と、この例の非保護プログラムからのコマンドで呼び出されると、このコマンドが命ずる処理を実行して、この結果を返す保護プログラムの部分のソースコードの例とを示す。これらのソースコードは、Ｃ言語で記述されている。
【００２９】
以下に、アプリケーションプログラムをインストールする処理の流れを、図６のフローチャートに従って説明する。
【００３０】
Ｓ（ＳＴＥＰ）１；
パソコンのＣＰＵは、インストーラープログラムによって、パソコンのセキュア媒体リーダライタを介して、バイナリーデータ取得コマンドを、セキュア媒体に送信する。
【００３１】
Ｓ（ＳＴＥＰ）２；
セキュア媒体のＣＰＵは、保護プログラムによって、セキュア媒体のＩ／Ｆを介して、バイナリーデータ取得コマンドを受信すると、セキュア媒体のメモリから非保護プログラムのバイナリーデータを読み出して、セキュア媒体のＩ／Ｆを介して、パソコンに送信する。
【００３２】
Ｓ（ＳＴＥＰ）３；
パソコンのＣＰＵは、インストーラープログラムによって、パソコンのセキュア媒体リーダライタを介して、非保護プログラムのバイナリーデータを受信すると、この非保護プログラムを、パソコンの補助記憶装置に、インストールする。
【００３３】
以下に、アプリケーションプログラムを実行する処理の流れを、図７のフローチャートに従って説明する。
【００３４】
Ｓ（ＳＴＥＰ）１；
パソコンのＣＰＵは、非保護プログラムに記述されている処理を順に行い、コマンドの送信が指示されている箇所に達すると、パソコンのセキュア媒体リーダライタを介して、コマンドを、セキュア媒体に送信する。
【００３５】
Ｓ（ＳＴＥＰ）２；
セキュア媒体のＣＰＵは、保護プログラムによって、セキュア媒体のＩ／Ｆを介して、コマンドを受信すると、このコマンドが命じる処理を行い、その処理の結果を、セキュア媒体のＩ／Ｆを介して、パソコンに送信する。
【００３６】
Ｓ（ＳＴＥＰ）３；
パソコンのＣＰＵは、非保護プログラムによって、パソコンのセキュア媒体リーダライタを介して、その処理の結果を受信し、以後、非保護プログラムに記述されている残りの順に処理を行い、コマンドの送信が指示されている箇所に再度達した場合には、ＳＴＥＰ１〜３と同様の処理を繰り返す。
【実施例１】
【００３７】
以下、本発明の実施例１を具体的に説明する。
【００３８】
実施例１では、セキュア媒体は、ＩＣカードであり、それに伴って、セキュア媒体リーダライタは、ＩＣカードリーダライタとなる。
【００３９】
実施例１では、アプリケーションプログラムは、電卓アプリケーションプログラムであり、図８示すように、数式欄に計算式をキーボードから入力し、計算ボタンをマウスで押すと、図９に示すように、結果欄に計算結果が表示されるものである。
【００４０】
ここで、非保護プログラムは、数式入力機能と、ＩＣカード通信機能と、計算結果表示機能とを有する。
【００４１】
また、保護プログラムは、数式受信機能と、数式演算機能と、計算結果送信機能と、バイナリーデータ読み出し送信機能とを有する。
【００４２】
また、インストーラープログラムは、ＩＣカード通信機能と、パソコンへのプログラムインストール機能とを有する。
【００４３】
以下に、アプリケーションプログラムのインストールについて説明する。
【００４４】
まず、パソコンのＩＣカードリーダライタに装着されると、パソコンのＣＰＵは、インストーラープログラムのＩＣカード通信機能によって、ＩＣカードから、ＩＣカードのメモリのセキュア領域とは別の領域に保存されている非保護プログラムバイナリーデータを、パソコンの主記憶装置にロードする。このとき、パソコンのＣＰＵは、ＩＣカードのメモリのセキュア領域に保存されている保護プログラムのバイナリーデータ読み出し送信機能を利用して、非保護プログラムバイナリーデータを読み出す。パソコンのＣＰＵは、インストーラープログラムのパソコンへのプログラムインストール機能によって、ＩＣカードからロードした保護プログラムのバイナリーデータを、パソコンの補助記憶装置にインストールする。
【００４５】
ここで、電卓アプリケーションプログラムによるシステムの動作を、１２３＋４５６＝５７９の計算を行う場合を例に取って説明する。この計算は、以下の（１）〜（３）の順に処理が行われる。
【００４６】
（１）数式欄にキーボードで“１２３＋４５６”と入力する（図８参照）。
（２）計算ボタンをマウスでクリックする。
（３）結果欄に計算結果である“５７９”が表示される（図９参照）。
【００４７】
以下に、非保護プログラムによるパソコンの動作を説明する。
【００４８】
まず、上記（１）では、パソコンのＣＰＵは、非保護プログラムの数式入力機能によって、ユーザーからのキーボードによる数式の入力を受け付け、数式欄に入力された数式をディスプレイに表示する。
【００４９】
次に、上記（２）では、パソコンのＣＰＵは、入力された数式データを“１２３＋４５６”を、非保護プログラムのＩＣカード通信機能によって、ＩＣカードリーダライタを介して、ＩＣカードに送信する。このとき、送信するデータは、非保護プログラムと保護プログラムとの間で予め決められたフォーマットで送信する。例えば、“１２３＋４５６”とデータを一度に送信する、また例えば、“１２３”，“＋”，“４５６”と複数回に分けて送信する等がある。
【００５０】
次に、パソコンのＣＰＵは、数式データの送信が終了すると、非保護プログラムのＩＣカード通信機能によって、ＩＣカードから、ＩＣカードリーダライタを介して、計算結果を受信する。このとき、受信するデータは、非保護プログラムと保護プログラムとの間で予め決められたフォーマットで受信する。例えば計算結果を数字“５７９”として受信する、また例えば文字“５７９”として受信する等がある。
【００５１】
最後に、上記（３）では、パソコンのＣＰＵは、非保護プログラムの計算結果表示機能によって、ＩＣカードから受信した計算結果をディスプレイに表示する。
【００５２】
以下に、保護プログラムによるＩＣカードの動作を説明する。
【００５３】
まず、上記（１）のとき、ＩＣカードのＣＰＵは、パソコンからのデータの受信待ち状態となっている。
【００５４】
次に、ＩＣカードのＣＰＵは、保護プログラムの数式受信機能によって、パソコンからの数式データ“１２３＋４５６”を、Ｉ／Ｆを介して受信する。
【００５５】
次に、ＩＣカードのＣＰＵは、保護プログラムの数式演算機能によって、受信した数式
データに基づいて計算を行い、保護プログラムの計算結果送信機能によって、計算結果を、Ｉ／Ｆを介してパソコンに送信する。
【００５６】
最後に、上記（３）のとき、ＩＣカードのＣＰＵは、パソコンからのデータの受信待ち状態となっている。
【００５７】
このように、保護プログラムは、全ての段階において、ＩＣカード内から外部には出ないため、保護プログラムの解析を行うことは不可能である。
【００５８】
また、電卓アプリケーションプログラムのコア技術である数式演算機能を保護プログラムに含めることで、非保護プログラムを、いくら解析、改変しても、電卓アプリケーションプログラムを、不正に使用、又はコピーすることは不可能である。
【実施例２】
【００５９】
実施例２は、オープンソースプログラム（プログラムのソースコードが公開されているプログラム）に独自の技術を組み込んだアプリケーションプログラムを開発する場合、オープンソース部分を非保護プログラム、独自技術部分を保護プログラムとするものである。
【００６０】
このようにすることで、コア技術である独自の技術を保護することができる。
【図１】
2010257302.tif 000003
【図２】
2010257302.tif 000004
【図３】
2010257302.tif 000005
【図４】
2010257302.tif 000006
【図５】
2010257302.tif 000007
【図６】
2010257302.tif 000008
【図７】
2010257302.tif 000009
【図８】
2010257302.tif 000010
【図９】
2010257302.tif 000011