(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションのコードに基づき、当該複数のアプリケーションがパーミッションにより所定のプライバシー情報にアクセスするか否かを判定し、所定のプライバシー情報にアクセスすると判定されたアプリケーションに第１のラベルを付与し、所定のプライバシー情報にアクセスしないと判定されたアプリケーションに第１のラベルと異なる第２のラベルを付与するラベル生成部と、
前記第２のラベルを付与されたアプリケーションの説明文のテキストよりも、前記第１のラベルを付与されたアプリケーションの説明文のテキストに多く含まれる単語のスコアが高くなるよう前記複数のアプリケーションの説明文に含まれる単語各々のスコアを算出し、前記パーミッションに対応付けて、算出されたスコアが上位から所定数の単語を、前記複数のアプリケーションの説明文から抽出するスコア算出部と、
前記スコア算出部が抽出した単語が説明文のテキストに含まれるアプリケーションを前記パーミッションに言及するアプリケーションとして分類し、前記スコア算出部が抽出した単語が説明文のテキストに含まれないアプリケーションを前記パーミッションに言及しないアプリケーションとして分類する分類部と、
を備えるソフトウェア解析システム。
【請求項２】
前記ラベル生成部により前記第１のラベルを付与されたアプリケーションであって、前記分類部により前記パーミッションに言及しないアプリケーションに分類されたアプリケーションを、悪性アプリケーションとして特定する特定部を、さらに備える請求項１に記載のソフトウェア解析システム。
【請求項３】
前記ラベル生成部により第１のラベルを付与されたアプリケーションであって、前記分類部により前記パーミッションに言及しないアプリケーションに分類されたアプリケーションが、モバイル端末にインストールされる際に、警告情報を送信する送信部をさらに備える請求項１または２に記載のソフトウェア解析システム。
【請求項４】
前記スコア算出部が抽出した単語と、前記パーミッションと、を対応づけて記憶する記憶部をさらに備え、
前記分類部は、新しいアプリケーションが検知されると、前記記憶部に前記パーミッションに対応付けて記憶される単語にもとづき、当該アプリケーションを、前記パーミッションに言及するアプリケーションおよび前記パーミッションに言及しないアプリケーションのいずれかに分類する請求項１から３のいずれか１項に記載のソフトウェア解析システム。
【請求項５】
前記スコア算出部は、式（１）に基づいて、前記単語のスコアを算出する請求項１から４のいずれか１項に記載のソフトウェア解析システム。
【数１】
0006437892.tif 000003
（式（１）中、ｗｉはアプリケーションＡｉ（ｉは１以上Ｎ以下の自然数）に含まれる単語であり、Ｒは前記第１のラベルを付与されたアプリケーションの総数であり、ｒｉは前記複数のアプリケーションのうち単語ｗｉを含むアプリケーションの総数であり、Ｎは前記複数のアプリケーションの総数であり、ｎｉは単語ｗｉを含むアプリケーションの総数である。）
【請求項６】
コンピュータによって実行されるソフトウェア解析方法であって、
複数のアプリケーションのコードに基づき、当該複数のアプリケーションがパーミッションにより所定のプライバシー情報にアクセスするか否かを判定し、所定のプライバシー情報にアクセスすると判定されたアプリケーションに第１のラベルを付与し、所定のプライバシー情報にアクセスしないと判定されたアプリケーションに第１のラベルと異なる第２のラベルを付与するラベル生成工程と、
前記第２のラベルを付与されたアプリケーションの説明文のテキストよりも、前記第１のラベルを付与されたアプリケーションの説明文のテキストに多く含まれる単語のスコアが高くなるよう前記複数のアプリケーションの説明文に含まれる単語各々のスコアを算出し、パーミッションに対応付けて、算出されたスコアが上位から所定数の単語を、複数のアプリケーションの説明文から抽出するスコア算出工程と、
前記スコア算出工程において抽出した単語が説明文のテキストに含まれるアプリケーションを前記パーミッションに言及するアプリケーションとして分類し、前記スコア算出工程において抽出した単語が説明文のテキストに含まれないアプリケーションを前記パーミッションに言及しないアプリケーションとして分類する分類工程と、
を備えるソフトウェア解析方法。
【請求項７】
複数のアプリケーションのコードに基づき、当該複数のアプリケーションがパーミッションにより所定のプライバシー情報にアクセスするか否かを判定し、所定のプライバシー情報にアクセスすると判定されたアプリケーションに第１のラベルを付与し、所定のプライバシー情報にアクセスしないと判定されたアプリケーションに第１のラベルと異なる第２のラベルを付与するラベル生成手順と、
前記第２のラベルを付与されたアプリケーションの説明文のテキストよりも、前記第１のラベルを付与されたアプリケーションの説明文のテキストに多く含まれる単語のスコアが高くなるよう前記複数のアプリケーションの説明文に含まれる単語各々のスコアを算出し、パーミッションに対応付けて、算出されたスコアが上位から所定数の単語を、複数のアプリケーションの説明文から抽出するスコア算出手順と、
前記スコア算出手順において抽出した単語が説明文のテキストに含まれるアプリケーションを前記パーミッションに言及するアプリケーションとして分類し、前記スコア算出手順において抽出した単語が説明文のテキストに含まれないアプリケーションを前記パーミッションに言及しないアプリケーションとして分類する分類手順と、
をコンピュータに実行させるためのソフトウェア解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムに関する。
【背景技術】
【０００２】
スマートフォン等のモバイル端末の普及に伴い、ユーザがモバイル端末上でダウンロードして利用できるアプリケーションが広く利用されるようになっている。Android（登録商標）やiOS（登録商標）等が搭載されたモバイル端末で動作するアプリケーションは、ユーザのプライバシー情報を処理することが多い。ユーザのプライバシー情報は、モバイル端末に内蔵されたセンサ等のハードウェアが取得するか、または、ユーザ自身がモバイル端末に入力する。プライバシー情報とはたとえば、ユーザの位置情報、モバイル端末の個体識別番号、アドレス帳などユーザ個人に紐付く情報である。
【０００３】
モバイル端末で動作するアプリケーションはプライバシー情報を処理する際、当該プライバシー情報を適切に取り扱うことが求められる。また、モバイル端末で動作するアプリケーションは、どのようなプライバシー情報にアクセスするか、ユーザに開示することが求められる。
【０００４】
かかる要求を実現するため、多くのモバイル端末プラットフォームが、パーミッションと呼ばれる機能を導入している。パーミッションとは、プライバシー情報へのアクセスを制御するために導入された機能である。
【０００５】
たとえば、位置情報を使用するアプリケーションは、当該アプリケーションがモバイル端末にインストールされるときに、ユーザに対して位置情報のパーミッションを使用する許可を求める。ユーザがパーミッションの使用を許可すると、当該アプリケーションがモバイル端末にインストールされる。ユーザがパーミッションの使用を許可しない場合、当該アプリケーションはモバイル端末にインストールされない。パーミッションを利用することにより、ユーザは、アプリケーションが使用する可能性があるプライバシー情報を予め知ることができる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】R.  Pandita,  X.  Xiao,  W.  Yang,  W.  Enck,  and  T.  Xie,  “WHYPER:  Towards  Automating  Risk  Assessment  of  Mobile  Applications”,  in  Proc.  of  the  22nd  USENIX  Security  Symposium,  pp.  527-542,  2013
【非特許文献２】渡邉  卓弥、秋山  満昭、酒井  哲也、鷲崎  弘宜、森  達哉、「Androidアプリの説明文とプライバシー情報アクセスの相関分析」、コンピュータセキュリティシンポジウム２０１４論文集、vol.  2014,  No.  2,  pp.  590-597,  Oct  2014
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のパーミッションの機能によって提供される情報は、多くの場合ユーザに注意されない（非特許文献１，２参照）。また、パーミッション機能によって提供される情報は、専門的な知識がなければ理解しにくい。また、パーミッション機能によって提供される情報は、ユーザが直感的に把握しにくい。このため、ユーザが気づかないうちに、アプリケーションがプライバシー情報を取得してしまうことも考えられる。
【０００８】
かかる状況に鑑み、アプリケーションの説明文中にプライバシー情報にアクセスすることが記載されているか否かを自動判定する技術が提案されている。アプリケーションの説明文はあらゆるマーケットに設定されており、アプリケーションを検索する際の検索対象ともなる。たとえば、非特許文献１は、モバイル端末のアプリケーションの説明文のテキスト（以下、説明文テキストまたはテキストとも呼ぶ。）を解析して、テキスト中のどの部分がプライバシー情報へのアクセスに相当するか、特定する技術を提案している。また、非特許文献２は、テキスト解析とアプリケーションのコード解析とを組み合わせて、コード解析から示唆されるプライバシー情報へのアクセスと、テキスト中の記述とに矛盾がある場合に矛盾があるアプリケーションを抽出する技術を提案している。
【０００９】
しかし、非特許文献１，２に記載の技術における説明文の解析では、人間が予めアプリケーションの説明文テキストを読み、特定のプライバシー情報にアクセスする旨の記載があるかないかを解読する。そして、解読結果に基づき、アプリケーションにラベルを付与する。しかし、プライバシー情報は多岐にわたり、機械学習等の統計的方法でテキストの分類を試みる場合、大量のテキストを準備してラベルを付与することになる。一般的に、手動でデータにラベルを付与するという作業はコストがかかる。また、大規模なデータに対して手動でラベルを付与するという手法はスケーラビリティに欠ける。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、アプリケーションのコードおよび説明文に基づき、アプリケーションによるユーザのプライバシー情報へのアクセスの有無がユーザに対して開示されているか否かを自動的に解析することを可能にするソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
開示するソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムは、複数のアプリケーションのコードに基づき、当該複数のアプリケーションがパーミッションにより所定のプライバシー情報にアクセスするか否かを判定する。そして、開示するソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムは、所定のプライバシー情報にアクセスすると判定されたアプリケーションに第１のラベルを付与し、所定のプライバシー情報にアクセスしないと判定されたアプリケーションに第１のラベルと異なる第２のラベルを付与する。開示するソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムは、第２のラベルを付与されたアプリケーションの説明文のテキストよりも、第１のラベルを付与されたアプリケーションの説明文のテキストに多く含まれる単語のスコアが高くなるよう複数のアプリケーションの説明文に含まれる単語各々のスコアを算出し、パーミッションに対応付けて、算出されたスコアが上位から所定数の単語を、複数のアプリケーションの説明文から抽出する。さらに、開示するソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムは、抽出した単語が説明文のテキストに含まれるアプリケーションをパーミッションに言及するアプリケーションとして分類し、抽出した単語が説明文のテキストに含まれないアプリケーションをパーミッションに言及しないアプリケーションとして分類することを特徴とする。
【発明の効果】
【００１２】
開示するソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラムは、アプリケーションのコードおよび説明文に基づき、アプリケーションによるユーザのプライバシー情報へのアクセスの有無がユーザに対して開示されているか否かを自動的に解析することを可能にするという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施形態に係るソフトウェア解析システムの構成の一例を示す概略図である。
【図２】図２は、アプリ情報記憶部に格納される情報の構成の一例を説明するための図である。
【図３】図３は、キーワードリスト記憶部に格納される情報の構成の一例を説明するための図である。
【図４】図４は、実施形態に係るソフトウェア解析システムが実行する処理の流れの一例を示すフローチャートである。
【図５】図５は、実施形態に係るラベル生成処理の流れの一例を示すフローチャートである。
【図６】図６は、実施形態に係るスコア算出処理（キーワード抽出処理）の流れの一例を示すフローチャートである。
【図７】図７は、実施形態に係る分類処理の流れの一例を示すフローチャートである。
【図８】図８は、実施形態に係るソフトウェア解析システムが実行する処理の流れの一例を説明するためのシーケンス図である。
【図９】図９は、変形例に係るソフトウェア解析システムの構成の一例を示す概略図である。
【図１０】図１０は、変形例に係るアプリ情報記憶部に格納される情報の構成の一例を示す図である。
【図１１】図１１は、変形例に係るソフトウェア解析システムが実行する処理の流れの一例を示すフローチャートである。
【図１２】図１２は、実施形態に係るソフトウェア解析プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に、開示するシステム、方法およびプログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。また、各実施形態は適宜組み合わせることができる。
【００１５】
［ソフトウェア解析システムの構成の一例］
図１は、実施形態に係るソフトウェア解析システム１の構成の一例を示す概略図である。図１に示すソフトウェア解析システム１は、たとえば、ユーザがモバイル端末にアプリケーションをダウンロードするためにアクセスするダウンロードサービスの運営者が運用する、アプリケーションの事前審査を行うサーバである。なお、以下の記載中、「アプリケーション」は「アプリ」とも呼ぶ。
【００１６】
ソフトウェア解析システム１は、記憶部１０と、ラベル生成部２０と、スコア算出部３０と、分類部４０と、を備える。
【００１７】
記憶部１０はたとえば、半導体メモリ素子や記憶装置である。例えば、半導体メモリ素子としては、ＶＲＡＭ（Video  Random  Access  Memory）、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などを用いることができる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置を用いることができる。
【００１８】
記憶部１０は、ソフトウェア解析システム１による解析処理の対象となるアプリケーションに関する情報を記憶する。また、記憶部１０は、ソフトウェア解析システム１による解析処理の結果得られる情報を記憶する。
【００１９】
記憶部１０は、アプリ情報記憶部１１と、キーワードリスト記憶部１２と、を備える。図２は、アプリ情報記憶部１１に格納される情報の構成の一例を説明するための図である。また、図３は、キーワードリスト記憶部１２に格納される情報の構成の一例を説明するための図である。
【００２０】
図２に示すように、アプリ情報記憶部１１は、「アプリＩＤ」に対応付けて、「コード」と、「説明文テキスト」と、「プライバシー情報」と、「ラベル」と、「分類結果」と、を記憶する。
【００２１】
「アプリＩＤ」はソフトウェア解析システム１の解析処理の対象となるアプリケーションを一意に識別するための識別子である。「コード」は、当該アプリケーションのコードである。たとえば、アプリケーションのソースコードである。「説明文テキスト」は、当該アプリケーションの説明文のテキストである。「プライバシー情報」は、パーミッションによりアプリケーションのアクセスが許可されるユーザのプライバシー情報の種類を示す。プライバシー情報としては、たとえば、ＧＰＳ（Global  Positioning  System）情報や、カレンダー情報、カメラ機能、アドレス帳等がある。
【００２２】
「ラベル」は、ソフトウェア解析システム１によるコード解析の結果にもとづき、ソフトウェア解析システム１が各アプリケーションに付与するラベルである。また、「ラベル」は、アプリケーションが所定のプライバシー情報にアクセスするか否かの判定結果を示す暫定的なラベルである。ラベルには、「言及あり」と「言及なし」の２種類がある。「言及あり」は、アプリケーションが所定のプライバシー情報にアクセスすることを示す情報がコード中に存在することを示す。また、「言及なし」は、アプリケーションが所定のプライバシー情報にアクセスすることを示す情報がコード中に存在しないことを示す。「分類結果」は、ソフトウェア解析システム１が、説明文テキストを解析して抽出したキーワードが、各アプリケーションの説明文テキストに含まれるか否かにもとづき、アプリケーションを分類した結果を示す。「分類結果」には、「言及あり」と「言及なし」の２種類がある。「言及あり」は、アプリケーションの説明文テキストにキーワードが含まれることを示す。「言及なし」は、アプリケーションの説明文テキストにキーワードが含まれないことを示す。「ラベル」および「分類結果」は、プライバシー情報各々に対応づけて格納される。なお、ラベルの生成処理および分類結果を得るための分類処理については後述する。なお、図２では、プライバシー情報とパーミッションとが一意に対応づけられることを前提として、ラベルおよび分類結果とプライバシー情報とを対応付けて記憶するが、プライバシー情報の代わりにパーミッションに対応づけて記憶するように構成してもよい。
【００２３】
図２中、たとえば、アプリＩＤ「ＡＰ００１」のアプリケーションに対応づけて、当該アプリケーションの説明文テキスト「〜〜〜」と、対応するコード「〜〜〜」と、が記憶されている。また、当該アプリケーションに対応づけて、当該アプリケーションが３種類のプライバシー情報各々にアクセスするか否かを示すラベルと分類結果とが記憶されている。「プライバシー情報、カレンダー」については、「ラベル、言及あり」が記憶されている。これは、コード解析によれば、アプリＩＤ「ＡＰ００１」のアプリケーションはユーザのカレンダーにアクセスする、ということを示す。また図２中、アプリＩＤ「ＡＰ００１」に対応付けて「プライバシー情報、アドレス帳」、「分類結果、言及なし」が記憶されている。これは、アプリＩＤ「ＡＰ００１」で特定されるアプリケーションの説明文テキストには、プライバシー情報「アドレス帳」に対応するキーワードが含まれないことを示す。
【００２４】
次に、図３を参照して、キーワードリスト記憶部１２に記憶される情報について説明する。図３に示すように、キーワードリスト記憶部１２は、「プライバシー情報」と、「機能（パーミッション）」と、「キーワード」と、を記憶する。「プライバシー情報」は、アプリ情報記憶部１１に記憶される「プライバシー情報」と同様である。「機能（パーミッション）」は、対応するプライバシー情報へのアクセスを許可するパーミッションの名称である。パーミッションとはたとえばAndroid（登録商標）について規定されている「READ_CONTACTS」、「READ_CALENDER」などである。「キーワード」は、ソフトウェア解析システム１によりアプリケーションの説明文テキストから抽出されるキーワードである。キーワードを抽出する処理の詳細については後述する。
【００２５】
図３の例では、「プライバシー情報、ＧＰＳ情報」に対応づけて、「機能（パーミッション）、Location」と、「キーワード、gps,  location,  map」とが記憶されている。これは、パーミッション「Location」の機能によってアクセスが許可されるプライバシー情報は、ＧＰＳ情報であることを示す。また、パーミッション「Location」に対応するキーワードとして「gps,  location,  map」の３つの単語が抽出されたことを示す。なお、図３の例では、各プライバシー情報および機能（パーミッション）に対応づけて３つのキーワードが記憶されている。ただし、各プライバシー情報および機能（パーミッション）に対応づけられるキーワードの数は３つに限定されない。
【００２６】
図１に戻り、さらにソフトウェア解析システム１の構成の一例につき説明する。ラベル生成部２０は、記憶部１０に記憶されるアプリケーションの情報にもとづき、コード解析の結果、各アプリケーションがユーザのプライバシー情報にアクセスすると判定されたか否かを示すラベルを生成する。
【００２７】
スコア算出部３０は、ラベル生成部２０により生成されたラベルを用いて、アプリケーションの説明文テキストを解析し、説明文テキストに含まれる単語各々のスコアを算出する。スコア算出部３０は、パーミッションごとに各単語のスコアを算出する。スコア算出部３０は、ラベル「言及なし」のアプリケーションの説明文のテキストよりも、ラベル「言及あり」のアプリケーションの説明文のテキストに多く含まれる単語のスコアが高くなるように、説明文テキストに含まれる単語各々のスコアを算出する。ただし、算出手法は特に限定されず、たとえば、オッズ比や適合性フィードバックを用いる手法を適用することができる。
【００２８】
また、スコア算出部３０が算出するスコアの算出手法は、ラベル「言及あり」のアプリケーションの説明文テキストに頻出する単語であって、ラベル「言及なし」のアプリケーションの説明文テキストにはほとんど出現しない単語ほど高い値となるように設定する。つまり、ラベル「言及あり」のアプリケーションの説明文テキストにおける出現頻度が、ラベル「言及なし」のアプリケーションの説明文テキストにおける出現頻度よりも高い単語ほどスコアが高くなるよう、スコアの算出手法を設定する。また、スコアの算出手法は、ＡＰＩ（Application  Programming  Interface）を使用するアプリケーションの説明文テキストに頻出する単語であって、ＡＰＩを使用していないアプリケーションの説明文テキストにはほとんど出現しない単語ほど高い値となるように設定する。
【００２９】
スコア算出部３０は、パーミッションに対応付けてスコアが高い順に上位所定数の単語を、パーミッションに対応するキーワードとして抽出する。キーワードとは、対応するプライバシー情報にアクセスするアプリケーションの説明文テキストに出現すると予想される単語である。スコア算出部３０が抽出したキーワードは、プライバシー情報およびパーミッションに対応づけて、キーワードリスト記憶部１２に記憶される。
【００３０】
分類部４０は、各アプリケーションの説明文テキストが、抽出されたキーワードを含むか否かを判定する。そして、分類部４０は、キーワードを含む説明文テキストのアプリケーションを、「言及あり」のアプリケーションとして分類する。また、分類部４０は、キーワードを含まない説明文テキストのアプリケーションを、「言及なし」のアプリケーションとして分類する。分類部４０による分類結果は、各アプリケーションおよびプライバシー情報に対応づけて、アプリ情報記憶部１１に記憶される。
【００３１】
［ソフトウェア解析システムによる解析処理の流れの一例］
図４は、実施形態に係るソフトウェア解析システム１が実行する処理の流れの一例を示すフローチャートである。図４の処理の前提として、ソフトウェア解析システム１は予め、複数のアプリケーションに関する情報を取得し、記憶部１０のアプリ情報記憶部１１に記憶しているものとする。図４に示すように、ソフトウェア解析システム１による解析処理は、ラベル生成部２０によるラベル生成（コード解析）（ステップＳ２１）、スコア算出部３０によるスコア算出（キーワード抽出）（ステップＳ２２）、分類部４０による分類（ステップＳ２３）の各処理を含む。分類部４０による分類が完了すると処理は終了する。以下、各部による処理の流れについて説明する。
【００３２】
［ラベル生成処理の流れの一例］
ラベル生成部２０は、アプリ情報記憶部１１に記憶されるアプリケーションの情報にもとづき、各アプリケーションのラベルを生成する。図５は、実施形態に係るラベル生成処理の流れの一例を示すフローチャートである。図５に示すように、ラベル生成部２０はまず、解析の対象として、１つのアプリケーションと、１つのプライバシー情報を選択する（ステップＳ５１）。たとえば、ラベル生成部２０は、アプリＩＤ「ＡＰ００１」のアプリケーションを選択する。また、ラベル生成部２０は、プライバシー情報としてカメラ機能を選択する。ラベル生成部２０によるアプリケーションおよびプライバシー情報の選択の順序については、あらかじめ決定してソフトウェア解析システム１に記憶させておいてもよいし、選択するアプリケーションおよびプライバシー情報をユーザが指定するようにしてもよい。
【００３３】
そして、ラベル生成部２０は、選択したアプリケーションのコードをアプリ情報記憶部１１から読み出す。アプリケーションのコードは、ソースコードが取得できる場合はソースコードを取得してアプリ情報記憶部１１に記憶しておく。また、ソースコードが取得できない場合は、リバースエンジニアリング等の手法を用いて逆アセンブリしたコードをアプリ情報記憶部１１に記憶しておく。
【００３４】
次に、ラベル生成部２０は、読み出したコード中に、パーミッションの宣言が含まれているか否かを判定する（ステップＳ５２）。ラベル生成部２０はたとえば、Android（登録商標）を用いたアプリケーションの場合であれば、AndroidManifest.xmlの中でパーミッションが宣言されているか否かを判定する。
【００３５】
ラベル生成部２０は、パーミッションが宣言されていると判定した場合（ステップＳ５２、Ｙｅｓ）、次に、選択したプライバシー情報（すなわちパーミッション）に対応するＡＰＩがコード中に含まれているか否かを判定する（ステップＳ５３）。さらに、ＡＰＩが含まれていると判定した場合（ステップＳ５３、Ｙｅｓ）、ラベル生成部２０は、コールグラフを解析して、当該ＡＰＩが実際に呼び出し可能であるか否かを判定する（ステップＳ５４）。そして、コールグラフを解析した結果、呼び出し可能と判定した場合（ステップＳ５４、Ｙｅｓ）、ラベル生成部２０は、当該アプリケーションにラベル「言及あり」を生成する（ステップＳ５５）。
【００３６】
他方、パーミッションが宣言されていないと判定した場合（ステップＳ５２、Ｎｏ）には、ラベル生成部２０は、当該アプリケーションに「言及なし」のラベルを付与する（ステップＳ５６）。ＡＰＩは含まれていないと判定した場合（ステップＳ５３、Ｎｏ）およびコールグラフ解析から呼び出しできないと判定した場合（ステップＳ５４、Ｎｏ）も同様に、ラベル生成部２０は、「言及なし」のラベルを生成する。これによってラベル生成処理が終了する。生成されたラベルは、アプリケーションおよびプライバシー情報に対応づけて、アプリ情報記憶部１１に記憶される。
【００３７】
ラベル生成部２０は、図５に示す処理を各アプリケーションおよびプライバシー情報について繰り返し実行することにより、複数のアプリケーションおよびプライバシー情報に対応するラベルを生成し、アプリ情報記憶部１１に記憶する。
【００３８】
なお、図５のように３段階の判定を経てラベルを付与するのは、コード中にパーミッションの宣言や対応するＡＰＩがある場合でも、実際はプライバシー情報にアクセスしないコードとなっていることがあるからである。
【００３９】
［スコア算出処理（キーワード抽出処理）の流れの一例］
スコア算出部３０は、ラベルが付与されたアプリケーションおよびプライバシー情報を用いて、プライバシー情報にアクセスするアプリケーションを、説明文テキストに基づいて特定するためのキーワードを抽出する。
【００４０】
図６は、実施形態に係るスコア算出処理（キーワード抽出処理）の流れの一例を示すフローチャートである。まず、スコア算出部３０は、ラベル生成処理が終了した複数のアプリケーションに対応する説明文テキストを、アプリ情報記憶部１１から読み出す（ステップＳ６１）。そして、スコア算出部３０は、パーミッションを選択する（ステップＳ６２）。さらに、スコア算出部３０は、読み出した説明文テキストを解析して、説明文テキストに含まれる単語を一つ選択する（ステップＳ６３）。
【００４１】
そして、スコア算出部３０は、選択した単語のスコアを算出する（ステップＳ６４）。以下に、適合フィードバックを用いてスコアを算出する例を説明する。一例として、スコア算出部３０は、以下の式（１）を用いてスコアを算出する。式（１）は、総数Ｎ個（Ｎは自然数）のアプリケーションを解析対象とし、そのうち、ｉ番目（ｉは、１以上Ｎ以下の自然数）のアプリケーションＡｉに含まれる単語ｗｉのスコアを算出するための式である。
【数１】
0006437892.tif 000002
ただし、式（１）中、Ｒは、ラベル「言及あり」を付与されたアプリケーションの総数であり、ｒｉは単語ｗｉを説明文テキストに含みラベル「言及あり」を付与されたアプリケーションの数である。また、Ｎは解析対象とするアプリケーションの総数であり、ｎｉは単語ｗｉを説明文テキストに含むアプリケーションの数である。また、式（１）においては、分子および分母がゼロになることを避けるため、０．５を加算している。ただし、加算する値は０．５に限定されず、たとえば０．１でも０．６でもよい。
【００４２】
スコア算出部３０は次に、すべての単語のスコアを算出したか否かを判定する（ステップＳ６５）。すべての単語のスコアを算出していないと判定した場合（ステップＳ６５、Ｎｏ）、スコア算出部３０は次に処理対象とする単語を選択する（ステップＳ６６）。そして、処理はステップＳ６４に戻る。他方、すべての単語のスコアを算出したと判定した場合（ステップＳ６５、Ｙｅｓ）、スコア算出部３０は、パーミッションごとに算出したスコアの降順に単語をソートし、上位所定数の単語を抽出する（ステップＳ６７）。たとえば、スコア算出部３０は、上位３個の単語を抽出する。ここで、抽出する単語の数を３とするのは、本発明者らの実験結果から、抽出する単語数を３とした場合に、最終的に良好な分類精度が得られているためである。ただし、抽出する単語数は他の数に設定してもよい。これによってスコア算出処理（キーワード抽出処理）が終了する。
【００４３】
なお、上の例では、relevance  weightを用いてスコアを算出する手法を採用した。しかし、スコアを算出するための式は上記の例に限定されない。スコアを算出するための式は、ある集合のアプリケーションに含まれやすく、他の集合のアプリケーションに含まれにくい、単語の性質を数値化することができればよい。
【００４４】
たとえば、オッズ比をスコアとして採用することができる。まず、所定の単語がラベル「言及あり」のアプリケーションの集合に含まれる確率をｐ、ラベル「言及なし」のアプリケーションの集合に含まれる確率をｑとする。そして、（ｐ／（１−ｐ））を（ｑ／（１−ｑ））で除してオッズ比を算出する。算出されるオッズ比が大きいほど、所定の単語がラベル「言及あり」のアプリケーションの集合に含まれやすく、ラベル「言及なし」のアプリケーションの集合に含まれにくいことを意味する。
【００４５】
たとえば、単語「ＳＮＳ」がラベル「言及あり」のアプリケーションの集合に含まれる確率ｐが０．９であり、ラベル「言及なし」のアプリケーションの集合に含まれる確率ｑが０．１であれば、上の式に基づいて算出されるオッズ比は、８１となる。同様にして他の単語についてもオッズ比を算出しオッズ比をスコアとする。そして、スコアが高い方から順に単語を順位づけする。最後に、順位が上の単語から順に「言及あり」のアプリケーションの集合により含まれやすいキーワードとして抽出すればよい。
【００４６】
［分類処理の流れの一例］
分類部４０は、スコア算出部３０が抽出したキーワードと、アプリケーションの説明文テキストに基づき、各アプリケーションがプライバシー情報にアクセスするか否かに基づきアプリケーションを分類する。図７は、実施形態に係る分類処理の流れの一例を示すフローチャートである。
【００４７】
分類部４０はまず、分類対象とするアプリケーションの説明文テキストを、アプリ情報記憶部１１から読み出す。そして、分類部４０は、当該説明文テキストに含まれるすべての単語を抽出する（ステップＳ７１）。そして、分類部４０は、スコア算出部３０が抽出したキーワードと一致する単語が、説明文テキストから抽出された単語に含まれるか否かを判定する（ステップＳ７２）。一致する単語が含まれると判定した場合（ステップＳ７２、Ｙｅｓ）、分類部４０は、当該アプリケーションを、キーワードに対応するパーミッションに「言及あり」のアプリケーションとして分類する（ステップＳ７３）。ここで、分類「言及あり」は、キーワードに対応するパーミッションによりアクセスが許可されるプライバシー情報にアクセスするアプリケーションであると判定されたことを示す。他方、一致する単語が含まれないと判定した場合（ステップＳ７２、Ｎｏ）、分類部４０は、当該アプリケーションをキーワードに対応するパーミッションに「言及なし」のアプリケーションとして分類する（ステップＳ７４）。ここで、分類「言及なし」は、キーワードに対応するパーミッションによりアクセスが許可されるプライバシー情報にアクセスしないアプリケーションであると判定されたことを示す。これで、分類処理は終了する。
【００４８】
図８は、実施形態に係るソフトウェア解析システム１が実行する処理の流れの一例を説明するためのシーケンス図である。図８に示す処理は、図４乃至図７を参照して説明した処理の流れに対応する。
【００４９】
図８に示すように、ソフトウェア解析システム１においては、まず、解析の対象とするアプリケーションの情報や説明文テキストが用意される（図８の（１））。たとえば、ソフトウェア解析システム１は、ネットワークを介して、アプリケーションのデータを取得し、記憶部１０に記憶する。
【００５０】
そして、ラベル生成部２０は、記憶部１０に記憶されたアプリケーションのコードを参照して（図８の（２））、当該コードの解析を実行する（図８の（３））。ラベル生成部２０は、コード解析の結果にもとづきラベルを生成し、記憶部１０に記憶する（図８の（４））。
【００５１】
スコア算出部３０は、記憶部１０に記憶されたアプリケーションの情報とともにラベルを取得し（図８の（５））、スコア算出処理（キーワード生成処理）を実行する（図８の（６））。スコア算出部３０の処理の結果、キーワードリストが生成され、記憶部１０に記憶される。次に、分類部４０は、記憶部１０からキーワードリストを取得する（図８の（７））。さらに、分類部４０は、記憶部１０から、説明文テキストを取得する（図８の（８））。分類部４０は、取得したキーワードリストと説明文テキストとに基づき、テキスト分類を実行する（図８の（９））。そして、分類部４０の処理の結果得られる分類結果を、記憶部１０に記憶する（図８の（１０））。
【００５２】
［実施形態の効果］
上記のように、上記実施形態に係るソフトウェア解析システムは、ラベル生成部と、スコア算出部と、分類部と、を備える。そして、ラベル生成部は、複数のアプリケーションのコードに基づき、当該複数のアプリケーションがパーミッションにより所定のプライバシー情報にアクセスするか否かを判定する。また、ラベル生成部は、所定のプライバシー情報にアクセスすると判定されたアプリケーションに第１のラベル（「言及あり」）を付与し、所定のプライバシー情報にアクセスしないと判定されたアプリケーションに第１のラベルと異なる第２のラベル（「言及なし」）を付与する。スコア算出部は、第２のラベルを付与されたアプリケーションの説明文のテキストよりも、第１のラベルを付与されたアプリケーションの説明文のテキストに多く含まれる単語のスコアが高くなるよう複数のアプリケーションの説明文に含まれる単語各々のスコアを算出し、パーミッションに対応付けて、算出されたスコアが上位から所定数の単語を、複数のアプリケーションの説明文から抽出する。分類部は、スコア算出部が抽出した単語が説明文のテキストに含まれるアプリケーションをパーミッションに言及するアプリケーションとして分類し、スコア算出部が抽出した単語が説明文のテキストに含まれないアプリケーションをパーミッションに言及しないアプリケーションとして分類する。
【００５３】
このため、実施形態のソフトウェア解析システムは、コード解析と説明文のテキスト解析とを組み合わせて、アプリケーションによるプライバシー情報へのアクセスの有無と、アプリケーションの説明文におけるプライバシー情報へのアクセスの言及の有無を精度高く判定することができる。また、実施形態のソフトウェア解析システムは、説明文のテキスト解析を自動化することができ、テキスト解析の処理効率およびコストを向上させることができる。また、実施形態のソフトウェア解析システムは、プライバシー情報にアクセスするアプリケーションの説明文に特徴的に含まれる単語の抽出を自動的に実行することができ、処理効率およびコストを向上させることができる。このように、実施形態のソフトウェア解析システムによれば、アプリケーションのコードおよび説明文に基づき、アプリケーションによるユーザのプライバシー情報へのアクセスの有無がユーザに対して開示されているか否かを自動的に解析することができる。
【００５４】
［変形例］
上記実施形態では、ソフトウェア解析システム１は、各アプリケーションのコードと説明文テキストとに基づき、当該アプリケーションが所定のプライバシー情報にアクセスするか否かを判定した。また、上記実施形態のソフトウェア解析システム１は、説明文テキストに基づき、各アプリケーションがプライバシー情報へのアクセスを説明文において開示しているか否かを分類した。以下で、変形例として、ソフトウェア解析システムが、新しく検知されたアプリケーションに対して解析をおこなって分類結果を取得し、分類結果に基づき、悪性アプリケーションと良性アプリケーションとを特定する例を説明する。変形例のソフトウェア解析システムはまた、新しく検知したアプリケーションが悪性アプリケーションである場合にユーザに警告するよう構成される。
【００５５】
図９は、変形例に係るソフトウェア解析システム１Ａの構成の一例を示す概略図である。図９に示すように、変形例に係るソフトウェア解析システム１Ａは、記憶部１０Ａと、ラベル生成部２０と、スコア算出部３０と、分類部４０と、特定部５０と、送信部６０と、を備える。また、記憶部１０Ａは、アプリ情報記憶部１１Ａと、キーワードリスト記憶部１２と、を備える。ラベル生成部２０、スコア算出部３０、分類部４０は、上記実施形態のソフトウェア解析システム１が備えるラベル生成部２０、スコア算出部３０、分類部４０と同様の構成および機能である。また、キーワードリスト記憶部１２に記憶される情報も上記実施形態のソフトウェア解析システム１の場合と同様である。変形例のソフトウェア解析システム１Ａは、特定部５０、送信部６０を備える点と、アプリ情報記憶部１１Ａに記憶される情報とが、上記実施形態のソフトウェア解析システム１と異なる。以下の説明中、上記実施形態のソフトウェア解析システム１と同様の構成および機能については説明を省略し、相違する点について説明する。
【００５６】
特定部５０は、ラベル生成部２０が生成したラベルと、分類部４０の分類結果とを比較し、矛盾するアプリケーションを特定する。たとえば、図２中、アプリＩＤ「ＡＰ００１」のアプリケーションについて記憶される情報中、「プライバシー情報、ＧＰＳ情報」に対応するラベルは「言及あり」、分類結果は「言及なし」となっている。これは、アプリＩＤ「ＡＰ００１」で特定されるアプリケーションのコード解析の結果によれば、当該アプリケーションはユーザのＧＰＳ情報にアクセスすることを示す。また、当該アプリケーションの説明文テキストの解析の結果によれば、当該アプリケーションがユーザのＧＰＳ情報にアクセスすることについて説明文では言及されていないことを示す。すなわち、アプリＩＤ「ＡＰ００１」のアプリケーションは、ユーザのプライバシー情報である「ＧＰＳ情報」にアクセスするアプリケーションであるにも関わらず、ユーザは説明文を読んだだけではそのことが分からない状態で配布されるアプリケーションである。特定部５０は、このように、「ラベル」と「分類結果」とが一致しないアプリケーションを特定する。
【００５７】
特定部５０が特定したアプリケーションについては、アプリ情報記憶部１１に悪性であることを示すフラグを記憶させる。図１０は、変形例に係るアプリ情報記憶部１１Ａに格納される情報の構成の一例を示す図である。図１０の例では、「アプリＩＤ、ＡＰ００１」、「プライバシー情報、ＧＰＳ情報」、「ラベル、言及あり」、「分類結果、言及なし」に対応づけて、「フラグ、ＯＮ」が記憶されている。これは、アプリＩＤ「ＡＰ００１」のアプリケーションはＧＰＳ情報にアクセスするにもかかわらず、その旨を説明文に記載しておらず、悪性アプリケーションと推定されることを意味する。
【００５８】
送信部６０は、特定部５０により悪性アプリケーションと特定されたアプリケーションをユーザがダウンロードしようとする際に、当該アプリケーションが悪性アプリケーションと推定される旨の警告を当該ユーザのモバイル端末に送信する。送信部６０はたとえば、悪性アプリケーションと推定される旨と、当該アプリケーションによりアクセスされるプライバシー情報と、の通知を送信する。
【００５９】
図１１は、変形例に係るソフトウェア解析システム１Ａが実行する処理の流れの一例を示すフローチャートである。まず、特定部５０は、対応するラベルと、分類結果とを、アプリ情報記憶部１１Ａから読み出す（ステップＳ１１１）。そして、特定部５０は、読み出したラベルと分類結果との間に矛盾があるか否かを判定する（ステップＳ１１２）。たとえば、ラベルが「言及あり」、分類結果が「言及なし」の場合、特定部５０は、矛盾ありと判定する。また、ラベルが「言及なし」、分類結果が「言及なし」の場合、特定部５０は、矛盾なしと判定する。
【００６０】
矛盾ありと判定した場合（ステップＳ１１２、Ｙｅｓ）、特定部５０は、当該アプリケーションを悪性アプリと判定する（ステップＳ１１３）。そして、特定部５０は、アプリ情報記憶部１１Ａに記憶される当該アプリケーションの情報に対応づけて、悪性アプリケーションである旨を示すフラグをＯＮにする。他方、矛盾なしと判定した場合（ステップＳ１１２、Ｎｏ）、特定部５０は処理を終了する。
【００６１】
そして、送信部６０は、特定部５０が悪性アプリケーションと特定したアプリケーションをダウンロードしたユーザに対して警告を送信する（ステップＳ１１４）。これによって、変形例における特定部５０および送信部６０の処理が終了する。
【００６２】
［変形例の効果］
このように、変形例に係るソフトウェア解析システム１Ａは、ラベル生成部により第１のラベル（「言及あり」）を付与されたアプリケーションであって、分類部によりパーミッションに言及しないアプリケーションに分類されたアプリケーションを、悪性アプリケーションとして特定する特定部を、さらに備える。このため、ソフトウェア解析システム１Ａは、コード解析の結果とテキスト解析の結果とに矛盾があるアプリケーションを容易に特定して、悪性アプリケーションとして抽出することができる。
【００６３】
また、変形例に係るソフトウェア解析システム１Ａは、ラベル生成部により第１のラベル（「言及あり」）を付与されたアプリケーションであって、分類部によりパーミッションに言及しないアプリケーションに分類されたアプリケーションが、モバイル端末にインストールされる際に、警告情報を送信する送信部をさらに備える。このため、モバイル端末を利用してアプリケーションをダウンロードするユーザに、悪性アプリケーションの可能性があることを警告することができる。
【００６４】
（その他の実施形態）
これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。以下に、その他の実施形態を説明する。
【００６５】
上記実施形態では、予めソフトウェア解析システム１に１以上のアプリケーションの情報が記憶されているものとした。しかし、これに限定されず、ソフトウェア解析システムは、ネットワークを介してアプリケーションを提出するアプリケーション作成者の情報端末等と接続され、当該情報端末から送信されるアプリケーションを受信し解析するように構成してもよい。この場合、特定部５０による処理の結果を、送信部６０がアプリケーション作成者の情報端末に送信するように構成してもよい。また、この場合、スコア算出部によるスコアの算出やキーワードの抽出は実行しないように構成してもよい。すなわち、分類部は、すでにキーワードリスト記憶部１２に記憶されているキーワードを用いて、新しいアプリケーションの分類を実行するものとしてもよい。このように構成すれば、新しいアプリケーションが受信されるたびに、キーワードリストを更新する必要がなく、分類部の処理を迅速に実行することができる。
【００６６】
また、ソフトウェア解析システム１は、ネットワークを介してアプリケーションサービスを提供する１以上の事業者のサーバと接続されるように構成してもよい。そして、当該事業者のサーバからソフトウェア解析システム１に対して、新しいアプリケーションが適宜送付され、解析対象となるように構成してもよい。
【００６７】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、キーワードリスト記憶部１２をソフトウェア解析システム１の外部の記憶装置に記憶するように構成して他のサーバがキーワードを利用して悪性アプリケーションを特定できるように構成してもよい。
【００６８】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６９】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７０】
［プログラム］
また、上記実施の形態において説明したソフトウェア解析システム１，１Ａが実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るソフトウェア解析システム１，１Ａが実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータが読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、ソフトウェア解析システム１，１Ａと同様の機能を実現するプログラムを実行するコンピュータの一例を説明する。
【００７１】
図１２は、ソフトウェア解析プログラムを実行するコンピュータ１０００を示す図である。図１２に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００７２】
メモリ１０１０は、図１２に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１２に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１２に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、図１２に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１２に例示するように、例えばディスプレイ１１３０に接続される。
【００７３】
ここで、図１２に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記のプログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００７４】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００７５】
なお、プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７６】
１，１Ａ  ソフトウェア解析システム
１０，１０Ａ  記憶部
１１，１１Ａ  アプリ情報記憶部
１２  キーワードリスト記憶部
２０  ラベル生成部
３０  スコア算出部
４０  分類部  
５０  特定部
６０  送信部
【図１】
0006437892.tif 000004
【図２】
0006437892.tif 000005
【図３】
0006437892.tif 000006
【図４】
0006437892.tif 000007
【図５】
0006437892.tif 000008
【図６】
0006437892.tif 000009
【図７】
0006437892.tif 000010
【図８】
0006437892.tif 000011
【図９】
0006437892.tif 000012
【図１０】
0006437892.tif 000013
【図１１】
0006437892.tif 000014
【図１２】
0006437892.tif 000015