JP4208085B2 - アプリケーションプログラムの制御方法およびその装置 - Google Patents

アプリケーションプログラムの制御方法およびその装置 Download PDF

Info

Publication number
JP4208085B2
JP4208085B2 JP2005249157A JP2005249157A JP4208085B2 JP 4208085 B2 JP4208085 B2 JP 4208085B2 JP 2005249157 A JP2005249157 A JP 2005249157A JP 2005249157 A JP2005249157 A JP 2005249157A JP 4208085 B2 JP4208085 B2 JP 4208085B2
Authority
JP
Japan
Prior art keywords
application program
memory space
data
unit
function
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
JP2005249157A
Other languages
English (en)
Other versions
JP2007065846A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2005249157A priority Critical patent/JP4208085B2/ja
Priority to US11/510,970 priority patent/US7600231B2/en
Priority to CNB2006101219971A priority patent/CN100468343C/zh
Publication of JP2007065846A publication Critical patent/JP2007065846A/ja
Application granted granted Critical
Publication of JP4208085B2 publication Critical patent/JP4208085B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Description

本発明は、アプリケーションプログラムの制御方法およびその装置に関する。特に、本発明は、アプリケーションプログラムからオペレーティングシステムに対する関数呼び出しを制御する制御方法およびその装置に関する。
従来、オペレーティングシステムは、システム管理者等により設定された情報に基づいて、アプリケーションプログラムの動作を制御する。例えば、オペレーティングシステムは、そのアプリケーションプログラムを起動させた利用者の権限に応じ、特定のファイルに対するアクセスを禁止する。また、オペレーティングシステムは、各々のアプリケーションプログラムに割り当てるCPUの計算時間を決定する。
しかしながら、オペレーティングシステムによる制御は、オペレーティングシステムの設計者により予め定められた種類に限定される。このため、オペレーティングシステムとは異なる制御を実現するためには、既存のアプリケーションプログラムを改造したり、オペレーティングシステムを改造する必要があった。たとえ改造ができたとしても、その作業には膨大な開発時間や開発費用を要し、また、プログラムの保守性を低下させる問題があった。
これに対して、従来、既存のオペレーティングシステムを改造することなく、ファイルに対するアクセス制御機能を拡張する技術が提案されている(特許文献1を参照。)。この技術において、アプリケーションプログラムは、リソース管理プログラムを経由してオペレーティングシステムに操作要求を送る。リソース管理プログラムは、操作要求を捕捉すると、その操作要求によって指定されるコンピュータリソースを特定し、それに対するアクセス権限があるか否かを判定する。アクセス権限が無ければ、当該操作要求を拒否する。この技術によれば、オペレーティングシステムによりアクセスが許可されている場合であっても、それとは無関係に独自のアクセス権限を定めることができる。
特開2003−44297号公報
上記の技術においては、ユーザおよびコンピュータリソースの組に対応付けて、そのリソースに対するアクセスの可否が定められている。アクセスの可否は、管理者等により静的に定められる。このため、プログラムの処理進行に伴って変化する情報に基づいて、アクセスの可否を変更することはできなかった。例えば、あるデータに対するアクセスを、そのデータの内容や属性、さらにはそのデータを現在どのアプリケーションプログラムが保持・利用しているのかに基づいて許可または禁止することはできなかった。
そこで本発明は、上記の課題を解決することのできるアプリケーションプログラムの制御方法およびその装置を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、オペレーティングシステムを動作させ、前記オペレーティングシステム上で第1および第2アプリケーションプログラムを含む複数のアプリケーションプログラムを並行に動作させる情報処理装置であって、前記情報処理装置上で監視プログラムを動作させることにより実現され、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する、前記第1および第2アプリケーションプログラムの何れもがアクセス可能なメモリ空間である共有メモリ空間に対してデータを記録する関数の呼び出しを検出したことに応じ、当該データに対して、当該データが前記第1アプリケーションプログラムからコピーされた旨を示す電子透かしを付加する監視部と、を備える情報処理装置、当該情報処理装置の制御方法、および、当該情報処理装置を制御するプログラムを提供する。
また、本発明の第2の形態においては、オペレーティングシステムを動作させ、前記オペレーティングシステム上で第1および第2アプリケーションプログラムを含む複数のアプリケーションプログラムを並行に動作させる情報処理装置であって、前記情報処理装置上で監視プログラムを動作させることにより実現され、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する、前記第1および第2アプリケーションプログラムの何れもがアクセス可能なメモリ空間である共有メモリ空間に対してデータを記録する関数の呼び出しを検出したことに応じ、当該データに対して、当該データが前記第1アプリケーションプログラムからコピーされた旨を示す電子透かしを付加する監視部と、前記情報処理装置上で判断プログラムを動作させることにより実現され、前記共有メモリ空間に記録されているデータが前記電子透かしを含まないことを条件に、当該データのコピーを禁止する判断部と、前記情報処理装置上で制御プログラムを動作させることにより実現され、前記第2アプリケーションプログラムから前記オペレーティングシステムに対する、前記共有メモリ空間からデータを読み出す関数の関数呼び出しを検出したことに応じ、前記判断部により当該データのコピーが禁止されたことを条件に、当該関数呼び出しの処理を禁止する制御部と、を備える情報処理装置、当該情報処理装置の制御方法、および、当該情報処理装置を制御するプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、既存のオペレーティングシステムを変更することなく、アプリケーションプログラムの動作をこれまでよりも詳細に制御することができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、情報処理装置10の構成を示す。情報処理装置10は、本発明に係る上位機能を提供する上位プログラムの一例として、オペレーティングシステム60を動作させる。そして、情報処理装置10は、オペレーティングシステム60上で複数のアプリケーションプログラムを並行に動作させる。具体的には、情報処理装置10は、第1下位機能を提供する第1下位プログラムの一例である第1アプリケーションプログラムを第1メモリ空間100において動作させる。このプログラムをアプリケーションプログラム110とする。また、情報処理装置10は、第2下位機能を提供する第2下位プログラムの一例である第2アプリケーションプログラムを第2メモリ空間200において動作させる。このプログラムをアプリケーションプログラム210とする。
本実施例における情報処理装置10は、アプリケーションプログラム110からオペレーティングシステム60に対する関数呼び出しを監視し、その監視結果に基づいてアプリケーションプログラム210の動作を制御することを目的とする。
以降、本実施例においては、アプリケーションプログラム110の関数呼び出しを監視した監視結果に基づいてアプリケーションプログラム210の動作を制御する機能を代表して説明する。これに加えて、情報処理装置10は、更に、アプリケーションプログラム210の関数呼び出しを監視した監視結果に基づいてアプリケーションプログラム110の動作を制御してもよい。この場合、情報処理装置10は、監視部120および変更部140を第2メモリ空間200において更に動作させ、制御部220、判断部230および変更部250を第1メモリ空間100において更に動作させる。これによって追加される各部材の機能は、図1中の各部材の機能と略同一であるので説明を省略する。
情報処理装置10は、後述するメモリ1020中に、第1メモリ空間100と、共有メモリ空間150と、第2メモリ空間200とを有する。情報処理装置10は、第1メモリ空間100において、アプリケーションプログラム110と、監視部120と、DLL130と、変更部140とを動作させる。変更部140は、アプリケーションプログラム110の動作開始に応じ、アプリケーションプログラム110からオペレーティングシステム60に対する関数呼び出しの呼び出し先アドレスを、監視部120を実現する監視プログラムのアドレスに変更する。変更される呼び出し先アドレスは、オペレーティングシステム60により提供される複数の関数のうち、処理内容を監視する対象として予め定められた関数の呼び出し先アドレスである。当該予め定められた関数は、オペレーティングシステム60によりDLL130として提供される。
監視部120は、第1メモリ空間100上においてアプリケーションプログラム110と共に動作する監視プログラムにより実現される。そして、監視部120は、アプリケーションプログラム110からオペレーティングシステム60に対する関数呼び出し、または、アプリケーションプログラム110およびオペレーティングシステム60間で送受信されるメッセージを監視し、共有メモリ空間150にその監視結果を記録する。処理の詳細内容として、監視部120は、アプリケーションプログラム110から呼び出されて処理を開始し、関数呼び出しの引数または戻り値を監視結果として共有メモリ空間150に記録し、その引数によりDLL130に対する関数呼び出しを実行する。
これに代えて、監視結果は、監視部120によりDLL130に引数などとして受け渡され、監視部120からDLL130を経由して共有メモリ空間150に記録されてもよい。DLL130は、監視部120から呼び出されて処理を開始し、監視部120により指定された引数により予め定められた処理を行いその処理結果を戻り値として監視部120に返す。また、DLL130は、その処理の内容に応じて共有メモリ空間150にデータを記録してもよい。例えば、データをクリップボードにコピーする関数が呼び出されたことに応じ、DLL130によりデータが共有メモリ空間150に記録されると共に、監視部120によりアプリケーションプログラム110の識別情報が共有メモリ空間150に記録される。
情報処理装置10は、第2メモリ空間200において、アプリケーションプログラム210と、制御部220と、判断部230と、DLL240とを動作させる。変更部250は、アプリケーションプログラム210の動作開始に応じ、アプリケーションプログラム210からオペレーティングシステム60に対する関数呼び出しの呼び出し先アドレスを、制御部220を実現する制御プログラムのアドレスに変更する。変更される呼び出し先アドレスは、オペレーティングシステム60により提供される複数の関数のうち、処理を制御する対象として予め設定された関数の呼び出し先アドレスである。当該予め定められた関数は、オペレーティングシステム60によりDLL240として提供される。
制御部220は、第2メモリ空間200上においてアプリケーションプログラム210と共に動作する制御プログラムにより実現される。そして、制御部220は、監視部120による監視結果に基づいて、アプリケーションプログラム210からオペレーティングシステム60に対する関数呼び出し、若しくは、アプリケーションプログラム210およびオペレーティングシステム60間のメッセージ送受信の処理を変更または禁止する。処理の詳細内容として、制御部220は、アプリケーションプログラム210から呼び出された処理を開始し、監視結果を共有メモリ空間150から読み出し、読み出したその監視結果に基づいて、呼び出された引数とは異なる引数によりオペレーティングシステム60に対する関数呼び出しを実行し、または、当該関数呼び出しを実行しないでアプリケーションプログラム210に処理を戻す。
実際には、監視結果は、DLL240により制御部220に戻り値などとして受け渡され、共有メモリ空間150からDLL240を経由して制御部220に受け渡されてもよい。即ちこの場合、制御部220は、判断部230中の関数を呼び出すことにより共有メモリ空間150から監視結果を取得して、取得したその監視結果に基づいて、アプリケーションプログラム210から呼び出された関数呼び出しを実行するか否かを判断してもよい。
判断部230は、共有メモリ空間150に記録された監視結果に基づいて、制御部220による関数呼び出しまたはメッセージの送受信を禁止すべきか否かを判断する。例えば、判断部230は、ポリシーマネージャ50から取得した識別情報により識別されるアプリケーションプログラムが、予め定められた特定のアプリケーションプログラムであることを条件に、当該関数呼び出しまたはメッセージの送受信を禁止すると判断してもよい。
ポリシーマネージャ50は、第1メモリ空間100および第2メモリ空間200とは異なるメモリ空間で動作し、記録部55を有する。記録部55は、アプリケーションプログラムの処理を制御するための各種の情報を記録する。ポリシーマネージャ50は、記録部55に記録された情報に基づいて、監視部120およびDLL130を制御する。例えば、記録部55は、データのコピーを禁止するコピー元およびコピー先のアプリケーションプログラムの組を記録してもよい。そして、ポリシーマネージャ50は、そのアプリケーションプログラムの組を示す情報を判断部230に提供する。
図2は、共有メモリ空間150のデータ構造の一例を示す。共有メモリ空間150は、本発明に係る共有メモリ空間の一例であると共に、本発明に係る制御メモリ空間としての役割を果たす。即ち、共有メモリ空間150に対しては、アプリケーションプログラム110およびアプリケーションプログラム210の何れもがアクセス可能であり、さらに、監視部120および制御部220の何れもがアクセス可能である。
具体的には、図2(a)に示すように、共有メモリ空間150は、アプリケーションプログラム110から取得したデータに対応付けて、監視部120による監視結果を格納する。例えば、監視部120は、アプリケーションプログラム110が共有メモリ空間150に対してデータを記録する関数呼び出しを検出したことに応じ、そのデータに対応付けて、アプリケーションプログラム110を識別する識別情報を監視結果として共有メモリ空間150に記録してもよい。この場合、共有メモリ空間150には、監視結果としてアプリケーションプログラム110の識別情報が記録される。ここでアプリケーションプログラムの識別情報とは、そのアプリケーションプログラムを他のアプリケーションプログラムから区別する番号である。例えば、ワードプロセッサの識別情報は「3415」番であり、コンピュータ支援設計(CAD)のアプリケーションプログラムの識別情報は「3435」番である。
また、監視部120は、アプリケーションプログラム110が共有メモリ空間150に対してデータを記録する関数呼び出しを検出したことに応じ、そのデータに対応付けて、そのデータがアプリケーションプログラム110による記録されたことを認証させる電子署名を記録してもよいし、そのデータを暗号化してもよい。この場合、共有メモリ空間150には、監視結果としてその電子署名または暗号化されたデータが記録される。また、監視部120は、アプリケーションプログラム110が共有メモリ空間150に対してデータを記録する関数呼び出しを検出したことに応じ、そのデータに対応付けてその関数呼び出しの回数を記録してもよい。この場合、共有メモリ空間150には、監視結果としてその回数が記録される。関数呼び出しの回数とは、例えば、現在時刻から遡った所定の期間内にその関数が呼び出された回数である。例えば、過去の15分間に15回その関数が呼び出されていれば、その回数である15が記録される。
また、監視部120は、アプリケーションプログラム110が共有メモリ空間150に対してデータを記録する関数呼び出しを検出したことに応じ、そのデータに対応付けてそのデータのサイズを記録してもよい。この場合、共有メモリ空間150には、監視結果としてそのデータのサイズが記録される。データのサイズとは、その関数呼び出しにより共有メモリ空間150に記録されるデータのサイズである。これに代えて、データのサイズとは、過去の予め定められた期間に複数回に渡って記録されたデータの合計サイズであってもよい。
更に、監視部120は、アプリケーションプログラム110が共有メモリ空間150に対してデータを記録する関数呼び出しを検出したことに応じ、そのデータに対して、そのデータがアプリケーションプログラム110からコピーされた旨を示す電子透かしを付加してもよい。これにより、このデータが他のアプリケーションプログラムにコピーされた場合であっても、そのデータの出所を知ることができる。
また、図2(b)に示すように、共有メモリ空間150は、オペレーティングシステム60上で現在起動中のアプリケーションプログラムの識別情報を記録してもよい。この識別情報は、後述の監視部320によって管理される。例えば、監視部320は、アプリケーションプログラムを起動させる関数の呼び出しを検出して、当該関数によって起動されるアプリケーションプログラムの識別情報を監視結果として共有メモリ空間150に記録してもよい。また、監視部320は、アプリケーションプログラムを終了させる関数の呼び出しを検出して、当該関数によって終了されるアプリケーションプログラムの識別情報を当該監視結果から削除してもよい。
なお、共有メモリ空間150は、上記各種の監視結果をファイルとして記録してもよいし、変数の数値といったデータとして記録してもよい。また、共有メモリ空間150は、監視結果をデータのファイルに含めて記録してもよい。また、共有メモリ空間150は、アプリケーションプログラム110および監視部120の何れからもアクセス可能な領域であればよく、メインメモリのみならずハードディスクドライブや光磁気ディスクなどの記録媒体に設けられてもよい。
図3は、記録部55のデータ構造の一例を示す。図3(a)に示すように、記録部55は、データのコピーを禁止するコピー元およびコピー先のアプリケーションプログラムの組を記録している。即ち図3(b)に示すように、識別情報が3412のCADツール1から、識別情報が1564のメーラー1へのデータのコピーは禁止される(図中の矢印を参照。)。一方で、識別番号3415のワードプロセッサから、識別番号が1564のメーラー1へのデータのコピーは許可される。
図4は、情報処理装置10が更に動作させるプログラムの構成を示す。情報処理装置10は、アプリケーション起動用プログラム310、監視部320、DLL330、および、変更部340を更に動作させる。変更部340は、アプリケーション起動用プログラム310からDLL330に対する関数呼び出しの呼び出し先アドレスを、監視部320を実現する監視プログラムのアドレスに変更する。アプリケーション起動用プログラム310は、他のアプリケーションプログラムを起動させる起動プログラムである。アプリケーション起動用プログラム310は、利用者からアプリケーションプログラムの起動を指示されたことに応じ、アプリケーションプログラムを起動するためのオペレーティングシステム60中の関数を呼び出す。この関数は、オペレーティングシステム60中のDLL330により提供される。
監視部320は、アプリケーションプログラムを起動させる関数の呼び出しを検出して、当該関数によって起動されるアプリケーションプログラムの識別情報を監視結果として共有メモリ空間150に記録する。具体的には、監視部320は、アプリケーション起動用プログラム310から呼び出されて処理を開始し、関数呼び出しの引数からその識別情報を取得して共有メモリ空間150に記録する。そして、監視部320は、その引数によりDLL330中の関数を呼び出す。DLL330は、監視部320から呼び出されて処理を開始し、アプリケーションプログラムを起動させる。
また、好ましくは、情報処理装置10は、スレッド制御用アプリケーション410、制御部420、判断部430、DLL440、および、変更部450を動作させる。変更部450は、スレッド制御用アプリケーション410からDLL440に対する関数呼び出しの呼び出し先アドレスを、制御部420を実現する制御プログラムのアドレスに変更する。スレッド制御用アプリケーション410は、スレッドを制御するアプリケーションプログラムである。スレッド制御用アプリケーション410は、利用者からスレッドを制御する指示を受けたことに応じ、スレッドを制御するためのオペレーティングシステム60中の関数を呼び出す。この関数は、オペレーティングシステム60中のDLL440により提供される。
制御部420は、スレッド制御用アプリケーション410から何れかのスレッドを終了させるためにオペレーティングシステム60上の関数を呼び出す処理を禁止する。具体的には、まず、制御部420は、スレッド制御用アプリケーション410から呼び出されて処理を開始する。そして、判断部430は、スレッド制御用アプリケーション410から制御部420を呼び出す関数呼び出しが、変更プログラムを実現するスレッドを終了させる処理の呼び出しか否かを判断する。当該スレッドを終了させる処理の呼び出しであることを条件に、制御部420は、DLL440を呼び出すことなくスレッド制御用アプリケーション410に処理を戻す。
これにより、変更部140、変更部250、変更部340、および、変更部450を実現するスレッドが終了してしまうことを防ぐことができる。
図5は、情報処理装置10の全体動作を示すフローチャートである。情報処理装置10は、監視プログラムおよび制御プログラムなどの、各種のプログラムをメモリ空間にロードする(S500)。具体的には、情報処理装置10は、アプリケーションプログラム110からオペレーティングシステム60に対する関数呼び出しを監視させる監視プログラムを、アプリケーションプログラム110と共に第1メモリ空間100で動作させる。この監視プログラムによって、情報処理装置10は監視部120として機能する。また、情報処理装置10は、監視プログラムによる監視結果に基づいてアプリケーションプログラム210からオペレーティングシステム60に対する関数呼び出しを禁止または変更させる制御プログラムを、アプリケーションプログラム210と共に第2メモリ空間200で動作させる。この制御プログラムによって、情報処理装置10は制御部220として機能する。また、情報処理装置10は、アプリケーション起動用プログラム310からオペレーティングシステム60に対する関数呼び出しを監視させる監視プログラムを動作させてもよい。更に、情報処理装置10は、スレッド制御用アプリケーション410からオペレーティングシステム60に対する関数呼び出しを制御する制御プログラムを動作させてもよい。
制御プログラムおよび監視プログラムをメモリ空間にロードさせるためには、例えば、これらのプログラムのオブジェクトファイル(例えば、DLL)を、オペレーティングシステム標準のDLLとして登録すればよい。一例として、Windows(登録商標)においては、これらのプログラムをUSER32拡張DLLとしてレジストリに登録することにより、USER32.DLLをリンクする全てのプロセスのスタートアップ時にこれらのプログラムをロードさせることができる。本実施例においては、例えば、ポリシーマネージャ50が、これらのプログラムをUSER32拡張DLLとしてレジストリに登録してもよい。また、システム管理者が手動でレジストリを変更してもよい。
次に、情報処理装置10は、変更プログラムを動作させる(S510)。変更プログラムによって情報処理装置10は変更部140、変更部250、変更部340、および、変更部450として機能する。変更部140は、アプリケーションプログラム110からオペレーティングシステム60に対する関数呼び出しの呼び出し先アドレスを、監視部120を実現する監視プログラムのアドレスに変更する。変更部250は、アプリケーションプログラム210の動作開始に応じ、アプリケーションプログラム210からオペレーティングシステム60に対する関数呼び出しの呼び出し先アドレスを、制御部220を実現する制御プログラムのアドレスに変更する。変更部340は、アプリケーション起動用プログラム310からDLL330に対する関数呼び出しの呼び出し先アドレスを、監視部320を実現する監視プログラムのアドレスに変更する。変更部450は、スレッド制御用アプリケーション410からDLL440に対する関数呼び出しの呼び出し先アドレスを、制御部420を実現する制御プログラムのアドレスに変更する。
変更部140、変更部250、変更部340、および、変更部450を代表して変更部140について、関数呼び出しの呼び出し先アドレスを変更する処理の一例を説明する。変更部140は、DLL130におけるアプリケーションプログラム110から呼び出される部分の先頭の命令コードを、他の領域にバックアップしておく。そして、変更部140は、当該命令コードを、監視部120を実現する監視プログラムへのジャンプ命令に書き換える。更に、変更部140は、監視部120からDLL130を呼び出す処理に代えて、バックアップした当該先頭の命令コードを監視部120から呼び出させる。これらの処理は、この処理が進行中の過渡状態で命令コードが実行されないようにするために、他のスレッドを停止して行うことが望ましい。
続いて、アプリケーションプログラム110がクリップボードを経由してデータをアプリケーションプログラム210にコピーする処理を例として、情報処理装置10の処理の詳細を説明する。この処理は、アプリケーションプログラム110がクリップボードにデータを記録する第1下位機能、および、アプリケーションプログラム210がクリップボードからデータを読み出す第2下位機能の組み合わせによって実現される。まず、アプリケーションプログラム110は、この第1下位機能の実現のために、オペレーティングシステム60のDLLを呼び出す。まず、この処理について説明する。
図6は、アプリケーションプログラム110および監視部120のフローチャートである。監視部120は、アプリケーションプログラム110から呼び出されて処理を開始すると、アプリケーションプログラム110による関数呼び出しが、データを共有メモリ空間150にコピーするコピー用関数の関数呼び出しか否かを判断する(S600)。コピー用関数の関数呼び出しであることを条件に(S600:YES)、監視部120は、コピーする対象のデータに各種の属性を付加する。例えば、監視部120は、そのデータがアプリケーションプログラム110からコピーされた旨を示す電子透かしを付加してもよい。
そして、監視部120は、アプリケーションプログラム110から呼び出された引数に基づいてDLL130中のAPIを呼び出す(S620)。例えば、監視部120は、アプリケーションプログラム110から引数として指定されたデータに、アプリケーションプログラム110の識別情報を対応付けて新たなデータを生成し、そのデータを引数としてDLL130中の関数に渡してもよい。
次に、アプリケーションプログラム210は、第2下位機能の実現のために、オペレーティングシステム60のDLLを呼び出す。次に、この処理について説明する。
図7は、アプリケーションプログラム210、制御部220、および、判断部230のフローチャートである。制御部220は、アプリケーションプログラム210が共有メモリ空間150からデータを読み出す関数の関数呼び出しを検出したことに応じ、判断部230による判断に基づいて、当該関数呼び出しの処理を変更または禁止する。以下、具体例を述べる。制御部220は、アプリケーションプログラム210から呼び出されて処理を開始すると、その関数呼び出しが、アプリケーションプログラム210が共有メモリ空間150からデータを読み出す関数(以下、ペースト用関数)の関数呼び出しか否かを判断する(S700)。
ペースト用関数の関数呼び出しであれば、アプリケーションプログラム110および210により実現される第1および第2下位機能の組み合わせが所定の組み合わせであることが判明する。即ち、アプリケーションプログラム110および210により実現される機能が、クリップボードにデータを記録する第1下位機能と、クリップボードからデータを読み出す第2下位機能との組み合わせであると分かる。このため、ペースト用関数の関数呼び出しであれば(S700:YES)、制御部220は、判断部230を呼び出して、当該関数を実行してもよいかを判断させる。判断部230は、共有メモリ空間150に記録されているデータが、コピーを禁止する対象となるデータの条件を満たすことを条件に、当該データのコピーを禁止すると判断する(S710)。
続いて、制御部220は、判断部230による判断に基づいて、アプリケーションプログラム210が共有メモリ空間150からデータを読み出す関数呼び出しの処理を変更または禁止する。具体的には、関数呼び出しを禁止する条件が成立した場合には(S720:YES)、制御部220は、アプリケーションプログラム210が共有メモリ空間150からデータを読み出す処理を禁止し、または、変更する(S730)。例えば、制御部220は、DLL240中の関数を呼び出すことなくエラーコードをアプリケーションプログラム210に返してもよい。または、制御部220は、DLL240中の関数を呼び出すことなく空のデータをアプリケーションプログラム210に返してもよい。
一方で、ペースト用関数の関数呼び出しでないか、または、関数呼び出しを禁止する条件が成立しなかった場合には(S720:NO)、制御部220は、アプリケーションプログラム210が共有メモリ空間150からデータを読み出す処理を続行させる(S740)。例えば、制御部220は、アプリケーションプログラム210から指定された引数をそのまま引数として指定してDLL240中の関数を呼び出してもよい。
図8は、S710における処理の詳細を示すフローチャートである(2図のうち1図目)。判断部230は、共有メモリ空間150から取得した識別情報により識別されるアプリケーションプログラム110と、監視部120との組が、記録部55に記録されたアプリケーションプログラムの組に一致するか否かを判断する(S800)。一致することを条件に(S800:YES)、アプリケーションプログラム110および監視部120間でデータのコピーを禁止すると判断する(S840)。これにより、例えば、CADツールのような膨大なデータを大量に取り扱うアプリケーションプログラムから、メーラーのような外部と通信するアプリケーションプログラムへのコピーを禁止することができる。
また、判断部230は、共有メモリ空間150から取得した、起動中のアプリケーションプログラムを示す識別情報により識別されるアプリケーションプログラムが、予め定められた特定のアプリケーションプログラムであることを条件に(S810:YES)、共有メモリ空間150に記録されたデータのアプリケーションプログラム210へのコピーを禁止すると判断する(S840)。例えば、外部の装置と通信するメーラーのようなアプリケーションプログラムが起動中である場合には、一切のコピーを禁止することができる。
また、判断部230は、共有メモリ空間150に記録されているデータが、コピーを禁止する対象となる特定の文字列を含むことを条件に(S820:YES)、共有メモリ空間150に記録されたデータのアプリケーションプログラム210へのコピーを禁止すると判断する(S840)。例えば、「機密」や「秘密」などの文字列を含む場合には、他者への漏洩を防ぐ必要があると判断してコピーが禁止される。
また、判断部230は、共有メモリ空間150に記録されているデータが、コピーを禁止する対象とするデータの種類の条件を満たすことを条件に(S830:YES)、当該データのコピーを禁止すると判断する(S840)。例えば、まず、判断部230は、共有メモリ空間150に記録されているデータのファイル形式に基づいて、そのデータの種類を判断する。判断部230は、例えば、そのファイルの拡張子が「doc」などであれば、そのファイルはドキュメントを格納していると判断してもよい。
そして、判断部230は、判断したデータの種類が、予め定められた特定の種類であることを条件に、当該データのコピーを禁止すると判断する。例えば、そのデータが、CADツールによる設計情報等の機密性の高い情報であることを条件に、判断部230は、そのデータのコピーを禁止すると判断してもよい。
図9は、S710における処理の詳細を示すフローチャートである(2図のうち2図目)。判断部230は、そのデータが所定の電子透かしを含まないことを条件に(S900:NO)、そのデータのコピーを禁止すると判断する(S940)。これにより、電子透かしを付加する特定のアプリケーション以外からのデータのコピーを禁止し、また、出所不明のデータ(例えば、コンピュータウィルスなど)によってアプリケーションプログラム210の動作が妨害されることを防ぐことができる。
また、判断部230は、共有メモリ空間150に記録された電子署名を認証する(S910)。共有メモリ空間150に記録されたデータが暗号化されている場合には、判断部230は、そのデータを復号化してもよい。認証または復号化に失敗したことを条件に(S910:NO)、判断部230は、当該電子署名に対応して記録されたデータのコピーを禁止すると判断する(S940)。判断部230による認証が成功したことを条件に(S900:YES)、以降の他の条件が成立しなければ、制御部220は、アプリケーションプログラム210による関数呼び出しを許可する。例えばこれにより、アプリケーションプログラム210は共有メモリ空間150からデータを読み出すことができる。
また、判断部230は、データを共有メモリ空間150に記録する関数呼び出しの回数が予め定められた基準を超えたことを条件に(S920:YES)、そのデータのコピーを禁止すると判断する(S940)。また、判断部230は、共有メモリ空間150に記録されたデータのサイズが予め定められた基準を超えたことを条件に(S930:YES)、そのデータのコピーを禁止すると判断する(S940)。これにより、コピーされるデータの量を制限して、情報漏洩のリスクを低減できる。
以上の何れの条件も満たさない場合には(S930:NO)、判断部230は、共有メモリ空間150に記録されたデータのコピーを禁止するための条件を満たさないと判断し(S950)、当該データのコピーを許可する。
以上、本図の処理によれば、オペレーティングシステムを改造することなく、アプリケーションプログラム間のデータのコピーを細かく制御することができる。これにより、機密データの漏洩を未然に防止し、また、システムの安全性を高めることができる。なお、本図の処理は一例であり、データのコピーを禁止する条件はポリシーマネージャ50により変更されてもよい。即ち、システム管理者は、ポリシーマネージャ50を操作することによって、情報処理装置10におけるアプリケーションプログラムの動作を制御することができる。
図10は、アプリケーション起動用プログラム310および監視部320のフローチャートである。監視部320は、アプリケーション起動用プログラム310から呼び出されて処理を開始すると、アプリケーション起動用プログラム310による関数呼び出しが、他のアプリケーションプログラムを起動する関数(以降、起動用関数)の関数呼び出しか否かを判断する(S1000)。起動用関数の関数呼び出しであることを条件に(S1000:YES)、監視部320は、その関数呼び出しにより起動されるアプリケーションプログラムの識別情報を共有メモリ空間150に記録する(S1010)。
また、監視部320は、アプリケーション起動用プログラム310による関数呼び出しが、他のアプリケーションプログラムを終了させる関数(以降、終了用関数)の関数呼び出しか否かを判断する(S1020)。終了用関数の関数呼び出しであることを条件に(S1020:YES)、その関数呼び出しにより終了されるアプリケーションプログラムの識別情報を共有メモリ空間150から削除する(S1030)。そして、監視部320は、DLL330を呼び出してアプリケーションプログラムを実際に制御する(S1040)。
ここで、オペレーティングシステム60は、アプリケーションプログラムを終了させる方法の違いによって、複数の終了用関数を提供する。このため、起動中のアプリケーションプログラムを適切に管理するためには、何れの終了用関数によってアプリケーションプログラムが終了する場合であってもそれが終了したことを検出できなければならない。したがって、監視部320は、終了用関数に代えて、何れの終了用関数が呼び出された場合であってもその終了用関数に呼び出される特定の関数を監視してもよい。この特定の関数は、例えば、アプリケーションプログラムによって読み込まれたDLLをメモリ空間から開放する関数である。この関数の呼び出しを監視することで、起動中のアプリケーションプログラムを正しく管理することができる。
図11は、スレッド制御用アプリケーション410、制御部420および判断部430のフローチャートである。制御部420は、スレッド制御用アプリケーション410から呼び出された処理を開始すると、スレッド制御用アプリケーション410による関数呼び出しが、他のスレッドを終了させる関数の関数呼び出しか否かを判断する(S1100)。他のスレッドを終了させる関数の関数呼び出しであることを条件に(S1100:YES)、制御部420は、その関数の処理を変更し、または禁止する(S1110)。例えば、制御部420は、スレッドを終了させることなく、スレッド制御用アプリケーション410にエラーコードを返してもよい。
図12は、変形例における情報処理装置10の構成を示す。本変形例において、アプリケーションプログラム110は、本発明に係る第1記録部の一例である記録部115を有する。Windows(登録商標)オペレーティングシステムにおいては、例えば、記録部115は、インポートアドレステーブルと呼ばれている。記録部115は、アプリケーションプログラム110から関数呼び出しの毎に参照され、各々の関数の識別情報に当該関数の呼び出し先アドレスを対応付けて記録している。即ち例えば、アプリケーションプログラム110は、ある関数を呼び出す場合に、その関数の識別情報によりその関数の呼び出し先アドレスを記録部115から検索する。そして、検索された呼び出し先アドレスに処理を移すことによりその関数を呼び出す。また、同様に、第2メモリ空間200は、記録部215を有する。記録部215は、アプリケーションプログラム210から参照される呼び出し先アドレスを記録している。
また、本変形例における変更部140は、記録部115を書き換えることにより関数の呼び出し先を変更する。具体的には、変更部140は、処理内容を監視する対象として予め設定された関数に対応して記録部115に記録された呼び出し先アドレスを、監視部120を実現する監視プログラムのアドレスに変更する。同様に、本変形例における変更部250は、処理を制御する対象として予め設定された関数に対応して記録部215に記録された呼び出し先アドレスを、制御部220を実現する制御プログラムのアドレスに変更する。なお、他の構成については、図1に示した同一符号の各部材と略同一であるので説明を省略する。
このように、本変形例に示した構成によっても、アプリケーションプログラムからオペレーティングシステムへの関数呼び出しを監視し、または、制御することができる。
図13は、情報処理装置10のハードウェア構成の一例を示す。情報処理装置10は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるBIOS1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、BIOS1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、情報処理装置10が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又はハードディスクドライブ1040に提供する。
また、RAM1020は、第1メモリ空間100、第2メモリ空間200、および、共有メモリ空間150を含む。即ち、アプリケーションプログラム110は、RAM1020中の第1メモリ空間100に読み出されてCPU1000により実行される。また、アプリケーションプログラム210は、RAM1020中の第2メモリ空間200に読み出されてCPU1000により実行される。また、アプリケーションプログラム110は、CPU1000により実行されてデータを生成し、RAM1020中の共有メモリ空間150にそのデータを記録する。
また、入出力コントローラ1084には、BIOS1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。BIOS1010は、情報処理装置10の起動時にCPU1000が実行するブートプログラムや、情報処理装置10のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020またはハードディスクドライブ1040に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
情報処理装置10に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出され情報処理装置10にインストールされて実行される。プログラムが情報処理装置10等に働きかけて行わせる動作は、図1から図12において説明した情報処理装置10における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置10に提供してもよい。
図14は、表示部1080の表示例を示す。本図に示すように、制御部220によりデータのコピーが禁止された場合に、情報処理装置10は、その旨のメッセージやシンボルを表示部1080中のアプリケーションプログラム210の操作画面上に表示する。例えば、情報処理装置10は、「コピーが禁止されています」というメッセージを、アプリケーションプログラム210の操作画面であるウィンドウ上にポップアップ表示してもよい。このメッセージは、アプリケーションプログラム210に予め用意されたエラーメッセージであってもよい。即ちこのような表示は、制御部220が単にエラーコードをアプリケーションプログラム210に返すのみにより、既存のアプリケーションプログラム210を改変することなく実現できる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、情報処理装置10の構成を示す。 図2は、共有メモリ空間150のデータ構造の一例を示す。 図3は、記録部55のデータ構造の一例を示す。 図4は、情報処理装置10が更に動作させるプログラムの構成を示す。 図5は、情報処理装置10の全体動作を示すフローチャートである。 図6は、アプリケーションプログラム110および監視部120のフローチャートである。 図7は、アプリケーションプログラム210、制御部220、および、判断部230のフローチャートである。 図8は、S710における処理の詳細を示すフローチャートである(2図のうち1図目)。 図9は、S710における処理の詳細を示すフローチャートである(2図のうち2図目)。 図10は、アプリケーション起動用プログラム310および監視部320のフローチャートである。 図11は、スレッド制御用アプリケーション410、制御部420および判断部430のフローチャートである。 図12は、変形例における情報処理装置10の構成を示す。 図13は、情報処理装置10のハードウェア構成の一例を示す。 図14は、表示部1080の表示例を示す。
符号の説明
10 情報処理装置
50 ポリシーマネージャ
55 記録部
60 オペレーティングシステム
100 第1メモリ空間
110 アプリケーションプログラム
115 記録部
120 監視部
130 DLL
140 変更部
150 共有メモリ空間
200 第2メモリ空間
210 アプリケーションプログラム
215 記録部
220 制御部
230 判断部
240 DLL
250 変更部
300 第3メモリ空間
310 アプリケーション起動用プログラム
320 監視部
330 DLL
340 変更部
400 第4メモリ空間
410 スレッド制御用アプリケーション
420 制御部
430 判断部
440 DLL
450 変更部
1080 表示部

