(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-01
(45)【発行日】2025-07-09
(54)【発明の名称】覆い隠されたコンポーネントとのインタラクションを阻止することによるユーザインタラクション乗っ取り攻撃の防止
(51)【国際特許分類】
G06F 21/50 20130101AFI20250702BHJP
G06F 3/0481 20220101ALI20250702BHJP
【FI】
G06F21/50
G06F3/0481
(21)【出願番号】P 2023547140
(86)(22)【出願日】2021-02-03
(86)【国際出願番号】 US2021016439
(87)【国際公開番号】W WO2022169445
(87)【国際公開日】2022-08-11
【審査請求日】2023-10-31
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ルフィノ,ベルナルド
(72)【発明者】
【氏名】タフベッソン,ライナス
(72)【発明者】
【氏名】カニンガム,エドワード
(72)【発明者】
【氏名】ストークス,アラン・マイケル
【審査官】青木 重徳
(56)【参考文献】
【文献】米国特許第09760256(US,B1)
【文献】国際公開第2020/066084(WO,A1)
【文献】米国特許出願公開第2014/0201656(US,A1)
【文献】悪意あるサイトにこっそり誘導 クリックジャッキング,yamory [オンライン],2020年09月08日,[検索日 2025.02.14]、インターネット,<URL: https://yamory.io/blog/about-clickjacking>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/50
G06F 3/0481
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法であって、
グラフィカルユーザインターフェイス(GUI:Graphical User Interface)の特定の領域とのユーザインタラクションを検出するステップと、
前記ユーザインタラクションが特定のユーザインターフェイス(UI:User Interface)コンポーネントによって消費されることになると判断するステップとを備え、前記特定のUIコンポーネントは、前記ユーザインタラクションが前記特定のUIコンポーネントへ通り抜けることを可能にするように構成された複数のUIコンポーネントによって覆われており、前記コンピュータにより実現される方法はさらに、
前記ユーザインタラクションが前記特定のUIコンポーネントによって消費されることになるとの判断に基づいて、前記GUIの前記特定の領域における前記複数のUIコンポーネントの累積不透明度を決定するステップと、
前記累積不透明度が閾値不透明度を超えると判断するステップと、
前記累積不透明度が前記閾値不透明度を超えるとの判断に基づいて、前記特定のUIコンポーネントが前記ユーザインタラクションを消費することを阻止するステップとを備える、コンピュータにより実現される方法。
【請求項2】
前記複数のUIコンポーネントの各それぞれのUIコンポーネントは、前記GUIの前記特定の領域の対応する不透明度に関連付けられ、
前記累積不透明度を決定するステップは、各それぞれのUIコンポーネントの前記対応する不透明度に基づいて前記GUIの前記特定の領域における前記複数のUIコンポーネントの前記累積不透明度を決定するステップを含む、請求項1に記載のコンピュータにより実現される方法。
【請求項3】
前記GUIの前記特定の領域における前記複数のUIコンポーネントの前記累積不透明度は、各それぞれのUIコンポーネントの前記対応する不透明度とは異なる、請求項2に記載のコンピュータにより実現される方法。
【請求項4】
前記それぞれのUIコンポーネントの前記対応する不透明度は、前記GUIの前記特定の領域における前記それぞれのUIコンポーネントのコンテンツの最大不透明度を示す、請求項2~3のいずれか1項に記載のコンピュータにより実現される方法。
【請求項5】
前記複数のUIコンポーネントは、(i)第1のソフトウェアアプリケーションによって生成された第1の複数のUIコンポーネントと、(ii)第2のソフトウェアアプリケーションによって生成された第2の複数のUIコンポーネントとを含み、
前記複数のUIコンポーネントの前記累積不透明度を決定するステップは、(i)前記GUIの前記特定の領域における前記第1の複数のUIコンポーネントの第1のアプリケーション特有の累積不透明度を決定するステップと、(ii)前記GUIの前記特定の領域における前記第2の複数のUIコンポーネントの第2のアプリケーション特有の累積不透明度を決定するステップとを含み、
前記累積不透明度が前記閾値不透明度を超えると判断するステップは、前記第1のアプリケーション特有の累積不透明度または前記第2のアプリケーション特有の累積不透明度のうちの少なくとも1つが前記閾値不透明度を超えると判断するステップを含む、請求項2~4のいずれか1項に記載のコンピュータにより実現される方法。
【請求項6】
前記複数のUIコンポーネントは、(i)第1のソフトウェアアプリケーションによって生成された第1の複数のUIコンポーネントと、(ii)第2のソフトウェアアプリケーションによって生成された第2の複数のUIコンポーネントとを含み、
前記複数のUIコンポーネントの前記累積不透明度を決定するステップは、前記GUIの前記特定の領域における前記第1の複数のUIコンポーネントおよび前記第2の複数のUIコンポーネントのアプリケーション非依存の累積不透明度を決定するステップを含み、
前記累積不透明度が前記閾値不透明度を超えると判断するステップは、アプリケーション非依存の累積不透明度が前記閾値不透明度を超えると判断するステップを含む、請求項2~4のいずれか1項に記載のコンピュータにより実現される方法。
【請求項7】
前記特定のUIコンポーネントは、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションとは異なる第3のソフトウェアアプリケーションによって生成される、請求項5~6のいずれか1項に記載のコンピュータにより実現される方法。
【請求項8】
前記対応する不透明度は、値ゼロから予め定められた値までであり、前記値ゼロは、最小不透明度を表し、前記予め定められた値は、最大不透明度を表し、前記累積不透明度を決定するステップは、
各それぞれのUIコンポーネントについて、(i)前記予め定められた値と(ii)前記それぞれのUIコンポーネントの前記対応する不透明度との間の差に基づいて対応する透明度を決定するステップと、
前記複数のUIコンポーネントの前記対応する透明度の積を決定するステップと、
前記積に基づいて前記累積不透明度を決定するステップとを含む、請求項2~7のいずれか1項に記載のコンピュータにより実現される方法。
【請求項9】
前記対応する不透明度は、値ゼロから予め定められた値までの対応する透明度として表され、前記値ゼロは、最小透明度を表し、前記予め定められた値は、最大透明度を表し、前記累積不透明度を決定するステップは、
前記複数のUIコンポーネントの前記対応する透明度の積を決定するステップと、
前記積に基づいて前記累積不透明度を決定するステップとを含む、請求項2~7のいずれか1項に記載のコンピュータにより実現される方法。
【請求項10】
前記積に基づいて前記累積不透明度を決定するステップは、
(i)前記予め定められた値と(ii)前記積との間の差を決定するステップと、
前記差に基づいて前記累積不透明度を決定するステップとを含む、請求項8~9のいずれか1項に記載のコンピュータにより実現される方法。
【請求項11】
前記累積不透明度は、累積透明度として表され、前記閾値不透明度は、閾値透明度として表され、前記累積不透明度が前記閾値不透明度を超えると判断するステップは、
前記累積透明度が前記閾値透明度未満であると判断するステップを含む、請求項1~10のいずれか1項に記載のコンピュータにより実現される方法。
【請求項12】
前記ユーザインタラクションが前記特定のUIコンポーネントによって消費されることになると判断するステップは、
前記複数のUIコンポーネントの各それぞれのUIコンポーネントが属性に関連付けられていると判断するステップを含み、前記属性は、前記それぞれのUIコンポーネントが、前記ユーザインタラクションを無視して、前記それぞれのUIコンポーネントの下にある前記GUIの層へ前記ユーザインタラクションが通り抜けることを可能にするように構成されていることを示す、請求項1~11のいずれか1項に記載のコンピュータにより実現される方法。
【請求項13】
前記ユーザインタラクションは、モバイルコンピューティングデバイスのタッチインターフェイスを介して前記GUIの前記特定の領域をタッチすることを含む、請求項1~12のいずれか1項に記載のコンピュータにより実現される方法。
【請求項14】
(i)前記ユーザインタラクションを検出するステップ、(ii)前記ユーザインタラクションが前記特定のUIコンポーネントによって消費されることになると判断するステップ、(iii)前記累積不透明度を決定するステップ、(iv)前記累積不透明度が前記閾値不透明度を超えると判断するステップ、および(v)前記特定のUIコンポーネントが前記ユーザインタラクションを消費することを阻止するステップの各々は、コンピューティングデバイス上で実行されるソフトウェアアプリケーションから独立して、前記コンピューティングデバイスのオペレーティングシステムによって実行される、請求項1~13のいずれか1項に記載のコンピュータにより実現される方法。
【請求項15】
前記GUIは、モバイルコンピューティングデバイスのオペレーティングシステムによって提供され、前記特定のUIコンポーネントおよび前記複数のUIコンポーネントの各々は、前記モバイルコンピューティングデバイスによって実行される対応するソフトウェアアプリケーションからのそれぞれの要求に応答して前記モバイルコンピューティングデバイスの前記オペレーティングシステムによって生成される、請求項1~14のいずれか1項に記載のコンピュータにより実現される方法。
【請求項16】
前記複数のUIコンポーネントの各それぞれのUIコンポーネントについて、前記それぞれのUIコンポーネントのタイプが予め定められた数のUIコンポーネントのタイプのうちの1つであると判断するステップと、
前記それぞれのUIコンポーネントの前記タイプが前記予め定められた数のUIコンポーネントのタイプのうちの1つであるとの判断に基づいて、各それぞれのUIコンポーネントについて、前記それぞれのUIコンポーネントが信頼できないものであると判断するステップと、
各それぞれのUIコンポーネントが信頼できないものであるとの判断にさらに基づいて、前記複数のUIコンポーネントの前記累積不透明度を決定するステップとをさらに備える、請求項1~15のいずれか1項に記載のコンピュータにより実現される方法。
【請求項17】
前記GUIは、水平なエリアと、複数の垂直に積層された層とを含み、前記GUIの前記特定の領域は、前記水平なエリアのサブセットを含み、前記複数のUIコンポーネントの各それぞれのUIコンポーネントは、前記複数の垂直に積層された層のうちの対応する層に配置される、請求項1~16のいずれか1項に記載のコンピュータにより実現される方法。
【請求項18】
前記
複数のUIコンポーネントの各それぞれのUIコンポーネントは、前記それぞれのUIコンポーネントがユーザインタラクションによって再位置決め可能でないように前記GUIの固定領域内に
ある、請求項1~17のいずれか1項に記載のコンピュータにより実現される方法。
【請求項19】
システムであって、
プロセッサと、
前記プロセッサによって実行されると前記プロセッサに請求項1~18のいずれか1項に記載の方法を実行させる命令が格納された非一時的なコンピュータ可読媒体とを備える、システム。
【請求項20】
コンピューティングデバイスによって実行されると前記コンピューティングデバイスに請求項1~18のいずれか1項に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
悪意のあるソフトウェアは、数ある悪意のある機能の中で、コンピューティングリソースに故意に損傷を与えたり、コンピューティングリソースの使用をモニタリングしたり、および/または、コンピューティングデバイスのユーザについての情報を取得したりするように構成され得る。いくつかのケースでは、悪意のあるソフトウェアは、コンピューティングデバイス、そのオペレーティングシステム、および/または、そこで実行されるアプリケーションの既知の脆弱性を悪用することによって動作し得る。したがって、好ましくはコンピューティングデバイス、オペレーティングシステムおよび/またはソフトウェアアプリケーションの通常の動作および/または機能に影響を及ぼすことなく、そのような脆弱性を軽減および/または排除することが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【0002】
概要
ユーザインタラクション乗っ取り攻撃は、ユーザインタラクションが、グラフィカルユーザインターフェイス(GUI)の一部としてかぶせられる複数のUIコンポーネントによって遮断された特定のユーザインターフェイス(UI:User Interface)コンポーネントに渡されることを含み得る。ユーザインタラクションは、覆っている複数のUIコンポーネントではなく、特定のUIコンポーネントによって消費され得る。なぜなら、複数のUIコンポーネントの各それぞれのUIコンポーネントは、ユーザインタラクションを無視することによりGUIの下にある層へユーザインタラクションが通り抜けることを可能にするようにそれぞれのUIコンポーネントを構成する属性に関連付けられ得るからである。ユーザインタラクション乗っ取り攻撃は、ユーザインタラクションに関連付けられた領域における複数のUIコンポーネントの累積不透明度を決定することによって、軽減および/または排除することができる。累積不透明度が閾値不透明度を超えることにより特定のUIコンポーネントの対応する部分が複数のUIコンポーネントを通して十分に見えない場合、ユーザインタラクションは阻止され得る。
【課題を解決するための手段】
【0003】
第1の例示的な実施形態は、コンピュータにより実現される方法を含み、上記コンピュータにより実現される方法は、GUIの特定の領域とのユーザインタラクションを検出するステップを含む。上記コンピュータにより実現される方法は、上記ユーザインタラクションが特定のUIコンポーネントによって消費されることになると判断するステップも含み、上記特定のUIコンポーネントは、上記ユーザインタラクションが上記特定のUIコンポーネントへ通り抜けることを可能にするように構成された複数のUIコンポーネントによって覆われている。上記コンピュータにより実現される方法はさらに、上記ユーザインタラクションが上記特定のUIコンポーネントによって消費されることになるとの判断に基づいて、上記GUIの上記特定の領域における上記複数のUIコンポーネントの累積不透明度を決定するステップを含む。上記コンピュータにより実現される方法はさらに、上記累積不透明度が閾値不透明度を超えると判断するステップと、上記累積不透明度が上記閾値不透明度を超えるとの判断に基づいて、上記特定のUIコンポーネントが上記ユーザインタラクションを消費することを阻止するステップとを含む。
【0004】
第2の例示的な実施形態は、システムを含み、上記システムは、プロセッサと、上記プロセッサによって実行されると上記プロセッサに動作を実行させる命令が格納された非一時的なコンピュータ可読媒体とを含む。上記動作は、GUIの特定の領域とのユーザインタラクションを検出することを含む。上記動作は、上記ユーザインタラクションが特定のUIコンポーネントによって消費されることになると判断することも含み、上記特定のUIコンポーネントは、上記ユーザインタラクションが上記特定のUIコンポーネントへ通り抜けることを可能にするように構成された複数のUIコンポーネントによって覆われている。上記動作はさらに、上記ユーザインタラクションが上記特定のUIコンポーネントによって消費されることになるとの判断に基づいて、上記GUIの上記特定の領域における上記複数のUIコンポーネントの累積不透明度を決定することを含む。上記動作はさらに、上記累積不透明度が閾値不透明度を超えると判断することと、上記累積不透明度が上記閾値不透明度を超えるとの判断に基づいて、上記特定のUIコンポーネントが上記ユーザインタラクションを消費することを阻止することとを含む。
【0005】
第3の例示的な実施形態は、コンピューティングデバイスによって実行されると上記コンピューティングデバイスに動作を実行させる命令が格納された非一時的なコンピュータ可読媒体を含む製造品を含む。上記動作は、GUIの特定の領域とのユーザインタラクションを検出することを含む。上記動作は、上記ユーザインタラクションが特定のUIコンポーネントによって消費されることになると判断することも含み、上記特定のUIコンポーネントは、上記ユーザインタラクションが上記特定のUIコンポーネントへ通り抜けることを可能にするように構成された複数のUIコンポーネントによって覆われている。上記動作はさらに、上記ユーザインタラクションが上記特定のUIコンポーネントによって消費されることになるとの判断に基づいて、上記GUIの上記特定の領域における上記複数のUIコンポーネントの累積不透明度を決定することを含む。上記動作はさらに、上記累積不透明度が閾値不透明度を超えると判断することと、上記累積不透明度が上記閾値不透明度を超えるとの判断に基づいて、上記特定のUIコンポーネントが上記ユーザインタラクションを消費することを阻止することとを含む。
【0006】
第4の例示的な実施形態は、システムを含み、上記システムは、GUIの特定の領域とのユーザインタラクションを検出するための手段を含む。上記システムは、上記ユーザインタラクションが特定のUIコンポーネントによって消費されることになると判断するための手段も含み、上記特定のUIコンポーネントは、上記ユーザインタラクションが上記特定のUIコンポーネントへ通り抜けることを可能にするように構成された複数のUIコンポーネントによって覆われている。上記システムはさらに、上記ユーザインタラクションが上記特定のUIコンポーネントによって消費されることになるとの判断に基づいて、上記GUIの上記特定の領域における上記複数のUIコンポーネントの累積不透明度を決定するための手段を含む。上記システムはさらに、上記累積不透明度が閾値不透明度を超えると判断するための手段と、上記累積不透明度が上記閾値不透明度を超えるとの判断に基づいて、上記特定のUIコンポーネントが上記ユーザインタラクションを消費することを阻止するための手段とを含む。
【0007】
これらのおよび他の実施形態、局面、利点および代替例は、添付の図面を適宜参照して以下の詳細な説明を読むことによって当業者に明らかになるであろう。さらに、この概要ならびに本明細書において提供される他の説明および図面は、ほんの一例として実施形態を説明するよう意図されており、そのため、多数の変形形態が可能である。例えば、構造要素およびプロセスステップは、特許請求される実施形態の範囲内にとどまりつつ、並べ替えられたり、組み合わせられたり、分散させられたり、除去されたり、または他の態様で変更されたりしてもよい。
【図面の簡単な説明】
【0008】
【
図1】例示的な実施形態に係る、コンピューティングデバイスを示す図である。
【
図2】例示的な実施形態に係る、コンピューティングシステムを示す図である。
【
図3】例示的な実施形態に係る、タップジャッキング攻撃の局面を示す図である。
【
図4】例示的な実施形態に係る、グラフィカルユーザインターフェイスの構成要素の配置を示す図である。
【
図5】例示的な実施形態に係る、グラフィカルユーザインターフェイスの構成要素の配置を示す図である。
【
図6】例示的な実施形態に係る、タップジャッキング攻撃を防止するためのシステムを示す図である。
【
図7】例示的な実施形態に係る、フローチャートを示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
例示的な方法、デバイスおよびシステムが本明細書で説明される。「例」および「例示的な」という語は、「例、事例、または例示として機能する」ことを意味するように本明細書で用いられる、ということが理解されるべきである。「例」、「例示的な」および/または「説明的な」として本明細書に記載されている実施形態または特徴はいずれも、特に明記しない限り、他の実施形態または特徴と比べて好ましいまたは有利であると解釈されるべきであるとは限らない。そのため、本明細書に提示されている主題の範囲から逸脱することなく、他の実施形態を利用することができ、他の変更を行うことができる。
【0010】
したがって、本明細書に記載されている例示的な実施形態は、限定的であるよう意図されていない。概して本明細書で説明され、図面に示される本開示の局面は、多種多様な異なる構成で配置され、置換され、組み合わせられ、分離され、設計され得る、ということが容易に理解されるであろう。
【0011】
さらに、文脈が他の意味を示唆しない限り、図面の各々に示される特徴は、互いに組み合わせて使用されてもよい。そのため、図示された全ての特徴が各実施形態にとって必要であるとは限らないと理解した上で、図面は概して、1つまたは複数の全体的な実施形態の構成要素局面として見られるべきである。
【0012】
さらに、本明細書または特許請求の範囲における要素、ブロックまたはステップの列挙はいずれも、明確にすることを目的としている。そのため、そのような列挙は、これらの要素、ブロックまたはステップが特定の配置に固執すること、または特定の順序で実行されることを必要または意味するように解釈されるべきではない。特に断りのない限り、図面は一定の縮尺で描かれていない。
【0013】
I.概略
タップジャッキングなどのユーザインタラクション乗っ取り攻撃は、ユーザインタラクションのターゲットであるように見え、かつ、実際にユーザインタラクションを消費することになる別のUIコンポーネントを遮断するUIコンポーネントを表示することを含み得る。遮断しているUIコンポーネントは、ユーザがGUIの特定の部分と対話するように仕向ける一見悪意がないように思われるコンテンツを表示し得るが、これらのインタラクションは、ユーザの認識なしに、遮断されたUIコンポーネントの局面を制御および/または変更するのに使用される場合がある。そのため、例えば、悪意のあるアプリケーションは、数ある可能性の中で、コンピューティングデバイスの特定のハードウェアを使用するための許可、他のソフトウェアアプリケーションの動作をモニタリングするための許可、および/または、特定のシステム機能を実行するための許可などの、そうでなければユーザが悪意のあるアプリケーションに与えないであろう許可を悪意のあるアプリケーションに与えるようにユーザをだますことができる。追加的にまたは代替的に、悪意のあるアプリケーションは、数ある可能性の中で、支払いボタンを押したり、写真をとったり、および/または、電話をかけたりするようにユーザをだますことができる。このように、悪意のあるアプリケーションは、ユーザが意図していなかったように動作することができる。
【0014】
そのようなユーザインタラクション乗っ取り攻撃の可能性は、コンピューティングデバイスおよび/またはオペレーティングシステムの中には重なり合っているおよび/または覆っているUIコンポーネントを提供できるものもあるということに起因し得る。これらのUIコンポーネントのうちのいくつかは、ユーザインタラクションを無視してユーザインタラクションを下にあるUIコンポーネントに渡すように構成され得る。ユーザインタラクション乗っ取り攻撃は、UIコンポーネントがユーザによって手動で移動可能および/または再位置決め可能でない場合に特に問題になる可能性がある。なぜなら、これは、ユーザインタラクションが誤った方向に導かれていることにユーザが気付くことを妨げる可能性があるからである。いくつかがユーザインタラクションを無視し得るUIコンポーネントをかぶせるこの機能は、特定のGUI効果および/または機能を実現するために望ましいので、ユーザインタラクション乗っ取り攻撃を防止するためにこの機能を排除することは、一般に望ましい解決策ではない。
【0015】
したがって、ユーザインタラクション乗っ取り攻撃の可能性を排除および/または軽減するために、コンピューティングデバイスは、阻止されなければユーザインタラクションを消費することになるUIコンポーネントを事実上ユーザから見えなくするUIコンポーネントを通過する特定のユーザインタラクションを阻止するように構成され得る。特定のUIコンポーネントが単一のUIコンポーネントによって覆われる場合、この単一のUIコンポーネントの不透明度が閾値不透明度と比較され得る。不透明度が閾値不透明度以下である場合、ユーザインタラクションは、特定のUIコンポーネントへ通り抜けて特定のUIコンポーネントによって消費されることを許可され得る。そうでなければ、ユーザインタラクションは阻止され得る。しかし、それでもなお、全体的にではなく個々にUIコンポーネントの遮断を考えることは、ユーザインタラクション乗っ取り攻撃を可能にする可能性がある。例えば、2つの異なるUIコンポーネントの各々は、閾値不透明度よりも低いそれぞれの不透明度を有し得る。しかし、これら2つの異なるUIコンポーネントが互いに(および、特定のUIコンポーネントの上に)重ねられると、2つのUIコンポーネントの積層による正味の影響は、やはり、特定のUIコンポーネントの遮断になり得る。
【0016】
したがって、各UIコンポーネントの不透明度と閾値不透明度とを独立して比較するのではなく、コンピューティングデバイスは、ユーザインタラクションが通り抜けるように構成された複数のUIコンポーネントのスタックに関連付けられた累積不透明度を決定するように構成され得る。具体的には、各UIコンポーネントの不透明度は、対応する透明度に関連付けられ得る(例えば、不透明度および透明度は、合計が予め定められた値になり得るため、補完的役割をするものであるとみなすことができる)。累積不透明度は、ユーザインタラクションを消費することになる特定のUIコンポーネントを覆っている複数のUIコンポーネントに関連付けられた透明度の積(単位区間にスケーリングされる)に基づき得る。いくつかのケースでは、UIコンポーネントの不透明度は、そのエリア全体にわたってさまざまであり得るので、累積不透明度は、ユーザインタラクションが向けられる領域(例えば、ユーザがタッチまたはクリックしたGUIの領域)について、および/または、当該領域に基づいて決定され得る。そのため、累積不透明度は、特定のUIコンポーネントの領域がユーザに見えるおよび/またはいくつかの状況下で見えるであろう程度を定量化することができる。
【0017】
いくつかの実現例では、累積不透明度は、アプリケーション非依存であってもよい。具体的には、累積不透明度は、複数のUIコンポーネントの各UIコンポーネントが同一のソフトウェアアプリケーションによって生成されたか異なるソフトウェアアプリケーションによって生成されたかにかかわらず、複数のUIコンポーネントについて決定され得る。ユーザが特定のUIコンポーネントの関連部分を十分にはっきりと見ることができること(閾値不透明度によって判断される)をアプリケーション非依存の累積不透明度が示す場合、特定のUIコンポーネントは、ユーザインタラクションを消費することを許可され得る。ユーザが特定のUIコンポーネントの関連部分を十分にはっきりと見ることができない場合、特定のUIコンポーネントは、ユーザインタラクションを消費することを阻止され得る。ユーザインタラクションを消費することになる特定のUIコンポーネントと同一のソフトウェアアプリケーションによって生成された覆っているUIコンポーネントは、いくつかのケースでは、アプリケーション非依存の累積不透明度の一部として含まれてもよく、または他のケースでは、そこから除外されてもよい。
【0018】
他の実現例では、累積不透明度は、1つまたは複数のアプリケーション特有の累積不透明度に基づき得る。例えば、第1のアプリケーション特有の不透明度は、第1のソフトウェアアプリケーションに関連付けられた第1の複数のUIコンポーネントに基づいて決定され得て、第2のアプリケーション特有の不透明度は、第2のソフトウェアアプリケーションに関連付けられた第2の複数のUIコンポーネントに基づいて決定され得る。第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションは、ユーザインタラクションを消費すると予想される特定のUIコンポーネントに関連付けられた第3のソフトウェアアプリケーションとは異なり得る。累積不透明度は、第1のアプリケーション特有の不透明度または第2のアプリケーション特有の不透明度のうちの高い方であり得る。そのため、アプリケーション特有の累積不透明度は、任意の単一のソフトウェアアプリケーションが、ユーザが十分な明瞭さで特定のUIコンポーネントの所与の領域を見ることを妨げることができるが、複数の異なるソフトウェアアプリケーションが、特定のUIコンポーネントの当該所与の領域を閉塞し得るようにそれぞれのUIコンポーネントを独立して積層することができるかどうかを定量化することができる。
【0019】
多くの場合、コンピューティングデバイスおよび/またはそのオペレーティングシステムは、これらの複数のソフトウェアアプリケーションの独立した動作を実施することができる。そのため、所与のソフトウェアアプリケーションは、他のソフトウェアアプリケーションによって実行されている動作に気付かない可能性が高いため、所与のソフトウェアアプリケーションのUIコンポーネントの表示と他のソフトウェアアプリケーションのUIコンポーネントとを決定論的に連係させることができない。したがって、異なるソフトウェアアプリケーション間の悪意のある連係がありそうもないので、アプリケーション特有の累積不透明度は、コンピューティングデバイスの悪意のない動作と干渉しにくくしながら、依然としてユーザインタラクション乗っ取りの可能性を軽減および/または排除することができる。
【0020】
さらなる実現例では、いくつかのUIコンポーネントは、累積不透明度の計算から除外される場合がある。例えば、オペレーティングシステムおよび/または明確に信頼できるソフトウェアアプリケーションによって生成されたUIコンポーネントは、累積不透明度に寄与しない。なぜなら、これらのUIコンポーネントは、それらのソースに基づいて信頼できるものであると考えることができるからである。さらに、不透明度がゼロに等しいUIコンポーネントは、除外される場合がある。なぜなら、これらのUIコンポーネントは、完全にシースルーであるため、累積不透明度に影響を及ぼさないからである。他の信頼性のしるしに基づく他の例外も可能である。
【0021】
いくつかの実現例では、本明細書で論じられる動作の中で、UIコンポーネントのモニタリング、累積不透明度の決定および/またはユーザインタラクションの阻止は、コンピューティングデバイスのオペレーティングシステムによって実行され得る。例えば、これらの動作は、オプトインプロセスを含むことなく、および/または、オプトアウトプロセスをソフトウェアアプリケーションに提供することなく、自動的に実行され得る。これらの動作をオペレーティングシステムの一部として自動的に提供することによって、オペレーティングシステムによって実行される各ソフトウェアアプリケーションをユーザインタラクション乗っ取り攻撃から自動的に保護することができる。すなわち、ユーザインタラクション乗っ取り攻撃の回避は、これらの保護および/またはオペレーティングシステムによって提供され得る他の保護を呼び出す各ソフトウェアアプリケーションに依存することはなく、そのため、意図的にセキュリティ保護されたシステムが得られる。
【0022】
II.例示的なコンピューティングデバイスおよびシステム
図1は、例示的なコンピューティングデバイス100を示す図である。コンピューティングデバイス100は、携帯電話のフォームファクタで示されている。しかし、コンピューティングデバイス100は、代替的には、数ある可能性の中で、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータまたはウェアラブルコンピューティングデバイス(例えば、時計)として実現されてもよい。コンピューティングデバイス100は、本体102、ディスプレイ106、ならびにボタン108および110などのさまざまな要素を含み得る。コンピューティングデバイス100はさらに、前面カメラ104および背面カメラ112などの1つまたは複数のカメラを含み得る。
【0023】
前面カメラ104は、一般に動作中にユーザの方を向く本体102の側(例えば、ディスプレイ106と同じ側)に位置決めされ得る。背面カメラ112は、前面カメラ104とは反対の本体102の側に位置決めされ得る。カメラを前面カメラおよび背面カメラと呼ぶことは任意であり、コンピューティングデバイス100は、本体102のさまざまな側に位置決めされた複数のカメラを含んでいてもよい。
【0024】
ディスプレイ106は、陰極線管(CRT:Cathode Ray Tube)ディスプレイ、発光ダイオード(LED:Light Emitting Diode)ディスプレイ、液晶(LCD:Liquid Crystal)ディスプレイ、プラズマディスプレイ、有機発光ダイオード(OLED:Organic Light Emitting Diode)ディスプレイ、または当該技術分野において公知のその他のタイプのディスプレイを表すことができる。いくつかの例では、ディスプレイ106は、前面カメラ104および/または背面カメラ112のためのビューファインダとしての役割を果たすことができる。また、ディスプレイ106は、コンピューティングデバイス100の局面とのインタラクションを可能にするタッチスクリーン機能をサポートすることができる。
【0025】
また、コンピューティングデバイス100は、コンピューティングデバイス100が存在している環境の周囲輝度を継続的にまたは時々求めることができる周囲光センサを含み得る。いくつかの実現例では、周囲光センサは、ディスプレイ106のディスプレイ輝度を調節するのに使用することができる。さらに、周囲光センサは、カメラ104または112の1つ以上の露光長を決定するのに使用することができ、またはこの決定を手助けするのに使用することができる。
【0026】
図2は、例示的なコンピューティングシステム200の構成要素のうちのいくつかを示す簡略ブロック図である。一例として、コンピューティングシステム200は、セルラー携帯電話(例えば、スマートフォン)、コンピュータ(デスクトップ、ノートブック、タブレットまたはハンドヘルドコンピュータなど)、ホームオートメーションコンポーネント、デジタルビデオレコーダ(DVR:Digital Video Recorder)、デジタルテレビ、リモコン、ウェアラブルコンピューティングデバイス、ゲーム機、ロボット装置、車両、または何らかの他のタイプのデバイスであってもよいが、それらに限定されるものではない。コンピューティングシステム200は、例えばコンピューティングデバイス100の局面を表すことができる。
図2に示されるように、コンピューティングシステム200は、通信インターフェイス202と、ユーザインターフェイス204と、プロセッサ206と、データストレージ208とを含み得て、それらは全て、システムバス、ネットワークまたは他の接続機構210によって通信可能に連結され得る。
【0027】
通信インターフェイス202は、コンピューティングシステム200が、アナログまたはデジタル変調を使用して、他のデバイス、アクセスネットワークおよび/または転送ネットワークと通信することを可能にし得る。そのため、通信インターフェイス202は、基本電話サービス(POTS:Plain Old Telephone Service)通信および/またはインターネットプロトコル(IP:Internet Protocol)もしくは他のパケット化された通信などの回路交換式通信および/またはパケット交換式通信を容易にすることができる。例えば、通信インターフェイス202は、無線アクセスネットワークまたはアクセスポイントとのワイヤレス通信のために配置されたチップセットおよびアンテナを含み得る。また、通信インターフェイス202は、イーサネット(登録商標)、ユニバーサルシリアルバス(USB:Universal Serial Bus)または高精細度マルチメディアインターフェイス(HDMI:High-Definition Multimedia Interface)(登録商標)ポートなどのワイヤラインインターフェイスの形態をとり得て、またはそのようなワイヤラインインターフェイスを含み得る。また、通信インターフェイス202は、Wi-Fi、BLUETOOTH(登録商標)、グローバルポジショニングシステム(GPS:Global Positioning System)または広域ワイヤレスインターフェイス(例えば、WiMAX、3GPP(登録商標)ロングタームエボリューション(LTE:Long-Term Evolution)および/または3GPP 5G)などのワイヤレスインターフェイスの形態をとり得て、またはそのようなワイヤレスインターフェイスを含み得る。しかし、他の形態の物理層インターフェイスおよび他のタイプの標準または専用通信プロトコルが通信インターフェイス202上で使用されてもよい。さらに、通信インターフェイス202は、複数の物理的な通信インターフェイス(例えば、Wi-Fiインターフェイス、BLUETOOTH(登録商標)インターフェイスおよび広域ワイヤレスインターフェイス)を含んでいてもよい。
【0028】
ユーザインターフェイス204は、コンピューティングシステム200が、ユーザから入力を受信することおよびユーザに出力を提供することなど、人間のユーザまたは人間でないユーザと対話することを可能にするように機能し得る。そのため、ユーザインターフェイス204は、キーパッド、キーボード、タッチセンシティブパネル、コンピュータマウス、トラックボール、ジョイスティック、マイクロフォンなどの入力コンポーネントを含み得る。また、ユーザインターフェイス204は、例えばタッチセンシティブパネルと組み合わせることができるディスプレイ画面などの1つまたは複数の出力コンポーネントを含み得る。ディスプレイ画面は、CRT、LCDおよび/もしくはLED技術、または現在公知であるかもしくは後に開発される他の技術に基づき得る。また、ユーザインターフェイス204は、スピーカ、スピーカジャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホンおよび/または他の同様のデバイスを介して可聴出力を生成するように構成され得る。また、ユーザインターフェイス204は、マイクロフォンおよび/または他の同様のデバイスによって可聴発話、ノイズおよび/または信号を受信するおよび/または取り込むように構成され得る。
【0029】
いくつかの例では、ユーザインターフェイス204は、コンピューティングシステム200によってサポートされるスチルカメラおよび/またはビデオカメラ機能のためのビューファインダとしての役割を果たすディスプレイを含み得る。さらに、ユーザインターフェイス204は、カメラ機能の構成およびフォーカシングならびに画像の取り込みを容易にする1つまたは複数のボタン、スイッチ、ノブおよび/またはダイアルを含み得る。これらのボタン、スイッチ、ノブおよび/またはダイアルのうちの一部または全部がタッチセンシティブパネルによって実現されることが可能であり得る。
【0030】
プロセッサ206は、例えばマイクロプロセッサなどの1つまたは複数の汎用プロセッサ、および/または、例えばデジタル信号プロセッサ(DSP:Digital Signal Processor)、グラフィックス処理ユニット(GPU:Graphics Processing Unit)、浮動小数点ユニット(FPU:Floating Point Unit)、ネットワークプロセッサもしくは特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)などの1つまたは複数の特別目的プロセッサを含み得る。いくつかの事例では、特別目的プロセッサは、数ある可能性の中で、画像処理および/または機械学習モデルの実行が可能であり得る。データストレージ208は、磁気ストレージ、光学ストレージ、フラッシュストレージまたは有機ストレージなどの1つまたは複数の揮発性および/または不揮発性ストレージコンポーネントを含み得て、全部または一部がプロセッサ206と一体化され得る。データストレージ208は、取り外し可能なコンポーネントおよび/または取り外し不可能なコンポーネントを含み得る。
【0031】
プロセッサ206は、本明細書に記載されているさまざまな機能を実行するためにデータストレージ208に格納されたプログラム命令218(例えば、コンパイルされたまたはコンパイルされていないプログラム論理および/または機械コード)を実行することが可能であり得る。したがって、データストレージ208は、コンピューティングシステム200によって実行されるとコンピューティングシステム200に本明細書および/または添付の図面に開示されている方法、プロセスまたは動作のうちのいずれかを実行させるプログラム命令が格納された非一時的なコンピュータ可読媒体を含み得る。プロセッサ206によるプログラム命令218の実行により、プロセッサ206はデータ212を使用することができる。
【0032】
一例として、プログラム命令218は、オペレーティングシステム222(例えば、オペレーティングシステムカーネル、デバイスドライバおよび/または他のモジュール)と、コンピューティングシステム200にインストールされた1つまたは複数のアプリケーションプログラム220(例えば、カメラ機能、アドレスブック、電子メール、ウェブブラウジング、ソーシャルネットワーキング、オーディオ-テキスト機能、テキスト翻訳機能および/またはゲームアプリケーション)とを含み得る。同様に、データ212は、オペレーティングシステムデータ216と、アプリケーションデータ214とを含み得る。オペレーティングシステムデータ216には、主にオペレーティングシステム222がアクセス可能であり得て、アプリケーションデータ214には、主にアプリケーションプログラム220の1つ以上がアクセス可能であり得る。アプリケーションデータ214は、コンピューティングシステム200のユーザに見えるかまたはコンピューティングシステム200のユーザから隠されているファイルシステムに配置され得る。
【0033】
アプリケーションプログラム220は、1つまたは複数のアプリケーションプログラミングインターフェイス(API:Application Programming Interface)を介してオペレーティングシステム222と通信し得る。これらのAPIは、例えばアプリケーションプログラム220がアプリケーションデータ214を読み取るおよび/または書き込むこと、アプリケーションプログラム220が通信インターフェイス202を介して情報を送信または受信すること、アプリケーションプログラム220が情報を受信するおよび/または当該情報をユーザインターフェイス204上に表示することなどを容易にすることができる。
【0034】
いくつかのケースでは、アプリケーションプログラム220は、略して「アプリ」と称される場合がある。さらに、アプリケーションプログラム220は、1つまたは複数のオンラインアプリケーションストアまたはアプリケーション市場を通じてコンピューティングシステム200にダウンロード可能であり得る。しかし、アプリケーションプログラムは、ウェブブラウザを介して、またはコンピューティングシステム200上の物理的なインターフェイス(例えば、USBポート)を介して、などの他の方法でコンピューティングシステム200にインストールすることもできる。
【0035】
III.例示的なタップジャッキング攻撃
図3は、例示的なタップジャッキング(タップハイジャッキングの略)攻撃を示す図であり、タップジャッキング攻撃は、悪意のあるソフトウェアアプリケーション乗っ取り、および、ユーザのタッチ入力を誤った方向に導くことによりユーザが意図していなかった何かをするようにユーザをだますことを含む。本明細書全体を通して、タップジャッキングは、ユーザインタラクション乗っ取りの一般的概念の一例として使用される。そのため、本明細書で論じられる例示的な技術は、GUIとのインタラクションの具体的なモダリティ(例えば、タップ、クリック、押下、注視など)にかかわらず、GUIの文脈において一般的に適用可能である、ということが理解されるべきである。
【0036】
具体的には、
図3に示されるように、タップジャッキング攻撃は、悪意のあるアプリケーションが、別のソフトウェアアプリケーションおよび/またはオペレーティングシステムによって生成されたUIコンポーネント300を覆うUIコンポーネント302を生成することを含み得る。UIコンポーネント302は、ユーザインタラクションがGUIの下にある層へ通り抜けるように構成され得る。すなわち、UIコンポーネント302は、ユーザインタラクションを無視することにより、これらのインタラクションが、これらのインタラクションを消費するUIコンポーネント300へ通り抜けることを可能にするように構成され得る。UIコンポーネント300は、ユーザインタラクションを消費するように構成され得る。所与のUIコンポーネントによるユーザインタラクションの消費は、所与のUIコンポーネントがユーザインタラクションを受信してユーザインタラクションに応答すること(例えば、ユーザインタラクションに基づいておよび/またはユーザインタラクションに応答して動作の実行をトリガすること)を含み得る。所与のUIコンポーネントがユーザインタラクションを消費するように構成される場合、ユーザインタラクションは、所与のUIコンポーネントを通過するのではなく、所与のUIコンポーネントと対話するため、他のUIコンポーネントによる消費には利用できない。
【0037】
さらに、UIコンポーネント302は、UIコンポーネント300がユーザに見えないように不透明であり得る。したがって、UIコンポーネント302は、ユーザが知らずに対話しているUIコンポーネント300をユーザから見えなくするファサードとして機能することができる。さらに、いくつかのケースでは、UIコンポーネント300および302のそれぞれの位置は、GUIに対して固定され得るため、ユーザは、UIコンポーネント302を移動させてUIコンポーネント300を見せることはできない。
【0038】
図3の例では、UIコンポーネント300は、UIコンポーネント302を生成したアプリケーションに関連付けられた許可の変更を表示および提供する。具体的には、UIコンポーネント300は、許可308および許可310~許可312(すなわち、許可308~312)の変更を含み、および提供し、それらの許可を与えることは、UIコンポーネント302を生成したアプリケーションが、例えば、数ある可能性の中で、アプリケーションを実行するコンピューティングデバイスのハードウェア(例えば、カメラ、マイクロフォンなど)を使用すること、コンピューティングデバイスを使用してスクリーンショットをとること、コンピューティングデバイスによって受信されたキーボード入力をモニタリングすること、および/または、オペレーティングシステム機能を呼び出すことを可能にし得る。他のケースでは、UIコンポーネント300は、その代わりに、数ある可能性の中で、「支払」ボタンの選択、写真をとることおよび/または電話をかけることを提供してもよい。
【0039】
UIコンポーネント302は、悪意がないように見えるコンテンツを提供し得て、それにより、ボタン304と対話するようにユーザを仕向け得る。UIコンポーネント302のボタン304は、囲い枠314によって示される、許可310に対応するトグルスイッチを覆う。そのため、UIコンポーネント302は、ユーザインタラクションを無視するように構成されているので、ボタン304とのインタラクションは、実際にはアプリケーションへの許可310の付与をもたらし得る。UIコンポーネント302のコンテンツは悪意がないように見えて、UIコンポーネント302は不透明であるので、ユーザは、ボタン304と対話するようにだまされる可能性があり、その結果、ユーザの認識なしにアプリケーションに許可310が与えられることになる。
【0040】
アプリケーションは、悪意がないように見えて、ユーザにとって不透明であって、許可308~312のうちの他の許可を覆うボタンを含むことにより、ユーザが意図していないようにアプリケーションが動作することを許可し得る許可を秘密裏に得るさらなるコンテンツを生成するように構成され得る。他のケースでは、UIコンポーネント300を覆うのではなく、UIコンポーネント302は、その代わりに、他のソフトウェアアプリケーションによって提供された他のシステム設定および/または他のUIコンポーネントの変更を表示および提供する他のUIコンポーネントを覆ってもよい。そのため、UIコンポーネント302を生成したアプリケーションは、ユーザが意図していないように他のシステム設定を構成するおよび/または他のソフトウェアアプリケーションを動作させるようにユーザをだまし得る。
【0041】
IV.タップジャッキング攻撃を阻止するための例示的なシステムおよび動作
図4は、タップジャッキング攻撃の阻止に関連する例示的なシナリオを示す図であり、ここでは、ユーザインタラクションを無視するかまたは(消費するのではなく)通過させるように構成された複数のUIコンポーネントが、ユーザインタラクションを消費する(例えば、受信して反応する)ように構成されたUIコンポーネントの上に重ねられる。具体的には、
図4は、UIコンポーネント400,402および404、ならびにユーザインタラクション410を示している。UIコンポーネント400,402および404、ならびに本明細書で論じられるその他のUIコンポーネントは、システムアラートウィンドウ、オーバーレイ、トースト、ダイアログボックス、カード、フォーム、通知、サイドバー、および/または、多層GUIの一部として表示されることができるその他のUI構造もしくは要素を含み得て、および/または、そのような形態をとり得る。
【0042】
UIコンポーネント404は、UIコンポーネント402を覆い、UIコンポーネント402は、UIコンポーネント400を覆う。UIコンポーネント404および402の各それぞれのUIコンポーネントは、ユーザインタラクションを無視することによりユーザインタラクション410がUIコンポーネント400へ通り抜けることを可能にするようにそれぞれのUIコンポーネントを構成する属性に関連付けられ得る。したがって、ユーザインタラクション410は、領域406によって示されるようにUIコンポーネント404に向けられているように(例えば、ユーザには)見えるが、ユーザインタラクションは、実際には、領域408によって示されるようにUIコンポーネント400によって消費される。
【0043】
UIコンポーネント400が1つのUIコンポーネントだけ(例えば、UIコンポーネント404だけ)によって覆われている場合には、GUIを提供するコンピューティングデバイスに、UIコンポーネント404の不透明度が閾値不透明度を下回る場合にユーザインタラクションがUIコンポーネント400へ通り抜けることを可能にし、UIコンポーネント404の不透明度が閾値不透明度を満たすまたは超える場合にUIコンポーネント400がユーザインタラクションを消費することを阻止するようにさせることによって、タップジャッキング攻撃を回避することができる。すなわち、ユーザがUIコンポーネント404を通してUIコンポーネント400を十分にはっきりと見ることができる場合、UIコンポーネント400はUIコンポーネント404によって覆われているがユーザはUIコンポーネント400と対話することが可能である。UIコンポーネント(例えば、UIコンポーネント404)の不透明度は、例えば、別の下にあるUIコンポーネント(例えば、UIコンポーネント400)から発生する視覚信号の、UIコンポーネントによる阻止の程度および/または度合いを表し得る。
【0044】
しかし、個々にUIコンポーネントを考えるアプローチは、ユーザインタラクションを消費することになるUIコンポーネントを事実上ユーザから見えなくするように、各々が閾値不透明度を下回る不透明度を有し得る複数のUIコンポーネントを積層することを可能にすることができる。したがって、コンピューティングデバイスは、特定のUIコンポーネントを覆っているUIコンポーネントの累積不透明度に基づいて、特定のUIコンポーネントによるユーザインタラクションの消費を阻止するか許可するかを判断するように構成され得る。そのため、
図4に示されるシナリオでは、コンピューティングデバイスは、UIコンポーネント404および402の累積不透明度を決定するように構成され得る。UIコンポーネント404および402の累積不透明度が閾値不透明度を満たすまたは超える場合、ユーザインタラクション410は、UIコンポーネント400による消費を阻止され得る。UIコンポーネント404および402の累積不透明度が閾値不透明度を下回る場合、UIコンポーネント400によるユーザインタラクション410の消費は許可され得る。
【0045】
一例では、累積不透明度は、式:θZ=1-Πi∈I(1-oi)に従って計算され得て、式中、θZはUIコンポーネントZに対する累積不透明度を表し、IはUIコンポーネントZを覆っているUIコンポーネントのセットを表し、oi(0から1までの範囲)はセットI(UIコンポーネントZを含まない)の中のi番目のUIコンポーネントの不透明度を表す。UIコンポーネントZに対する累積不透明度θZは、UIコンポーネントZを覆っているUIコンポーネントi∈Iに基づくが、UIコンポーネントZ自体の不透明度には基づかない。なぜなら、UIコンポーネントZの不透明度は、UIコンポーネントZがその上のUIコンポーネントによってどれぐらい広範囲にわたって閉塞されているかということに影響を及ぼさないからである。複数のUIコンポーネント(例えば、UIコンポーネント402および404)の累積不透明度は、例えば、別の下にあるUIコンポーネント(例えば、UIコンポーネント400)から発生する視覚信号の、複数のUIコンポーネントによる阻止の合計の程度および/または度合いを表し得る。
【0046】
そのため、
図4に示される例では、累積不透明度は、θ
400=1-((1-o
402)(1-o
404))として表現することができる。例えば、UIコンポーネント404および402の各々が0.7という不透明度を有する場合、累積不透明度は(1-(1-.7)(1-.7))=.91に等しくなり得る。したがって、閾値不透明度が0.8であれば、UIコンポーネント404および402の各々は個々に閾値を下回るが、UIコンポーネント404および402の累積不透明度は閾値を超える。そのため、累積不透明度に依拠することは、UIコンポーネント404および402が互いに積み重ねられてUIコンポーネント400を事実上ユーザから見えなくする場合に、悪意のあるアプリケーションがユーザインタラクション410をUIコンポーネント400へ通り抜けるようにすることを防止できる。
【0047】
所与のUIコンポーネントの不透明度および所与のUIコンポーネントの透明度は、補完的役割をするものであり得る。すなわち、所与のUIコンポーネントの不透明度および所与のUIコンポーネントの透明度は、合計が予め定められた値(例えば、1または255)になり得るので、入れ替えがきくものであり得る。具体的には、λ=oi+tiであり、式中、λは予め定められた値を表し(例えば、上記の例ではλ=1)、tiはi番目のUIコンポーネントの透明度を表す。そのため、i番目のUIコンポーネントの不透明度は、例えばGUIの属性がコンピューティングデバイス、オペレーティングシステムおよび/またはソフトウェアアプリケーションによってどのように表されるかによって、oiを使用して明示的に表されてもよく、またはtiを使用して暗黙的に表されてもよい。
【0048】
したがって、最大不透明度(最小透明度に対応)は、oi=λとして表現することができ、最小不透明度(最大透明度に対応)は、oi=0として表現することができ、最大透明度は、ti=λとして表現することができ、最小透明度は、ti=0として表現することができる。したがって、UIコンポーネントの透明度は、例えば、別の下にあるUIコンポーネントから発生する視覚信号の、UIコンポーネントによる送信の程度および/または度合いを表し得る。複数のUIコンポーネントの累積透明度は、例えば、別の下にあるUIコンポーネントから発生する視覚信号の、複数のUIコンポーネントによる送信の合計の程度および/または度合いを表し得る。
【0049】
代替的に、上記の式θZ=1-Πi∈I(1-oi)(λ=1)は、(i)θZ=λ-λΠi∈I((λ-oi)/λ)、(ii)θZ=λ-λΠi∈I(ti/λ)、(iii)TZ=λΠi∈I((λ-oi)/λ)または(iv)TZ=λΠi∈I(ti/λ)として表現することができ、式中、TZは累積透明度を表し、λ=TZ+θZであり、λ>0である。すなわち、累積不透明度は、λΠi∈I((λ-oi)/λ)またはλΠi∈I(ti/λ)によって表現されるように、UIコンポーネントZを覆っている各それぞれのUIコンポーネントの透明度の積に基づき得る。累積不透明度は、予め定められた値と(i)または(ii)に見られるような積との間の差に基づいて明示的に表現されてもよく、または(iii)または(iv)に見られるような累積透明度を使用して暗黙的に表現されてもよい。
【0050】
同様に、閾値不透明度θTHRESHOLDは、λ=θTHRESHOLD+TTHRESHOLDに従って表現することができる。したがって、累積不透明度が閾値不透明度以下である場合(すなわち、θZ≦θTHRESHOLD)または累積透明度が閾値透明度以上である場合(すなわち、TZ≧TTHRESHOLD)、UIコンポーネントZによるユーザインタラクションの消費は許可され得る。累積不透明度が閾値不透明度よりも大きい場合(すなわち、θZ>θTHRESHOLD)または累積透明度が閾値透明度を下回る場合(すなわち、TZ<TTHRESHOLD)、UIコンポーネントZによるユーザインタラクションの消費は阻止され得る。
【0051】
いくつかのケースでは、累積不透明度の決定は、ユーザインタラクション410が向けられるGUIの領域に特有であり得る。そのため、
図4の例では、累積不透明度は、(i)UIコンポーネント404の領域406および(ii)領域406に対応するUIコンポーネント402の領域に基づいて決定され得る。所与の領域が(例えば、その異なる部分の)2つ以上の不透明度値に関連付けられる場合には、最も高い不透明度(または、最も低い透明度)が累積不透明度の決定に使用され得る。したがって、ユーザインタラクション410がUIコンポーネント404のエリア外であるように
図4のy軸に沿って低く提供される場合、累積不透明度は、UIコンポーネント402に基づくがUIコンポーネント404には基づかない。例えば所与のUIコンポーネント全体の最大不透明度ではなく、インタラクションが向けられる特定の領域の不透明度を考えることにより、いくつかの悪意のない状況においてユーザインタラクションが阻止される頻度を少なくすることができる。
【0052】
累積不透明度の決定に使用される特定の領域のサイズは、(i)悪意のない場合におけるユーザインタラクション阻止の頻度および/または(ii)悪意のある攻撃の阻止の成功率の検討に基づいて選択され得る。特定の領域のサイズは、ユーザインタラクションの位置(例えば、中心、重心など)、ユーザインタラクションのサイズおよび/もしくは面積(例えば、ユーザのタッチ入力によってカバーされる面積)、ならびに/または、ユーザインタラクションの位置および/もしくは面積の周囲に設けられた緩衝地帯に基づき得る。一例では、特定の領域のサイズは、ユーザインタラクションの面積の外周に沿った全ての地点における予め定められた数のピクセルを加算することによって定義される、ユーザインタラクションの面積と緩衝地帯との合計に等しくなり得る。累積不透明度の決定が、ユーザインタラクション410が向けられるGUIの領域に特有でなく、その代わりにそれぞれのUIコンポーネント全体の不透明度に基づく場合、それぞれのUIコンポーネントの最も高い不透明度(または、最も低い透明度)が累積不透明度の決定に使用され得る。
【0053】
いくつかの実現例では、累積不透明度は、アプリケーション非依存であり得る。すなわち、UIコンポーネント402および404が同一のソフトウェアアプリケーションによって生成されたか異なるソフトウェアアプリケーションによって生成されたかにかかわらず、UIコンポーネント400に関して単一の累積不透明度が決定され得る。そのようなアプリケーション非依存の累積不透明度を使用することにより、ユーザは、ユーザインタラクション410がUIコンポーネント400へ通り抜けてUIコンポーネント400によって消費されることを許可されると、十分な明瞭さで(少なくとも領域408における)UIコンポーネント400のコンテンツを見ることができる。したがって、(少なくとも領域408における)UIコンポーネント400のコンテンツがユーザに十分に見えない場合(アプリケーション非依存の累積不透明度と閾値不透明度とを比較することによって判断される)、ユーザインタラクション410は、UIコンポーネント400へ通り抜けてUIコンポーネント400によって消費されることを阻止され得る。
【0054】
とりわけ、いくつかのケースでは、所与のUIコンポーネント(例えば、402)は、ユーザインタラクションを消費するように構成されたUIコンポーネント(例えば、400)と同一のアプリケーションによって生成された場合、累積不透明度の計算から除外される場合がある。これは、ソフトウェアアプリケーションが自身のコンテンツを閉塞する意図を持つUIコンポーネントまたは自身のコンテンツの閉塞に寄与するUIコンポーネントを生成しそうにないので、そうであろう。そのため、アプリケーション非依存の累積不透明度は、覆っているUIコンポーネント(例えば、これらのUIコンポーネントを生成させるアプリケーション)間の関係とは無関係であり得るが、それでもなお、ユーザインタラクションを消費する下にあるUIコンポーネントが、覆っているUIコンポーネントにどれぐらい関連しているかを考慮に入れることができる。
【0055】
図5は、タップジャッキング攻撃の阻止に関連する別の例示的なシナリオを示す図であり、ここでは、ユーザインタラクションを無視するかまたは通過させるように構成された複数のUIコンポーネントが、ユーザインタラクションを消費するように構成されたUIコンポーネントの上に重ねられる。具体的には、
図5は、第1のソフトウェアアプリケーションによって生成されたUIコンポーネント502および502(斜線パターンで示されている)を含む第1の複数のUIコンポーネントと、第1のソフトウェアアプリケーションとは異なる第2のソフトウェアアプリケーションによって生成されたUIコンポーネント504,508および510(ドットパターンで示されている)を含む第2の複数のUIコンポーネントとを示している。UIコンポーネント510の領域512を対象としているように見えるユーザインタラクション516は、実際には、領域514によって示されるようにUIコンポーネント500へ通り抜けることができる。第1および第2のソフトウェアアプリケーションは、互いに独立して動作するように構成され得て、各アプリケーションは、他のアプリケーションの動作に気付かない可能性があるので、これら2つのアプリケーションが協働して悪意のある動作を実行するということはありそうにない。
【0056】
したがって、いくつかのケースでは、累積不透明度は、アプリケーション特有の態様で決定され得る。すなわち、第1のアプリケーション特有の累積不透明度は、UIコンポーネント502および506に基づいて第1のソフトウェアアプリケーションについて決定され得て、第2のアプリケーション特有の累積不透明度は、UIコンポーネント504,508および510に基づいて第2のソフトウェアアプリケーションについて決定され得る。全体累積不透明度は、第1のアプリケーション特有の累積不透明度および/または第2のアプリケーション特有の累積不透明度に基づき得る。例えば、全体累積不透明度は、以下のように表現することができる。
【0057】
【0058】
式中、uは、UIコンポーネントがUIコンポーネントZを覆っている状態での複数のソフトウェアアプリケーションのそれぞれの識別子を表すセット{uids}の特定のソフトウェアアプリケーションの識別子を表す。すなわち、全体累積不透明度は、(i)複数のソフトウェアアプリケーションに関連付けられた複数のアプリケーション特有の累積不透明度の最大のアプリケーション特有の不透明度、および/または、(ii)複数のソフトウェアアプリケーションに関連付けられた複数のアプリケーション特有の累積透明度の最小のアプリケーション特有の透明度に基づき得る。
【0059】
図5の例では、全体累積不透明度は、(i)θ
500=max{λ-λ((λ-o
502)/λ)((λ-o
506)/λ),λ-λ((λ-o
504)/λ)((λ-o
508)/λ)((λ-o
510)/λ)}、(ii)θ
500=max{λ-λ(t
502/λ)(t
506/λ),λ-λ(t
504/λ)(t
508/λ)(t
510/λ)}、(iii)T
500=min{λ((λ-o
502)/λ)((λ-o
506)/λ),λ((λ-o
504)/λ)((λ-o
508)/λ)((λ-o
510)/λ)}、および/または、(iv)T
500=min{λ(t
502/λ)(t
506/λ),λ(t
504/λ)(t
508/λ)(t
510/λ)}に従って評価され得る。したがって、(i)UIコンポーネント502および506のアプリケーション特有の累積不透明度および/または(ii)UIコンポーネント504,508および510のアプリケーション特有の累積不透明度の最大値が閾値不透明度を超える場合、ユーザインタラクション516は、UIコンポーネント500による消費を阻止され得る。
【0060】
いくつかのケースでは、この構成の結果、UIコンポーネント500によるユーザインタラクション516の消費が許可されたときに、ユーザは、ユーザインタラクション516に対応するUIコンポーネント500の領域514を(例えば、十分な明瞭さで、および/または、全く)見ることができない。それでもなお、領域514のこの閉塞は、いずれも閉塞の唯一の独立した原因ではない少なくとも2つの異なるソフトウェアアプリケーションの偶然の、悪意のない、および/または、非連係的な動作の結果である可能性が高い。
【0061】
具体的には、悪意のあるアプリケーションによる悪意のないアプリケーションの動作の悪用は、悪意のないアプリケーションが何をしているかを悪意のあるソフトウェアアプリケーションが判断することを含み得る。例えば、悪意のあるソフトウェアアプリケーションは、さらに他の悪意のあるUIコンポーネントと組み合わせられた場合に攻撃対象のUIコンポーネントを完全に閉塞するであろうUIコンポーネントを、悪意のないアプリケーションが表示しているかどうかを判断しようとし得る。しかし、(一般に、デフォルトでは与えられない)特別な許可がなければ、多くのコンピューティングデバイスおよび/またはオペレーティングシステムは、ソフトウェアアプリケーションが互いの実行および/または動作をモニタリングすることを許可しない。そのため、悪意のあるアプリケーションは、他のアプリケーションの動作をモニタリングすることができない可能性が高く、したがって、悪意のないソフトウェアアプリケーションの独立した動作を悪用することはできないであろう。
【0062】
2つの悪意のあるアプリケーション間のさらなる共謀は、ユーザが2つの悪意のあるアプリケーションをインストールすること、および/または、さらに他の悪意のあるアプリケーションをインストールすることを可能にするであろう悪意のあるアプリケーションのうちの第1の悪意のあるアプリケーションに許可を与えることを含み得る。互いに協働するように構成された2つの悪意のあるアプリケーションの、ユーザによるインストールは、ありそうにない。さらに、オペレーティングシステムは、他のアプリケーションをインストールするための許可を与えられているアプリケーションに対する防護策(例えば、許可ダイアログ)を提供する。そのため、第1の悪意のあるアプリケーションによるさらに他の悪意のあるアプリケーションのインストールもありそうになく、本明細書で論じられる技術によって可能性はさらに低下する。
【0063】
したがって、コンピューティングデバイスは、偶然のおよび/または非連係的な閉塞が安全なものであると考え、そのため、閾値不透明度を超えるUIコンポーネントを生成するアプリケーションが1つもない限り、ユーザインタラクション516がUIコンポーネント500へ通り抜けてUIコンポーネント500によって消費されることを許可され得る。アプリケーション非依存の累積不透明度ではなく、アプリケーション特有の累積不透明度を使用することにより、悪意のない閉塞に応答して阻止されるユーザインタラクションの数を減少させることができる。したがって、アプリケーション特有の累積不透明度は、コンピューティングデバイスのセキュリティの点での犠牲がたとえあったとしても重大でない状態で、さらなる柔軟性を提供することができる。
【0064】
例えば、悪意のないソフトウェアアプリケーションは、GUIのエリア全体の上に着色された透明のUIコンポーネントを表示することによって、(例えば、GUIによって発せられた光の波長を制御するために)GUIのカラースキームを変更するように構成され得る。累積不透明度のアプリケーション非依存の計算の下では、この悪意のないアプリケーションは、ユーザ入力を受信することを阻止される前に他のソフトウェアアプリケーションが所与のUIコンポーネントを閉塞することができる程度を事実上減少させるであろう。一方、累積不透明度のアプリケーション特有の計算の下では、この悪意のないアプリケーションは、ユーザ入力を受信することを阻止される前に他のソフトウェアアプリケーションが所与のUIコンポーネントを閉塞することができる程度に影響を及ぼさないであろう。
【0065】
いくつかのケースでは、アプリケーション特有の累積不透明度もアプリケーション非依存の累積不透明度も、同時に計算されて使用されてもよい。例えば、閾値不透明度を超えるアプリケーション特有の累積不透明度に対する応答は、ユーザインタラクションの消費を阻止することを含み得て、閾値不透明度を超えるアプリケーション非依存の累積不透明度に対する応答は、プロンプトを表示することを含み得る。このプロンプトは、(i)ユーザインタラクションが、ユーザに十分に見えないUIコンポーネントによって消費されることになることを示し得て、(ii)ユーザインタラクションを消費することを許可するための許可を明示的に要求し得る。そのようなアプローチは、セキュリティの向上と柔軟性とを両方とも提供して、いくつかの状況下では完全に覆い隠されているUIコンポーネントへユーザインタラクションが通り抜けることを許可することができる。
【0066】
図6は、UIコンポーネントの不透明度に基づいてユーザインタラクションをフィルタリングするように構成された例示的なシステムを示す図である。具体的には、システム660は、重なり計算部632と、タッチ性フィルタ636と、タイプフィルタ640と、累積不透明度計算部644と、ユーザインタラクションフィルタ650とを含む。システム660は、コンピューティングデバイスのオペレーティングシステム(例えば、オペレーティングシステム222)の一部を形成してもよく、および/または、コンピューティングデバイスの一部として提供されるスタンドアロンのコンポーネントであってもよい。システム660の構成要素は、コンピューティングデバイス100および/またはコンピューティングシステム200の一部を形成するハードウェア、ソフトウェア、および/または、それらの組み合わせとして実現されてもよい。いくつかの実現例では、重なり計算部632、タッチ性フィルタ636および/またはタイプフィルタ640の動作の順序は、示されているものとは異なっていてもよい。
【0067】
システム660は、UIコンポーネント600~UIコンポーネント620(すなわち、UIコンポーネント600~620)を定義するおよび/またはUIコンポーネント600~UIコンポーネント620に関連付けられる属性およびユーザインタラクション612を定義するおよび/またはユーザインタラクション612に関連付けられる属性を入力として受信するように構成され得る。これらの属性に基づいて、システム660は、囲い枠652によって示されるように、ユーザインタラクションを消費するように構成されたUIコンポーネントにユーザインタラクション612が渡されるか阻止されるかを判断するように構成され得る。
【0068】
UIコンポーネント600は、数ある可能な属性の中で、アプリケーション識別子602、タイプ604、不透明度606、位置608およびタッチ性610に関連付けられ得る。アプリケーション識別子602は、UIコンポーネント600を生成した、および/または、UIコンポーネント600の生成を要求したソフトウェアアプリケーションを示し得る。タイプ604は、UIコンポーネント600の予め定められた数の可能なタイプまたはクラスのうちの1つであり得る。不透明度606は、UIコンポーネント600のさまざまな領域に対応する1つまたは複数の不透明度(透明度の観点から表現されてもよい)を含み得る。所与の領域の不透明度は、当該領域に存在する最も高い不透明度を表し得て(すなわち、当該領域のいくつかの部分は、より低い不透明度を有し得る)、または、当該領域に存在する対応する最も低い透明度を表し得る(すなわち、当該領域のいくつかの部分は、より高い透明度を有し得る)。
【0069】
位置608は、UIコンポーネント600の(例えば、
図4および
図5に示されるz軸に沿った)垂直位置および/またはUIコンポーネント600の(例えば、
図4および
図5に示されるx-y平面に沿った)水平なエリアを含み得る。タッチ性610は、UIコンポーネント600がユーザインタラクションを消費するように構成されるか、またはユーザインタラクションを無視することにより、下にある層(例えば、より低いz軸値を有する層)にユーザインタラクションが通り抜けるように構成されるかを示し得る。同様に、UIコンポーネント620は、数ある可能性の中で、アプリケーション識別子622、タイプ624、不透明度626、位置628およびタッチ性630に関連付けられ得る。
【0070】
ユーザインタラクション612は、ユーザインタラクション612が及ぶGUI領域614に関連付けられ得る。例えば、GUI領域614は、
図4および
図5に示されるx-y平面のサブセットであり得て、ユーザタッチ、クリックおよび/または他の態様でのGUIとのインタラクションに基づいて決定され得る。例えば、GUI領域614は、
図4の領域406および/もしくは領域408、ならびに/または、
図5の領域512および/もしくは領域514に対応し得る。
【0071】
重なり計算部632は、UIコンポーネント600~620およびユーザインタラクション612に基づいて、重なり合っているUIコンポーネント634を識別するように構成され得る。具体的には、重なり合っているUIコンポーネント634は、UIコンポーネント600~620のサブセットを含み得て、このサブセットの各UIコンポーネントは、GUI領域614と重なり合う水平なエリアに関連付けられる。例えば、重なり計算部632は、位置608の水平成分に基づいて、UIコンポーネント600がGUI領域614と重なり合っているかどうかを判断するように構成され得る。重なり合っているUIコンポーネント634は、ユーザインタラクション612を無視するように構成されたUIコンポーネントと、ユーザインタラクション612を消費するように構成されたUIコンポーネントとを含み得る。重なり合っているUIコンポーネント634は、ユーザインタラクション612が重ならないおよび/または重なり合わないUIコンポーネントを含んでいなくてもよく、そのため、累積不透明度の計算の一部とみなされなくてもよい。
【0072】
タッチ性フィルタ636は、重なり合っているUIコンポーネント634およびそれらの属性に基づいて、タッチ不可能なUIコンポーネント638を決定するように構成され得る。具体的には、タッチ不可能なUIコンポーネント638は、重なり合っているUIコンポーネント634のサブセットを含み得て、このサブセットの各UIコンポーネントは、ユーザインタラクション612を無視する、通過させる、および/または他の態様で消費しないように構成される。例えば、タッチ性フィルタ636は、タッチ性610に基づいて、UIコンポーネント600がタッチ可能であるかどうかを判断するように構成され得る。
【0073】
タイプフィルタ640は、タッチ不可能なUIコンポーネント638およびそれらの属性に基づいて、信頼できないUIコンポーネント642を決定するように構成され得る。具体的には、信頼できないUIコンポーネント642は、タッチ不可能なUIコンポーネント638のサブセットを含み得て、このサブセットの各UIコンポーネントは、信頼できないものとして分類されるタイプのコンポーネントである。例えば、タイプフィルタ640は、タイプ604に基づいて、UIコンポーネント600が信頼できないものであるかどうかを判断するように構成され得る。
【0074】
タイプ604は、複数の異なる予め規定された値をとることができる。これらの値は、信頼できるものとして分類されるおよび/または信頼できるものであると考えられるものもあれば、信頼できないものとして分類されるおよび/または信頼できないものであると考えられるものもある。例えば、オペレーティングシステムによって生成されたUIコンポーネントは、信頼できるものとして分類される第1のタイプに関連付けられ得て、そのため、累積不透明度の計算の一部とみなされなくてもよい。別の例では、(例えば、ユーザまたはオペレーティングシステムによって)高い許可を明示的に与えられたソフトウェアアプリケーションによって生成されたUIコンポーネントは、信頼できるものとして分類される第2のタイプに関連付けられ得て、そのため、累積不透明度の計算の一部とみなされなくてもよい。一方、高い許可を明示的に与えられなかったソフトウェアアプリケーションによって生成されたUIコンポーネントは、信頼できないものとして分類される第3のタイプに関連付けられ得て、そのため、累積不透明度の計算の一部とみなされ得る。
【0075】
累積不透明度計算部644は、信頼できないUIコンポーネント642、重なり合っているUIコンポーネント634およびそれらの属性に基づいて累積不透明度646を決定するように構成され得る。具体的には、累積不透明度計算部644は、重なり合っているUIコンポーネント634に基づいて、ユーザインタラクション612を消費するように構成された少なくとも1つのUIコンポーネントを選択するように構成され得る。重なり合っているUIコンポーネント634は、ユーザインタラクション612に関連付けられたGUI領域614に依存するので、ユーザインタラクション612を消費するように構成された少なくとも1つのUIコンポーネントもGUI領域614に基づく。例えば、累積不透明度計算部644は、重なり合っているUIコンポーネント634から最上部のUIコンポーネントを選択するように構成され得て、当該最上部のUIコンポーネントは、(i)タッチ可能であるために、(覆っている全てのUIコンポーネントによって無視されることになる)ユーザインタラクション612を消費するように構成されており、かつ、(ii)(所与のアプリケーションが自身を攻撃しようとすることはありそうもないので)信頼できないUIコンポーネント642のうちの少なくとも1つとは異なるアプリケーション識別子に関連付けられている。
【0076】
UIコンポーネント600の場合、累積不透明度計算部644は、位置608およびタッチ性610に基づいて、UIコンポーネント600が最上部のタッチ可能なコンポーネントであるかどうかを判断するように構成され得る。累積不透明度計算部644は、アプリケーション識別子602および信頼できないUIコンポーネント642の対応するアプリケーション識別子に基づいて、UIコンポーネント600のアプリケーション識別子が、信頼できないUIコンポーネント642の少なくとも1つの他のアプリケーション識別子とは異なるかどうかを判断するように構成され得る。いくつかのケースでは、最上部のタッチ可能なコンポーネントの選択は、その代わりに、タッチ性フィルタ636によって実行されてもよい。
【0077】
累積不透明度計算部644は、本明細書で論じされる技術のうちのいずれかを使用して、最上部のタッチ可能なUIコンポーネントに関する累積不透明度646を決定するように構成され得る。具体的には、累積不透明度計算部644は、信頼できないUIコンポーネント642のサブセットに基づいて、最上部のタッチ可能なUIコンポーネントに関する累積不透明度646を決定するように構成され得て、このサブセットの各UIコンポーネントは、最上部のタッチ可能なUIコンポーネントのアプリケーション識別子とは異なるアプリケーション識別子を有する。
【0078】
一例では、信頼できないUIコンポーネント642は、
図4のUIコンポーネント404および402を含んでいてもよく、累積不透明度646は、アプリケーション非依存の不透明度であってもよい。別の例では、信頼できないUIコンポーネント642は、
図5のUIコンポーネント502,504,506,508および510を含んでいてもよく、累積不透明度646は、アプリケーション特有の不透明度であってもよい。
【0079】
ユーザインタラクションフィルタ650は、累積不透明度646および閾値不透明度648に基づいて、ユーザインタラクション612を通過させるか阻止するかを判断するように構成され得て、累積不透明度646および閾値不透明度648の各々は、不透明度および/または透明度の観点から表現することができる。具体的には、ユーザインタラクションフィルタ650は、累積不透明度646が閾値不透明度648を超える場合(または、対応する累積透明度が対応する閾値透明度を下回る場合)、ユーザインタラクション612を阻止するように構成され得る。いくつかの実現例では、ユーザインタラクションフィルタ650がユーザインタラクション612を阻止したことに基づいて、および/または、ユーザインタラクションフィルタ650がユーザインタラクション612を阻止したことに応答して、システム660は、追加的にまたは代替的に他の保護措置をとるように構成され得る。例えば、システム660は、ユーザインタラクション612が阻止されたことを示すプロンプト、および/または、ユーザインタラクション612を廃棄するかユーザインタラクション612を消費することを許可するかを尋ねるプロンプトを生成し得る。
【0080】
いくつかの実現例では、システム660は、所与のソフトウェアアプリケーションが、ユーザインタラクションの阻止を招くおよび/またはユーザインタラクションの阻止に寄与するUIコンポーネントを生成する頻度を追跡するように構成され得る。これらの追跡された頻度は、(例えば、アプリケーションストアオペレータによって)複数のデバイスにわたって集約され得て、これらの追跡された頻度を使用して、ユーザインタラクションの阻止を招くおよび/またはユーザインタラクションの阻止に寄与するUIコンポーネントを他のアプリケーションよりも頻繁に生成する1つまたは複数のアプリケーションを識別することができる。したがって、複数のコンピューティングデバイスにわたって使用される場合、システム660によって生成されたデータは、さらに、悪意がある恐れがあるソフトウェアアプリケーションを識別するのに使用され得る。
【0081】
V.さらなる例示的な動作
図7は、タップジャッキング攻撃の防止に関連する動作のフローチャートである。これらの動作は、数ある可能性の中で、コンピューティングデバイス100、コンピューティングシステム200および/またはシステム660によって実行され得る。
図7の実施形態は、本明細書に示されている特徴のうちの任意の1つ以上を取り除くことによって簡略化されてもよい。さらに、これらの実施形態は、前の図面のうちのいずれかの、または本明細書に記載されている特徴、局面および/または実現例と組み合わせられてもよい。
【0082】
ブロック700は、GUIの特定の領域とのユーザインタラクションを検出することを含む。
【0083】
ブロック702は、ユーザインタラクションが特定のUIコンポーネントによって消費されることになると判断することを含み、特定のUIコンポーネントは、ユーザインタラクションが特定のUIコンポーネントへ通り抜けることを可能にするように構成された複数のUIコンポーネントによって覆われている。
【0084】
ブロック704は、ユーザインタラクションが特定のUIコンポーネントによって消費されることになるとの判断に基づいて、GUIの特定の領域における複数のUIコンポーネントの累積不透明度を決定することを含む。
【0085】
ブロック706は、累積不透明度が閾値不透明度を超えると判断することを含む。
ブロック708は、累積不透明度が閾値不透明度を超えるとの判断に基づいて、特定のUIコンポーネントがユーザインタラクションを消費することを阻止することを含む。
【0086】
いくつかの実施形態では、上記複数のUIコンポーネントの各それぞれのUIコンポーネントは、上記GUIの上記特定の領域の対応する不透明度に関連付けられ得る。上記累積不透明度を決定するステップは、各それぞれのUIコンポーネントの上記対応する不透明度に基づいて上記GUIの上記特定の領域における上記複数のUIコンポーネントの上記累積不透明度を決定するステップを含み得る。
【0087】
いくつかの実施形態では、上記GUIの上記特定の領域における上記複数のUIコンポーネントの上記累積不透明度は、各それぞれのUIコンポーネントの上記対応する不透明度とは異なり得る。
【0088】
いくつかの実施形態では、上記それぞれのUIコンポーネントの上記対応する不透明度は、上記GUIの上記特定の領域における上記それぞれのUIコンポーネントのコンテンツの最大不透明度を示し得る。
【0089】
いくつかの実施形態では、上記複数のUIコンポーネントは、(i)第1のソフトウェアアプリケーションによって生成された第1の複数のUIコンポーネントと、(ii)第2のソフトウェアアプリケーションによって生成された第2の複数のUIコンポーネントとを含み得る。上記複数のUIコンポーネントの上記累積不透明度を決定するステップは、(i)上記GUIの上記特定の領域における上記第1の複数のUIコンポーネントの第1のアプリケーション特有の累積不透明度を決定するステップと、(ii)上記GUIの上記特定の領域における上記第2の複数のUIコンポーネントの第2のアプリケーション特有の累積不透明度を決定するステップとを含み得る。上記累積不透明度が上記閾値不透明度を超えると判断するステップは、上記第1のアプリケーション特有の累積不透明度または上記第2のアプリケーション特有の累積不透明度のうちの少なくとも1つが上記閾値不透明度を超えると判断するステップを含み得る。
【0090】
いくつかの実施形態では、上記複数のUIコンポーネントは、(i)第1のソフトウェアアプリケーションによって生成された第1の複数のUIコンポーネントと、(ii)第2のソフトウェアアプリケーションによって生成された第2の複数のUIコンポーネントとを含み得る。上記複数のUIコンポーネントの上記累積不透明度を決定するステップは、上記GUIの上記特定の領域における上記第1の複数のUIコンポーネントおよび上記第2の複数のUIコンポーネントのアプリケーション非依存の累積不透明度を決定するステップを含み得る。上記累積不透明度が上記閾値不透明度を超えると判断するステップは、アプリケーション非依存の累積不透明度が上記閾値不透明度を超えると判断するステップを含み得る。
【0091】
いくつかの実施形態では、上記特定のUIコンポーネントは、上記第1のソフトウェアアプリケーションおよび上記第2のソフトウェアアプリケーションとは異なる第3のソフトウェアアプリケーションによって生成され得る。
【0092】
いくつかの実施形態では、上記対応する不透明度は、値ゼロから予め定められた値までであり得る。上記値ゼロは、最小不透明度を表し得て、上記予め定められた値は、最大不透明度を表し得る。上記累積不透明度を決定するステップは、各それぞれのUIコンポーネントについて、(i)上記予め定められた値と(ii)上記それぞれのUIコンポーネントの上記対応する不透明度との間の差に基づいて対応する透明度を決定するステップを含み得る。また、上記累積不透明度を決定するステップは、上記複数のUIコンポーネントの上記対応する透明度の積を決定するステップと、上記積に基づいて上記累積不透明度を決定するステップとを含み得る。
【0093】
いくつかの実施形態では、上記対応する不透明度は、値ゼロから予め定められた値までの対応する透明度として表され得る。上記値ゼロは、最小透明度を表し得て、上記予め定められた値は、最大透明度を表し得る。上記累積不透明度を決定するステップは、上記複数のUIコンポーネントの上記対応する透明度の積を決定するステップと、上記積に基づいて上記累積不透明度を決定するステップとを含み得る。
【0094】
いくつかの実施形態では、上記積に基づいて上記累積不透明度を決定するステップは、(i)上記予め定められた値と(ii)上記積との間の差を決定するステップと、上記差に基づいて上記累積不透明度を決定するステップとを含み得る。
【0095】
いくつかの実施形態では、上記累積不透明度は、累積透明度として表され得る。上記閾値不透明度は、閾値透明度として表され得る。上記累積不透明度が上記閾値不透明度を超えると判断するステップは、上記累積透明度が上記閾値透明度未満であると判断するステップを含み得る。
【0096】
いくつかの実施形態では、上記ユーザインタラクションが上記特定のUIコンポーネントによって消費されることになると判断するステップは、上記複数のUIコンポーネントの各それぞれのUIコンポーネントが属性に関連付けられていると判断するステップを含み得て、上記属性は、上記それぞれのUIコンポーネントが、上記ユーザインタラクションを無視して、上記それぞれのUIコンポーネントの下にある上記GUIの層へ上記ユーザインタラクションが通り抜けることを可能にするように構成されていることを示す。
【0097】
いくつかの実施形態では、上記ユーザインタラクションは、モバイルコンピューティングデバイスのタッチインターフェイスを介して上記GUIの上記特定の領域をタッチすることを含み得る。
【0098】
いくつかの実施形態では、(i)上記ユーザインタラクションを検出するステップ、(ii)上記ユーザインタラクションが上記特定のUIコンポーネントによって消費されることになると判断するステップ、(iii)上記累積不透明度を決定するステップ、(iv)上記累積不透明度が上記閾値不透明度を超えると判断するステップ、および(iv)上記特定のUIコンポーネントが上記ユーザインタラクションを消費することを阻止するステップの各々は、コンピューティングデバイス上で実行されるソフトウェアアプリケーションから独立して、上記コンピューティングデバイスのオペレーティングシステムによって実行され得る。
【0099】
いくつかの実施形態では、上記GUIは、モバイルコンピューティングデバイスのオペレーティングシステムによって提供され得る。上記特定のUIコンポーネントおよび上記複数のUIコンポーネントの各々は、上記モバイルコンピューティングデバイスによって実行される対応するソフトウェアアプリケーションからのそれぞれの要求に応答して上記モバイルコンピューティングデバイスの上記オペレーティングシステムによって生成され得る。
【0100】
いくつかの実施形態では、上記複数のUIコンポーネントの各それぞれのUIコンポーネントについて、上記それぞれのUIコンポーネントのタイプが予め定められた数のUIコンポーネントのタイプのうちの1つであると判断され得る。また、上記それぞれのUIコンポーネントの上記タイプが上記予め定められた数のUIコンポーネントのタイプのうちの1つであるとの判断に基づいて、各それぞれのUIコンポーネントについて、上記それぞれのUIコンポーネントが信頼できないものであると判断され得る。各それぞれのUIコンポーネントが信頼できないものであるとの判断にさらに基づいて、上記複数のUIコンポーネントの上記累積不透明度が決定され得る。
【0101】
いくつかの実施形態では、上記GUIは、水平なエリアと、複数の垂直に積層された層とを含み得る。上記GUIの上記特定の領域は、上記水平なエリアのサブセットを含み得る。上記複数のUIコンポーネントの各それぞれのUIコンポーネントは、上記複数の垂直に積層された層のうちの対応する層に配置され得る。
【0102】
いくつかの実施形態では、上記複数のUIコンポーネントの各それぞれのUIコンポーネントは、上記それぞれのUIコンポーネントがユーザインタラクションによって再位置決め可能でないように上記GUIの固定領域内にある。
【0103】
VI.結論
本開示は、本願に記載された特定の実施形態に限定すべきではなく、これらの特定の実施形態は、さまざまな局面の説明を目的としたものである。当業者には明らかであるように、本開示の範囲から逸脱することなく、多数の変更および変形が可能である。本明細書に記載されたものに加えて、本開示の範囲内で機能的に等価の方法および装置が、上述の記載から当業者には明らかであろう。そのような変更例および変形例も、添付の特許請求の範囲内であることが意図される。
【0104】
上述の詳細な説明では、添付の図面を参照して、開示されたシステム、デバイス、および方法のさまざまな特徴および動作を記載している。これらの図面において、文脈が別様に指図しない限り、通常、同様の符号は同様の構成要素を特定する。本明細書および図面に記載された例示的な実施形態は、限定的であるよう意図されるものではない。本明細書に提示された主題の範囲から逸脱することなく、他の実施形態を利用し、他の変更を行なうことも可能である。本明細書で概括的に記載し、図面に示した本開示の局面は、種々の異なる構成で配置、置換、合体、分離、および設計され得ることが容易に理解されるであろう。
【0105】
図面に示されるとともに本明細書で説明されたメッセージフロー図、シナリオ、およびフローチャートのうちのいずれかまたはすべてに関して、各ステップ、ブロックおよび/または通信は、例示的な実施形態に係る情報の処理および/または情報の送信を表わす場合がある。これらの例示的な実施形態の範囲内には、代替的な実施形態も含まれる。これらの代替的な実施形態においては、例えば、ステップ、ブロック、送信、通信、要求、応答、および/またはメッセージとして記載された動作が、関与する機能に応じて、図示または説明されたものとは異なる順序で実行されてもよい(実質的に同時、または逆の順序で実行されることを含む)。さらに、本明細書で説明されたメッセージフロー図、シナリオ、およびフローチャートのうちのいずれかで用いるブロックおよび/または動作は、より多くてもよいし、より少なくてもよい。また、これらのメッセージフロー図、シナリオ、およびフローチャートは、部分的または全体的に互いに組み合わせることも可能である。
【0106】
情報の処理を表わすステップまたはブロックは、本明細書に記載した方法または手法の特定のロジック機能を行なうように構成され得る回路に対応してもよい。代替的にまたは追加的には、情報の処理を表わすブロックは、モジュール、セグメント、またはプログラムコード(関連データを含む)の一部に対応してもよい。プログラムコードは、上記方法または手法における特定の論理演算または動作を実現するためにプロセッサによって実行され得る1つまたは複数の命令を含んでもよい。プログラムコードおよび/または関連データは、ランダムアクセスメモリ(RAM:Random Access Memory)、ディスクドライブ、ソリッドステートドライブ、または他の記憶媒体を含む記憶装置など、任意のタイプのコンピュータ可読媒体に格納されてもよい。
【0107】
コンピュータ可読媒体は、非一時的なコンピュータ可読媒体、例えば、レジスタメモリ、プロセッサキャッシュ、およびRAMといった、短期間データを格納するコンピュータ可読媒体などを含んでもよい。コンピュータ可読媒体は、より長い期間プログラムコードおよび/またはデータを格納する非一時的なコンピュータ可読媒体も含んでもよい。したがって、コンピュータ可読媒体は、例えば、読み取り専用メモリ(ROM:Read Only Memory)、光学または磁気ディスク、ソリッドステートドライブ、コンパクトディスク読み取り専用メモリ(CD-ROM:Compact-Disc Read Only Memory)といった二次的または永続的な長期記憶装置を含んでもよい。コンピュータ可読媒体は、その他の揮発性または不揮発性の記憶システムであってもよい。コンピュータ可読媒体は、例えば、コンピュータ可読記憶媒体、または有形の記憶装置とみなしてもよい。
【0108】
さらに、1つまたは複数の情報送信を表わすステップまたはブロックは、同一の物理デバイスのソフトウェアモジュール間および/またはハードウェアモジュール間の情報送信に対応してもよい。しかし、他の情報送信は、異なる物理デバイスのソフトウェアモジュール間および/またはハードウェアモジュール間で行なわれてもよい。
【0109】
図面に示される特定の配置は、限定としてみなされるべきではない。他の実施形態は、所与の図面に示される各要素をより多くまたはより少なく含んでもよい、ということが理解されるべきである。さらに、示される要素のうちのいくつかは、組み合わせられてもよく、または省略されてもよい。さらに、例示的な実施形態は、図面に示されていない要素も含んでもよい。
【0110】
本明細書においてさまざまな局面および実施形態を開示したが、当業者には他の局面および実施形態も明らかであろう。本明細書において開示されたさまざまな局面および実施形態は説明の目的で提示されたものであり、限定するように意図されたものではない。その真の範囲は、以下の特許請求の範囲によって示される。