(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023146800
(43)【公開日】2023-10-12
(54)【発明の名称】アプリケーション検出プログラム、方法および装置
(51)【国際特許分類】
G06Q 10/10 20230101AFI20231004BHJP
G06F 11/34 20060101ALI20231004BHJP
G06F 3/048 20130101ALI20231004BHJP
【FI】
G06Q10/10
G06F11/34 138
G06F3/048
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022054185
(22)【出願日】2022-03-29
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】茂木 一太郎
【テーマコード(参考)】
5B042
5E555
5L049
【Fターム(参考)】
5B042GA23
5B042JJ03
5B042JJ29
5B042MA08
5B042MA14
5B042MC25
5B042MC32
5B042MC37
5E555AA05
5E555AA09
5E555BA02
5E555BA45
5E555BA61
5E555BB02
5E555BC07
5E555BD01
5E555CC03
5E555EA03
5E555FA00
5L049AA11
(57)【要約】
【課題】リモート接続アプリケーションの実行を検出する。
【解決手段】アプリケーション検出装置1において、処理部3は、端末装置5a,5bから、一定時間ごとのアクティブプロセスおよびキーボードへの打鍵数を示す操作ログを取得し、記憶部2に蓄積する。処理部3は、取得した操作ログに基づいて、端末装置5aでのアクティブプロセスの中から、端末装置5bでの打鍵数が1以上であり、かつ端末装置5aでの打鍵数が0である期間のアクティブプロセスであるプロセスP1が、リモート接続アプリケーションのプロセスであると判定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータに、
第1の端末装置と第2の端末装置とから、一定時間ごとのアクティブプロセスおよびキーボードへの打鍵数を示す操作ログを取得し、
取得した前記操作ログに基づいて、前記第1の端末装置でのアクティブプロセスの中から、前記第2の端末装置での打鍵数が1以上であり、かつ前記第1の端末装置での打鍵数が0である期間のアクティブプロセスである第1のプロセスが、リモート接続アプリケーションのプロセスであると判定する、
処理を実行させるアプリケーション検出プログラム。
【請求項2】
所定期間における前記第1のプロセスの連続使用時間の分布が、既存のリモート接続アプリケーションのプロセスについての連続使用時間の分布と類似する場合に、前記第1のプロセスがリモート接続アプリケーションのプロセスであると判定する、
請求項1記載のアプリケーション検出プログラム。
【請求項3】
前記コンピュータに、
前記第1の端末装置と前記第2の端末装置とから取得した前記操作ログに基づいて、前記第1の端末装置でのアクティブプロセスの中から、前記第2の端末装置での打鍵数が1以上である時間帯において打鍵数が1以上である第2のプロセスを特定し、
前記第2のプロセスがアクティブプロセスである期間における前記第1の端末装置での打鍵数と前記第2の端末装置での打鍵数との相関に基づいて、前記第2のプロセスがリモート接続アプリケーションのプロセスであるかを判定する、
処理をさらに実行させる請求項1または2記載のアプリケーション検出プログラム。
【請求項4】
前記第2のプロセスがアクティブプロセスである期間における前記第1の端末装置での打鍵数と前記第2の端末装置での打鍵数との相関が高いと判定し、かつ、当該期間において前記第2の端末装置において複数種類のプロセスがアクティブプロセスになっている場合に、前記第2のプロセスがリモート接続アプリケーションのプロセスであると判定する、
請求項3記載のアプリケーション検出プログラム。
【請求項5】
コンピュータが、
第1の端末装置と第2の端末装置とから、一定時間ごとのアクティブプロセスおよびキーボードへの打鍵数を示す操作ログを取得し、
取得した前記操作ログに基づいて、前記第1の端末装置でのアクティブプロセスの中から、前記第2の端末装置での打鍵数が1以上であり、かつ前記第1の端末装置での打鍵数が0である期間のアクティブプロセスである第1のプロセスが、リモート接続アプリケーションのプロセスであると判定する、
アプリケーション検出方法。
【請求項6】
記憶部と処理部とを有するアプリケーション検出装置であって、
前記処理部は、
第1の端末装置と第2の端末装置とから、一定時間ごとのアクティブプロセスおよびキーボードへの打鍵数を示す操作ログを取得して前記記憶部に蓄積し、
前記記憶部に蓄積された前記操作ログに基づいて、前記第1の端末装置でのアクティブプロセスの中から、前記第2の端末装置での打鍵数が1以上であり、かつ前記第1の端末装置での打鍵数が0である期間のアクティブプロセスである第1のプロセスが、リモート接続アプリケーションのプロセスであると判定する、
アプリケーション検出装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーション検出プログラム、方法および装置に関する。
【背景技術】
【0002】
端末装置からログを収集して分析することで、端末装置の使用状況や端末装置を用いた業務の遂行状況を把握することが考えられている。例えば、端末装置におけるユーザの操作履歴に基づいて、ユーザに課せられた業務に関連しない作業時間(業務外時間)を決定し、業務外時間と就業時間との差分に基づいてユーザの業務量を分析する情報分析装置が提案されている。
【0003】
また、端末装置同士をリモート接続し、一方の端末装置から他方の端末装置をリモート操作する技術がある。例えば、この技術を用いて、自宅の端末装置から職場の端末装置をリモート操作することが行われている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、端末装置の使用状況や端末装置を用いた業務の遂行状況を把握するために、端末装置で実行されているアプリケーションを判別したい場合がある。このような判別のためには、既存のアプリケーションに関する情報を事前に把握し、データベースなどに保持しておく必要がある。
【0006】
上記のように端末装置同士がリモート接続されている状況では、例えば、接続元の端末装置で実行されているリモート接続アプリケーションが判別される。しかし、近年、リモート接続アプリケーションとして多くの製品が販売されており、これらのすべてのアプリケーションに関する情報を事前に把握することが難しくなっている。このため、未知のリモート接続アプリケーションの実行を自動検出できることが求められるが、そのような技術がないという問題がある。
【0007】
1つの側面では、本発明は、リモート接続アプリケーションの実行を検出することが可能なアプリケーション検出プログラム、方法および装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、コンピュータに、第1の端末装置と第2の端末装置とから、一定時間ごとのアクティブプロセスおよびキーボードへの打鍵数を示す操作ログを取得し、取得した操作ログに基づいて、第1の端末装置でのアクティブプロセスの中から、第2の端末装置での打鍵数が1以上であり、かつ第1の端末装置での打鍵数が0である期間のアクティブプロセスである第1のプロセスが、リモート接続アプリケーションのプロセスであると判定する、処理を実行させるアプリケーション検出プログラムが提供される。
【0009】
また、1つの案では、上記のアプリケーション検出プログラムに基づく処理と同様の処理をコンピュータが実行するアプリケーション検出方法が提供される。
さらに、1つの案では、上記のアプリケーション検出プログラムに基づく処理と同様の処理を実行するアプリケーション検出装置が提供される。
【発明の効果】
【0010】
1つの側面では、リモート接続アプリケーションの実行を検出できる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施の形態に係るアプリケーション検出装置の構成例および処理例を示す図である。
【
図2】第2の実施の形態に係る業務管理システムの構成例を示す図である。
【
図3】管理サーバのハードウェア構成例を示す図である。
【
図4】業務管理システムの各装置が備える処理機能の構成例を示す図である。
【
図5】操作ログおよび操作ログデータベースについて説明するための図である。
【
図6】画面状態に応じた操作ログの内容の違いについて説明するための図である。
【
図7】リモート接続アプリ検出処理の全体の手順を示すフローチャートの例である。
【
図8】リモート接続アプリが全画面状態で使用される場合の操作ログの特徴について説明するための図である。
【
図9】連続使用時間の分布の同等性判定方法を説明するための図である。
【
図10】算出された信頼区間に基づく同等性の判定方法の例を示す図である。
【
図11】第1検出処理の手順を示すフローチャートの例である。
【
図12】リモート接続アプリが全画面状態で使用される場合の操作ログの特徴について説明するための図である。
【
図13】接続元PCおよび接続先PCにおける打鍵数の推移の例を示す図である。
【
図14】第2検出処理の手順を示すフローチャートの例である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るアプリケーション検出装置の構成例および処理例を示す図である。
図1に示すアプリケーション検出装置1は、端末装置5a,5b,・・・において実行されているリモート接続アプリケーションを検出する装置である。このアプリケーション検出装置1は、記憶部2と処理部3を有する。記憶部2は、例えば、アプリケーション検出装置1が備える図示しない記憶装置の記憶領域である。処理部3は、例えば、アプリケーション検出装置1が備えるプロセッサである。
【0013】
記憶部2には、端末装置5a,5b,・・・から取得された操作ログが蓄積される。
図1の例では、記憶部2には、取得された操作ログが登録されるデータベース4が記憶されている。
【0014】
本実施の形態において、操作ログには、一定時間ごとのアクティブプロセスおよび打鍵数が記録される。アクティブプロセスは、端末装置で実行されているアプリケーションのプロセスのうち、アクティブなプロセスを示す。例えば、一定時間においてアクティブであった時間が最も長いプロセスが、アクティブプロセスとして操作ログに記録される。打鍵数は、端末装置に接続されたキーボードに対して一定時間に打鍵された数を示す。
【0015】
処理部3は、端末装置5a,5b,・・・から操作ログを取得し、データベース4に登録する(ステップS1)。処理部3は、データベース4に登録された操作ログに基づいて、一方の端末装置でのアクティブプロセスの中から、他方の端末装置での打鍵数が1以上であり、かつ一方の端末装置での打鍵数が0である期間のプロセスを特定する。処理部3は、特定されたプロセスをリモート接続アプリケーションのプロセスと判定する(ステップS2)。
【0016】
ここで、
図1の下側には、例として端末装置5aと端末装置5bとがリモート接続される場合のアクティブプロセスおよび打鍵数の推移を示すタイムチャートを示している。この例では、端末装置5aがリモート接続における接続元であり、端末装置5bがリモート接続における接続先であり、リモート接続された状態では端末装置5aから端末装置5bがリモート操作される。
【0017】
このタイムチャートでは、端末装置5aでは、アクティブプロセスとしてプロセスP1,P2が切り替えて使用される。実際には、プロセスP1がリモート接続アプリケーションのプロセスであり、プロセスP1がアクティブである期間Z1,Z2において端末装置5a,5bがリモート接続される。一方、リモート接続された状態では、端末装置5bではプロセスP3がアクティブプロセスとなる。この状態では、プロセスP3が端末装置5aからリモート操作される。
【0018】
期間Z1,Z2において端末装置5bから取得される操作ログには、リモート操作に応じた1以上の打鍵数が記録される。一方、端末装置5aでは、プロセスP1,P2に対応するアプリケーションは、画面上のウィンドウが全画面状態で使用されたとする。全画面状態の場合には、OS(Operating System)の仕様などによって打鍵数が取得されない。このため、期間Z1,Z2において端末装置5aから取得される操作ログには、打鍵数として0が記録される。
【0019】
したがって、ステップS2において処理部3は、端末装置5aでのアクティブプロセスの中から、端末装置5bでの打鍵数が1以上であり、かつ端末装置5aでの打鍵数が0である期間Z1,Z2のプロセスP1が、リモート接続アプリケーションのプロセスであると判定する。
【0020】
以上の処理により、アプリケーション検出装置1は、端末装置5a,5b,・・・で実行されている未知のリモート接続アプリケーションを検出できるようになる。特に、上記処理では、一方の端末装置においてリモート接続アプリケーションが全画面状態で使用されている場合は打鍵数が0になるという特徴と、リモート接続された他方の端末装置では打鍵数が1以上になるという特徴を利用することで、未知のリモート接続アプリケーションを精度よく自動検出できる。
【0021】
〔第2の実施の形態〕
次に、第2の実施の形態として、
図1に示したアプリケーション検出装置1を含む業務管理システムを説明する。
【0022】
図2は、第2の実施の形態に係る業務管理システムの構成例を示す図である。
図2に示す業務管理システムは、PC(Personal Computer)10a,10b,10c,・・・と管理サーバ100を含む。PC10a,10b,10c,・・・と管理サーバ100とは、ネットワーク20を介して接続されている。ネットワーク20は、インターネットなどのWAN(Wide Area Network)や、LAN(Local Area Network)を含み得る。
【0023】
PC10a,10b,10c,・・・は、ユーザによって使用されるコンピュータ端末である。例えば、業務管理システムが企業で利用される場合、ユーザは、その企業の従業員である。また、1人のユーザが2台以上のPCを使用することができる。その場合、1つのPCから他のPCへリモート接続し、ユーザが前者のPCから後者のPCを遠隔操作する場合もある。
【0024】
管理サーバ100は、PC10a,10b,10c,・・・を用いた各ユーザによる業務の遂行状況を管理するためのサーバコンピュータである。例えば、管理サーバ100は、PC10a,10b,10c,・・・から操作ログを収集し、操作ログに基づいて、遂行されている業務内容を分類し、業務内容ごとの遂行時間を算出する。
【0025】
なお、PC10a,10b,10c,・・・は、
図1の端末装置5a,5b,・・・の一例である。また、管理サーバ100は、
図1のアプリケーション検出装置1の一例である。
【0026】
図3は、管理サーバのハードウェア構成例を示す図である。管理サーバ100は、例えば、
図3に示すようなコンピュータとして実現される。
図3に示す管理サーバ100は、プロセッサ101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、GPU(Graphics Processing Unit)104、入力インタフェース(I/F)105、読み取り装置106および通信インタフェース(I/F)107を備える。
【0027】
プロセッサ101は、管理サーバ100全体を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0028】
RAM102は、管理サーバ100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOSプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
【0029】
HDD103は、管理サーバ100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
【0030】
GPU104には、表示装置104aが接続されている。GPU104は、プロセッサ101からの命令にしたがって、画像を表示装置104aに表示させる。表示装置104aとしては、液晶ディスプレイや有機EL(ElectroLuminescence)ディスプレイなどがある。
【0031】
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0032】
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、半導体メモリなどがある。
【0033】
通信インタフェース107は、ネットワーク20を介してPC10a,10b,10c,・・・などの他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、管理サーバ100の処理機能を実現することができる。なお、PC10a,10b,10c,・・・についても、
図3に示すような構成のコンピュータとして実現することが可能である。
【0034】
図4は、業務管理システムの各装置が備える処理機能の構成例を示す図である。なお、以下の説明では、PC10a,10b,10c,・・・を特に区別せずに指し示す場合には、「PC10」と表記する場合がある。
【0035】
PC10は、操作ログ取得部11を備える。操作ログ取得部11の処理は、例えば、PC10が備える図示しないプロセッサが所定のプログラムを実行することで実現される。操作ログ取得部11は、PC10での操作内容を示す操作ログを取得し、管理サーバ100に送信する。操作ログ取得部11は、例えば、操作ログをPC10で実行されるOSから取得する。
【0036】
例えば、PC10では、各種のアプリケーションが実行される。このようなアプリケーションとしては、例えば、文書作成、表計算、プログラム作成、図面作成、リモート接続などのアプリケーションが含まれ得る。操作ログ取得部11は、実行されているアプリケーションのうち、アクティブなアプリケーションのプロセスを示すアクティブプロセスと、キーボードに対する打鍵数とを含む操作ログを取得して、管理サーバ100に送信する。アクティブプロセスは、例えば、画面上のウィンドウのうち、アクティブなウィンドウ(最前面のウィンドウ)に対応するアプリケーションのプロセスを示す。後述するように、操作ログには、一定時間においてアクティブであった時間が最も長いプロセスが、アクティブプロセスとして記録される。また、操作ログには、この一定時間におけるキーボードへの打鍵数が記録される。
【0037】
管理サーバ100は、記憶部110、操作ログ受信部121、アプリケーション判別部122および業務分類部123を備える。
記憶部110は、RAM102やHDD103など、管理サーバ100が備える記憶装置の記憶領域である。記憶部110には、操作ログデータベース(DB)111、アプリデータベース(DB)112および閾値データベース(DB)113が記憶される。
【0038】
操作ログデータベース111には、各PC10から収集された操作ログが蓄積される。アプリデータベース112には、PC10で実行され得るアプリケーションに対応するプロセスのプロセス名があらかじめ登録される。閾値データベース113には、アプリケーション判別部122の処理で使用される各種の閾値があらかじめ登録される。
【0039】
操作ログ受信部121、アプリケーション判別部122および業務分類部123の処理は、例えば、プロセッサ101が所定のプログラムを実行することで実現される。
操作ログ受信部121は、各PC10から送信された操作ログを受信し、受信した操作ログの内容を操作ログデータベース111に登録する。操作ログ受信部121は、受信した操作ログを送信元のPCごとに分類して操作ログデータベース111に登録する。
【0040】
アプリケーション判別部122は、操作ログデータベース111に登録されたプロセス名の中から、未知のアプリケーションのプロセスを抽出する。未知のアプリケーションとは、アプリデータベース112に登録されていないアプリケーションである。アプリケーション判別部122は、抽出されたプロセスがリモート接続アプリケーション(以下、「リモート接続アプリ」と略称する)であるかを判別する。
【0041】
業務分類部123は、操作ログデータベース111に登録された操作ログに基づいて、ユーザが使用していたアプリケーションを特定し、その特定結果からユーザが遂行している業務を分類する。このとき、未知のアプリケーションのプロセスについては、アプリケーション判別部122による判別結果が参照される。業務分類部123は、例えば、特定された各アプリケーションの使用時間に基づき、業務の分類ごとのユーザの作業時間を算出し、図示しない管理者端末に業務の分類ごとの作業時間をグラフなどを用いて表示する。表示された情報は、例えば、各ユーザの業務内容のモニタリングや、業務内容の改善のために利用される。業務管理システムが企業で利用される場合、管理者端末の利用者は、例えば、企業内の部門の上長、企業内の業務改善を提案する担当部署の従業員やコンサルタントなどが想定される。
【0042】
なお、本実施の形態では例として、各PC10から収集された操作ログは、上記のように業務の分類のために利用される。しかし、他の例として、収集された操作ログは、セキュリティ対策として実行されているアプリケーションを監視するために利用されてもよい。
【0043】
図5は、操作ログおよび操作ログデータベースについて説明するための図である。
前述のように、各PC10では操作ログ12が取得されて、管理サーバ100に送信される。
図5に示すように、各操作ログ12は、ユーザを識別するユーザ名、送信元PCを識別するPC名、時刻、アクティブプロセス名および打鍵数を含む。
【0044】
操作ログ12は、一定時間(本実施の形態では例として30秒とする)ごとに取得される。操作ログ12内の時刻は、操作ログ12が取得された単位時間(30秒)の開始時刻を示す。アクティブプロセス名は、単位時間においてアクティブであった時間が最も長いプロセスの識別情報である。打鍵数は、単位時間においてキーボードに対して打鍵された数(キー入力回数)を示す。なお、打鍵数には、例えば、マウスクリック数が含まれてもよい。
【0045】
管理サーバ100の操作ログ受信部121は、各PC10から受信した操作ログを、送信元のPCごとに分類して操作ログデータベース111に登録する。例えば、操作ログ受信部121は、ユーザ名とPC名の組み合わせごとに操作ログテーブル114を作成して、操作ログデータベース111に登録する。操作ログテーブル114には、受信した操作ログ12のうち、対応するユーザ名およびPC名が登録された操作ログ12から、時刻、アクティブプロセス名および打鍵数が抽出されて登録される。
【0046】
本実施の形態では、1人のユーザが複数のPC10を使用する場合がある。この場合、1人のユーザに対応する複数の操作ログテーブル114が操作ログデータベース111に登録される。
【0047】
ところで、1人のユーザが複数のPC10を使用する場合の例として、PC10同士がリモート接続される場合がある。例えば、職場のPC10に対して自宅のPC10からリモート接続し、職場のPC10を自宅のPC10からリモート操作する場合がある。この場合、リモート接続された両方のPC10から、同じ時刻に操作ログが取得されることになる。
【0048】
ここで、上記のように業務内容を分類するためには、リモート接続先のPC10で実行されているアプリケーション(リモート操作対象のアプリケーション)の操作ログを解析する必要がある。このため、PC10同士がリモート接続されている状態では、どちらのPC10がリモート接続先であるかを判別できる必要がある。
【0049】
そして、リモート接続先のPC10を判別する方法としては、リモート接続アプリのプロセスがアクティブになっているPC10を判別し、そのPC10がリモート接続元であり、他方のPC10をリモート接続先であると判別する方法が考えられる。この方法では、例えばOS標準のリモート接続アプリなど、既知のリモート接続アプリが実行されている場合には、リモート接続元およびリモート接続先の各PC10を容易に判別可能である。
【0050】
しかしながら、近年、働き方の多様化などの理由からリモート接続による業務が一般化し、それに伴って様々なリモート接続アプリが販売されている。このため、すべてのリモート接続アプリを事前に把握することが困難になりつつある。したがって、未知のリモート接続アプリが実行されている場合でも、そのリモート接続アプリを自動的に検出する仕組みが必要となる。
【0051】
本実施の形態において、管理サーバ100のアプリケーション判別部122は、操作ログに未知のリモート接続アプリのプロセス名が記録されている場合でも、そのプロセス名がリモート接続アプリのプロセスであることを自動的に判別する。これにより、PC10同士がリモート接続されて使用されている場合でも、業務分類部123がリモート接続先のPC10を正しく認識し、そのPC10の操作ログに基づいて業務内容を正しく分類できるようにする。
【0052】
図6は、画面状態に応じた操作ログの内容の違いについて説明するための図である。アプリケーション判別部122は、PC10から取得された操作ログに基づいて、未知のリモート接続アプリを判別する。ここで、PC10で取得される操作ログの内容には、OSの仕様により、リモート接続アプリのウィンドウの表示状態によって違いがある。具体的には、
図6に示すように、リモート接続の接続元PCにおけるリモート接続アプリのウィンドウが全画面状態の場合とそうでない場合(非全画面状態の場合)とで、取得される操作ログの内容が異なる。
【0053】
なお、全画面状態とは、リモート接続アプリのウィンドウが画面全体に表示される状態である。この状態では、ユーザがデスクトップ上のアイコンを選択したり、他のウィンドウを重ねて表示させることができない。一方、非全画面状態とは、リモート接続アプリのウィンドウが、デスクトップ上の1つのウィンドウとして認識される状態である。この状態では、ユーザがデスクトップ上のアイコンを選択したり、他のウィンドウを重ねて表示させることができる。
【0054】
図6では例として、操作ログに対応する単位時間において、接続元PCから接続先PCに対してリモート接続アプリによるリモート操作が行われており、なおかつ、接続元PCで100回の打鍵が行われたとする。
【0055】
図6の下側に示すように、リモート接続アプリが非全画面状態の場合、接続元PCで取得される操作ログには、アクティブプロセス名としてリモート接続アプリのプロセス名が記録され、打鍵数として100が記録される。また、接続先PCで取得される操作ログには、アクティブプロセス名としてリモート操作の操作対象となっているアプリケーション(操作対象アプリ)のプロセス名が記録され、打鍵数として100が記録される。このように、接続元PCと接続先PCの両方において、同じ数の打鍵数が検出される。
【0056】
一方、
図6の上側に示すように、リモート接続アプリが全画面状態の場合、接続先PCで取得される操作ログには、非全画面状態の場合と同様の内容が記録される。しかし、接続元PCで取得される操作ログには、アクティブプロセス名としてリモート接続アプリのプロセス名が記録されるが、打鍵数としては0が記録される。すなわち、リモート接続アプリが全画面状態の場合には、接続元PCでは打鍵数が検出されない。
【0057】
そこで、アプリケーション判別部122は、リモート接続アプリが全画面状態の場合と非全画面状態の場合とで、異なるロジックによってリモート接続アプリを検出する。
図7は、リモート接続アプリ検出処理の全体の手順を示すフローチャートの例である。
【0058】
[ステップS11]操作ログ受信部121は、各PC10から操作ログを受信し、操作ログデータベース111に蓄積する。操作ログ受信部121は、受信した操作ログを、送信元のPCごとに分類して操作ログデータベース111に登録する。ここで、所定期間(例えば1週間)における操作ログが操作ログデータベース111に蓄積されると、ステップS12以降の処理が実行される。
【0059】
[ステップS12]アプリケーション判別部122は、操作ログデータベース111内の操作ログテーブル114の中から、処理対象のユーザに対応する操作ログテーブル114を特定する。アプリケーション判別部122は、特定された操作ログテーブル114に登録された操作ログ(レコード)のうち、所定日数分の操作ログに基づいて、同一時間帯に使用されている同一ユーザの複数のPC10を特定する。ここで言う「同一時間帯」とは、操作ログの取得のための単位時間の時間帯(操作ログに記録された時刻を起点とする単位時間分の時間帯)のうち、複数のPC10の間で重複している時間帯を指す。複数のPC10において同一時間帯に操作ログが取得されている場合に、それらのPC10が同一時間帯に使用されていると判定される。
【0060】
ここでは例として、同一ユーザの2台のPC10が特定されたとする。アプリケーション判別部122は、各PC10から取得された所定日数分の操作ログのうち、同一時間帯にそれぞれのPC1から取得されている操作ログだけを参照して、以下のステップS13,S14の処理を実行する。
【0061】
[ステップS13]アプリケーション判別部122は、全画面状態で使用されているリモート接続アプリを検出する第1検出処理を実行する。
[ステップS14]アプリケーション判別部122は、非全画面状態で使用されているリモート接続アプリを検出する第2検出処理を実行する。
【0062】
次に、
図8~
図11を参照して、第1検出処理(
図7のステップS13)について説明する。
図8は、リモート接続アプリが全画面状態で使用される場合の操作ログの特徴について説明するための図である。なお、
図8では、ユーザによって使用されるアプリケーションのうち、リモート接続アプリ以外のアプリケーションを「一般アプリ」と記載する(後の
図12も同様)。
【0063】
図8では、接続元PCがユーザによって直接的に操作されている。時刻T1より前には、接続元PCでは一般アプリA1が使用されている。この状態では、接続元PCから取得される操作ログには、一般アプリA1のプロセス名がアクティブプロセス名として記録されるとともに、一般アプリA1に対する操作時の打鍵数が記録される。一方、接続先PCから取得される操作ログには、そのときに起動している一般アプリ(図示せず)があればその一般アプリのプロセス名が記録されるが、打鍵数は0になる。
【0064】
次に、時刻T1~T2の期間において、リモート接続アプリによって接続元PCと接続先PCとがリモート接続されたとする。この期間では、接続先PCでは一般アプリA2が起動し、この一般アプリA2が接続元PCからリモート操作されたとする。この場合、接続先PCから取得される操作ログには、一般アプリA2のプロセス名と、一般アプリA2に対する操作時の打鍵数とが記録される。一方、接続元PCでは、リモート接続アプリが全画面状態で使用されていたとする。この場合、接続元PCから取得される操作ログには、リモート接続アプリのプロセス名が登録されるが、打鍵数は0になる。
【0065】
この後、時刻T2でリモート接続が一時的に切断され、接続元PCでは再度一般アプリA1が使用されたとする。そして、時刻T3でリモート接続が再開され、時刻T4でリモート接続が切断されたとする。時刻T3~T4の期間では、時刻T1~T2の期間と同様に、接続元PCから取得される操作ログの打鍵数は0になる。一方、接続先PCから取得される操作ログの打鍵数は、操作対象の一般アプリに対する操作時の打鍵数(通常は1以上)となる。
【0066】
なお、
図8の例のように、接続先PCではリモート接続されている期間において一般アプリが切り替えて使用される場合がある。
図8では、一般アプリA2から一般アプリA3に切り替えられ、その後に再度一般アプリA2に切り替えられている。接続先PCから取得される操作ログのアクティブプロセス名には、そのときに使用されている(アクティブの)アプリケーションのプロセス名が登録されることになる。
【0067】
以上のように、リモート接続アプリが全画面状態で使用された場合、リモート接続された期間においては、接続先PCから取得された操作ログの打鍵数は0より明らかに大きい値になる一方、接続元PCから取得された操作ログの打鍵数は0になる。アプリケーション判別部122は、このような特徴に基づき、同一時間帯に操作ログが取得されている2台のPC10のうち、打鍵数が0であるPC10を接続元PCと推定することができる。そして、アプリケーション判別部122は、そのPC10のアクティブプロセスをリモート接続アプリのプロセスと推定することができる。
【0068】
このようにして、リモート接続アプリの候補プロセスが特定される。また、候補プロセスが実行されているPC10が接続元PCと推定される。アプリケーション判別部122は、次に、この候補プロセスの連続使用時間の分布を、既知のリモート接続アプリについての統計情報と比較する。アプリケーション判別部122は、既知のリモート接続アプリの統計情報に基づき、候補プロセスの連続使用時間の分布が、既知のリモート接続アプリについての連続使用時間の分布と同等である場合に、候補プロセスをリモート接続アプリのプロセスと判定する。
【0069】
以下、連続使用時間の分布の同等性を検定する処理について説明する。アプリケーション判別部122は、まず、候補プロセスが登録されている操作ログの中から、接続元PCの打鍵数が0であり、かつ、接続先PCでも同じ時間帯に操作ログが取得され、かつ、時間的に連続する操作ログをまとめる。アプリケーション判別部122は、このようにしてまとめられた操作ログ群のそれぞれに含まれる操作ログ数に単位時間(30秒)を乗算することで、操作ログ群のそれぞれについての連続使用時間を算出する。すなわち、連続使用時間は、リモート接続アプリの候補プロセスが連続して使用された時間を示す。上記計算により、所定日数における連続使用時間の分布が取得される。
【0070】
次に、アプリケーション判別部122は、統計的検定の手法を用いて、候補プロセスの連続使用時間の分布が、既知のリモート接続アプリの連続使用時間の分布と同等であるかを判定する。なお、判定精度を高めるため、候補プロセスおよび既知のリモート接続アプリのどちらについても、連続使用時間の分布を求めるために1週間以上の操作ログが用いられることが望ましい。
【0071】
図9は、連続使用時間の分布の同等性判定方法を説明するための図である。
図9において、曲線L1は候補プロセスの連続使用時間の度数分布例を示し、曲線L2は既知のリモート接続アプリの連続使用時間の度数分布例を示す。曲線L1と曲線L2との一致度が高ければ、候補プロセスはリモート接続アプリである可能性が高いと推定される。
【0072】
アプリケーション判別部122は、連続使用時間の分布を示す値として、連続使用時間の平均値と分散とを用いる。例えば、アプリケーション判別部122は、連続使用時間の平均値として、下記の式(1)にしたがって標本平均を算出する。また、アプリケーション判別部122は、連続使用時間の分散として、下記の式(2)にしたがって標本分散を算出する。なお、式(1),(2)において、xiは、i番目の連続使用時間を示す。
【0073】
【0074】
次に、アプリケーション判別部122は、算出された平均値および分散のそれぞれの信頼区間を算出する。例えば、アプリケーション判別部122は、下記の式(3)にしたがって平均値μの信頼区間を算出する。また、アプリケーション判別部122は、下記の式(4)にしたがって分散の信頼区間を算出する。
【0075】
【0076】
なお、式(3)における左辺の第2項および右辺の第2項は、自由度が(n-1)のt分布における両側有意水準の基準値(t値)を示す。また、式(4)における左辺の分母および右辺の分母は、自由度が(n-1)のカイ二乗分布における両側有意水準の基準値を示す。
【0077】
図10は、算出された信頼区間に基づく同等性の判定方法の例を示す図である。アプリケーション判別部122は、例えば、上記のように算出された平均値および分散の信頼区間を、所定の上限閾値THmaxおよび下限閾値THminと比較する。アプリケーション判別部122は、この比較結果に基づいて、候補プロセスの連続使用時間の分布が、既知のリモート接続アプリの連続使用時間の分布と同等であるか否かを判定する。
【0078】
上限閾値THmaxおよび下限閾値THminは、既知のリモート接続アプリの統計情報に基づいてあらかじめ算出される。すなわち、既知のリモート接続アプリのプロセスに関する過去の操作ログに基づいて、このプロセスの連続使用時間についての平均値および分散の信頼区間が算出される。算出された信頼区間の上限および下限が、上限閾値THmaxおよび下限閾値THminにそれぞれ設定される。
【0079】
図示を省略するが、上限閾値THmaxおよび下限閾値THminは、平均値と分散のそれぞれについて個別に算出される。
アプリケーション判別部122は、候補プロセスの連続使用時間に基づく平均値の信頼区間を、平均値に対応する上限閾値THmaxおよび下限閾値THminと比較する。また、アプリケーション判別部122は、候補プロセスの連続使用時間に基づく分散の信頼区間を、分散に対応する上限閾値THmaxおよび下限閾値THminと比較する。アプリケーション判別部122は、平均値と分散の両方について、信頼区間の上限値が上限閾値THmax以下であり、なおかつ信頼区間の下限値が下限閾値THmin以上である場合に、候補プロセスの連続使用時間の分布が、既知のリモート接続アプリの連続使用時間の分布と同等であると判定する。この場合、候補プロセスがリモート接続アプリのプロセスであると判定される。
【0080】
図11は、第1検出処理の手順を示すフローチャートの例である。この
図11は、
図7のステップS13の処理に対応する。また、ここでは例として、
図7のステップS12において同一ユーザの2台のPC10a,10bが特定されたとする。アプリケーション判別部122は、PC10a,10bから取得された所定日数分の操作ログのうち、同一時間帯にPC10a,10bのそれぞれから取得されている操作ログだけを参照して、
図11の処理を実行する。ただし、少なくとも一方のPCにおいて、アクティブプロセスとしてロック画面(サインイン画面)を表示するプロセスが記録されている時間帯の操作ログは、参照の対象から除外される。
【0081】
[ステップS21]アプリケーション判別部122は、PC10a,10bのうち、どちらが接続元PCかを推定する。
例えば、アプリケーション判別部122は、PC10a,10bのうち、稼働時間が長いPCを接続元PCと判定する。稼働時間は、例えば、操作ログが取得されている時間の総和として算出される。
【0082】
また、アプリケーション判別部122は、一方のPCにおいて未知のアプリケーションに対応する同一のプロセスがアクティブである期間において、他方のPCで複数のアクティブプロセスが切り替えて使用されている場合に、前者のPCを接続元PCと判定してもよい。
【0083】
なお、未知のアプリケーションに対応するプロセスとは、アプリデータベース112に登録されていないアプリケーションのプロセスを示す。これ以後、「未知のアプリケーションに対応するプロセス」を、「未知のプロセス」と略称する。
【0084】
以下、例としてPC10aが接続元PCと判定されたものとする。
[ステップS22]アプリケーション判別部122は、接続元であるPC10aのアクティブプロセスの中から、次のような条件を満たす未知のプロセスを特定する。この条件とは、PC10aで未知のプロセスがアクティブである期間において、他方のPC10bにおいて1以上の打鍵数が検出されていることである。なお、この条件を満たす未知のプロセスが存在しなかった場合、第1検出処理が終了し、第2検出処理が開始される。
【0085】
[ステップS23]アプリケーション判別部122は、ステップS22で特定された未知のプロセスがアクティブである期間のうち、PC10aで検出された打鍵数が0である期間の割合を算出する。
【0086】
[ステップS24]アプリケーション判別部122は、PC10aで検出された打鍵数が0である期間の割合が、所定の閾値(例えば95%)以上であるかを判定する。この閾値は、閾値データベース113から取得される。上記期間の割合が閾値以上である場合、ステップS22で特定された未知のプロセスがリモート接続アプリのプロセスの候補(候補プロセス)と判定されて、処理がステップS25に進められる。一方、上記の割合が閾値より小さい場合、第1検出処理が終了し、第2検出処理が開始される。
【0087】
ここで、閾値としては100%が用いられてもよい。しかし、実際には、アクティブプロセスとしてリモート接続アプリのプロセスが検出されている場合でも、操作ログの対象期間ではアクティブなプロセスとしてリモート接続アプリのプロセスと他のアプリケーションのプロセスとが切り替えられている場合がある。このような場合、アクティブプロセスとしてリモート接続アプリのプロセスが検出されていても、打鍵数が1以上になり得る。このため、例えば、アクティブプロセスとしてリモート接続アプリのプロセスが連続して検出されている期間の途中に、打鍵数が一時的に1以上になる場合がある。閾値を100%より小さい値に設定することで、このように打鍵数が一時的に1以上になる、すなわち他のアプリケーションに一時的に切り替えられた場合でも、その前後をリモート接続アプリが連続して使用されている期間として検出することができる。
【0088】
[ステップS25]アプリケーション判別部122は、候補プロセスの連続使用時間を算出する。具体的には、アプリケーション判別部122は、候補プロセスが登録されている操作ログの中から、時間的に連続する操作ログをまとめる。アプリケーション判別部122は、このようにしてまとめられた操作ログ群のそれぞれに含まれる操作ログ数に単位時間(30秒)を乗算することで、操作ログ群のそれぞれについての連続使用時間を算出する。これにより、所定日数における連続使用時間の分布が取得される。
【0089】
[ステップS26]アプリケーション判別部122は、前述の式(1)を用いて、連続使用時間の平均値を算出する。アプリケーション判別部122は、算出された平均値に基づいて、候補プロセスについての連続使用時間の分布と、既存のリモート接続アプリについての連続使用時間の分布との同等性を検定する。
【0090】
具体的には、アプリケーション判別部122は、前述の式(3)を用いて、候補プロセスの平均値の信頼区間を算出する。また、アプリケーション判別部122は、既存のリモート接続アプリの統計情報からあらかじめ算出された、平均値に対応する上限閾値THmaxおよび下限閾値THminを閾値データベース113から読み出す。アプリケーション判別部122は、候補プロセスの平均値の信頼区間が上限閾値THmaxと下限閾値THminとの間に収まっている場合に、候補プロセスについての連続使用時間の分布と、既存のリモート接続アプリについての連続使用時間の分布とが同等であると判定する。
【0091】
[ステップS27]アプリケーション判別部122は、前述の式(2)を用いて、連続使用時間の分散を算出する。アプリケーション判別部122は、算出された分散に基づいて、候補プロセスについての連続使用時間の分布と、既存のリモート接続アプリについての連続使用時間の分布との同等性を検定する。
【0092】
具体的には、アプリケーション判別部122は、前述の式(4)を用いて、候補プロセスの分散の信頼区間を算出する。また、アプリケーション判別部122は、既存のリモート接続アプリの統計情報からあらかじめ算出された、分散に対応する上限閾値THmaxおよび下限閾値THminを閾値データベース113から読み出す。アプリケーション判別部122は、候補プロセスの分散の信頼区間が上限閾値THmaxと下限閾値THminとの間に収まっている場合に、候補プロセスについての連続使用時間の分布と、既存のリモート接続アプリについての連続使用時間の分布とが同等であると判定する。
【0093】
[ステップS28]アプリケーション判別部122は、ステップS26,S27の両方の検定において同等と判定されたかを判定する。両方の検定において同等と判定された場合、処理がステップS29に進められる。一方、少なくとも一方の検定において同等でないと判定された場合、第1検出処理が終了し、第2検出処理が開始される。
【0094】
[ステップS29]アプリケーション判別部122は、候補プロセスを、リモート接続アプリのプロセスであると判定する。
ステップS29の実行が完了すると、
図7のリモート接続アプリ検出処理が終了する。あるいは、ステップS29の実行が完了すると、第1検出処理が終了し、第2検出処理が開始されてもよい。
【0095】
以上の処理により、管理サーバ100は、全画面状態で使用されている未知のリモート接続アプリを精度よく検出できる。
次に、
図12~
図14を参照して、第2検出処理(
図7のステップS14)について説明する。
【0096】
図12は、リモート接続アプリが全画面状態で使用される場合の操作ログの特徴について説明するための図である。
図12では、
図8と同様に、時刻T1~T2の期間と時刻T3~T4の期間において、リモート接続アプリによって接続元PCと接続先PCとがリモート接続されている。ただし、
図8とは異なり、リモート接続された上記各期間において、リモート接続アプリは非全画面状態で使用されていたとする。この場合、リモート接続された各期間では通常、接続元PCと接続先PCの両方において、打鍵数として1以上の値が検出される。
【0097】
ここで、全画面状態のリモート接続アプリによってリモート接続されている場合、接続元PCで検出される打鍵数と接続先PCで検出される打鍵数とは、基本的に同一の値になる。アプリケーション判別部122は、このような特徴を利用して、2台のPC10間で打鍵数が検出されている期間において、PC10間における打鍵数の相関が高い場合に、一方のPC10のアクティブプロセスをリモート接続アプリのプロセスと判定する。
【0098】
また、
図12の時刻T3~T4の期間のように、リモート接続されている状態では、接続先PCにおいてアクティブプロセスが切り替えられる場合がある。そこで、アプリケーション判別部122は、PC10間の打鍵数の相関が高い期間において、一方のPC10では同一のプロセスがアクティブであるが、他方のPC10では複数のアクティブプロセスが切り替えられている場合に、前者のPC10を接続元PCと判定することができる。
【0099】
図13は、接続元PCおよび接続先PCにおける打鍵数の推移の例を示す図である。
図13の例では、時刻T11~T12の期間と時刻T13~T14の期間において、リモート接続アプリによって接続元PCと接続先PCとがリモート接続されている。ただし、これらの期間において、リモート接続アプリは非全画面状態で使用されていたとする。
【0100】
この場合、
図13に示すように、リモート接続されている期間では、接続元PCで検出される打鍵数と接続先PCで検出される打鍵数とは、ほぼ同じ値になる。このため、リモート接続されている期間では、接続元PCで検出される打鍵数と接続先PCで検出される打鍵数との相関が高い。このことから、アプリケーション判別部122は、2台のPC10間で打鍵数が検出されている期間において、PC10間における打鍵数の相関が高い場合に、一方のPC10のアクティブプロセスをリモート接続アプリのプロセスと判定することができる。
【0101】
図14は、第2検出処理の手順を示すフローチャートの例である。この
図14は、
図7のステップS14の処理に対応する。また、ここでは例として、
図7のステップS12において同一ユーザの2台のPC10a,10bが特定されたとする。アプリケーション判別部122は、PC10a,10bから取得された所定日数分の操作ログのうち、同一時間帯にPC10a,10bのそれぞれから取得されている操作ログだけを参照して、
図14の処理を実行する。
【0102】
[ステップS31]アプリケーション判別部122は、PC10a,10bの一方でアクティブになっている未知のプロセスの中から、同じ時間帯において他方において1以上の打鍵数が検出されている未知のプロセスを抽出する。
【0103】
[ステップS32]アプリケーション判別部122は、ステップS31で抽出された未知のプロセスの中から1つを処理対象として選択する。以下、処理対象として選択されたプロセスがアクティブプロセスとして実行されていたPC10を、「一方のPC10」と記載する。
【0104】
[ステップS33]アプリケーション判別部122は、選択された未知のプロセスが一方のPC10でアクティブである期間における当該PC10での打鍵数の推移と、同じ期間における他方のPC10での打鍵数の推移との相関係数を算出する。
【0105】
[ステップS34]アプリケーション判別部122は、相関係数が所定の閾値以上かを判定する。この閾値は、閾値データベース113から取得される。相関係数が閾値以上の場合、処理がステップS35に進められ、相関係数が閾値より小さい場合、処理がステップS36に進められる。
【0106】
[ステップS35]アプリケーション判別部122は、ステップS32で選択された未知のプロセスを、リモート接続アプリの候補プロセスに分類する。
[ステップS36]アプリケーション判別部122は、ステップS31で抽出された未知のプロセスのすべてを処理対象として選択済みかを判定する。未選択のプロセスがある場合、処理がステップS32に進められ、未選択のプロセスの1つが処理対象として選択される。一方、すべてのプロセスを選択済みの場合、処理がステップS37に進められる。
【0107】
[ステップS37]アプリケーション判別部122は、ステップS35で候補プロセスに分類された未知のプロセスのそれぞれが、リモート接続アプリのプロセスかを判定する。例えば、アプリケーション判別部122は、候補プロセスが一方のPC10でアクティブになっている期間において、他方のPC10で複数のプロセスが切り替えて使用されている場合に、候補プロセスがリモート接続アプリのプロセスであると判定する。
【0108】
あるいは、アプリケーション判別部122は、次のような方法でリモート接続アプリのプロセスを特定してもよい。アプリケーション判別部122は、候補プロセスのうち、使用時間が最長の候補プロセスをリモート接続アプリのプロセスであると判定する。使用時間は、候補プロセスが一方のPC10でアクティブであり、かつこのPC10での打鍵数が1以上である期間の長さを示す。この方法も、上記と同様、リモート接続アプリのプロセスがアクティブである期間では、他方のPC10において複数のプロセスが切り替えて使用されることが多いという特徴を利用したものである。
【0109】
以上の処理により、管理サーバ100は、非全画面状態で使用されている未知のリモート接続アプリを精度よく検出できる。
なお、上記の各実施の形態に示した装置(例えば、アプリケーション検出装置1、端末装置5a,5b,・・・、PC10a,10b,10c,・・・、管理サーバ100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
【0110】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0111】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【0112】
1 アプリケーション検出装置
2 記憶部
3 処理部
4 データベース
5a,5b 端末装置
P1~P3 プロセス
Z1,Z2 期間