Claims (15)

  1. オペレーティングシステムを動作させ、前記オペレーティングシステム上で第1および第2アプリケーションプログラムを含む複数のアプリケーションプログラムを並行に動作させる情報処理装置であって、
    前記第1アプリケーションプログラムは、第1メモリ空間において動作し、
    前記第2アプリケーションプログラムは、前記第1メモリ空間とは異なる第2メモリ空間において動作し、
    データのコピーを禁止するコピー元およびコピー先のアプリケーションプログラムの組を記録する記録部と、
    前記第1メモリ空間上において前記第1アプリケーションプログラムと共に動作する監視プログラムを前記情報処理装置上で動作させることにより実現され、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する、前記第1および第2アプリケーションプログラムの何れもがアクセス可能なメモリ空間である共有メモリ空間に対してデータを記録する関数の呼び出しを検出したことに応じ、当該データに対して、当該データが前記第1アプリケーションプログラムからコピーされた旨を示す電子透かしを付加する監視部と、
    前記情報処理装置上で判断プログラムを動作させることにより実現され、前記共有メモリ空間に記録されているデータが前記電子透かしを含まないことを条件に、当該データのコピーを禁止する判断部と、
    前記情報処理装置上で制御プログラムを動作させることにより実現され、前記第2アプリケーションプログラムから前記オペレーティングシステムに対する、前記共有メモリ空間からデータを読み出す関数の関数呼び出しを検出したことに応じ、前記判断部により当該データのコピーが禁止されたことを条件に、当該関数呼び出しの処理を禁止する制御部と、
    を備え、
    前記監視部は、前記共有メモリ空間に対して前記第1アプリケーションプログラムがデータを記録する関数呼び出しを検出したことに応じ、当該データに対応付けて、前記第1アプリケーションプログラムを識別する識別情報を、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する関数呼び出しの監視結果として、前記監視部および前記制御部の何れもがアクセス可能なメモリ空間である制御メモリ空間に更に記録し、
    前記判断部は、前記制御メモリ空間から取得した前記識別情報により識別されるアプリケーションプログラムと、前記第2アプリケーションプログラムとの組が、前記記録部に記録されたアプリケーションプログラムの組に一致することを条件に、当該データのコピーを禁止すると更に判断する、
    情報処理装置。
  2. 前記判断部は、前記第2アプリケーションプログラムが予め定められた特定のアプリケーションプログラムであることを条件に、当該データのコピーを禁止する請求項1に記載の情報処理装置。
  3. 前記情報処理装置上で変更プログラムを動作させることにより実現され、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する関数呼び出しの呼び出し先アドレスを、前記監視部を実現するプログラムのアドレスに変更する第1変更部と、
    前記情報処理装置上で変更プログラムを動作させることにより実現され、前記第2アプリケーションプログラムから前記オペレーティングシステムに対する関数呼び出しの呼び出し先アドレスを、前記制御部を実現するプログラムのアドレスに変更する第2変更部と
    を更に備え、
    前記監視部は、前記第1アプリケーションプログラムから呼び出されて処理を開始し、関数呼び出しの引数または戻り値を監視結果として前記制御メモリ空間に記録し、当該引数により前記オペレーティングシステムに対する関数呼び出しを実行する
    請求項に記載の情報処理装置。
  4. 前記第1変更部は、前記オペレーティングシステムにより提供される複数の関数のうち、処理内容を監視する対象として予め設定された関数の呼び出し先アドレスを、前記監視部を実現するプログラムのアドレスに変更し、
    前記第2変更部は、前記オペレーティングシステムにより提供される複数の関数のうち、処理を制御する対象として予め設定された関数の呼び出し先アドレスを、前記制御部を実現するプログラムのアドレスに変更する
    請求項に記載の情報処理装置。
  5. 各々のアプリケーションプログラムから関数呼び出しの毎に参照され、各々の関数の識別情報に当該関数の呼び出し先アドレスを対応付けて記録したアドレス記録部と、
    処理内容を監視する対象として予め設定された関数に対応して前記アドレス記録部に記録された呼び出し先アドレスを、前記監視部を実現するプログラムのアドレスに変更する第1変更部と、
    処理を制御する対象として予め設定された関数に対応して前記アドレス記録部に記録された呼び出し先アドレスを、前記制御部を実現するプログラムのアドレスに変更する第2変更部と
    を更に備える請求項に記載の情報処理装置。
  6. 前記第1変更部は、前記第1メモリ空間において動作するスレッドにより実現され、
    前記第2変更部は、前記第2メモリ空間において動作するスレッドにより実現され、
    前記制御部は、更に、スレッドを制御するアプリケーションプログラムに対応付けて設けられ、当該アプリケーションプログラムから何れかの当該スレッドを終了させるために前記オペレーティングシステム上の関数を呼び出す処理を禁止する
    請求項に記載の情報処理装置。
  7. 前記判断部は、更に、前記共有メモリ空間に記録されているデータが、コピーを禁止する対象となる文字列を含むことを条件に、当該データのコピーを禁止すると判断し、
    前記制御部は、前記判断部による判断に更に基づいて、前記第2アプリケーションプログラムが前記共有メモリ空間からデータを読み出す関数呼び出しの処理を禁止する
    請求項に記載の情報処理装置。
  8. 前記判断部は、前記共有メモリ空間に記録されているデータが、コピーを禁止する対象とするデータの種類の条件を満たすことを条件に、当該データのコピーを禁止すると判断し、
    前記制御部は、前記判断部による判断に更に基づいて、前記第2アプリケーションプログラムが前記共有メモリ空間からデータを読み出す関数呼び出しの処理を禁止する
    請求項に記載の情報処理装置。
  9. 前記監視部は、当該データが前記第1アプリケーションプログラムにより記録されたことを認証させる電子署名を、当該データに付加して前記共有メモリ空間に記録し、
    前記判断部は、前記共有メモリ空間に記録された電子署名を認証し、
    前記制御部は、前記判断部による認証が成功したことを条件として、前記第2アプリケーションプログラムが前記共有メモリ空間からデータを読み出す関数の関数呼び出しを許可する
    請求項に記載の情報処理装置。
  10. 前記監視部は、前記共有メモリ空間に対し前記第1アプリケーションプログラムがデータを記録する関数呼び出しを検出したことに応じ、当該データを暗号化して前記共有メモリ空間に記録し、
    前記判断部は、前記共有メモリ空間に記録されたデータを復号化し、
    前記制御部は、前記判断部による復号化が成功したことを条件として、前記第2アプリケーションプログラムが前記共有メモリ空間からデータを読み出す関数の関数呼び出しを許可する
    請求項に記載の情報処理装置。
  11. 前記監視部は、前記第1アプリケーションプログラムが前記共有メモリ空間に対してデータを記録する関数呼び出しを検出したことに応じ、当該データに対応付けて当該関数呼び出しの回数を前記制御メモリ空間に記録し、
    前記判断部は、前記関数呼び出しの回数が予め定められた基準を超えたことを条件に、当該データのコピーを禁止すると判断する
    請求項に記載の情報処理装置。
  12. 前記監視部は、前記第1アプリケーションプログラムが前記共有メモリ空間に対してデータを記録する関数呼び出しを検出したことに応じ、当該データに対応付けて当該データのサイズを前記制御メモリ空間に記録し、
    前記判断部は、前記データのサイズが予め定められた基準を超えたことを条件に、当該データのコピーを禁止すると判断する
    請求項に記載の情報処理装置。
  13. 前記監視部は、アプリケーションプログラムを起動させる関数の呼び出しを検出して、当該関数によって起動されるアプリケーションプログラムの識別情報を前記監視結果として前記制御メモリ空間に記録し、
    前記判断部は、前記制御メモリ空間から取得した前記識別情報により識別されるアプリケーションプログラムが、予め定められたアプリケーションプログラムであることを条件に、前記共有メモリ空間に記録されたデータの前記第2アプリケーションプログラムへのコピーを禁止すると判断する
    請求項に記載の情報処理装置。
  14. オペレーティングシステムを動作させ、前記オペレーティングシステム上で第1および第2アプリケーションプログラムを含む複数のアプリケーションプログラムを並行に動作させる情報処理装置における、アプリケーションプログラムの制御方法であって、
    前記第1アプリケーションプログラムは、第1メモリ空間において動作し、
    前記第2アプリケーションプログラムは、前記第1メモリ空間とは異なる第2メモリ空間において動作し、
    データのコピーを禁止するコピー元およびコピー先のアプリケーションプログラムの組を記録部に記録する記録段階と、
    前記第1メモリ空間上において前記第1アプリケーションプログラムと共に動作する監視プログラムを前記情報処理装置上で動作させることにより、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する、前記第1および第2アプリケーションプログラムの何れもがアクセス可能なメモリ空間である共有メモリ空間に対してデータを記録する関数の呼び出しを検出したことに応じ、当該データに対して、当該データが前記第1アプリケーションプログラムからコピーされた旨を示す電子透かしを付加する監視段階と、
    前記情報処理装置上で判断プログラムを動作させることにより、前記共有メモリ空間に記録されているデータが前記電子透かしを含まないことを条件に、当該データのコピーを禁止する判断段階と、
    前記情報処理装置上で制御プログラムを動作させることにより、前記第2アプリケーションプログラムから前記オペレーティングシステムに対する、前記共有メモリ空間からデータを読み出す関数の関数呼び出しを検出したことに応じ、前記判断段階により当該データのコピーが禁止されたことを条件に、当該関数呼び出しの処理を禁止する制御段階と、
    を備え、
    前記監視段階は、前記共有メモリ空間に対して前記第1アプリケーションプログラムがデータを記録する関数呼び出しを検出したことに応じ、当該データに対応付けて、前記第1アプリケーションプログラムを識別する識別情報を、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する関数呼び出しの監視結果として、前記監視段階および前記制御段階の何れにおいてもアクセス可能なメモリ空間である制御メモリ空間に更に記録し、
    前記判断段階は、前記制御メモリ空間から取得した前記識別情報により識別されるアプリケーションプログラムと、前記第2アプリケーションプログラムとの組が、前記記録部に記録されたアプリケーションプログラムの組に一致することを条件に、当該データのコピーを禁止すると更に判断する、
    制御方法。
  15. オペレーティングシステムを動作させ、前記オペレーティングシステム上で第1および第2アプリケーションプログラムを含む複数のアプリケーションプログラムを並行に動作させる情報処理装置において、アプリケーションプログラムを制御するプログラムであって、
    前記第1アプリケーションプログラムは、第1メモリ空間において動作し、
    前記第2アプリケーションプログラムは、前記第1メモリ空間とは異なる第2メモリ空間において動作し、
    前記情報処理装置を、
    データのコピーを禁止するコピー元およびコピー先のアプリケーションプログラムの組を記録する記録部と、
    前記第1メモリ空間上において前記第1アプリケーションプログラムと共に動作する監視プログラムを前記情報処理装置上で動作させることにより、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する、前記第1および第2アプリケーションプログラムの何れもがアクセス可能なメモリ空間である共有メモリ空間に対してデータを記録する関数の呼び出しを検出したことに応じ、当該データに対して、当該データが前記第1アプリケーションプログラムからコピーされた旨を示す電子透かしを付加する監視部と、
    前記情報処理装置上で判断プログラムを動作させることにより実現され、前記共有メモリ空間に記録されているデータが前記電子透かしを含まないことを条件に、当該データのコピーを禁止する判断部と、
    前記情報処理装置上で制御プログラムを動作させることにより実現され、前記第2アプリケーションプログラムから前記オペレーティングシステムに対する、前記共有メモリ空間からデータを読み出す関数の関数呼び出しを検出したことに応じ、前記判断部により当該データのコピーが禁止されたことを条件に、当該関数呼び出しの処理を禁止する制御部と、
    として機能させ
    前記監視部は、前記共有メモリ空間に対して前記第1アプリケーションプログラムがデータを記録する関数呼び出しを検出したことに応じ、当該データに対応付けて、前記第1アプリケーションプログラムを識別する識別情報を、前記第1アプリケーションプログラムから前記オペレーティングシステムに対する関数呼び出しの監視結果として、前記監視部および前記制御部の何れもがアクセス可能なメモリ空間である制御メモリ空間に更に記録し、
    前記判断部は、前記制御メモリ空間から取得した前記識別情報により識別されるアプリケーションプログラムと、前記第2アプリケーションプログラムとの組が、前記記録部に記録されたアプリケーションプログラムの組に一致することを条件に、当該データのコピーを禁止すると更に判断する、
    プログラム。
