JP5333458B2 - アプリケーションソフトウェアの保護方法及びストリーム送受信システム - Google Patents

アプリケーションソフトウェアの保護方法及びストリーム送受信システム Download PDF

Info

Publication number
JP5333458B2
JP5333458B2 JP2010542126A JP2010542126A JP5333458B2 JP 5333458 B2 JP5333458 B2 JP 5333458B2 JP 2010542126 A JP2010542126 A JP 2010542126A JP 2010542126 A JP2010542126 A JP 2010542126A JP 5333458 B2 JP5333458 B2 JP 5333458B2
Authority
JP
Japan
Prior art keywords
program
client
information
server
application software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010542126A
Other languages
English (en)
Other versions
JPWO2010067846A1 (ja
Inventor
涼一 舟橋
真喜子 此島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010542126A priority Critical patent/JP5333458B2/ja
Publication of JPWO2010067846A1 publication Critical patent/JPWO2010067846A1/ja
Application granted granted Critical
Publication of JP5333458B2 publication Critical patent/JP5333458B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Description

本発明は、アプリケーションソフトウェアの保護方法及びサーバに関し、例えば、映像ストリームを作成するエンコード・アプリケーション等を含むプログラムをネットワーク経由でサーバからクライアントに送付し、クライアント側で実行されるアプリケーションソフトウェアの保護方法及びこのような保護方法を備えるストリーム送受信システムの技術分野に関する。
ネットワークを介して送付されるアプリケーションソフトウェアを用いて、データの送受信などを行う送受信システムにおいては、クライアント側にアプリケーションソフトウェアが配置されるため、疑似サーバを設けるなどの手法により、アプリケーションソフトウェアがクライアント側で不正に実行される可能性が考えられる。
このようなアプリケーションソフトウェアを不正な実行から保護する代表的な手法として、従来、サーバとクライアントとをネットワーク通信によりハンドシェイクさせ、クライアント側での当該プログラムの実行状況を逐一サーバで認識し得るようにし、クライアントがサーバから該アプリケーションソフトウェアの使用許可信号を受信してから所定期間のみ、当該アプリケーションソフトウェアを使用可能とする手法などが知られている。また、送受信されるデータを分割することで難読化させ、アプリケーションソフトウェアを不正な使用から保護する方法も知られている。
特開2003−345662号公報 特開2002−55726号公報
上述したように、クライアント側での操作内容がサーバ側に把握される構成では、クライアントとサーバとの間で詳細なデータの送受信が行われる。このような詳細なデータの送受信の中では、ユーザが所有するデータや詳細な操作内容などの情報が外部のサーバに公開されることがあり、例えば所有するデータの公開を避けたいとのユーザの要望には対応し切れないという問題がある。また、データを分割して送受信する方法では、データの分割及び結合のために処理内容が複雑となり、データの送受信におけるパフォーマンスが低下するという更なる技術的な問題に繋がる虞があった。一方で、単にデータを分割するのみでは比較的容易に元のデータの複合が可能であるため、得られる保護効果は十分とは言い切れない。
また、特に送受信するデータとして映像データなどのストリームを扱う場合、比較的長い期間クライアント間の接続を維持する必要が生じることから、不正なアクセスなどの攻撃を受ける危険性が上昇する可能性もある。
本発明は、アプリケーションソフトウェアを不正使用から保護する機能を有していないクライアントで実行されるアプリケーションソフトウェアに対して、擬似サーバを設置することによる成りすましなどによるアプリケーションソフトウェアの不正使用に対して、堅固な保護を可能にするアプリケーションソフトウェアの保護方法を提供することを課題とする。
上記課題を解決するために、開示のアプリケーションソフトウェアの保護方法は、ネットワークを介してサーバから送付される第1のプログラムをクライアント上で起動することで実行されるアプリケーションソフトウェアの保護方法であって、前記クライアント上で実行された前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置工程と、分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信工程と、前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを前記サーバで生成するプログラム生成工程と、前記第2のプログラムを前記クライアントに送信する第2送信工程とを備える。
上記課題を解決するために、開示のストリームの送受信システムは、クライアントと、前記クライアント上で実行されるアプリケーションソフトウェアを含む第1のプログラムを、ネットワークを介して前記クライアントへ送信可能なサーバとを備え、前記クライアントは、前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置手段と、分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信手段とを備え、前記サーバは、前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを生成するプログラム生成手段と、前記第2のプログラムを前記クライアントに送信する第2送信手段とを備える。
中間データの長さは、アプリケーションソフトウェアが適用される入力データに固有の情報であり、該入力データが同一でない限り、同一とはならない。従って、第2のプログラムは、特定の入力データに対してアプリケーションソフトウェアが実行された実行結果に対してのみ有効であり、該実行結果が分割され、分散配置された中間データを元の順番に並べ替え、元の実行結果を復元する。そのため、仮にユーザが疑似サーバを設置して、前回取得したアプリケーションソフトウェアを繰り返し使用しようとしても、入力データが前回と異なると、成りすましによる第2のプログラムでは、分散配置された中間データを元の順序に復元することが出来ない。
即ち、入力データを複数の中間データに分割して分散配置する際に、入力データ毎に異なる分散配置を行い、入力データ毎に異なる第2のプログラムで元の順序に復元するため、1つの入力データに対してしかアプリケーションソフトウェアを有効に使用することが出来ず、該アプリケーションソフトウェアを不正使用から好適に保護することが出来る。
アプリケーションソフトウェアの保護の第1の動作例の処理フローを示す図である。 クライアント信頼度及び希望秘匿度に基づく処理の態様を示す表である。 分散配置情報のテーブルの例を示す表である。 中間データを並べ替えて分散配置する実施例を示す図である。 通知情報Vに含まれるヘッダ及びマクロブロック毎のデータ長及び配置位置情報の例を示す表である。 アプリケーションソフトウェアの保護の第2の動作例の処理フローを示す図である。 アプリケーションソフトウェアの保護の第2の動作例が実行されるデータ送受信システムの構成及び送受信データを概略的に示すブロック図である。 第2の動作例に係る第1のクライアントにおける各部の構成及び動作の例を示す概略図である。 第2の動作例に係るサーバにおける各部の構成及び動作の例を示す概略図である。 第2の動作例に係る第2のクライアントにおける各部の構成及び動作の例を示す概略図である。 第2の動作例に係るプログラムの更新の態様の例を示すタイミングチャートである。 第2の動作例に係る中間データのサイズに基づく時刻情報の決定の態様の例を示す模式図である。 第2の動作例に係る中間データの動き量に基づく時刻情報の決定の態様の例を示す模式図である。
以下、本発明を実施するための形態について図面を参照しながら説明する。
(1)アプリケーションソフトウェアの保護の第1動作例
図1から図5を参照して、本実施形態に係るアプリケーションソフトウェアの保護の第1動作例の処理の流れについて説明する。
(1−1)処理フロー例
先ず、図1を参照して、実施形態に係るアプリケーションソフトウェアの保護動作の第1動作例について説明する。図1は、開示のアプリケーションソフトウェアの保護動作の実施形態における第1動作例の処理フローを示す図である。図1に示すように、該アプリケーションソフトウェアの保護動作の実施形態の第1動作例は、互いにネットワークで接続されるサーバAとクライアントBとを含むデータ送受信システムにおいて適用される。
入力データが入力されるクライアントBは、使用を希望するエンコーダ等のアプリケーションソフトウェアを含むプログラムXの送付を、サーバAに要求する(ステップS101)。サーバAは要求されたプログラムXをクライアントBに送付する(ステップS102)。クライアントBは送付されたプログラムXを起動する(ステップS103)。
プログラムXが起動されると、プログラムXによりクライアントBとサーバAとの間で認証処理を行い(ステップS104及びS105)、また、サーバAはクライアントBの認証を行った時刻をメモリに保存する。
クライアントBは、プログラムXにより希望秘匿度bをサーバAに送信する(ステップS106)。サーバAは、クライアントBの信頼度aと、クライアントBから希望秘匿度bとから、分散配置情報Cを生成し、該分散配置情報CをクライアントBに送信する(ステップS107)。クライアントBではプログラムXにより、分散配置情報Cを受信(ステップS108)した後、エンコーダ等のアプリケーションソフトウェアを入力データに対して実行する(ステップS109)。
クライアントBは、プログラムXにより、アプリケーションソフトウェア実行後の実行結果Sを、分散配置情報Cに従い、複数の中間データs1、…snに分割し(ステップS110)、クライアントB内及びサーバA内の記憶部に分散させて配置する(ステップS111)。また、クライアントBは、プログラムXの実行完了の通知と共に、各中間データs1、…snのデータ長L及び配置位置情報を含む通知情報VをサーバAに送信する(ステップS112)。
サーバAは、通知情報VがクライアントBから送信された時刻が、クライアントBを認証した時刻から一定時間内であるとき、各中間データs1、…snのデータ長Lと配置位置情報とが含まれる通知情報Vから、実行結果の復元用のプログラムYを生成し、該復元用のプログラムYをクライアントBに送付する(ステップS113)。
この間に、クライアントBでは、プログラムXのプロセス実行を終了し(ステップS114)、プログラムXを削除し(ステップS115)、復元用のプログラムYを起動する(ステップS116)。復元用のプログラムYは、プログラムXのプロセス終了を確認した後(ステップS117)、ランダムに分散配置された中間データs1、…snを元の順序に並べ替えて、実行結果Sを出力し(ステップS118)、実行を完了する(ステップS119)。
(1−2)分散配置情報Cの生成の実施例
図1に示す処理フローにおいて説明した、サーバA側で保有するクライアントBの信頼度(クライアント信頼度a)と、クライアントBから通知される、中間データに対する希望の秘匿度(希望秘匿度)bとから、中間データs1、…snをどのように分散配置するかを決定する分散配置情報Cを生成する実施例について、図2を参照して説明する。
先ず、処理に先立って、サーバAは、クライアントBのクライアント信頼度aを決定する。サーバAは、クライアントBに対し、クライアントBが所属する組織(U)、同種のプログラムの使用頻度(V)及び不正使用の有無(W)等の使用の履歴に基づき、クライアント信頼度aを決定する。ここに、図2(a)は、クライアント信頼度aを算出するための諸条件を示すクライアント信頼度算出表の一例である。
サーバAは、図2(a)のクライアント信頼度算出表を参照し、クライアントBが所属する組織(U)、同種のプログラムの使用頻度(V)及び以前の不正使用経験の有無(W)の夫々に設定される値に基づき、例えば平均することでクライアント信頼度aを算出し、決定する。尚、このときサーバAは、処理対象となるデータやクライアントに応じて、各変数に適宜重み付けを行った上でクライアント信頼度aの算出を行っても良い。
図2(a)の表に示される例では、クライアント信頼度aは、信頼度が低いほど小さい値となり、信頼度が高いほど大きい値となる。より具体的には、図2(a)に示される例では、クライアントBが所属する組織(U)に設定される値としては、競合する組織の場合には「0」を設定し、無関係の組織・無所属の場合には「20」を設定し、顧客の場合には「40」を設定し、関係会社の場合には「60」を設定し、社内の場合には「100」を設定している。また、図2(a)に示される例では、同種のプログラムの使用頻度(V)に設定される値としては、下限を0に設定し且つ上限を100に設定すると共に、使用頻度が多いほど大きい値を設定している。また、図2(a)に示される例では、以前の不正使用経験の有無(W)に設定される値としては、不正使用があった場合に「0」を設定し、不正使用がない場合に「100」を設定している。
ところで、プログラムXが実行結果Sを中間データs1、…snに分割するためには、先ず、実行結果Sの分割単位が決定されている必要がある。本動作例においては、クライアントBのクライアント信頼度aに基づき、実行結果Sの分割単位が決定される。ここで、分散配置情報Cに含まれる、中間データs1、…snの分割単位の決定の態様について、図2(b)を参照して説明する。ここに、図2(b)は、クライアント信頼度aに基づいて実行結果Sの分割単位を決定する際の基準を示す表である。
図2(b)に示すように、プログラムXは、クライアント信頼度aに応じて、クライアント信頼度aが低いほど実行結果Sをより細かい単位で分割し、クライアント信頼度aが高いほど実行結果Sをより大きい単位で分割する。映像データをより細かい単位で分割することで復元がより困難となり、より大きい単位で分割すると復元がより容易となるため、信頼度の低いクライアントに対しては、より高い保護効果が期待出来る。
例えば、図2(b)に示すように、クライアント信頼度aが10未満である場合、分割入替部110は、実行結果Sを最小処理単位(例えば、マクロブロック単位)で分割する。クライアント信頼度aが10以上30未満である場合、分割入替部110は、実行結果Sを2番目に小さい単位(例えば、マクロブロックライン、スライス単位)で分割する。クライアント信頼度aが30以上50未満である場合、分割入替部110は、実行結果Sを3番目に小さい単位(例えば、ピクチャ単位)で分割する。クライアント信頼度aが50以上70未満である場合、分割入替部110は、実行結果Sを4番目に小さい単位(例えば、グループオブピクチャ(GOP:group of picture)単位)で分割する。クライアント信頼度aが70以上90未満である場合、分割入替部110は、実行結果Sを5番目に小さい単位(例えば、複数のグループオブピクチャ(GOP)単位)で分割する。クライアント信頼度aが90以上である場合、分割入替部110は、実行結果Sを数秒のデータ単位(言い換えれば、数秒の再生期間を有するデータ単位)で分割する。
また、プログラムXは、上述したように決定される分割単位で分割される複数の中間データs1、…snの夫々をサーバAとクライアントBとに分散配置する為の態様を決定する。特に、本動作例においては、プログラムXは、クライアントBから通知される実行結果Sに対する希望秘匿度bに基づき、中間データの分散配置の態様を決定する。ここに、希望秘匿度bとは、中間データの送受信におけるデータ保護の度合いを決定する値であり、例えば図2(c)に示されるように、ユーザの希望する分散配置の方法に応じて決定される。
上述のように決定されたクライアント信頼度a及び希望秘匿度bに基づいて、サーバAは、分散配置情報Cを生成する。ここに、図3は、生成される分散配置情報Cを決定するためのテーブルの一例である。図3に示される分散配置情報Cによれば、クライアント信頼度a及び希望秘匿度bの値に基づいて、以下に示すように中間データの分割及びサーバへの送信の態様が決定される。
[希望秘匿度bの値が0の場合]
クライアント信頼度aの値が0〜20のとき、ブロック単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が21〜40のとき、ヘッダ単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が41〜60のとき、フレーム単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が61〜80のとき、キーフレーム単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が81〜100のとき、数秒単位で分割してから全てサーバAに送信する。
[希望秘匿度bの値が20の場合]
クライアント信頼度aの値が0〜20のとき、ブロック単位で分割し、半数のブロックをサーバAに送信する。クライアント信頼度aの値が21〜40のとき、ヘッダ単位で分割し、半数のヘッダと半数のフレームをサーバAに送信する。クライアント信頼度aの値が41〜60のとき、フレーム単位で分割し、半数のフレームを、フレーム単位でサーバAに送信する。クライアント信頼度aの値が61〜80のとき、半数のフレームをキーフレーム単位でサーバAに送信する。クライアント信頼度aの値が81〜100のとき、フレーム単位でランダムに分割し、半数のフレームをサーバAに送信する。
[希望秘匿度bの値が40の場合]
クライアント信頼度aの値が0〜20のとき、ブロック単位で分割し、キーフレームのブロックと幾つかのフレームのブロックをサーバAに送信する。クライアント信頼度aの値が21〜40のとき、フレーム単位で分割し、半数のヘッダと半数のフレームをサーバAに送信する。クライアント信頼度aの値が41〜60のとき、フレーム単位で分割し、
キーフレームと幾つかのフレームをサーバAに送信する。クライアント信頼度aの値が61〜80のとき、フレーム単位で分割し、キーフレームと幾つかのフレームをサーバAに送信する。クライアント信頼度aの値が81〜100のとき、フレーム単位で分割し、キーフレームと幾つかのフレームをサーバAに送信する。
[希望秘匿度bの値が60の場合]
クライアント信頼度aの値が0〜20のとき、ブロック単位で分割し、キーフレームのブロックをサーバAに送信する。クライアント信頼度aの値が21〜40のとき、フレーム単位で分割し、キーフレームの半数のヘッダをサーバAに送信する。クライアント信頼度aの値が41〜60のとき、フレーム単位で分割し、キーフレームをサーバAに送信する。クライアント信頼度aの値が61〜80のとき、フレーム単位で分割し、キーフレームをサーバAに送信する。クライアント信頼度aの値が81〜100のとき、フレーム単位で分割し、キーフレームをサーバAに送信する。
[希望秘匿度bの値が80の場合]
クライアント信頼度aの値が0〜20のとき、ヘッダとヘッダ以外を単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が21〜40のとき、ヘッダとヘッダ以外を単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が41〜60のとき、ヘッダとヘッダ以外とを単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が61〜80のとき、ヘッダとヘッダ以外とを単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が81〜100のとき、ヘッダとヘッダ以外とを単位として分割し、フレームヘッダをサーバAに送信する。
[希望秘匿度bの値が100の場合]
クライアント信頼度aの値が0〜20のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が21〜40のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が41〜60のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が61〜80のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が81〜100のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。
(1−3)分散配置動作の実施例
続いて、図4及び図5を参照して、上述のように決定された分散配置情報Cに従い、プログラムXが生成される中間データをサーバAとクライアントBとに分散配置する分散配置動作(図1のステップS111)の実施例について説明する。
図4は、分散配置動作において、特に、クライアント信頼度aの値が0乃至20であり、希望秘匿度bの値が80である場合の分散配置の態様について示している。また、図4に示す実施例は、プログラムXにおけるエンコード用のアプリケーションソフトウェアにより生成された映像ストリームを入力データとしている。このような映像ストリームは、キーフレームとフレームとから構成され、各フレームは、ヘッダと例えばマクロブロック(MB:Macro Block)などのヘッダ以外のデータとから構成される。
一般的に、各フレームのデータ長は異なるため、フレーム毎のヘッダ及びMBのデータ長も異なる。図4に示す例は、希望秘匿度bの値が80でクライアント信頼度aの値が0〜20の場合を示し、分散配置情報Cに従って、ヘッダとヘッダ以外を単位として分割し、ヘッダをサーバAに配置する例を示している。
図4に示すように、プログラムXは、中間データのキーフレームF11のヘッダ11とフレームF12のヘッダ12とフレームF13のヘッダ13とを、ランダムに順序を入れ替えて例えばヘッダ11、ヘッダ13、ヘッダ12の順序でサーバAに配置する。また、キーフレームF11のマクロブロックMB111、MB112…、フレームF12のマクロブロックMB121、MB122…を、ランダムに順序を入れ替えて、例えばMB121、MB112、MB122、MB111の順序でクライアントBに配置する。
プログラムXは、更に、中間データを分散配置する際に、各中間データのデータ長Lと配置位置とを対応付けた情報を含む通知情報Vを生成する。図5は、このように生成される通知情報Vの一例を示すテーブルである。プログラムXは、中間データの分散配置を行う際に、図5に示されるような、データ長と配置位置との対応関係を示す情報を含む通知情報Vとして、フレーム種別、データ長及び配置位置の情報を生成し、テーブルに格納する。尚、プログラムXは、図5に示されるように、各中間データの時刻情報(例えば、タイムスタンプまたはフレーム順序を示す情報)を含んで通知情報Vを生成しても良い。
以上のように、本動作例のプログラムXは、決定された分割入れ替え単位及び配置位置に基づき、実行結果Sをヘッダ及びMB毎に分割し、夫々ランダムに順番を入れ替えた上でサーバAとクライアントBとに分散して配置する。
プログラムYは、上述の通知情報Vにおけるデータ長と配置位置との対応関係を示すテーブルを参照し、各中間データのデータ長Lと配置位置の情報を基に、中間データを元の映像ストリームの順序にクライアントB内に配列し、完全な映像ストリームとして出力する。
以上、説明したアプリケーションソフトウェアの保護の第1動作例では、サーバAがプログラムXを生成し、クライアントBに送付するとともに、分散配置情報Cを生成し、クライアントBに送付する。クライアントBではアプリケーションソフトウェアの実行結果Sを、分散配置情報Cに従って複数の中間データs1、s2、…に分割し、ランダムの順番でサーバA及びクライアントBに分散配置する。
各中間データs1、s2、…のデータ長L1、L2、…は、プログラムXのアプリケーションソフトウェアで処理する入力データに依存して固有のデータ長となり、該中間データs1、s2、…のデータ長L1、L2、…をサーバAに送信し、サーバAは、
該中間データs1、s2、…のデータ長L1、L2、…と配置位置情報とから、中間データs1、s2、…を実行結果Sに変換する復元用のプログラムYを生成し、該復元用のプログラムYをクライアントBに送付する。
ここで入力データは映像データ、プログラムXのアプリケーションソフトウェアはエンコーダ、実行結果Sはビットストリームなどであり、異なる入力データからは同一の中間データ長L1、中間データ長L2、…が得られないデータである。
以上説明した構成によれば、サーバAとクライアントBとの間で行われるネットワーク経由の送受信内容を不正に取得したユーザが、サーバAに成りすました擬似サーバを設置することでプログラムXの不正使用を試みたとしても、同一の入力データに対してプログラムXを使用しない限り、有効な実行結果Sを得ることは出来ない。また、同一の入力データによる実行結果Sは、クライアントBが既にプログラムXを実行して取得済みの結果であり、何度も同一の実行結果Sを取得することは、ユーザにとって何のメリットもない。従って、アプリケーションソフトウェアを不正使用から保護することが出来る。
なお、分散配置情報Cを、クライアントBの信頼度情報a、及びクライアントBから通知される希望秘匿度bの情報に基づいて生成することにより、サーバ側及びクライアント側の要望に応じた分散配置が可能となる。
また、クライアントBから各中間データのデータ長及び配置位置情報が通知される時刻が、クライアントBの認証時刻から一定時間内であるとき、復元用のプログラムYを生成することにより、プログラムXの不正使用に対する保護をより強固なものとすることが出来る。
また、復元用のプログラムYは、クライアントBで起動されたプログラムXが削除され終了したことを確認した後、復元処理を行う構成とすることにより、プログラムXがクライアントBに何時までも保有されたままの状態となることを防ぎ、プログラムXの不正使用に対する保護をより強固なものとすることが出来る。
(2)アプリケーションソフトウェアの保護の第2動作例
図6から図13を参照して、本実施形態に係るアプリケーションソフトウェアの保護の第2動作例の処理の流れについて説明する。
(2−1)処理フロー例
先ず、図6に示される処理フローを参照して、実施形態に係るアプリケーションソフトウェアの保護動作の第2動作例の処理の流れについて説明する。尚、図6の処理フローにおいて、図1に示す第1実施例に係る処理フローと同様の動作については、同じ番号を付して説明を省略している。また、特に説明しない点については、第1動作例と同様の構成であって良い。
図6に示すように、該アプリケーションソフトウェアの保護動作の実施形態の第2動作例は、好適には、互いにネットワークで接続されるサーバAと、プログラムXが実行される第1のクライアントBと、プログラムYが実行される第2のクライアントCとを含むデータ送受信システムにおいて適用される。また、第2動作例においては、入力データは映像ストリームであり、アプリケーションソフトウェアはエンコーダであり、実行結果Sはビットストリームなどである。
第2動作例において、サーバAは、第1のクライアントBから送信されるリクエストに応じて、エンコード用のアプリケーションソフトウェアを含むプログラムXを第1のクライアントBに送信すると共に、復元用のプログラムYを第2のクライアントCに送信する(ステップS120)。
第1のクライアントBは、プログラムXの起動、サーバ認証、希望秘匿度bの送信及びアプリケーションの実行(ステップS103からステップS109)の後に、プログラムXにより、アプリケーションソフトウェア実行後の実行結果Sを、分散配置情報Cに従い複数の中間データs1、…snに分割する(ステップS110)。続いて、プログラムXは、分割された複数の中間データs1、…snの夫々のパケットヘッダに、第1のクライアントBの内部時計を基準とする、各中間データの再生時刻に応じた時刻情報を埋め込む(ステップS121)。そして、プログラムXは更に、入力データ及び実行結果Sの少なくとも一方の特性を示す特性情報と上述の時刻情報とを含む特性情報V’を生成する(ステップS122)。
次に、第1のクライアントBは、生成された複数の中間データs1、…snを、元の実行結果Sにおける時系列的な順序を入れ替えて再配置することで分割入替データU’を生成する。また、生成された分割入替データU’を第2のクライアントCに送信する(ステップS123)。
そして、第1のクライアントBは、プログラムXの実行完了の通知と共に、各中間データs1、…snのデータ長L、配置位置情報及び時刻情報を含む通知情報Vと、生成される特性情報V’をサーバAに送信する(ステップS124)。
サーバAは、送信された通知情報V及び特性情報V’を第2のクライアントCに送信する(ステップS125)。このとき、例えば、通知情報V及び特性情報V’が第1のクライアントBから通知された時刻が、クライアントBを認証した時刻から一定時間内であるか否か、または、通知情報Vに含まれる時刻情報が後述するプログラムXの更新時刻Tから一定時間内であるか否かなどの判定を行い、該判定結果に基づいて通知情報V及び特性情報V’の送信の実施の有無を決定しても良い。かかる判定については後に詳述する。
また、サーバAは、第1のクライアントBから送信される特性情報V’に基づき、更新時刻Tを生成する(ステップS126)。各中間データs1、…snのデータ長Lと配置位置情報とが含まれる通知情報Vから、エンコード用のプログラムX及び実行結果の復元用のプログラムYの更新版を生成する(ステップS127)。このとき、サーバAは、プログラムXに対し、生成される更新時刻Tを埋め込んで生成する。そして、サーバAは、プログラムXの更新版を第1のクライアントBに送信すると共に、プログラムYの更新版を第2のクライアントCに送信する(ステップS128)。
この時、第1のクライアントBは、プログラムXのプロセス実行を終了するとともに、プログラムXの更新版の実行を行い(ステップS129)、動作を終了したプログラムXを削除する(ステップS130)。プログラムXの更新動作については、後に詳述する。
一方、第2のクライアントCは、サーバAより送信される(ステップS120参照)復元用のプログラムYを起動する(ステップS116)。復元用のプログラムYは、サーバAから送信される通知情報V及び特性情報V’に基づいて、典型的にはランダムに時系列的な順序を入れ替えられた中間データs1、…snである分割入替データU’を元の順序に並べ替えることで、実行結果Sを出力する(ステップS131)。
更に、第2のクライアントCは、プログラムYにより、サーバAから送信される特性情報V’に基づき、更新時刻Tを生成する(ステップS132)。この更新時刻Tは、便宜上異なる記載をしているものの、好適には、サーバAによりステップS126において生成されるものと同様の時刻を示す時刻情報である。そして、第2のクライアントCは、プログラムYのプロセス実行を終了するとともに、プログラムYの更新版の実行を行う(ステップS133)。
(2−2)第2動作例に係るデータ送受信システムの構成例
続いて、図7から図10を参照して、第2動作例に係るアプリケーションソフトウェアの保護方法が適用されるデータ送受信システムの基本的な構成を説明しながら、第2動作例における各処理の流れについてより詳細に説明する。
先ず、図7は、第2動作例に係るアプリケーションソフトウェアの保護方法が適用されるデータ送受信システム1の全体的な構成の一例を示す模式図である。図7に示されるように、データ送受信システム1は、夫々ネットワークを介して接続される、サーバA、プログラムXが実行される第1のクライアントB、プログラムYが実行される第2のクライアントCを含んで構成される。
第1のクライアントBは、データの処理及び送信を行うための端末であり、例えば、テレビ会議システムに用いられるストリームを送信するためのパーソナルコンピュータなどであって、サーバAから送信されるプログラムXを実行する。図7に示されるようにプログラムXは、当該プログラムXが不図示のCPU上で実行されることで実現される論理的な処理ブロックとして、分散配置部110とプログラム更新部120とを備える。
第2のクライアントCは、データの処理及び受信を行うための端末であり、例えば、第1のクライアントBから送信されるテレビ会議システムに用いられるストリーム等を受信するためのパーソナルコンピュータなどであって、サーバAから送信されるプログラムYを実行する。図7に示されるようにプログラムYは、当該プログラムYが不図示のCPU上で実行されることで実現される論理的な処理ブロックとして、分割入替復元部310と、更新時刻生成部320と、プログラム更新部330とを備える。
サーバAは、第1のクライアントB及び第2のクライアントCに対し、ネットワークを介して接続される管理用のサーバである。サーバAは、第1のクライアントBから送信される中間データ、通知情報V及び特性情報V’などを受信し、認証を行う認証部210と、プログラムX及びプログラムYを生成して、第1のクライアントB及び第2のクライアントCの夫々に送信するプログラム生成部220を備える。
続いて、各部のより詳細な構成と動作について、図8から図10を参照して説明する。
(2−2−1)第1のクライアントBの構成及び動作例
先ず、第1のクライアントBにおいて実行されるプログラムXの具体的な構成及び動作の例について、図8を参照して説明する。
分散配置部110は、入力データに対してアプリケーションソフトウェアによるエンコードなどの処理が実行された実行結果Sを、サーバAにおいて生成される分散配置情報Cに基づき複数の中間データs1、…snに分割すると共に、該複数の中間データs1、…snの元の実行結果Sにおける時系列的な順序を入れ替えた分割入替データU’を生成する。そして、生成された分割入替データU’を第2のクライアントCへと送信する。
また、分散配置部110は、上述した中間データs1、…snの夫々のデータ長及び入れ替え後の(つまり、分割入替データU’における)配置位置情報を含む通知情報Vを生成する。
また、分散配置部110は、生成される中間データs1、…snの夫々のパケットヘッダや、通知情報Vのパケットヘッダなどに、実行結果Sへの処理が実施される時刻を基準とする各中間データs1、…snの再生時刻に応じた時刻情報を埋め込む。尚、該時刻情報は、実行結果Sへの処理が実施される際の第1のクライアントBの内部時刻を基準とし、該時刻に各中間データs1、…snの再生時刻を加算した時刻を示すものなどである。このとき、中間データs1、…snの夫々のパケットヘッダに時刻情報が埋め込まれることから、該中間データs1、…snの順序を入れ替えて再配置した分割入替データU’は、複数の時刻情報を有する。以降、分割入替データU’に埋め込まれる複数の時刻情報を総じて時刻情報Tu’と、通知情報に埋め込まれる時刻情報を時刻情報Tvと記載する。
続いて、分散配置部110は、実行結果S及び分割入替データU’の少なくとも一方の特性を示す特性情報を含む特性情報V’を生成する。ここに、特性情報とは、例えば、上述した中間データs1、…snの夫々のサイズ情報、動き量情報及び各パケットヘッダに埋め込まれる時刻情報である。
尚、特性情報V’は、実行結果Sまたは分割入替データU’における中間データs1、…snの順序に基づくデータ構成となっている。典型的には特性情報V’は、分割ストリーム毎の特性情報(つまり、サイズ情報や動き量情報や各パケットヘッダに埋め込まれる時刻情報)が実行結果Sまたは分割入れ替え実行結果Sにおける中間データs1、…snの順序で配置されて成る。
そして、プログラムXは、分割入替データU’を第2のクライアントCに対して、通知情報V及び特性情報V’をサーバAに対して夫々ネットワークを介して送信する。
本実施形態におけるプログラムXは、サーバAより送信された後、所定のタイミングにおいて動作を開始し、第2のクライアントC及びサーバAとの通信を実施する。その後、プログラムXは、所定のタイミングにおいて通信を終了し、その後削除される(言い換えれば、自身を削除する)構成となっている。一方で、第1のクライアントBにおいては、後述するようにサーバAから所定のタイミングで送信されるプログラムXの更新版が動作を開始し、第2のクライアントC及びサーバAとの通信を実施する。
上述したように適宜更新されるプログラムXのうち、第n版のプログラムXを便宜上プログラムXnと記載し、以降、単にプログラムXと記載する場合は、更新されるプログラムXの各版を総じて示すものとする。同様に、プログラムYのうち、第n版のプログラムYを便宜上プログラムYnと記載し、以降、単にプログラムYと記載する場合は、更新されるプログラムYの各版を総じて示すものとする。
プログラム更新部120は、プログラムXの更新動作を実施するために、所定のタイミングにおいてプログラムXの各版の起動、通信の開始及び終了、並びに削除の各動作を制御する。例えば、プログラム更新部120は、プログラムXの次の版(例えば、プログラムXn+1)を受信し、該プログラムXn+1の起動を行うと共に、現在動作しているプログラムX(例えば、プログラムXn)の終了を行う。ここに、所定のタイミングとは、分割入替データU’に含まれる各中間データs1、…sn毎に埋め込まれる時刻情報と、後述されるサーバAにより生成されるとともにプログラムXに埋め込まれる更新時刻Tとに基づき決定されるタイミングを示す。
更新時刻Tは、複数通り(例えば、更新時刻T1、T2、…、Tnなど)生成され、夫々対応するプログラムXに埋め込まれるとともに、プログラムXの各版の動作を制御する際のタイミングを指定する。以降、プログラムXの第n版であるプログラムXnに埋め込まれる時刻情報Tを時刻情報Tnと記載し、単に時刻情報Tと記載する場合は、複数通り生成される時刻情報Tの夫々を総じて示すものとする。
具体的には、プログラム更新部120は、分散配置部110において生成された特性情報V’から、各中間データs1、…snのパケットヘッダに埋め込まれる時刻情報Tu’を順次取り出す。そして、取り出された時刻情報Tu’と、プログラムXnに埋め込まれる更新時刻Tnとの比較を行う。プログラムXnは、時刻情報Tu’が更新時刻Tnから所定の時刻Rc1だけ遡った時間(つまり、(Tn)−Rc1)と一致するタイミングにおいて、前版のプログラムXn−1を削除し、次版のプログラムXn+1を起動させる。また、プログラムXnは、時刻情報Tu’が更新時刻Tnと一致するタイミングにおいて、次版のプログラムXn+1のサーバA及び第2のクライアントCとの通信を開始し、プログラムXn自身の通信を終了する。
以上、説明したプログラムの更新動作及び該プログラムの更新タイミングの決定動作については、後に詳述する。
(2−2−2)サーバAの構成及び動作例
続いて、サーバAの各部の具体的な構成及び動作の例について図9を参照して説明する。
第1のクライアントBから送信された通知情報V及び特性情報V’は、先ず認証部210において、各データがプログラムXによって正当に生成されたものであるか否かが判定される。例えば、認証部210は、通知情報Vから取り出される時刻情報Tvと該通知情報Vを生成したプログラムXnの更新時間Tnとを比較する。そして、認証部210は、時刻情報Tvが更新時刻Tnから所定の期間M内であるか否かに基づいて、各データがプログラムXによって正当に生成されたものであるか否かを判定する。
判定の結果、通知情報V及び特性情報V’がプログラムXによって正当に生成されたものであると判定される場合、サーバAは、第2のクライアントCに対して通知情報V及び特性情報V’を送信する。また、このとき認証部210は、プログラム生成部220に対して、通知情報V及び特性情報V’を入力する。
プログラム生成部220は、プログラムX及びプログラムYを生成し、プログラムXを第1のクライアントBへと、プログラムYを第2のクライアントCへと夫々送信する。また、プログラム生成部220は、適宜プログラムX及びプログラムYの更新版を生成し、所定の更新時刻Tにおいて更新版のプログラムX及びプログラムYを送信する。
具体的には、プログラム生成部220は、特性情報V’に基づき、順次更新時刻Tを生成し、更新スケジュールとして蓄積する。尚、具体的な更新時刻Tの生成動作については、後述する。
更に、プログラム生成部220は、プログラムX及びプログラムYの各版を順次生成し、好適には生成された複数のプログラムを蓄積する。特にプログラム生成部220は、プログラムXの各版を生成する際に、上述のように生成された更新時刻Tを埋め込む。例えば、プログラムXの第n版であるプログラムXnには、n番目に生成される更新時刻である更新時刻Tnが埋め込まれる。
また、プログラム生成部220は、通知情報Vから時刻情報Tvを適宜取り出す。そして、取り出された時刻情報Tvと、更新スケジュールとして蓄積される更新時刻Tnとの比較を行う。プログラム生成部220は、時刻情報Tvが更新時刻Tnから所定の時刻Rc2だけ遡った時間(つまり、(Tn)−Rc2)と一致するタイミングにおいて、予め生成され、蓄積される次々版のプログラムXn+2及びプログラムYn+2の送信を行う。
次々版のプログラムXn+2及びプログラムYn+2の送信を終えた後、プログラム生成部220は、更新時刻Tnを更新スケジュールに蓄積される次の更新時刻Tn+1に更新する。そして、新たに設定された更新時刻から所定の時刻Rc2だけ遡った時間(つまり、(Tn+1)−Rs2)と、順次取り出される時刻情報Tvとの比較を行う。
(2−2−3)第2のクライアントCの構成及び動作例
次に、第2のクライアントCにおいて実行されるプログラムYの各部の具体的な構成及び動作の例について図10を参照して説明する。
分割入替復元部310は、サーバAから送信される通知情報V及び特性情報V’に基づき、第1のクライアントBから送信される分割入替データU’を並べ替えて再配置することで元の実行結果Sを復元する。
更新時刻生成部320は、特性情報V’の入力を受け、後述するプログラム更新部330において用いられる更新時刻Tを生成する。典型的には、更新時刻生成部320は、サーバAにおけるプログラム生成部220における更新時刻Tの生成動作と同様に、特性情報V’に基づき、順次更新時刻Tを生成し、更新スケジュールとして蓄積する。
プログラム更新部330は、プログラムXにおけるプログラム更新部120と同様に、プログラムYの更新動作を実施するために、所定のタイミングにおいてプログラムYの各版の起動、通信の開始及び終了並びに削除の各動作を制御する。
具体的には、プログラム更新部330は、分割入替復元部310から送信される特性情報V’から、各中間データs1、…snのパケットヘッダに埋め込まれる時刻情報Tu’を順次取り出して行く。そして、取り出された時刻情報Tu’と、更新時刻生成部320により生成される更新時刻Tnとの比較を行う。プログラムYnは、時刻情報Tu’が更新時刻Tnから所定の時刻Rc2だけ遡った時間(つまり、Tn−Rc2)と一致するタイミングにおいて、前版のプログラムYn−1を削除し、次版のプログラムYn+1を起動させる。また、プログラムYは、時刻情報Tu’が更新時刻Tnと一致するタイミングにおいて、次版のプログラムYn+1のサーバA及び第1のクライアントBとの通信を開始し、プログラムYn自身の通信を終了する。
尚、以上説明した各部の構成及び動作の例においては、実行結果Sより生成される分割入替データU’の全てを第1のクライアントBから第2のクライアントCへと送信する構成となっている。しかしながら、該分割入替データU’の一部または全部を抜き出して(つまり、中間データs1、…snの一部)、例えば通知情報Vに含めることで、サーバAに送信する構成としても良い。
(2−3)プログラムの更新動作例
アプリケーションソフトウェアの保護の第2動作例においては、上述したように、サーバAのプログラム生成部220またはプログラムYの更新時刻生成部320において、特性情報V’に基づいて生成される更新時刻Tに基づき、プログラムX及びプログラムYの更新のための時刻の判定が実施される。
第1のクライアントBにおいては、サーバAにより生成され且つ送信されるプログラムXの各版に複数の更新時刻Tの夫々が埋め込まれており、該更新時刻Tを参照して時刻の判定が行われる。具体的には、プログラムXのプログラム更新部120は、分割入替部110において生成される分割入替データU’から時刻情報Tu’を取り出す。そして、プログラムXは、時刻情報Tu’が更新時刻Tと一致しているか否かの判定を行い、両者が一致する場合に、プログラムXの更新動作を行う。
また、第2のクライアントCにおいては、サーバAから送信されるプログラムYに更新時刻Tが埋め込まれていないため、更新時刻生成部320の動作により、特性情報V’より更新時刻Tが生成される。また、プログラムYのプログラム更新部330は、第1のクライアントBから送信される分割入替データU’から時刻情報Tu’を取り出す。そして、プログラムYは、時刻情報Tu’が更新時刻Tと一致しているか否かの判定を行い、両者が一致する場合に、プログラムYの更新動作を行う。
サーバAのプログラム生成部220は、通知情報Vから取り出される時刻情報Tvと、特性情報V’から生成される更新時刻Tnとの比較結果に応じて、更新されるプログラムX及びプログラムYを送信する。
尚、サーバA、第1のクライアントB及び第2のクライアントCの夫々において取り出される時刻情報は便宜上異なる記載をしているが、同一の実行結果Sまたは分割入替データU’に基づいて生成される時刻情報であるため、夫々同様の時刻を示すものである。つまり、時刻情報Tu’と時刻情報Tvとは同一の値を取る時刻情報であり、特にリアルタイムで通信を行う場合には、同一のタイミングで同一の時刻を示し得る。
図11は、アプリケーションソフトウェアの保護の第2動作例における、プログラムXの更新に係る時系列的な処理を示すタイミングチャートである。ここに、図11を参照して、プログラムXnの動作中にプログラムXn+1へと更新する際の更新動作について説明する。
図11に示されるように、プログラムXは、サーバAにより生成及び送信され、第1のクライアントBにおいて存在する期間(図中白部)、実行され動作している期間(図中斜線部)及びサーバAとの通信を行っている期間(図中点部)の3つの期間を有する。尚、図示していないプログラムYについても同様である。
第1のクライアントBにより実行されるプログラムXnは、分割入替データU’より取り出した時刻情報Tu’が、前版のプログラムXn−1に埋め込まれている更新時刻Tn−1の時点から所定の準備時間Rc1だけ遡った時間(つまり、(Tn−1)−Rc1)と一致するタイミングで起動される。ここに、準備時間Rc1とは、第1のクライアントBにおけるプログラムXの起動から通信の開始までの内部処理などに要する準備時間である。その後、プログラムXnは、時刻情報Tu’が更新時刻Tn−1と一致するタイミングでサーバAとの通信を開始し、実行結果Sの分割及び入れ替え並びに生成されるデータの送信を行う。
同様に、第2のクライアントCにより実行されるプログラムYnも同様に通信を開始し、分割入替データU’、通知情報V及び特性情報V’の受信を受け、実行結果Sの復元処理を行う。具体的に、第2のクライアントCにより実行されるプログラムYnは、分割入替データU’より取り出した時刻情報Tu’が、更新時刻生成部320において生成された更新時刻Tn−1の時点から所定の準備時間Rc2だけ遡った時間(つまり、(Tn−1)−Rc2)と一致するタイミングで起動される。ここに、準備時間Rc2とは、第2のクライアントCにおけるプログラムYの起動から通信の開始までの内部処理などに要する準備時間である。その後、プログラムYnは、時刻情報Tu’が更新時刻Tn−1と一致するタイミングでサーバAとの通信を開始する。その結果、プログラムYnは、分割入替データU’、通知情報V及び特性情報V’の受信を受け、実行結果Sの復元処理を行う
続いて、サーバAのプログラム生成部220は、通知情報Vから取り出した時刻情報Tvが、プログラム生成部220内部で生成された更新時刻Tnから所定の準備時間Rsだけ遡った時間(つまり、(Tn)−Rs)と一致するタイミングで、プログラムXn+2及びYn+2(つまり、次々版プログラム)を第1のクライアントB及び第2のクライアントCに送信する。ここに、準備期間Rsとは、サーバAにおけるプログラムXの生成から第1のクライアントBにおける通信開始までの通信及びプログラムYの生成から第2のクライアントCにおける通信開始までの通信並びに内部処理などに要する準備時間である。
次に、第1のクライアントBは、時刻情報Tu’が、実行中のプログラムXnに埋め込まれている更新時刻Tnの時点から所定の準備時間Rc1だけ遡った時間(つまり、Tn−Rc1)と一致するタイミングで、次版のプログラムXn+1の起動を開始する。起動されたプログラムXn+1は、通信を開始するための内部処理を開始する。そして、時刻情報Tu’が更新時刻Tnと一致するタイミングで、プログラムXnは通信を終了し、動作を終了する。同時に、準備動作を終了したプログラムXn+1が通信を開始し、実行結果Sの分割及び入れ替え並びに生成されるデータの送信を行う。
同様に、第2のクライアントCは、時刻情報Tu’が、更新時刻生成部320において生成された更新時刻Tnと一致するタイミングで、次版のプログラムYn+1の起動を開始する。起動されたプログラムYn+1は、通信を開始するための内部処理を開始する。そして、時刻情報Tu’が更新時刻Tnと一致するタイミングで、プログラムYnは通信を終了し、動作を終了する。同時に、準備動作を終了したプログラムYn+1が通信を開始し、実行結果Sの復元処理を行う。
(2−4)更新時刻の生成動作例
サーバAのプログラム生成部220、または第2のクライアントCにより実行されるプログラムYの更新時刻生成部320における更新時刻Tの生成動作について図12及び図13を参照して説明する。以下では、特性情報V’に含まれる複数の時刻情報Tvの中から、分割入替データU’の特性に基づいて更新時刻Tを生成する方法について説明する。尚、以下の説明では、分割入替データU’の特性の一例として、分割入替データU’の分割入れ替え単位毎の(言い換えれば、中間データs1、…snの夫々の)サイズ情報、または動き量を用いて説明進める。
先ず、図12を参照して、分割入れ替え単位毎のサイズ情報を用いて更新時刻Tを生成する動作について説明する。図12は、更新時刻Tの生成動作におけるデータの処理工程を概念的に示す図である。
図12上部に示されるように、分割入替データU’は、所定のサイズを有する中間データs1、…snが夫々順序を入れ替えられて配置される構成となっている。図12では、実行結果Sにおいて、s1、s2、s3、s4、s5、s6の順序で配置されていた中間データを、s4、s3、s6、s2、s1、s5のように順序を入れ替えて配置した分割入替データU’について例示している。
また、図12の例では、プログラムXの分割入替部110は、生成された分割入替データU’の夫々の中間データs1、…snサイズ情報と、夫々のパケットヘッダに埋め込まれる時刻情報tを取り出して、特性情報V’を生成する。
サーバAのプログラム生成部220、または第2のクライアントCにより実行されるプログラムYの更新時刻生成部320は、先ず、特性情報V’の先頭の分割入れ替え単位の先頭パケットに埋め込まれる時刻情報tを更新時刻T1として生成する。次に、プログラム生成部220又は更新時刻生成部320は、特性情報V’の先頭からサイズ情報を順番に取り出すと共に、取り出したサイズ情報を順次加算する。その後、プログラム生成部220又は更新時刻生成部320は、サイズ情報の和が所定の閾値を越える場合(例えば、100)、次の分割入れ替え単位の先頭パケットに埋め込まれる時刻情報tを次の更新時刻T2として生成する。
このようにサイズ情報の和に基づく更新時刻Tの生成を繰り返すことで、リアルタイムな処理が必要な分割入替データU’(或いは、元の実行結果S)に対して、更新時刻Tを次々生成することが出来る。
続いて、図13を参照して、分割入れ替え単位毎の動き量を用いて更新時刻Tを生成する動作について説明する。図13は、図12と同様に更新時刻Tの生成動作におけるデータの処理工程を概念的に示す図である。尚、図13に示される例では、分割入替データU’の分割入れ替え単位として、実行結果Sを構成するフレームを採用している。
図13上部に示されるように、分割入替データU’は、実行結果Sがフレーム毎に分割され、夫々順序を入れ替えられて配置される構成となっている。プログラムXの分割入替部110は、生成された分割入替データU’の夫々のフレーム毎の各マクロブロックの動きベクトルの大きさを加算した和及び時刻情報tを取り出し、特性情報V’を生成する。
サーバAのプログラム生成部220、または第2のクライアントCにより実行されるプログラムYの更新時刻生成部320は、先ず、特性情報V’の先頭のフレームの先頭パケットに埋め込まれる時刻情報tを更新時刻T1として生成する。次に、プログラム生成部220又は更新時刻生成部320は、特性情報V’の先頭からフレーム毎の動きべクトルの和を順番に取り出して加算する。その後、プログラム生成部220又は更新時刻生成部320は、動きベクトルの和が所定の閾値を越える場合(例えば、1000)、次のフレームの先頭パケットに埋め込まれる時刻情報tを次の更新時刻T2として生成する。
このように動きベクトルの和に基づく更新時刻Tの生成を繰り返すことで、リアルタイムな処理が必要な分割入替データU’(或いは、元の実行結果S)に対して、更新時刻Tを次々生成することが出来る。
以上、説明したアプリケーションソフトウェアの保護の第2動作例によれば、エンコード用のアプリケーションを含むプログラムXと、復元用のプログラムYとが同時に各クライアントに送付される。このとき、実行結果Sから分割された複数の中間データs1、…snの夫々のヘッダには、時刻情報が埋め込まれているため、例えば、サーバA、第1のクライアントB及び第2のクライアントCの夫々において同期を取りながらリアルタイムでの実行結果Sの送受信も可能となる。例えば、実行結果Sとして映像ストリームを用いたリアルタイム配信などにも好適に対応出来、上述した第1動作例と同様の保護効果を得ることが可能となる。
また、本動作例のプログラムXとプログラムYとは、リアルタイムな通信を維持しつつ、更新されていく構成となっている。このため、ユーザが不正にアプリケーションソフトウェアを入手したとしても、所定の更新時刻T毎にプログラムX及びプログラムYは無効となる。このため、中間データs1、…snから実行結果Sを復元することが出来ず、アプリケーションソフトウェアの実行結果Sを不正な実行から保護することが可能となる。
更に、本動作例においては、プログラムX及びプログラムYの更新時刻Tは、実行結果S内のデータに依存して決定される。具体的には、更新時刻Tは、分割入替データU’に固有のサイズ情報や動きベクトル量などの特性情報V’に応じて生成されるものであり、つまり元の実行結果Sに固有のものとなる。従って、プログラムX及びプログラムYの夫々の更新時刻Tは、夫々のプログラムが同一の入力データに対して処理を実施している場合にのみ整合する。このため、仮にユーザが疑似サーバを設置して、前回取得したアプリケーションソフトウェアを繰り返し使用しようとしても、入力データが前回と異なると、成りすましによるプログラムYの更新時刻Tと、プログラムXの更新時刻Tとは異なり、分散配置された中間データを元の順序に復元することが出来ない。
特に、本動作例においては、プログラムXの更新時刻Tは、サーバAによって決定され、プログラムXの生成時にプログラム内部に埋め込まれ、他方で、プログラムYの更新時刻Tは、第2のクライアントCによって決定される。このとき、いずれの決定動作も実行結果Sまたは分割入替データU’に基づいて決定されるため、プログラムXとプログラムYとが同一のデータを扱っている場合以外では適切な更新が行われないことが保証される。
以上、説明した構成によれば、実行結果Sの送受信を行うクライアント間の接続が比較的長時間の維持される必要があるテレビ会議などのデータ送受信システムにおいても、実行結果Sの送受信中にプログラムX及びプログラムYが更新され続ける必要があるため、好適な保護を実現することが出来る。
加えて、サーバAにおいては、更新時刻Tnに先立って、更新用のプログラムXn+2(或いは、プログラムYn+2)が送信される。従って、リアルタイム処理が必要な実行結果Sの分割入れ替え及び復元を、遅延なく好適に行うことが出来るとの利点もある。
上述した例では、プログラムXは、実行結果Sより分割された中間データs1、…snを再配置することで分割入替データU’を生成し、第2のクライアントCへと送信しているが、プログラムXは、該分割入替データU’’の一部(つまり、複数の中間データs1、…snの一部)をサーバAに配置する構成としても良い。このとき、プログラムXの分散配置部110は、上述した第1動作例における中間データs1、…snの分散配置の態様と同様に、中間データs1、…snの一部をサーバAに配置すると共に、他の一部を再配置することで分割入替データU’を生成しても良い。また、その他何らかの方法により中間データs1、…snの分散配置を実現しても良い。このように構成した場合であっても、上述した第2動作例と同様の効果を得ることが可能となる。
上述した例では、プログラムXが実行されるクライアントBと、プログラムYが実行されるクライアントCとを含むデータの送受信システムにおける動作例について説明しているが、同一のクライアント(例えば、クライアントB)においてプログラムX及びプログラムYが実行される構成であっても良い。この場合、サーバAはプログラムX及びプログラムYの両方をクライアントBに送信し、クライアントBにおいて各プログラムを実行すれば、上述した第2動作例と同様の効果を得ることが可能となる。
本発明は、上述した実施例に限られるものではなく、請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴なうアプリケーションソフトウェアの保護方法及びストリーム送受信システムなどもまた本発明の技術的範囲に含まれるものである。
A サーバ、
B 第1のクライアント、
C 第2のクライアント、
S アプリケーションソフトウェアの実行結果、
U’ 分割入替データ、
X 第1のプログラム、
Y 第2のプログラム、
110 分割入替部、
120、330 プログラム更新部、
210 認証部、
220 プログラム生成部、
310 分割入替復元部、
320 更新時刻生成部。

Claims (15)

  1. ネットワークを介してサーバから送付される第1のプログラムをクライアント上で起動することで実行されるアプリケーションソフトウェアの保護方法であって、
    前記クライアント上で実行された前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置工程と、
    分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信工程と、
    前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを前記サーバで生成するプログラム生成工程と、
    前記第2のプログラムを前記クライアントに送信する第2送信工程と
    を備えることを特徴とするアプリケーションソフトウェアの保護方法。
  2. 前記分散配置情報を、前記クライアントの信頼度情報、及び前記クライアントから通知される希望秘匿度の情報に基づいて前記サーバで生成し、該生成した分散配置情報を前記クライアントに送付する分散配置情報通知工程を含むことを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  3. 前記プログラム生成工程は、前記通知情報が前記クライアントから送信された時刻が、前記クライアントを認証した時刻から一定時間内であるとき、前記第2のプログラムを生成することを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  4. 前記第2のプログラムは、前記クライアントで起動された前記第1のプログラムの終了を確認した後、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成することを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  5. 前記第1送信工程は、前記通知情報と共に、前記アプリケーションソフトウェアの実行結果の特性を示す特性情報を前記サーバへ送信し、
    前記特性情報に基づいて決定される更新時刻に基づいて、前記第1のプログラム及び前記第2のプログラムを更新する第1更新工程を更に備えることを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  6. 前記アプリケーションソフトウェアの実行結果は、時系列のデータを有し、
    前記分散配置工程は、前記複数の中間データの夫々に、前記アプリケーションソフトウェアの実行結果内での時系列に基づく時刻情報を埋め込み、
    前記第1送信工程は、前記時刻情報を更に含む前記通知情報と、前記時刻情報を更に含む前記特性情報とを前記サーバへ送信し、
    前記第1更新工程は、前記特性情報に含まれる前記時刻情報に基づいて前記更新時刻を決定することを特徴とする請求項5に記載のアプリケーションソフトウェアの保護方法。
  7. 前記サーバは、前記特性情報に基づいて決定される更新時刻を示す情報が埋め込まれて生成される前記第1のプログラムを前記クライアントに送信し、
    前記第1更新工程は、前記複数の中間データの夫々に埋め込まれた前記時刻情報と、前記第1のプログラムに埋め込まれている前記更新時刻を示す情報とを比較することで、前記第1のプログラムを更新する第2更新工程を含むことを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  8. 前記第1更新工程は、前記複数の中間データの夫々に埋め込まれた前記時刻情報と前記特性情報に基づいて決定される前記更新時刻とを比較することで、前記第2のプログラムを更新する第3更新工程を含むことを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  9. 前記サーバは、前記更新時刻に先立って、更新予定の前記第1のプログラム及び前記第2のプログラムを送信することを特徴とする請求項5に記載のアプリケーションソフトウェアの保護方法。
  10. 前記第1送信工程は、前記特性情報として、前記アプリケーションソフトウェアの実行結果における単位時間あたりの情報量を示す情報を含む特性情報を生成し、
    前記第1更新工程は、前記特性情報に含まれる前記時刻情報及び前記情報量を示す情報に基づいて前記更新時刻を決定することを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  11. 前記第1送信工程は、前記特性情報として、前記アプリケーションソフトウェアの実行結果における単位時間あたりの動作量を示す情報を含む特性情報をサーバへ送信し、
    前記第1更新工程は、前記特性情報に含まれる前記時刻情報及び前記動作量を示す情報に基づいて前記更新時刻を決定することを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  12. 前記クライアントは、前記第1のプログラムが実行される第1のクライアントと、前記第2のプログラムが実行される第2のクライアントを含み、
    前記分散配置工程は、前記複数の中間データを前記サーバと前記第2のクライアントとに分散配置し、
    前記第2送信工程は、前記第2のプログラムを前記第2のクライアントへ送信することを特徴とする請求項1から11のいずれか一項に記載のアプリケーションソフトウェアの保護方法。
  13. クライアントと、前記クライアント上で実行されるアプリケーションソフトウェアを含む第1のプログラムを、ネットワークを介して前記クライアントへ送信可能なサーバとを備え、
    前記クライアントは、前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置手段と、
    分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信手段とを備え、
    前記サーバは、前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを生成するプログラム生成手段と、
    前記第2のプログラムを前記クライアントに送信する第2送信手段とを備えることを特徴とするストリーム送受信システム。
  14. 前記クライアントは、前記第1のプログラム及び前記第2のプログラムを更新する更新手段を更に備え、
    前記第1送信手段は、前記通知情報と共に、前記アプリケーションソフトウェアの実行結果の特性を示す特性情報を前記サーバへ送信し、
    前記更新手段は、前記特性情報に基づいて決定される更新時刻に基づいて、前記第1のプログラム及び前記第2のプログラムを更新することを特徴とする請求項13に記載のストリーム送受信システム。
  15. 前記クライアントは、前記第1のプログラムを実行する第1のクライアントと、前記第2のプログラムを実行する第2のクライアントとを備え、
    前記第1のクライアントは、前記分散配置手段と前記第1送信手段と前記更新手段とを備え、
    前記第2のクライアントは、前記更新手段を備え、
    前記第2送信手段は、前記第2のプログラムを前記第2のクライアントに送信することを特徴とする請求項14に記載のストリーム送受信システム。
JP2010542126A 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム Expired - Fee Related JP5333458B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010542126A JP5333458B2 (ja) 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008316808 2008-12-12
JP2008316808 2008-12-12
PCT/JP2009/070701 WO2010067846A1 (ja) 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム
JP2010542126A JP5333458B2 (ja) 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム

Publications (2)

Publication Number Publication Date
JPWO2010067846A1 JPWO2010067846A1 (ja) 2012-05-24
JP5333458B2 true JP5333458B2 (ja) 2013-11-06

Family

ID=42242832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010542126A Expired - Fee Related JP5333458B2 (ja) 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム

Country Status (3)

Country Link
US (1) US8402549B2 (ja)
JP (1) JP5333458B2 (ja)
WO (1) WO2010067846A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100990998B1 (ko) * 2008-09-23 2010-11-01 한국전자통신연구원 디지털 위성 통신 시스템에서 전송 데이터의 캡슐화 방법 및 데이터 전송 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311136A (ja) * 1999-04-28 2000-11-07 Nec Corp 遠隔操作制御方法および遠隔操作用コンピュータシステム並びに遠隔操作制御用プログラムを記憶した記憶媒体
JP2002055727A (ja) * 2000-08-09 2002-02-20 Fuji Xerox Co Ltd ソフトウェア使用料課金システム及びソフトウェア使用料課金方法
JP2002062946A (ja) * 2000-08-16 2002-02-28 Fuji Xerox Co Ltd ソフトウェア使用料課金システム、ソフトウェア使用料課金方法、ソフトウェア評価システム、ソフトウェア評価方法
JP2003333039A (ja) * 2002-05-17 2003-11-21 Yamatake Corp クライアント装置、サーバ装置、コマンド処理結果取得方法、コマンド処理結果提供方法、コマンド処理結果取得プログラム及びコマンド処理結果提供プログラム
JP2004289684A (ja) * 2003-03-24 2004-10-14 Fuji Xerox Co Ltd ジョブ処理装置、ジョブ処理方法およびプログラム
JP2007086957A (ja) * 2005-09-21 2007-04-05 Felica Networks Inc 情報処理システム,クライアント装置,サーバ装置,情報処理方法,およびコンピュータプログラム
JP2008198016A (ja) * 2007-02-14 2008-08-28 Toshiba Corp シンクライアントシステム、装置及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
JP3853140B2 (ja) 2000-08-08 2006-12-06 株式会社シーイーシー ソフトウェア管理システム及び課金方法
JP2003345662A (ja) 2002-05-28 2003-12-05 Stark Co Ltd コンテンツデータ再生装置、コンテンツデータ配信サーバ、コンテンツデータ管理システム及びコンテンツデータ再生プログラム
US8078944B2 (en) * 2007-04-19 2011-12-13 Cousins Robert E Systems, methods and computer program products including features for coding and/or recovering data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311136A (ja) * 1999-04-28 2000-11-07 Nec Corp 遠隔操作制御方法および遠隔操作用コンピュータシステム並びに遠隔操作制御用プログラムを記憶した記憶媒体
JP2002055727A (ja) * 2000-08-09 2002-02-20 Fuji Xerox Co Ltd ソフトウェア使用料課金システム及びソフトウェア使用料課金方法
JP2002062946A (ja) * 2000-08-16 2002-02-28 Fuji Xerox Co Ltd ソフトウェア使用料課金システム、ソフトウェア使用料課金方法、ソフトウェア評価システム、ソフトウェア評価方法
JP2003333039A (ja) * 2002-05-17 2003-11-21 Yamatake Corp クライアント装置、サーバ装置、コマンド処理結果取得方法、コマンド処理結果提供方法、コマンド処理結果取得プログラム及びコマンド処理結果提供プログラム
JP2004289684A (ja) * 2003-03-24 2004-10-14 Fuji Xerox Co Ltd ジョブ処理装置、ジョブ処理方法およびプログラム
JP2007086957A (ja) * 2005-09-21 2007-04-05 Felica Networks Inc 情報処理システム,クライアント装置,サーバ装置,情報処理方法,およびコンピュータプログラム
JP2008198016A (ja) * 2007-02-14 2008-08-28 Toshiba Corp シンクライアントシステム、装置及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNH200900181010; 鈴木、外2名: '映像ソリューション向けメディア処理技術' FUJITSU 第60巻、第1号, 20090109, 第104-109ページ, 富士通株式会社 *
JPN6013031031; 鈴木、外2名: '映像ソリューション向けメディア処理技術' FUJITSU 第60巻、第1号, 20090109, 第104-109ページ, 富士通株式会社 *

Also Published As

Publication number Publication date
WO2010067846A1 (ja) 2010-06-17
JPWO2010067846A1 (ja) 2012-05-24
US8402549B2 (en) 2013-03-19
US20110231938A1 (en) 2011-09-22

Similar Documents

Publication Publication Date Title
CN105247529B (zh) 在目录服务之间同步凭证散列
CN102667771B (zh) 通过数据比较自动检验冗余内容到通信设备的存储的系统和方法
EP3350957B1 (en) Entropy sharing in a large distributed system
JP4955181B2 (ja) 安全なコラボレーティブ・トランザクションを管理する方法及び装置
US9817953B2 (en) Systems and methods for establishing and using distributed key servers
JP2017519269A5 (ja)
CN1878170A (zh) 用于管理会话标识符的方法和设备
JP5574402B2 (ja) 分散型秘匿化データ統合装置、分散型秘匿化データ統合方法および分散型秘匿化データ統合用プログラム
JP6582445B2 (ja) シンクライアントシステム、接続管理装置、仮想マシン稼働装置、方法、および、プログラム
KR101407373B1 (ko) 서버와 클라이언트 시스템 간의 통신 세션에서 상태 추적메커니즘을 수행하는 방법
CN104168320B (zh) 一种用户数据分享的方法和系统
Ghasemi et al. Asynchronous coded caching
CN110176988B (zh) 保证冗余执行体加密行为一致的装置及方法
JP5333458B2 (ja) アプリケーションソフトウェアの保護方法及びストリーム送受信システム
CN110839035A (zh) 路径访问控制的方法、装置、计算机设备及存储介质
US8817988B1 (en) Variable epoch scheduler for proactive cryptography systems
CN108898026A (zh) 数据加密方法和装置
CN109951735B (zh) 一种视频播放地址解析获取方法、系统及介质
CN115865461B (zh) 一种高性能计算集群中分发数据的方法和系统
CN103209161A (zh) 一种访问请求处理方法及装置
CN114463129A (zh) 一种基于用户标识的全局标识生成方法及设备
JP2014175757A (ja) 分割要素の結合による電子透かしを生成する電子透かし処理システム、サーバ、プログラム及び方法
JP5621250B2 (ja) アプリケーションソフトウェアの保護方法及びストリームの編集処理システム
CN109951452B (zh) 一种处理密码学任务的方法及装置
CN114531455A (zh) 基于边缘协助的多云安全存储方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130715

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees