IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許7062581プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法
<>
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図1
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図2
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図3
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図4
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図5
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図6
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図7
  • 特許-プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-22
(45)【発行日】2022-05-06
(54)【発明の名称】プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法
(51)【国際特許分類】
   G06F 21/57 20130101AFI20220425BHJP
   G06F 21/62 20130101ALI20220425BHJP
【FI】
G06F21/57 370
G06F21/62 345
【請求項の数】 6
(21)【出願番号】P 2018230359
(22)【出願日】2018-12-07
(65)【公開番号】P2020091814
(43)【公開日】2020-06-11
【審査請求日】2020-11-25
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100165179
【弁理士】
【氏名又は名称】田▲崎▼ 聡
(74)【代理人】
【識別番号】100175824
【弁理士】
【氏名又は名称】小林 淳一
(74)【代理人】
【識別番号】100114937
【弁理士】
【氏名又は名称】松本 裕幸
(72)【発明者】
【氏名】川端 秀明
(72)【発明者】
【氏名】窪田 歩
【審査官】今城 朋彬
(56)【参考文献】
【文献】特開2017-021655(JP,A)
【文献】特開2017-068534(JP,A)
【文献】特開2017-004123(JP,A)
【文献】特開2017-107470(JP,A)
【文献】特開2012-084054(JP,A)
【文献】特開2005-157904(JP,A)
【文献】特開2017-194895(JP,A)
【文献】特開2013-065168(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/47
G06F 9/44-9/445
G06F 21/00-21/88
(57)【特許請求の範囲】
【請求項1】
アプリケーションで実行される各API(Application Programming Interface)の特徴度基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定部と、
検証対象アプリケーションから、前記検証対象アプリケーションで実行される各APIの特徴度抽出する特徴抽出部と、
前記推定部が前記特徴抽出部の抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証部と、を備え
前記APIの特徴度は、APIの実行を検索し、検索結果のAPIの実行をカウントし、カウント結果のカウント値に基づいた特徴度である、
プライバシーポリシー検証装置。
【請求項2】
前記推定部は、アプリケーションで実行される各APIの特徴度に加えてさらに、前記アプリケーションで定義された各文字列の使用度、前記アプリケーションを構成する各ディレクトリの使用度及び前記アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数にも基づいて、前記アプリケーションが出力する個人プライバシー情報を推定し、
前記特徴抽出部は、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各APIの特徴度に加えてさらに、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数をも抽出する、
請求項1に記載のプライバシーポリシー検証装置。
【請求項3】
前記推定部は、学習用アプリケーション及び前記学習用アプリケーションが出力する個人プライバシー情報が定められたプライバシーポリシーを使用して機械学習されたものである、
請求項1又は2のいずれか1項に記載のプライバシーポリシー検証装置。
【請求項4】
前記学習用アプリケーションについて、前記学習用アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の機械学習に使用され、
前記検証対象アプリケーションについて、前記検証対象アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の推定に使用される、
請求項に記載のプライバシーポリシー検証装置。
【請求項5】
コンピュータに、
アプリケーションで実行される各API(Application Programming Interface)の特徴度基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、
検証対象アプリケーションから、前記検証対象アプリケーションで実行される各APIの特徴度抽出する特徴抽出ステップと、
前記推定ステップが前記特徴抽出ステップの抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、
を実行させるためのコンピュータプログラムであって、
前記APIの特徴度は、APIの実行を検索し、検索結果のAPIの実行をカウントし、カウント結果のカウント値に基づいた特徴度である、
コンピュータプログラム。
【請求項6】
プライバシーポリシー検証装置が、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各API(Application Programming Interface)の特徴度抽出する特徴抽出ステップと、
前記プライバシーポリシー検証装置が、前記特徴抽出ステップの抽出結果を使用して、前記検証対象アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、
前記プライバシーポリシー検証装置が、前記推定ステップの推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、
を含み、
前記APIの特徴度は、APIの実行を検索し、検索結果のAPIの実行をカウントし、カウント結果のカウント値に基づいた特徴度である、
プライバシーポリシー検証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プライバシーポリシー検証装置、コンピュータプログラム及びプライバシーポリシー検証方法に関する。
【背景技術】
【0002】
従来、例えばスマートフォンやタブレット型のコンピュータ(タブレットPC)等の端末装置に適用されるアプリケーションを解析するアプリケーション解析技術として、例えば非特許文献1,2,3が知られている。非特許文献1に記載の従来技術では、アプリケーションの送信情報を解析するために、アプリケーションが送信する送信情報を追跡する機構をOS(Operating System:オペレーティングシステム)内に設け、アプリケーションを実際に動作させたときに、どんな送信情報を何処へ送信するかを解析する。非特許文献2に記載の従来技術では、正規アプリケーションとマルウェアとから静的解析により各特徴量を抽出し、抽出した特徴量を機械学習することにより正規アプリケーションかマルウェアかを判定するようにしている。非特許文献3に記載の従来技術では、アプリケーションから静的解析により個人情報取得API(Application Programming Interface:アプリケーション・プログラミング・インタフェース)と外部送信APIとのつながりをデータフロー解析する。データフロー解析の結果、個人情報取得APIと外部送信APIとのつながりがあった場合は、当該個人情報取得APIにより取得可能な情報が外部送信されると判定し、当該情報が送信されることの記述がプライバシーポリシーにあるか否かを解析する。
【先行技術文献】
【非特許文献】
【0003】
【文献】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
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上述した従来のアプリケーション解析技術では、以下に示す課題があった。
非特許文献1に記載の従来技術では、実際にアプリケーションを動作させるためのコストがかかる。非特許文献2に記載の従来技術では、正規アプリケーションかマルウェアかを判定することはできるが、アプリケーションがどんな情報を外部へ送信するのかを判定することはできない。非特許文献3に記載の従来技術では、データフロー解析を利用しているが、暗黙的フロー解析が不十分であると、ある決められた条件分岐などがデータフロー間に存在する場合、個人情報取得APIと外部送信APIとのつながりの有無を判断することが難しい。
このため、上述した従来のアプリケーション解析技術では、アプリケーションが取得して外部に送信する個人情報が当該アプリケーションのプライバシーポリシーに合致しているかを判定することが難しい。
【0005】
本発明は、このような事情を考慮してなされたものであり、その目的は、アプリケーションのプライバシーポリシーの正当性を容易に検証することを図ることにある。
【課題を解決するための手段】
【0006】
(1)本発明の一態様は、アプリケーションで実行される各API(Application Programming Interface)の特徴度基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定部と、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各APIの特徴度抽出する特徴抽出部と、前記推定部が前記特徴抽出部の抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証部と、を備え、前記APIの特徴度は、APIの実行を検索し、検索結果のAPIの実行をカウントし、カウント結果のカウント値に基づいた特徴度である、プライバシーポリシー検証装置である。
(2)本発明の一態様は、前記推定部は、アプリケーションで実行される各APIの特徴度に加えてさらに、前記アプリケーションで定義された各文字列の使用度、前記アプリケーションを構成する各ディレクトリの使用度及び前記アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数にも基づいて、前記アプリケーションが出力する個人プライバシー情報を推定し、前記特徴抽出部は、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各APIの特徴度に加えてさらに、前記検証対象アプリケーションで定義された各文字列の使用度、前記検証対象アプリケーションを構成する各ディレクトリの使用度及び前記検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数をも抽出する、上記(1)のプライバシーポリシー検証装置である。
)本発明の一態様は、前記推定部は、学習用アプリケーション及び前記学習用アプリケーションが出力する個人プライバシー情報が定められたプライバシーポリシーを使用して機械学習されたものである、上記(1)又は(2)のいずれかのプライバシーポリシー検証装置である。
)本発明の一態様は、前記学習用アプリケーションについて、前記学習用アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の機械学習に使用され、前記検証対象アプリケーションについて、前記検証対象アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にして抽出されたアプリケーション特徴量が前記推定部の推定に使用される、上記()のプライバシーポリシー検証装置である。
【0007】
)本発明の一態様は、コンピュータに、アプリケーションで実行される各API(Application Programming Interface)の特徴度基づいて、前記アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各APIの特徴度抽出する特徴抽出ステップと、前記推定ステップが前記特徴抽出ステップの抽出結果を使用して推定した推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、を実行させるためのコンピュータプログラムであって、前記APIの特徴度は、APIの実行を検索し、検索結果のAPIの実行をカウントし、カウント結果のカウント値に基づいた特徴度である、コンピュータプログラムである。
【0008】
)本発明の一態様は、プライバシーポリシー検証装置が、検証対象アプリケーションから、前記検証対象アプリケーションで実行される各API(Application Programming Interface)の特徴度抽出する特徴抽出ステップと、前記プライバシーポリシー検証装置が、前記特徴抽出ステップの抽出結果を使用して、前記検証対象アプリケーションが出力する個人プライバシー情報を推定する推定ステップと、前記プライバシーポリシー検証装置が、前記推定ステップの推定結果に基づいて、前記検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する検証ステップと、を含み、前記APIの特徴度は、APIの実行を検索し、検索結果のAPIの実行をカウントし、カウント結果のカウント値に基づいた特徴度である、プライバシーポリシー検証方法である。
【発明の効果】
【0009】
本発明によれば、アプリケーションのプライバシーポリシーの正当性を容易に検証することを図ることができるという効果が得られる。
【図面の簡単な説明】
【0010】
図1】一実施形態に係るプライバシーポリシー検証装置の構成例を示すブロック図である。
図2】一実施形態に係る学習段階の手順を示すフロー図である。
図3】一実施形態に係るプライバシーポリシー検証段階の手順を示すフロー図である。
図4】一実施形態に係るAPI実行の「OPCODE」を示す図表である。
図5】一実施形態に係るAPIリストを示す図表である。
図6】一実施形態に係る文字列定義の「OPCODE」を示す図表である。
図7】一実施形態に係るディレクトリ構造の例を示す図である。
図8】一実施形態に係るプライバシーポリシーの構成例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照し、本発明の実施形態について説明する。本実施形態において、個人プライバシー情報とは、個人に関する情報であって、特定の個人を識別することができる情報又は個人のプライバシーに関わる情報をいう。
【0012】
図1は、一実施形態に係るプライバシーポリシー検証装置の構成例を示すブロック図である。図1において、プライバシーポリシー検証装置10は、特徴抽出部11と推定部12と検証部13とを備える。図1に示されるプライバシーポリシー検証装置10の各機能は、プライバシーポリシー検証装置10が備えるCPU(Central Processing Unit:中央演算処理装置)がコンピュータプログラムを実行することにより実現される。なお、プライバシーポリシー検証装置10として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【0013】
特徴抽出部11は、検証対象アプリケーションから、当該検証対象アプリケーションで実行される各API(Application Programming Interface:アプリケーション・プログラミング・インタフェース)の特徴度、当該検証対象アプリケーションで定義された各文字列の使用度、当該検証対象アプリケーションを構成する各ディレクトリの使用度及び当該検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する。
【0014】
推定部12は、アプリケーションで実行される各APIの特徴度、当該アプリケーションで定義された各文字列の使用度、当該アプリケーションを構成する各ディレクトリの使用度及び当該アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、当該アプリケーションが出力する個人プライバシー情報を推定する。
【0015】
検証部13は、推定部12が特徴抽出部11の抽出結果を使用して推定した推定結果に基づいて、検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する。
【0016】
次に図2及び図3を参照して本実施形態に係るプライバシーポリシー検証方法を説明する。図2は、本実施形態に係る学習段階の手順を示すフロー図である。図3は、本実施形態に係るプライバシーポリシー検証段階の手順を示すフロー図である。
【0017】
本実施形態では、アプリケーションの例として、「Android(登録商標)」と呼ばれるOS(Operating System:オペレーティングシステム)上で動作するアプリケーションを挙げて説明する。また、アプリケーションはコンパイル後のコードで提供されたものを使用する。
【0018】
[学習段階]
まず図2を参照して推定部12の学習段階を説明する。学習段階は、後述するプライバシーポリシー検証段階で使用される推定部12の学習を行う段階である。推定部12の学習段階は、プライバシーポリシー検証装置10により実施されてもよく、又は、プライバシーポリシー検証装置10とは異なるコンピュータにより実施されてもよい。なお、図2に示される特徴抽出部11は、図1に示されるプライバシーポリシー検証装置10の特徴抽出部11と同様の機能を有する。
【0019】
図2において、学習段階(S10)は、4つのステップS11、S12、S13及びS14を含む。学習段階(S10)では、学習用アプリケーション及び当該学習用アプリケーションが出力する個人プライバシー情報が定められたプライバシーポリシー(正解データ)を使用して、アプリケーションが出力する個人プライバシー情報を推定するように、推定部12の機械学習を行う。アプリケーションのプライバシーポリシーは、当該アプリケーションが出力する個人プライバシー情報を定める記載を含む情報である。
【0020】
(ステップS11) 予め、学習用アプリケーション及び当該学習用アプリケーションのプライバシーポリシーが準備される。学習用アプリケーションが特徴抽出部11へ入力される。
【0021】
(ステップS12:特徴抽出ステップ) 特徴抽出部11は、学習用アプリケーションに対して、アプリケーション特徴量を抽出する特徴抽出処理を実行する。以下、本実施形態に係る特徴抽出処理を説明する。
【0022】
[特徴抽出処理]
本実施形態の一例として、4種類のアプリケーション特徴量について以下に説明する。なお、以下に説明する4種類のアプリケーション特徴量(APIの特徴度、文字列の使用度、ディレクトリの使用度、宣言された値の使用度)のうちいずれか一つ又は複数を抽出するものであってもよい。
【0023】
(特徴抽出処理の例1:APIの特徴度の抽出処理)
特徴抽出処理の例1では、アプリケーションで実行される各APIの特徴度を抽出する。まず、特徴抽出部11は、アプリケーションのコンパイル後のコードを逆コンパイルし、コード「.dex」から「.smali」と呼ばれる中間コードに変換する。この結果、複数の「.smali」ファイルが生成される。コード「.dex」から「.smali」への変換には、例えば「インターネット<URL:https://ibotpeaches.github.io/Apktool/>、[平成30年11月28日検索]」に開示される「apk-tool」と呼ばれるツールを利用することができる。
【0024】
次いで、特徴抽出部11は、生成された各「.smali」ファイルから「Andorid」の「Platform」で定義されたAPIの実行を検索し、各APIの実行数をカウントする。具体的には、「.smali」ファイルを読み込み、図4に示されるAPI実行の「OPCODE」で始まる関数実行の行を検索する。次いで、この検索結果の行と図5に示される「Android」の「Platform」で定義されたAPIリストとの照合を行う。この照合の結果、当該検索結果の行の中のAPIと、APIリスト中のAPIとが一致する場合、当該一致するAPIのカウント値を一つ増加させる。このAPIカウント処理を全ての「.smali」ファイルに対して実行する。この結果として、特徴抽出部11は、次の(1)式に示されるAPI特徴リストを生成する。API特徴リストは、処理対象アプリケーションごとに生成される。
【0025】
【数1】
【0026】
(1)式において、API特徴リスト「FeatureAPIs」は、当該リストに記載される合計「APILength(APILIST)」個のAPIの各カウント値「API1cnt」、「API2cnt」、・・・、「APILength(APILIST)cnt」を有する。
【0027】
次いで、特徴抽出部11は、次の(2),(3)及び(4)式により、API特徴リストごとに(つまり処理対象アプリケーションごとに)、各APIのTF(Term Frequency)-IDF(Inverse Document Frequency)を計算する。
【0028】
【数2】
【0029】
(2)式において、「tf(t,d)」は、アプリケーションd内のあるAPI「APIt」についてのTF値である。「n_t,d」は「APIt」のアプリケーションd内での出現回数である。「Σn_s,d」はアプリケーションd内の全てのAPIの出現回数の和である。「tf(t,d)」は、アプリケーションd内の「APIt」の出現頻度を表す値である。
【0030】
【数3】
【0031】
(3)式において、「idf(t)」は「APIt」のIDF値である。「N」は、処理対象アプリケーションの総数である。「df(t)」は「APIt」が出現する処理対象アプリケーションの数である。「idf(t)」は、「APIt」が出現する頻度の逆数であって、「APIt」のレア度を表す値である。
【0032】
【数4】
【0033】
(4)式において、「TF-IDF」は「APIt」のTF-IDF値である。「tf」は「tf(t,d)」である。「idf」は「idf(t)」である。「TF-IDF」は、「APIt」の特徴度を表す値である。「TF-IDF」の値が大きいほど、より特徴的なAPIである。
【0034】
以上が「特徴抽出処理の例1:APIの特徴度の抽出処理」の説明である。なお、APIの特徴度として、各APIの「TF-IDF」を使用してもよく、又は、(1)式のAPI特徴リスト「FeatureAPIs」中の各APIのカウント値を使用してもよい。
【0035】
(特徴抽出処理の例2:文字列の使用度の抽出処理)
特徴抽出処理の例2では、アプリケーションで定義された各文字列の使用度を抽出する。まず、文字列の使用度の抽出対象の文字列を決定する。これは、アプリケーション特徴量の次元を限定するためである。
【0036】
上述した特徴抽出処理の例1と同様に、アプリケーションのコンパイル後のコードを逆コンパイルし、コード「.dex」から「.smali」と呼ばれる中間コードに変換することによって、複数の「.smali」ファイルが生成される。
【0037】
次いで、特徴抽出部11は、生成された各「.smali」ファイルから、「.smali」ファイルの中間コードに記載された文字列についての文字列候補リストを生成する。文字列候補リストに記載される対象の文字列は、アプリケーションで定義された文字列(定義文字列と称する)である。具体的には、図6に示される文字列定義の「OPCODE」で始まる行を検索し、この検索結果の行に記載された定義文字列を順次、文字列候補リストに追記していく。文字列候補リストは、処理対象アプリケーションごとに生成される。
【0038】
次いで、特徴抽出部11は、全ての処理対象アプリケーションの文字列候補リストを対象にして、定義文字列ごとに出現回数をカウントする。次いで、特徴抽出部11は、出現回数の多い方から上位N個(Nは予め任意に決定された値)の定義文字列を記載した文字列リストを生成する。文字列リストに記載されたN個の定義文字列が文字列の使用度の抽出対象の文字列である。
【0039】
次に、文字列リストに記載された定義文字列を対象にして、アプリケーションで定義された各定義文字列の使用度を抽出する。まず、特徴抽出部11は、アプリケーションから生成された各「.smali」ファイルから、文字列リストに記載された定義文字列を検索する。特徴抽出部11は、この検索により発見された定義文字列ごとに、出現回数をカウントする。この結果として、特徴抽出部11は、次の(5)式に示される文字列特徴リストを生成する。文字列特徴リストは、処理対象アプリケーションごとに生成される。
【0040】
【数5】
【0041】
(5)式において、文字列特徴リスト「Featurestrings」は、文字列リストに記載されるN個の定義文字列の各カウント値「String1cnt」、「String2cnt」、・・・、「StringNcnt」を有する。
【0042】
以上が「特徴抽出処理の例2:文字列の使用度の抽出処理」の説明である。
【0043】
(特徴抽出処理の例3:ディレクトリの使用度の抽出処理)
特徴抽出処理の例3では、アプリケーションを構成する各ディレクトリの使用度を抽出する。まず、ディレクトリの使用度の抽出対象のディレクトリを決定する。これは、アプリケーション特徴量の次元を限定するためである。
【0044】
上述した特徴抽出処理の例1と同様に、アプリケーションのコンパイル後のコードを逆コンパイルし、コード「.dex」から「.smali」と呼ばれる中間コードに変換することによって、複数の「.smali」ファイルが生成される。
【0045】
次いで、特徴抽出部11は、生成された各「.smali」ファイルから、「smali」ディレクトリ配下のディレクトリ名を取得する。例えば、図7に例示されるディレクトリ構造の場合、抽出されるディレクトリ名が記載されるのディレクトリ名リストは、「com, com/atok, com/atok/mobile, com/atok/mobile/core/a, com/atok/mobile/core/b」となる。ディレクトリ名リストは、処理対象アプリケーションごとに生成される。
【0046】
次いで、特徴抽出部11は、全ての処理対象アプリケーションのディレクトリ名リストを対象にして、ディレクトリ名ごとに出現回数をカウントする。次いで、特徴抽出部11は、出現回数の多い方から上位N個(Nは予め任意に決定された値)のディレクトリ名を記載したパッケージ構造リストを生成する。パッケージ構造リストに記載されたN個のディレクトリ名のディレクトリがディレクトリの使用度の抽出対象のディレクトリである。
【0047】
次に、パッケージ構造リストに記載されたディレクトリ名のディレクトリを対象にして、各ディレクトリの使用度を抽出する。まず、特徴抽出部11は、アプリケーションから生成された各「.smali」ファイルに対して、パッケージ構造リストに記載されたディレクトリ名のディレクトリの有無を判定する。この判定結果として、特徴抽出部11は、次の(6)式に例示されるディレクトリ特徴リストを生成する。ディレクトリ特徴リストは、処理対象アプリケーションごとに生成される。
【0048】
【数6】
【0049】
(6)式において、ディレクトリ特徴リスト「FeaturePackageDirectory」は、パッケージ構造リストに記載されるN個のディレクトリ名の各ディレクトリの有無を表す値「1:有り、0:無し」を有する。
以上が「特徴抽出処理の例3:ディレクトリの使用度の抽出処理」の説明である。
【0050】
(特徴抽出処理の例4:宣言された値の使用度の抽出処理)
特徴抽出処理の例4では、アプリケーションで宣言された各値の使用度を抽出する。「Android」のアプリケーションでは、「.apk」ファイルに含まれる「AndroidManifest.xml」と呼ばれるマニフェスト(宣言)ファイルに、アプリケーションが利用する権限やコンポーネント名やコンポーネントが受け取る「Intent-Filter」名などが記載される。そのマニフェストファイル「AndroidManifest.xml」からアプリケーション特徴量を抽出する。なお、「.apk」ファイルに含まれる「AndroidManifest.xml」はエンコードされているので、上述した「apk-tool」や例えば「インターネット<URL:https://developer.android.com/studio/command-line/aapt2>、[平成30年11月28日検索]」に開示される「aapt2」等のツールを使用してデコードしてからアプリケーション特徴量を抽出する。
【0051】
特徴抽出処理の例4で抽出するアプリケーション特徴量の例4-1、例4-2、例4-3、例4-4を以下に説明する。
【0052】
(例4-1:権限情報)
例4-1では、特徴抽出部11は、マニフェストファイル「AndroidManifest.xml」中の「<uses-permission>要素」の「android:name」属性の値(パーミッション)を取得する。特徴抽出部11は、予め、パーミッションリストを備える。パーミッションリストには、抽出対象のパーミッションが記載される。特徴抽出部11は、マニフェストファイル「AndroidManifest.xml」に対して、パーミッションリストに記載されたパーミッションの有無を判定する。この判定結果として、特徴抽出部11は、上記(6)式と同様にして、権限情報特徴リストを生成する。権限情報特徴リストは、パーミッションリストに記載される各パーミッションの有無を表す値「1:有り、0:無し」を有する。
【0053】
(例4-2:「Uses-feature」情報)
例4-2では、特徴抽出部11は、「<uses-feature>要素」の「android:name」属性の値(「uses-feature」値)を取得する。特徴抽出部11は、予め、「uses-feature」リストを備える。「uses-feature」リストには、抽出対象の「uses-feature」値が記載される。特徴抽出部11は、マニフェストファイル「AndroidManifest.xml」に対して、「uses-feature」リストに記載された「uses-feature」値の有無を判定する。この判定結果として、特徴抽出部11は、上記(6)式と同様にして、「Uses-feature」情報特徴リストを生成する。「Uses-feature」情報特徴リストは、「uses-feature」リストに記載される各「uses-feature」値の有無を表す値「1:有り、0:無し」を有する。
【0054】
(例4-3:「Intent-Filter」情報)
例4-3では、特徴抽出部11は、「<intent-filter>要素」の値を取得する。特徴抽出部11は、予め、「intent-filter」リストを備える。「intent-filter」リストには、抽出対象の「intent-filter」値が記載される。特徴抽出部11は、マニフェストファイル「AndroidManifest.xml」に対して、「intent-filter」リストに記載された「intent-filter」値の有無を判定する。この判定結果として、特徴抽出部11は、上記(6)式と同様にして、「Intent-Filter」情報特徴リストを生成する。「Intent-Filter」情報特徴リストは、「intent-filter」リストに記載される各「intent-filter」値の有無を表す値「1:有り、0:無し」を有する。
【0055】
(例4-4:要素情報)
例4-4では、特徴抽出部11は、要素情報を取得する。取得対象の要素情報の例4-4-1から例4-4-7を以下に示す。
(例4-4-1) <activity>要素の数
(例4-4-2) <service>要素の数
(例4-4-3) <receiver>要素の数
(例4-4-4) <content-provider>要素の数
(例4-4-5) <uses-permission>要素の数
(例4-4-6) <uses-feature>要素の数
(例4-4-7) <intent-filter>要素の数
特徴抽出部11は、マニフェストファイル「AndroidManifest.xml」に対して、例4-4-1から例4-4-7の各要素の個数をカウントするカウント処理を実行する。
このカウント処理結果として、特徴抽出部11は、上記(5)式と同様にして、要素情報特徴リストを生成する。要素情報特徴リストは、例4-4-1から例4-4-7の各要素のカウント値を有する。
【0056】
以上が「特徴抽出処理の例4:宣言された値の使用度の抽出処理」の説明である。
【0057】
上述した特徴抽出処理の例1から例4のうちいずれか一つ又は複数が実行されるものであってもよい。以上が特徴抽出処理の説明である。
【0058】
説明を図2に戻す。特徴抽出部11によって学習用アプリケーションから抽出されたアプリケーション特徴量を使用して、推定部12の機械学習を行う。推定部12の機械学習に使用されるアプリケーション特徴量は、特徴抽出処理の例1から例4のうちいずれか一つ又は複数によって学習用アプリケーションから抽出されたものである。
【0059】
(ステップS13) 特徴抽出部11によって学習用アプリケーションから抽出されたアプリケーション特徴量を推定部12へ入力する。当該アプリケーション特徴量を推定部12へ入力した結果として、当該学習用アプリケーションが出力する個人プライバシー情報の推定結果が推定部12から出力される。
【0060】
(ステップS14) 推定部12から出力された個人プライバシー情報の推定結果を、当該学習用アプリケーションのプライバシーポリシーに基づいて検証する。この検証では、個人プライバシー情報の推定結果とプライバシーポリシーが定める出力の個人プライバシー情報とを照合する。当該照合の結果として、プライバシーポリシー(正解データ)と個人プライバシー情報の推定結果との誤差が計算される。次いで、当該照合の結果を推定部12に反映させる。当該検証の結果が所定の学習終了条件を満足するまで、推定部12の機械学習は繰り返し行われる。所定の学習終了条件は、例えば、所定の正解率以上若しくは所定の不正解率以下を満足すること、又は、所定の正解率以上及び所定の不正解率以下を両方満足すること、である。又は、所定の学習終了条件は、推定部12の機械学習の繰り返し回数が所定の回数に達したことである。
【0061】
[プライバシーポリシーの構成例]
プライバシーポリシーとして、例えば「XML」や「json」などの機械的に解釈可能な形式になっているデータを使用する。また、プライバシーポリシーに記載される出力の個人プライバシー情報は、予め定義されており、出力の有無が値「1:有り、0:無し」で記載されている。例えば、アプリケーションが出力する個人プライバシー情報の候補として、ユーザ識別情報「ID」、位置情報「Location」、連絡先情報「Contacts」、通話履歴「Calling_history」、ブラウザ閲覧履歴「Browsing_history」があり、「XML」で記述された図8の例のプライバシーポリシーの場合、当該プライバシーポリシーが定める出力の個人プライバシー情報は、ユーザ識別情報「ID」と連絡先情報「Contacts」とである。
【0062】
[推定部の構成例]
推定部12には、機械学習アルゴリズムのモデルを使用する。例えば、SVM(Support Vector Machine)、決定木ベースのランダムフォレスト、XGBoost、ニューラルネットワークなどの機械学習アルゴリズムを適用してもよい。推定部12の機械学習では、推定部12が出力した個人プライバシー情報の推定結果とプライバシーポリシー(正解データ)が定める出力の個人プライバシー情報との照合の結果である誤差によって、推定部12の機械学習アルゴリズムのモデルのパラメータを調整する。
【0063】
また、特徴抽出部11によって学習用アプリケーションから抽出されたアプリケーション特徴量に対して次元圧縮(Dimensionality Reduction)や標準化などの事前処理を行い、当該事前処理の結果を推定部12へ入力してもよい。次元圧縮(Dimensionality Reduction)として例えばPCA(Principal Component Analysis:主成分分析)を適用してもよい。標準化として例えば「Standard Scalars」を適用してもよい。
【0064】
[プライバシーポリシー検証段階]
次に図3を参照してプライバシーポリシー検証段階を説明する。プライバシーポリシー検証段階は、上述した学習段階により学習済みの推定部12を使用して、検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する段階である。
【0065】
図3において、プライバシーポリシー検証段階(S20)は、3つのステップS21、S22及びS23を含む。プライバシーポリシー検証段階(S20)では、プライバシーポリシー検証装置10は、上述した学習段階により学習済みの推定部12を備える。当該学習済みの推定部12は、アプリケーションで実行される各APIの特徴度、当該アプリケーションで定義された各文字列の使用度、当該アプリケーションを構成する各ディレクトリの使用度及び当該アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数に基づいて、当該アプリケーションが出力する個人プライバシー情報を推定するものである。
【0066】
(ステップS21) 検証対象アプリケーションが特徴抽出部11に入力される。特徴抽出部11は、検証対象アプリケーションから、当該検証対象アプリケーションで実行される各APIの特徴度、当該検証対象アプリケーションで定義された各文字列の使用度、当該検証対象アプリケーションを構成する各ディレクトリの使用度及び当該検証対象アプリケーションで宣言された各値の使用度のうちいずれか一つ又は複数を抽出する。この特徴抽出処理は、上述した特徴抽出処理と同じであって、処理対象アプリケーションは検証対象アプリケーションである。また、「特徴抽出処理の例2:文字列の使用度の抽出処理」における文字列候補リスト、「特徴抽出処理の例3:ディレクトリの使用度の抽出処理」におけるディレクトリ名リスト、並びに「特徴抽出処理の例4:宣言された値の使用度の抽出処理」における「例4-1:権限情報」でのパーミッションリスト、「例4-2:「Uses-feature」情報」での「uses-feature」リスト、及び「例4-3:「Intent-Filter」情報」での「intent-filter」リストは、学習段階と同じものを使用する。
【0067】
(ステップS22) 特徴抽出部11によって検証対象アプリケーションから抽出されたアプリケーション特徴量を推定部12へ入力する。当該アプリケーション特徴量を推定部12へ入力した結果として、当該検証対象アプリケーションが出力する個人プライバシー情報の推定結果が推定部12から出力される。
【0068】
(ステップS23) 検証部13には、検証対象アプリケーションが出力する個人プライバシー情報の推定結果と、当該検証対象アプリケーションのプライバシーポリシーとが入力される。検証部13は、検証対象アプリケーションが出力する個人プライバシー情報の推定結果に基づいて、当該検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証する。この検証では、個人プライバシー情報の推定結果とプライバシーポリシーが定める出力の個人プライバシー情報とを照合する。当該照合の結果、すべて一致する場合には当該プライバシーポリシーの正当性の検証が合格であり、それ以外の場合には当該プライバシーポリシーの正当性の検証が不合格である。検証部13は、検証対象アプリケーションのプライバシーポリシーの検証結果「合格又は不合格」を出力する。
【0069】
上述した実施形態によれば、検証対象アプリケーションに対する静的解析によって当該検証対象アプリケーションが出力する個人プライバシー情報を推定し、当該推定結果に基づいて当該検証対象アプリケーションのプライバシーポリシーで定められた出力の個人プライバシー情報の正当性を検証することができる。このため、検証対象アプリケーションを実際に動作させるコストは不要であり、アプリケーションのプライバシーポリシーの正当性を容易に検証することができるという効果が得られる。
【0070】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【0071】
例えば、上述した実施形態では、アプリケーションはコンパイル後のコードで提供されたものを使用したが、アプリケーションはソースコードで提供されたものを使用してもよい。アプリケーションがソースコードで提供される場合、逆コンパイルは不要である。
【0072】
[変形例]
上述した実施形態の変形例として、学習用アプリケーション及び検証対象アプリケーションについて、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出してもよい。この点について以下に説明する。
【0073】
一般のアプリケーションの中には、例えば広告表示を目的とする広告ライブラリ等の、第三者が作成したライブラリが組み込まれたものが存在する。特に広告ライブラリの中には、ユーザに効果的な広告を表示するために、例えばユーザ識別情報「ID」や位置情報「Location」等のユーザ情報を収集するものがある。このような広告ライブラリが組み込まれたアプリケーションでは、当該アプリケーションのプライバシーポリシーで定められていない個人プライバシー情報が当該アプリケーションから出力される可能性がある。このため、アプリケーションが広告ライブラリを含む状態で当該アプリケーションから抽出されたアプリケーション特徴量を使用して、学習段階の推定部12の機械学習やプライバシーポリシー検証段階の推定部12の推定を行うと、広告ライブラリのアプリケーション特徴量を含む状態で当該機械学習や当該推定が行われるので、推定部12の性能が低下する恐れがある。このことから、学習用アプリケーション及び検証対象アプリケーションについて、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出することは好ましい。
【0074】
本変形例では、学習段階において、特徴抽出部11は、学習用アプリケーションについて、学習用アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出し、当該抽出されたアプリケーション特徴量が推定部12の機械学習に使用される。また、プライバシーポリシー検証段階において、特徴抽出部11は、検証対象アプリケーションについて、検証対象アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出し、当該抽出されたアプリケーション特徴量が推定部12の推定に使用される。これにより、推定部12の性能の低下を抑制する効果が得られる。
【0075】
なお、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にするためには、ライブラリを検知する必要がある。そのライブラリ検知技術については、例えば「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」ファイルがライブラリであるのかを判定することができる。特徴抽出部11は、アプリケーションの各「.smali」ファイルに対して当該ライブラリ検知方法によってライブラリであるか否かを判定し、ライブラリであると判定した「.smali」ファイルをアプリケーション特徴量の抽出対象外にする。これにより、学習用アプリケーション及び検証対象アプリケーションについて、アプリケーションに含まれるライブラリをアプリケーション特徴量の抽出対象外にしてアプリケーション特徴量を抽出することができる。
以上が本変形例の説明である。
【0076】
また、上述した各装置の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disc)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0077】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0078】
10…プライバシーポリシー検証装置、11…特徴抽出部、12…推定部、13…検証部
図1
図2
図3
図4
図5
図6
図7
図8