JP2005249157A 2005-08-30 2005-08-30 アプリケーションプログラムの制御方法およびその装置 Expired - Fee Related JP4208085B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005249157A JP4208085B2 (ja) 2005-08-30 2005-08-30 アプリケーションプログラムの制御方法およびその装置
US11/510,970 US7600231B2 (en) 2005-08-30 2006-08-28 Control method for controlling an application program
CNB2006101219971A CN100468343C (zh) 2005-08-30 2006-08-30 应用程序的控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005249157A JP4208085B2 (ja) 2005-08-30 2005-08-30 アプリケーションプログラムの制御方法およびその装置

Publications (2)

Publication Number Publication Date
JP2007065846A JP2007065846A (ja) 2007-03-15
JP4208085B2 true JP4208085B2 (ja) 2009-01-14

Family

ID=37805855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005249157A Expired - Fee Related JP4208085B2 (ja) 2005-08-30 2005-08-30 アプリケーションプログラムの制御方法およびその装置

Country Status (3)

Country Link
US (1) US7600231B2 (ja)
JP (1) JP4208085B2 (ja)
CN (1) CN100468343C (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4549809B2 (ja) * 2004-10-29 2010-09-22 京セラ株式会社 携帯電話端末及びプログラム管理方法並びにそのコンピュータプログラム
US8561176B1 (en) * 2007-01-24 2013-10-15 Mcafee, Inc. System, method and computer program product for monitoring and/or analyzing at least one aspect of an invocation of an interface
KR101405924B1 (ko) 2007-03-19 2014-06-12 엘지전자 주식회사 윈도우 제어 방법 및 이를 구현할 수 있는 단말기
JP4959473B2 (ja) 2007-08-30 2012-06-20 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの画面の情報を保護するシステム
WO2009102006A1 (ja) * 2008-02-14 2009-08-20 Nec Corporation アクセス制御装置、その方法及び情報記録媒体
KR100928467B1 (ko) 2009-02-02 2009-11-25 주식회사 파수닷컴 클립보드 보안 시스템 및 방법
CN101510160B (zh) * 2009-03-26 2013-10-16 北京中星微电子有限公司 嵌入式设备应用功能的程序运行控制方法及嵌入式设备
JP4538838B1 (ja) * 2009-08-18 2010-09-08 システムインテリジェント株式会社 仮想シンクライアント化装置、仮想シンクライアント化システム、仮想シンクライアント化プログラム、及び仮想シンクライアント化方法
JP5081280B2 (ja) * 2010-07-08 2012-11-28 株式会社バッファロー 可搬記憶媒体
KR101064143B1 (ko) * 2010-08-20 2011-09-15 주식회사 파수닷컴 Drm 환경에서의 클립보드 보호 시스템 및 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US8429744B1 (en) * 2010-12-15 2013-04-23 Symantec Corporation Systems and methods for detecting malformed arguments in a function by hooking a generic object
US8769305B2 (en) 2011-03-21 2014-07-01 Moncana Corporation Secure execution of unsecured apps on a device
US8955142B2 (en) * 2011-03-21 2015-02-10 Mocana Corporation Secure execution of unsecured apps on a device
US8812868B2 (en) 2011-03-21 2014-08-19 Mocana Corporation Secure execution of unsecured apps on a device
US9473485B2 (en) 2011-03-21 2016-10-18 Blue Cedar Networks, Inc. Secure single sign-on for a group of wrapped applications on a computing device and runtime credential sharing
US9396325B2 (en) 2011-03-21 2016-07-19 Mocana Corporation Provisioning an app on a device and implementing a keystore
US8707434B2 (en) 2011-08-17 2014-04-22 Mcafee, Inc. System and method for indirect interface monitoring and plumb-lining
WO2013057825A1 (ja) * 2011-10-20 2013-04-25 トヨタ自動車株式会社 情報処理装置、データ管理方法、データ管理プログラム
CN102982279B (zh) * 2012-11-07 2016-06-29 北京奇虎科技有限公司 计算机辅助设计病毒感染防止***和方法
KR101991687B1 (ko) * 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
CN109063467A (zh) * 2013-05-27 2018-12-21 华为终端(东莞)有限公司 ***功能调用的方法、装置及终端
JP6381187B2 (ja) * 2013-08-09 2018-08-29 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
DE102013224694A1 (de) * 2013-12-03 2015-06-03 Robert Bosch Gmbh Verfahren und Vorrichtung zum Ermitteln eines Gradienten eines datenbasierten Funktionsmodells
CN105426222B (zh) * 2015-12-18 2019-05-03 广州华多网络科技有限公司 一种对终端应用的处理方法、装置及终端
CN107220555B (zh) * 2016-03-22 2022-04-19 中兴通讯股份有限公司 一种剪切板访问控制方法及***
CN106203167B (zh) * 2016-07-08 2019-05-07 北京小米移动软件有限公司 应用权限管理方法及装置
WO2018032516A1 (zh) * 2016-08-19 2018-02-22 华为技术有限公司 应用数据的共享方法、装置和终端设备
CN106528081B (zh) * 2016-09-26 2020-01-10 北京小米移动软件有限公司 操作执行方法及装置
CN109543402A (zh) * 2018-11-06 2019-03-29 北京指掌易科技有限公司 一种基于Android应用的复制粘贴保护方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956514A (en) * 1991-04-12 1999-09-21 Boeing North American, Inc. Apparatus and method for multiple processor software development
JPH10293769A (ja) 1997-02-19 1998-11-04 Hironobu Matsuoka プログラムを記録したコンピュータ読み取り可能な記録媒体およびデータ処理システム
JP4242494B2 (ja) 1998-12-24 2009-03-25 大日本印刷株式会社 携帯型信号処理装置
US6340977B1 (en) * 1999-05-07 2002-01-22 Philip Lui System and method for dynamic assistance in software applications using behavior and host application models
WO2001025953A1 (en) * 1999-10-01 2001-04-12 Infraworks Corporation Registry monitoring system and method
JP4278835B2 (ja) 2000-06-07 2009-06-17 株式会社リコー ファイル複写管理方法及び記録媒体
JP2003044297A (ja) 2000-11-20 2003-02-14 Humming Heads Inc コンピュータリソースの制御を行なう情報処理方法および装置、情報処理システム及びその制御方法並びに記憶媒体、プログラム
JP3927376B2 (ja) 2001-03-27 2007-06-06 日立ソフトウエアエンジニアリング株式会社 データ持ち出し禁止用プログラム
JP3970137B2 (ja) * 2001-09-14 2007-09-05 キヤノン株式会社 文書処理方法及びその装置
CN100565479C (zh) 2003-01-20 2009-12-02 富士通株式会社 复制防止装置以及复制防止方法
US20050028168A1 (en) * 2003-06-26 2005-02-03 Cezary Marcjan Sharing computer objects with associations
US7478204B2 (en) * 2004-04-29 2009-01-13 International Business Machines Corporation Efficient sharing of memory between applications running under different operating systems on a shared hardware system
US7437617B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method, apparatus, and computer program product in a processor for concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers

Also Published As

Publication number Publication date
JP2007065846A (ja) 2007-03-15
US7600231B2 (en) 2009-10-06
US20070050781A1 (en) 2007-03-01
CN100468343C (zh) 2009-03-11
CN1924814A (zh) 2007-03-07

Similar Documents

Publication Publication Date Title
JP4208085B2 (ja) アプリケーションプログラムの制御方法およびその装置
JP4787263B2 (ja) 電子計算機のデータ管理方法、プログラム、及び記録媒体
JP4473256B2 (ja) アプリケーションプログラムによるリソースアクセスを制御するための情報処理装置、方法、及びプログラム
US20060117178A1 (en) Information leakage prevention method and apparatus and program for the same
JP4681053B2 (ja) 電子計算機のデータ管理方法、プログラム、及び記録媒体
JP4738412B2 (ja) 共用管理プログラム、共用管理方法、端末装置、及び共用管理システム
US20070198795A1 (en) Application executing apparatus and application execution method
US20120124675A1 (en) Apparatus and method for managing digital rights through hooking a kernel native api
US8776258B2 (en) Providing access rights to portions of a software application
US20090119772A1 (en) Secure file access
EP2765525B1 (en) Apparatus, non-transitory computer readable information recording medium and information recording method
JP4501156B2 (ja) 機密モードに応じたアクセスフォルダ切り替え方法、プログラム、及びコンピュータシステム
US20180026986A1 (en) Data loss prevention system and data loss prevention method
JP4516598B2 (ja) 文書のコピーを制御する方法
US9582649B2 (en) Processing data stored in external storage device
JP6256781B2 (ja) システムを保護するためのファイルセキュリティ用の管理装置
JP2009059008A (ja) ファイル管理システム
US7571462B2 (en) Information processing apparatus, transfer program product, and transfer control method
JP2011118936A (ja) 共用管理プログラム、共用管理方法、端末装置、及び共用管理システム
JP6949338B2 (ja) 電子データ管理装置、電子データ管理システム、そのためのプログラム及び記録媒体
JP2021174432A (ja) 電子データ管理方法、電子データ管理装置、そのためのプログラム及び記録媒体
JP2011076541A (ja) 情報漏洩防止プログラムおよび起動記録プログラム
JP2009169868A (ja) 記憶領域アクセス装置及び記憶領域のアクセス方法
JP2009059158A (ja) 外部装置管理システム
JP5047664B2 (ja) 電子文書管理装置、コンピュータプログラム、及び電子文書管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080118

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20080129

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080828

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: 20080930

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20081001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081015

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121031

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees