(57)【要約】【課題】アプリケーションのプライバシーポリシーの正当性を容易に検証することを図る。【解決手段】プライバシーポリシー検証方法は、検証対象アプリケーションで実行される各ＡＰＩの特徴度、検証対象アプリケーションで定義された各文字列の使用度、検証対象アプリケーションを構成する各ディレクトリの使用度及び検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出ステップと、特徴抽出ステップの抽出結果を使用して検証対象アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、推定ステップの推定結果に基づいて検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、を含む。【選択図】図３
2020091814.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションで実行される各ＡＰＩ（Application Programming Interface）の特徴度、前記アプリケーションで定義された各文字列の使用度、前記アプリケーションを構成する各ディレクトリの使用度及び前記アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定部と、
検証対象アプリケーションから、前記検証対象アプリケーションで実行される各ＡＰＩの特徴度、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出部と、
前記推定部が前記特徴抽出部の抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証部と、
を備えるプライバシーポリシー検証装置。
【請求項２】
前記推定部は、学習用アプリケーション及び前記学習用アプリケーションが出力する個人プライバシー情報が定められたプライバシーポリシーを使用して機械学習されたものである、
請求項１に記載のプライバシーポリシー検証装置。
【請求項３】
前記学習用アプリケーションについて、前記学習用アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の機械学習に使用され、
前記検証対象アプリケーションについて、前記検証対象アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の推定に使用される、
請求項２に記載のプライバシーポリシー検証装置。
【請求項４】
コンピュータに、
アプリケーションで実行される各ＡＰＩ（Application Programming Interface）の特徴度、前記アプリケーションで定義された各文字列の使用度、前記アプリケーションを構成する各ディレクトリの使用度及び前記アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、
検証対象アプリケーションから、前記検証対象アプリケーションで実行される各ＡＰＩの特徴度、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出ステップと、
前記推定ステップが前記特徴抽出ステップの抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、
を実行させるためのコンピュータプログラム。
【請求項５】
プライバシーポリシー検証装置が、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各ＡＰＩ（Application Programming Interface）の特徴度、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出ステップと、
前記プライバシーポリシー検証装置が、前記特徴抽出ステップの抽出結果を使用して、前記検証対象アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、
前記プライバシーポリシー検証装置が、前記推定ステップの推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、
を含むプライバシーポリシー検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法に関する。
【背景技術】
【０００２】
従来、例えばスマートフォンやタブレット型のコンピュータ（タブレットＰＣ）等の端末装置に適用されるアプリケーションを解析するアプリケーション解析技術として、例えば非特許文献１，２，３が知られている。非特許文献１に記載の従来技術では、アプリケーションの送信情報を解析するために、アプリケーションが送信する送信情報を追跡する機構をＯＳ（Operating System：オペレーティングシステム）内に設け、アプリケーションを実際に動作させたときに、どんな送信情報を何処へ送信するかを解析する。非特許文献２に記載の従来技術では、正規アプリケーションとマルウェアとから静的解析により各特徴量を抽出し、抽出した特徴量を機械学習することにより正規アプリケーションかマルウェアかを判定するようにしている。非特許文献３に記載の従来技術では、アプリケーションから静的解析により個人情報取得ＡＰＩ（Application Programming Interface：アプリケーション・プログラミング・インタフェース）と外部送信ＡＰＩとのつながりをデータフロー解析する。データフロー解析の結果、個人情報取得ＡＰＩと外部送信ＡＰＩとのつながりがあった場合は、当該個人情報取得ＡＰＩにより取得可能な情報が外部送信されると判定し、当該情報が送信されることの記述がプライバシーポリシーにあるか否かを解析する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Mingshen Sun, Tao Wei, John C. S. Lui, “TaintART: A Practical Multi-level Information-Flow Tracking System for Android RunTime”, ACM Conference on Computer and Communications Security 2016, 331-342
【非特許文献２】Guillermo Suarez-Tangil, Santanu Kumar Dash, Mansour Ahmadi, Johannes Kinder, Giorgio Giacinto, Lorenzo Cavallaro, “DroidSieve: Fast and Accurate Classification of Obfuscated Android Malware”, CODASPY 2017, 309-320
【非特許文献３】Rocky Slavin, Xiaoyin Wang, Mitra Bokaei Hosseini, James Hester, Ram Krishnan, Jaspreet Bhatia, Travis D. Breaux, Jianwei Niu, “Toward a framework for detecting privacy policy violations in android application code”, ICSE 2016, 25-36
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上述した従来のアプリケーション解析技術では、以下に示す課題があった。
非特許文献１に記載の従来技術では、実際にアプリケーションを動作させるためのコストがかかる。非特許文献２に記載の従来技術では、正規アプリケーションかマルウェアかを判定することはできるが、アプリケーションがどんな情報を外部へ送信するのかを判定することはできない。非特許文献３に記載の従来技術では、データフロー解析を利用しているが、暗黙的フロー解析が不十分であると、ある決められた条件分岐などがデータフロー間に存在する場合、個人情報取得ＡＰＩと外部送信ＡＰＩとのつながりの有無を判断することが難しい。
このため、上述した従来のアプリケーション解析技術では、アプリケーションが取得して外部に送信する個人情報が当該アプリケーションのプライバシーポリシーに合致しているかを判定することが難しい。
【０００５】
本発明は、このような事情を考慮してなされたものであり、その目的は、アプリケーションのプライバシーポリシーの正当性を容易に検証することを図ることにある。
【課題を解決するための手段】
【０００６】
（１）本発明の一態様は、アプリケーションで実行される各ＡＰＩ（Application Programming Interface）の特徴度、前記アプリケーションで定義された各文字列の使用度、前記アプリケーションを構成する各ディレクトリの使用度及び前記アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定部と、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各ＡＰＩの特徴度、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出部と、前記推定部が前記特徴抽出部の抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証部と、を備えるプライバシーポリシー検証装置である。
（２）本発明の一態様は、前記推定部は、学習用アプリケーション及び前記学習用アプリケーションが出力する個人プライバシー情報が定められたプライバシーポリシーを使用して機械学習されたものである、上記（１）のプライバシーポリシー検証装置である。
（３）本発明の一態様は、前記学習用アプリケーションについて、前記学習用アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の機械学習に使用され、前記検証対象アプリケーションについて、前記検証対象アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の推定に使用される、上記（２）のプライバシーポリシー検証装置である。
【０００７】
（４）本発明の一態様は、コンピュータに、アプリケーションで実行される各ＡＰＩ（Application Programming Interface）の特徴度、前記アプリケーションで定義された各文字列の使用度、前記アプリケーションを構成する各ディレクトリの使用度及び前記アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各ＡＰＩの特徴度、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出ステップと、前記推定ステップが前記特徴抽出ステップの抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、を実行させるためのコンピュータプログラムである。
【０００８】
（５）本発明の一態様は、プライバシーポリシー検証装置が、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各ＡＰＩ（Application Programming Interface）の特徴度、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する特徴抽出ステップと、前記プライバシーポリシー検証装置が、前記特徴抽出ステップの抽出結果を使用して、前記検証対象アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、前記プライバシーポリシー検証装置が、前記推定ステップの推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、を含むプライバシーポリシー検証方法である。
【発明の効果】
【０００９】
本発明によれば、アプリケーションのプライバシーポリシーの正当性を容易に検証することを図ることができるという効果が得られる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係るプライバシーポリシー検証装置の構成例を示すブロック図である。
【図２】一実施形態に係る学習段階の手順を示すフロー図である。
【図３】一実施形態に係るプライバシーポリシー検証段階の手順を示すフロー図である。
【図４】一実施形態に係るＡＰＩ実行の「OPCODE」を示す図表である。
【図５】一実施形態に係るＡＰＩリストを示す図表である。
【図６】一実施形態に係る文字列定義の「OPCODE」を示す図表である。
【図７】一実施形態に係るディレクトリ構造の例を示す図である。
【図８】一実施形態に係るプライバシーポリシーの構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照し、本発明の実施形態について説明する。本実施形態において、個人プライバシー情報とは、個人に関する情報であって、特定の個人を識別することができる情報又は個人のプライバシーに関わる情報をいう。
【００１２】
図１は、一実施形態に係るプライバシーポリシー検証装置の構成例を示すブロック図である。図１において、プライバシーポリシー検証装置１０は、特徴抽出部１１と推定部１２と検証部１３とを備える。図１に示されるプライバシーポリシー検証装置１０の各機能は、プライバシーポリシー検証装置１０が備えるＣＰＵ（Central Processing Unit：中央演算処理装置）がコンピュータプログラムを実行することにより実現される。なお、プライバシーポリシー検証装置１０として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【００１３】
特徴抽出部１１は、検証対象アプリケーションから、当該検証対象アプリケーションで実行される各ＡＰＩ（Application Programming Interface：アプリケーション・プログラミング・インタフェース）の特徴度、当該検証対象アプリケーションで定義された各文字列の使用度、当該検証対象アプリケーションを構成する各ディレクトリの使用度及び当該検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する。
【００１４】
推定部１２は、アプリケーションで実行される各ＡＰＩの特徴度、当該アプリケーションで定義された各文字列の使用度、当該アプリケーションを構成する各ディレクトリの使用度及び当該アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、当該アプリケーションが出力する個人プライバシー情報を推定する。
【００１５】
検証部１３は、推定部１２が特徴抽出部１１の抽出結果を使用して推定した推定結果に基づいて、検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する。
【００１６】
次に図２及び図３を参照して本実施形態に係るプライバシーポリシー検証方法を説明する。図２は、本実施形態に係る学習段階の手順を示すフロー図である。図３は、本実施形態に係るプライバシーポリシー検証段階の手順を示すフロー図である。
【００１７】
本実施形態では、アプリケーションの例として、「Android（登録商標）」と呼ばれるＯＳ（Operating System：オペレーティングシステム）上で動作するアプリケーションを挙げて説明する。また、アプリケーションはコンパイル後のコードで提供されたものを使用する。
【００１８】
［学習段階］
まず図２を参照して推定部１２の学習段階を説明する。学習段階は、後述するプライバシーポリシー検証段階で使用される推定部１２の学習を行う段階である。推定部１２の学習段階は、プライバシーポリシー検証装置１０により実施されてもよく、又は、プライバシーポリシー検証装置１０とは異なるコンピュータにより実施されてもよい。なお、図２に示される特徴抽出部１１は、図１に示されるプライバシーポリシー検証装置１０の特徴抽出部１１と同様の機能を有する。
【００１９】
図２において、学習段階（Ｓ１０）は、４つのステップＳ１１、Ｓ１２、Ｓ１３及びＳ１４を含む。学習段階（Ｓ１０）では、学習用アプリケーション及び当該学習用アプリケーションが出力する個人プライバシー情報が定められたプライバシーポリシー（正解データ）を使用して、アプリケーションが出力する個人プライバシー情報を推定するように、推定部１２の機械学習を行う。アプリケーションのプライバシーポリシーは、当該アプリケーションが出力する個人プライバシー情報を定める記載を含む情報である。
【００２０】
（ステップＳ１１）  予め、学習用アプリケーション及び当該学習用アプリケーションのプライバシーポリシーが準備される。学習用アプリケーションが特徴抽出部１１へ入力される。
【００２１】
（ステップＳ１２：特徴抽出ステップ）  特徴抽出部１１は、学習用アプリケーションに対して、アプリケーション特徴量を抽出する特徴抽出処理を実行する。以下、本実施形態に係る特徴抽出処理を説明する。
【００２２】
［特徴抽出処理］
本実施形態の一例として、４種類のアプリケーション特徴量について以下に説明する。なお、以下に説明する４種類のアプリケーション特徴量（ＡＰＩの特徴度、文字列の使用度、ディレクトリの使用度、宣言された値の使用度）のうちいずれか一つ又は複数を抽出するものであってもよい。
【００２３】
（特徴抽出処理の例１：ＡＰＩの特徴度の抽出処理）
特徴抽出処理の例１では、アプリケーションで実行される各ＡＰＩの特徴度を抽出する。まず、特徴抽出部１１は、アプリケーションのコンパイル後のコードを逆コンパイルし、コード「.dex」から「.smali」と呼ばれる中間コードに変換する。この結果、複数の「.smali」ファイルが生成される。コード「.dex」から「.smali」への変換には、例えば「インターネット＜ＵＲＬ：https://ibotpeaches.github.io/Apktool/＞、［平成３０年１１月２８日検索］」に開示される「apk-tool」と呼ばれるツールを利用することができる。
【００２４】
次いで、特徴抽出部１１は、生成された各「.smali」ファイルから「Andorid」の「Platform」で定義されたＡＰＩの実行を検索し、各ＡＰＩの実行数をカウントする。具体的には、「.smali」ファイルを読み込み、図４に示されるＡＰＩ実行の「OPCODE」で始まる関数実行の行を検索する。次いで、この検索結果の行と図５に示される「Android」の「Platform」で定義されたＡＰＩリストとの照合を行う。この照合の結果、当該検索結果の行の中のＡＰＩと、ＡＰＩリスト中のＡＰＩとが一致する場合、当該一致するＡＰＩのカウント値を一つ増加させる。このＡＰＩカウント処理を全ての「.smali」ファイルに対して実行する。この結果として、特徴抽出部１１は、次の（１）式に示されるＡＰＩ特徴リストを生成する。ＡＰＩ特徴リストは、処理対象アプリケーションごとに生成される。
【００２５】
【数１】
2020091814.tif 000003
【００２６】
（１）式において、ＡＰＩ特徴リスト「FeatureAPIs」は、当該リストに記載される合計「APILength(APILIST)」個のＡＰＩの各カウント値「API1cnt」、「API2cnt」、・・・、「APILength(APILIST)cnt」を有する。
【００２７】
次いで、特徴抽出部１１は、次の（２），（３）及び（４）式により、ＡＰＩ特徴リストごとに（つまり処理対象アプリケーションごとに）、各ＡＰＩのＴＦ（Term Frequency）−ＩＤＦ（Inverse Document Frequency）を計算する。
【００２８】
【数２】
2020091814.tif 000004
【００２９】
（２）式において、「tf(t,d)」は、アプリケーションｄ内のあるＡＰＩ「ＡＰＩｔ」についてのＴＦ値である。「n_t,d」は「ＡＰＩｔ」のアプリケーションｄ内での出現回数である。「Σn_s,d」はアプリケーションｄ内の全てのＡＰＩの出現回数の和である。「tf(t,d)」は、アプリケーションｄ内の「ＡＰＩｔ」の出現頻度を表す値である。
【００３０】
【数３】
2020091814.tif 000005
【００３１】
（３）式において、「idf(t)」は「ＡＰＩｔ」のＩＤＦ値である。「N」は、処理対象アプリケーションの総数である。「df(t)」は「ＡＰＩｔ」が出現する処理対象アプリケーションの数である。「idf(t)」は、「ＡＰＩｔ」が出現する頻度の逆数であって、「ＡＰＩｔ」のレア度を表す値である。
【００３２】
【数４】
2020091814.tif 000006
【００３３】
（４）式において、「TF-IDF」は「ＡＰＩｔ」のＴＦ−ＩＤＦ値である。「tf」は「tf(t,d)」である。「idf」は「idf(t)」である。「TF-IDF」は、「ＡＰＩｔ」の特徴度を表す値である。「TF-IDF」の値が大きいほど、より特徴的なＡＰＩである。
【００３４】
以上が「特徴抽出処理の例１：ＡＰＩの特徴度の抽出処理」の説明である。なお、ＡＰＩの特徴度として、各ＡＰＩの「TF-IDF」を使用してもよく、又は、（１）式のＡＰＩ特徴リスト「FeatureAPIs」中の各ＡＰＩのカウント値を使用してもよい。
【００３５】
（特徴抽出処理の例２：文字列の使用度の抽出処理）
特徴抽出処理の例２では、アプリケーションで定義された各文字列の使用度を抽出する。まず、文字列の使用度の抽出対象の文字列を決定する。これは、アプリケーション特徴量の次元を限定するためである。
【００３６】
上述した特徴抽出処理の例１と同様に、アプリケーションのコンパイル後のコードを逆コンパイルし、コード「.dex」から「.smali」と呼ばれる中間コードに変換することによって、複数の「.smali」ファイルが生成される。
【００３７】
次いで、特徴抽出部１１は、生成された各「.smali」ファイルから、「.smali」ファイルの中間コードに記載された文字列についての文字列候補リストを生成する。文字列候補リストに記載される対象の文字列は、アプリケーションで定義された文字列（定義文字列と称する）である。具体的には、図６に示される文字列定義の「OPCODE」で始まる行を検索し、この検索結果の行に記載された定義文字列を順次、文字列候補リストに追記していく。文字列候補リストは、処理対象アプリケーションごとに生成される。
【００３８】
次いで、特徴抽出部１１は、全ての処理対象アプリケーションの文字列候補リストを対象にして、定義文字列ごとに出現回数をカウントする。次いで、特徴抽出部１１は、出現回数の多い方から上位Ｎ個（Ｎは予め任意に決定された値）の定義文字列を記載した文字列リストを生成する。文字列リストに記載されたＮ個の定義文字列が文字列の使用度の抽出対象の文字列である。
【００３９】
次に、文字列リストに記載された定義文字列を対象にして、アプリケーションで定義された各定義文字列の使用度を抽出する。まず、特徴抽出部１１は、アプリケーションから生成された各「.smali」ファイルから、文字列リストに記載された定義文字列を検索する。特徴抽出部１１は、この検索により発見された定義文字列ごとに、出現回数をカウントする。この結果として、特徴抽出部１１は、次の（５）式に示される文字列特徴リストを生成する。文字列特徴リストは、処理対象アプリケーションごとに生成される。
【００４０】
【数５】
2020091814.tif 000007
【００４１】
（５）式において、文字列特徴リスト「Featurestrings」は、文字列リストに記載されるＮ個の定義文字列の各カウント値「String1cnt」、「String2cnt」、・・・、「StringNcnt」を有する。
【００４２】
以上が「特徴抽出処理の例２：文字列の使用度の抽出処理」の説明である。
【００４３】
（特徴抽出処理の例３：ディレクトリの使用度の抽出処理）
特徴抽出処理の例３では、アプリケーションを構成する各ディレクトリの使用度を抽出する。まず、ディレクトリの使用度の抽出対象のディレクトリを決定する。これは、アプリケーション特徴量の次元を限定するためである。
【００４４】
上述した特徴抽出処理の例１と同様に、アプリケーションのコンパイル後のコードを逆コンパイルし、コード「.dex」から「.smali」と呼ばれる中間コードに変換することによって、複数の「.smali」ファイルが生成される。
【００４５】
次いで、特徴抽出部１１は、生成された各「.smali」ファイルから、「smali」ディレクトリ配下のディレクトリ名を取得する。例えば、図７に例示されるディレクトリ構造の場合、抽出されるディレクトリ名が記載されるのディレクトリ名リストは、「com, com/atok, com/atok/mobile, com/atok/mobile/core/a, com/atok/mobile/core/b」となる。ディレクトリ名リストは、処理対象アプリケーションごとに生成される。
【００４６】
次いで、特徴抽出部１１は、全ての処理対象アプリケーションのディレクトリ名リストを対象にして、ディレクトリ名ごとに出現回数をカウントする。次いで、特徴抽出部１１は、出現回数の多い方から上位Ｎ個（Ｎは予め任意に決定された値）のディレクトリ名を記載したパッケージ構造リストを生成する。パッケージ構造リストに記載されたＮ個のディレクトリ名のディレクトリがディレクトリの使用度の抽出対象のディレクトリである。
【００４７】
次に、パッケージ構造リストに記載されたディレクトリ名のディレクトリを対象にして、各ディレクトリの使用度を抽出する。まず、特徴抽出部１１は、アプリケーションから生成された各「.smali」ファイルに対して、パッケージ構造リストに記載されたディレクトリ名のディレクトリの有無を判定する。この判定結果として、特徴抽出部１１は、次の（６）式に例示されるディレクトリ特徴リストを生成する。ディレクトリ特徴リストは、処理対象アプリケーションごとに生成される。
【００４８】
【数６】
2020091814.tif 000008
【００４９】
（６）式において、ディレクトリ特徴リスト「FeaturePackageDirectory」は、パッケージ構造リストに記載されるＮ個のディレクトリ名の各ディレクトリの有無を表す値「１：有り、０：無し」を有する。
以上が「特徴抽出処理の例３：ディレクトリの使用度の抽出処理」の説明である。
【００５０】
（特徴抽出処理の例４：宣言された値の使用度の抽出処理）
特徴抽出処理の例４では、アプリケーションで宣言された各値の使用度を抽出する。「Android」のアプリケーションでは、「.apk」ファイルに含まれる「AndroidManifest.xml」と呼ばれるマニフェスト（宣言）ファイルに、アプリケーションが利用する権限やコンポーネント名やコンポーネントが受け取る「Intent-Filter」名などが記載される。そのマニフェストファイル「AndroidManifest.xml」からアプリケーション特徴量を抽出する。なお、「.apk」ファイルに含まれる「AndroidManifest.xml」はエンコードされているので、上述した「apk-tool」や例えば「インターネット＜ＵＲＬ：https://developer.android.com/studio/command-line/aapt2＞、［平成３０年１１月２８日検索］」に開示される「aapt2」等のツールを使用してデコードしてからアプリケーション特徴量を抽出する。
【００５１】
特徴抽出処理の例４で抽出するアプリケーション特徴量の例４−１、例４−２、例４−３、例４−４を以下に説明する。
【００５２】
（例４−１：権限情報）
例４−１では、特徴抽出部１１は、マニフェストファイル「AndroidManifest.xml」中の「<uses-permission>要素」の「android:name」属性の値（パーミッション）を取得する。特徴抽出部１１は、予め、パーミッションリストを備える。パーミッションリストには、抽出対象のパーミッションが記載される。特徴抽出部１１は、マニフェストファイル「AndroidManifest.xml」に対して、パーミッションリストに記載されたパーミッションの有無を判定する。この判定結果として、特徴抽出部１１は、上記（６）式と同様にして、権限情報特徴リストを生成する。権限情報特徴リストは、パーミッションリストに記載される各パーミッションの有無を表す値「１：有り、０：無し」を有する。
【００５３】
（例４−２：「Uses-feature」情報）
例４−２では、特徴抽出部１１は、「<uses-feature>要素」の「android:name」属性の値（「uses-feature」値）を取得する。特徴抽出部１１は、予め、「uses-feature」リストを備える。「uses-feature」リストには、抽出対象の「uses-feature」値が記載される。特徴抽出部１１は、マニフェストファイル「AndroidManifest.xml」に対して、「uses-feature」リストに記載された「uses-feature」値の有無を判定する。この判定結果として、特徴抽出部１１は、上記（６）式と同様にして、「Uses-feature」情報特徴リストを生成する。「Uses-feature」情報特徴リストは、「uses-feature」リストに記載される各「uses-feature」値の有無を表す値「１：有り、０：無し」を有する。
【００５４】
（例４−３：「Intent-Filter」情報）
例４−３では、特徴抽出部１１は、「<intent-filter>要素」の値を取得する。特徴抽出部１１は、予め、「intent-filter」リストを備える。「intent-filter」リストには、抽出対象の「intent-filter」値が記載される。特徴抽出部１１は、マニフェストファイル「AndroidManifest.xml」に対して、「intent-filter」リストに記載された「intent-filter」値の有無を判定する。この判定結果として、特徴抽出部１１は、上記（６）式と同様にして、「Intent-Filter」情報特徴リストを生成する。「Intent-Filter」情報特徴リストは、「intent-filter」リストに記載される各「intent-filter」値の有無を表す値「１：有り、０：無し」を有する。
【００５５】
（例４−４：要素情報）
例４−４では、特徴抽出部１１は、要素情報を取得する。取得対象の要素情報の例４−４−１から例４−４−７を以下に示す。
（例４−４−１）  <activity>要素の数
（例４−４−２）  <service>要素の数
（例４−４−３）  <receiver>要素の数
（例４−４−４）  <content-provider>要素の数
（例４−４−５）  <uses-permission>要素の数
（例４−４−６）  <uses-feature>要素の数
（例４−４−７）  <intent-filter>要素の数
特徴抽出部１１は、マニフェストファイル「AndroidManifest.xml」に対して、例４−４−１から例４−４−７の各要素の個数をカウントするカウント処理を実行する。
このカウント処理結果として、特徴抽出部１１は、上記（５）式と同様にして、要素情報特徴リストを生成する。要素情報特徴リストは、例４−４−１から例４−４−７の各要素のカウント値を有する。
【００５６】
以上が「特徴抽出処理の例４：宣言された値の使用度の抽出処理」の説明である。
【００５７】
上述した特徴抽出処理の例１から例４のうちいずれか一つ又は複数が実行されるものであってもよい。以上が特徴抽出処理の説明である。
【００５８】
説明を図２に戻す。特徴抽出部１１によって学習用アプリケーションから抽出されたアプリケーション特徴量を使用して、推定部１２の機械学習を行う。推定部１２の機械学習に使用されるアプリケーション特徴量は、特徴抽出処理の例１から例４のうちいずれか一つ又は複数によって学習用アプリケーションから抽出されたものである。
【００５９】
（ステップＳ１３）  特徴抽出部１１によって学習用アプリケーションから抽出されたアプリケーション特徴量を推定部１２へ入力する。当該アプリケーション特徴量を推定部１２へ入力した結果として、当該学習用アプリケーションが出力する個人プライバシー情報の推定結果が推定部１２から出力される。
【００６０】
（ステップＳ１４）  推定部１２から出力された個人プライバシー情報の推定結果を、当該学習用アプリケーションのプライバシーポリシーに基づいて検証する。この検証では、個人プライバシー情報の推定結果とプライバシーポリシーが定める出力の個人プライバシー情報とを照合する。当該照合の結果として、プライバシーポリシー（正解データ）と個人プライバシー情報の推定結果との誤差が計算される。次いで、当該照合の結果を推定部１２に反映させる。当該検証の結果が所定の学習終了条件を満足するまで、推定部１２の機械学習は繰り返し行われる。所定の学習終了条件は、例えば、所定の正解率以上若しくは所定の不正解率以下を満足すること、又は、所定の正解率以上及び所定の不正解率以下を両方満足すること、である。又は、所定の学習終了条件は、推定部１２の機械学習の繰り返し回数が所定の回数に達したことである。
【００６１】
［プライバシーポリシーの構成例］
プライバシーポリシーとして、例えば「XML」や「json」などの機械的に解釈可能な形式になっているデータを使用する。また、プライバシーポリシーに記載される出力の個人プライバシー情報は、予め定義されており、出力の有無が値「１：有り、０：無し」で記載されている。例えば、アプリケーションが出力する個人プライバシー情報の候補として、ユーザ識別情報「ID」、位置情報「Location」、連絡先情報「Contacts」、通話履歴「Calling_history」、ブラウザ閲覧履歴「Browsing_history」があり、「XML」で記述された図８の例のプライバシーポリシーの場合、当該プライバシーポリシーが定める出力の個人プライバシー情報は、ユーザ識別情報「ID」と連絡先情報「Contacts」とである。
【００６２】
［推定部の構成例］
推定部１２には、機械学習アルゴリズムのモデルを使用する。例えば、ＳＶＭ（Support Vector Machine）、決定木ベースのランダムフォレスト、XGBoost、ニューラルネットワークなどの機械学習アルゴリズムを適用してもよい。推定部１２の機械学習では、推定部１２が出力した個人プライバシー情報の推定結果とプライバシーポリシー（正解データ）が定める出力の個人プライバシー情報との照合の結果である誤差によって、推定部１２の機械学習アルゴリズムのモデルのパラメータを調整する。
【００６３】
また、特徴抽出部１１によって学習用アプリケーションから抽出されたアプリケーション特徴量に対して次元圧縮（Dimensionality Reduction）や標準化などの事前処理を行い、当該事前処理の結果を推定部１２へ入力してもよい。次元圧縮（Dimensionality Reduction）として例えばＰＣＡ（Principal Component Analysis：主成分分析）を適用してもよい。標準化として例えば「Standard Scalars」を適用してもよい。
【００６４】
［プライバシーポリシー検証段階］
次に図３を参照してプライバシーポリシー検証段階を説明する。プライバシーポリシー検証段階は、上述した学習段階により学習済みの推定部１２を使用して、検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する段階である。
【００６５】
図３において、プライバシーポリシー検証段階（Ｓ２０）は、３つのステップＳ２１、Ｓ２２及びＳ２３を含む。プライバシーポリシー検証段階（Ｓ２０）では、プライバシーポリシー検証装置１０は、上述した学習段階により学習済みの推定部１２を備える。当該学習済みの推定部１２は、アプリケーションで実行される各ＡＰＩの特徴度、当該アプリケーションで定義された各文字列の使用度、当該アプリケーションを構成する各ディレクトリの使用度及び当該アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、当該アプリケーションが出力する個人プライバシー情報を推定するものである。
【００６６】
（ステップＳ２１）  検証対象アプリケーションが特徴抽出部１１に入力される。特徴抽出部１１は、検証対象アプリケーションから、当該検証対象アプリケーションで実行される各ＡＰＩの特徴度、当該検証対象アプリケーションで定義された各文字列の使用度、当該検証対象アプリケーションを構成する各ディレクトリの使用度及び当該検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する。この特徴抽出処理は、上述した特徴抽出処理と同じであって、処理対象アプリケーションは検証対象アプリケーションである。また、「特徴抽出処理の例２：文字列の使用度の抽出処理」における文字列候補リスト、「特徴抽出処理の例３：ディレクトリの使用度の抽出処理」におけるディレクトリ名リスト、並びに「特徴抽出処理の例４：宣言された値の使用度の抽出処理」における「例４−１：権限情報」でのパーミッションリスト、「例４−２：「Uses-feature」情報」での「uses-feature」リスト、及び「例４−３：「Intent-Filter」情報」での「intent-filter」リストは、学習段階と同じものを使用する。
【００６７】
（ステップＳ２２）  特徴抽出部１１によって検証対象アプリケーションから抽出されたアプリケーション特徴量を推定部１２へ入力する。当該アプリケーション特徴量を推定部１２へ入力した結果として、当該検証対象アプリケーションが出力する個人プライバシー情報の推定結果が推定部１２から出力される。
【００６８】
（ステップＳ２３）  検証部１３には、検証対象アプリケーションが出力する個人プライバシー情報の推定結果と、当該検証対象アプリケーションのプライバシーポリシーとが入力される。検証部１３は、検証対象アプリケーションが出力する個人プライバシー情報の推定結果に基づいて、当該検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する。この検証では、個人プライバシー情報の推定結果とプライバシーポリシーが定める出力の個人プライバシー情報とを照合する。当該照合の結果、すべて一致する場合には当該プライバシーポリシーの正当性の検証が合格であり、それ以外の場合には当該プライバシーポリシーの正当性の検証が不合格である。検証部１３は、検証対象アプリケーションのプライバシーポリシーの検証結果「合格又は不合格」を出力する。
【００６９】
上述した実施形態によれば、検証対象アプリケーションに対する静的解析によって当該検証対象アプリケーションが出力する個人プライバシー情報を推定し、当該推定結果に基づいて当該検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証することができる。このため、検証対象アプリケーションを実際に動作させるコストは不要であり、アプリケーションのプライバシーポリシーの正当性を容易に検証することができるという効果が得られる。
【００７０】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００７１】
例えば、上述した実施形態では、アプリケーションはコンパイル後のコードで提供されたものを使用したが、アプリケーションはソースコードで提供されたものを使用してもよい。アプリケーションがソースコードで提供される場合、逆コンパイルは不要である。
【００７２】
［変形例］
上述した実施形態の変形例として、学習用アプリケーション及び検証対象アプリケーションについて、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出してもよい。この点について以下に説明する。
【００７３】
一般のアプリケーションの中には、例えば広告表示を目的とする広告ライブラリ等の、第三者が作成したライブラリが組み込まれたものが存在する。特に広告ライブラリの中には、ユーザに効果的な広告を表示するために、例えばユーザ識別情報「ID」や位置情報「Location」等のユーザ情報を収集するものがある。このような広告ライブラリが組み込まれたアプリケーションでは、当該アプリケーションのプライバシーポリシーで定められていない個人プライバシー情報が当該アプリケーションから出力される可能性がある。このため、アプリケーションが広告ライブラリを含む状態で当該アプリケーションから抽出されたアプリケーション特徴量を使用して、学習段階の推定部１２の機械学習やプライバシーポリシー検証段階の推定部１２の推定を行うと、広告ライブラリのアプリケーション特徴量を含む状態で当該機械学習や当該推定が行われるので、推定部１２の性能が低下する恐れがある。このことから、学習用アプリケーション及び検証対象アプリケーションについて、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出することは好ましい。
【００７４】
本変形例では、学習段階において、特徴抽出部１１は、学習用アプリケーションについて、学習用アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出し、当該抽出されたアプリケーション特徴量が推定部１２の機械学習に使用される。また、プライバシーポリシー検証段階において、特徴抽出部１１は、検証対象アプリケーションについて、検証対象アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出し、当該抽出されたアプリケーション特徴量が推定部１２の推定に使用される。これにより、推定部１２の性能の低下を抑制する効果が得られる。
【００７５】
なお、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にするためには、ライブラリを検知する必要がある。そのライブラリ検知技術については、例えば「Yuan Zhang, Jiarun Dai, Xiaohan Zhang, Sirong Huang, Zhemin Yang, Min Yang, Hao Chen, “Detecting third-party libraries in Android applications with high precision and recall”, SANER 2018, 141-152」に開示される静的解析によるライブラリ検知方法を使用する。このライブラリ検知方法によって、アプリケーションのどの「.smali」ファイルがライブラリであるのかを判定することができる。特徴抽出部１１は、アプリケーションの各「.smali」ファイルに対して当該ライブラリ検知方法によってライブラリであるか否かを判定し、ライブラリであると判定した「.smali」ファイルをアプリケーション特徴量の抽出対象外にする。これにより、学習用アプリケーション及び検証対象アプリケーションについて、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出することができる。
以上が本変形例の説明である。
【００７６】
また、上述した各装置の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disc）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００７７】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００７８】
１０…プライバシーポリシー検証装置、１１…特徴抽出部、１２…推定部、１３…検証部
【図１】
2020091814.tif 000009
【図２】
2020091814.tif 000010
【図３】
2020091814.tif 000011
【図４】
2020091814.tif 000012
【図５】
2020091814.tif 000013
【図６】
2020091814.tif 000014
【図７】
2020091814.tif 000015
【図８】
2020091814.tif 000016