Zoom on the Keystrokes: Exploiting Video Calls for Keystroke Inference Attacks

# 論文について
## タイトル
Zoom on the Keystrokes: Exploiting Video Calls for Keystroke Inference Attacks
[論文はこちらからどうぞ](https://arxiv.org/pdf/2010.12078)

## 著者
Mohd Sabra, Anindya Maiti, Murtuza Jadliwala

# アブスト
COVID-19のパンデミックにより、ビデオ通話が一般的になりました。しかしながら、ビデオ通話には、通話中に個人情報が公開される恐れがあると言う問題があります。本論文では、攻撃フレームワークを設計して、通話中にタイプされたテキストを推測します。その現実的なシチュエーションでのキーストローク推論フレームワークから、そのような攻撃の危険性を評価し、ユーザを保護する効果的な手法について提案し、評価します。

# イントロダクション
COVID-19のパンデミックの影響から、ビデオ通話が普及しました。リモートワークやリモートレクチャーが当たり前になり、プライバシーへの意識が強まっています。
主なビデオ通話アプリケーションのいくつかでは、プライバシーを保護するために、仮想背景機能がありますが、
身体部分は映るので、そこからプライベートな情報が暴かれる可能性について検討する必要があります。
具体的には、Skype、ハングアウト、ズームなどのビデオ通話アプリケーションでビデオフィードを観察するだけで、従来のQWERTYキーボードでターゲットユーザーのキーストロークを推測できるのかを調査する必要があります。
通話のビデオ信号は、ノイズの影響を受けにくく、効果的なキーストローク推論攻撃に利用できる可能性があります。
そこで、ビデオ通話中のタイピング動作のモデリングをすることで、新しいビデオベースのキーストロークとタイピング検出フレームワークの構築しました。そして、ビデオから検出されたキーストロークを使用して、ターゲットユーザーが入力した可能性が最も高い単語を予測するテキスト推論フレームワークを作成しました。

# 背景知識
人間の身体は、骨と、骨を繋ぐ関節、そしてそれを覆う筋肉から成り立っている。タイピングスタイルによって、使われる関節の位置に違いが生じます。そのため、肩や腕の変化からキータイピングの動作と入力内容が読み取れる可能性があります。
## 反力
すべてのタイピングスタイルで、ユーザーがキーを押すたびに、反対方向に反力が発生します（ニュートンの第3運動法則）。この反力は、力が体に吸収されるまで、腕と肩の筋肉と関節全体に伝播します。その結果、ユーザーが指骨の関節だけを使ってキーを押しても、キーがユーザーの手に及ぼす反力による腕や肩の微妙な動きを視覚的に観察することができます。ただし、各手の5本の指は、手首の異なる骨を介して接続されており、手根骨領域の関節は異なります。その結果、キーストロークの反力は、キーを押すために使用された指に応じて、腕と肩の筋肉と関節を介してわずかに異なる方法で伝播します。さまざまな指でキーを押すと、視覚的に識別可能なタイプの上部の動き（ビデオ通話中にWebカメラで観察可能）になります。

# 攻撃モデル
ユーザの上半身のみが映っていて、キーボードなどは映っていないという典型的なビデオ通話の状況を想定して、攻撃モデルを構築しています。
以下に、攻撃モデルの概要を示します。
![スクリーンショット 2021-01-13 10.05.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/4d9b913f-4f9a-55ca-bd04-f288e846415c.png)

## 前処理
### 背景除去・グレースケール
![スクリーンショット 2021-01-13 10.18.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/ea19ef9d-bea2-bdf0-9771-64453f58fb82.png)
Microsoftが提供するCommon Object in Context（COCO）データセットを学習させたDeepLabv3というモデルで、人の上半身と背景をセグメンテーションし、背景部分を除去します。
そして、以降のすべての手順を簡素化するために、画像をグレースケールへと変換して、色に依存しないようにしています。

### 顔検出・腕の領域セグメンテーション
顔検出は、腕の位置、領域を推定するために行われます。人間の身体の対称性を活かし、顔の位置から、腕の領域を推定します。これは、顔検知や認識のモデルや学習データは数多くありますが、腕の検知に特化したデータやモデルが少ないからでしょう。
顔検出には、WIDER FACEというデータセットを学習させたFaceboxesというモデルを使用しています。

![スクリーンショット 2021-01-13 10.37.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/5d2ce8b2-271f-e398-4a1e-a70b236f5f69.png)
Faceboxesは上図のように、顔と認識した部分を、長方形のボックスで囲みます。そして、その顔ボックスの頂点の位置を基準に、顔ボックスよりも左下にある長方形の領域を右手セグメント、顔ボックスよりも右下にある長方形の領域を左手セグメントとします。

以上の前処理を各ビデオフレームに対して行います。

## キーストローク検出
前処理にて、作成したフレーム毎の右手、左手セグメントに対して、それぞれ独立にキーストローク検出アルゴリズムを適応します。

### 身体の動きの定量化
SSIM (structural similarity)という二つの画像の類似度を測る指標があります。連続する右手（左手）セグメントの２フレーム毎のSSIMを求めます。このSSIMの値が大きい場合は、２フレームの類似度が高いということであり、身体の動きが少ないということになります。逆に、類似度が低ければ、身体の動きが大きいことになり、重要な情報になります。
さらに、SSIMの値の時間軸上の変化量（dSSIM）は、身体の動作の速度と捉えることができます。


### キーストローク検出アルゴリズム

![スクリーンショット 2021-01-13 11.47.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/5072ac12-d370-66cc-4a59-07545ba8f0f8.png)

### キーストロークの特性
左右の腕それぞれのdSSIMの値を時系列に並べたものが以下の図になる。
![スクリーンショット 2021-01-20 10.56.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/1aa396e7-1f7d-89fb-983a-12ece81a213f.png)

人間のタイピング動作を考えると、あるキーをタイピングした後は、次のキーをタイプするために移動するか、静止位置に戻る。その動作を踏まえると、dSSIMの値が、局所的な最大値を取った後の次の２フレーム内に局所的な最小値がくる場合はタイピング動作と見なすことができる。また、最大値であるか最小値であるかは、最適な閾値を求めて、適応している。

### タイピング動作検出
タイピング動作の検出精度を高めるため（フォールスポジティブを減らすため）、ヒューリスティックな手法を導入しています。
![スクリーンショット 2021-01-20 11.30.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/360c6850-8f59-59b0-5553-680923192dbf.png)

#### Maximum Speed Filter
キーストロークが検出される最大速度を観察することにより、検出されたキーストロークから誤検知を除去します。ほとんどのユーザーは通常、約4の速度で入力します。 1秒あたり10回以上のキーストロークのタイピングレートに遭遇する可能性は非常に低いです。 したがって、最大速度フィルターは、検出されたキーストロークフレームから、1回の手あたり1秒あたり10回以上のキーストロークの速度に対応するフレームを（誤検知として）フィルターで除外します。

#### Location Filter
両手がキーボード上にあるかキーボードの近くにあるかを判断することにより、誤検知をフィルターで除去します。ここでの基本的な考え方は、最初にターゲットユーザーが入力する可能性が最も高い参照フレーム（K）のセットを作成し、次にこれらの参照フレームを使用して決定することです。（オプティカルフローを使用）
潜在的なキーストロークに対応する他の残りのフレームで、手が大幅に異なる位置にある場合、具体的には、ウィンドウに少なくとも4つの検出された潜在的なキーストローク（両手を組み合わせたもの）が含まれ、各手が2つ以上の潜在的なキーストロークに寄与する場合にのみ、各2秒ウィンドウにすべての潜在的なキーストロークフレームを含めることによって参照セットKを作成します。この状態は、タイピングアクティビティの可能性が非常に高いため、ユーザーの手がキーボードの上または近くにあることを表しています。次に、この参照セットを使用して、参照セットK内の（対応する手の）フレームに対する経験的に評価されたオプティカルフロー距離の閾値外の潜在的なキーストロークフレームを誤検知として除外します。

#### Minimum Speed Filter
検出された潜在的なキーストロークが両手合わせて、1秒あたり1回（またはそれ以下）の速度で発生した場合には、誤検知として、除外します。

#### Exclusive hand Filter
潜在的なキーストロークとして分類されることが多い片手での非入力アクティビティ（マウスクリックなど）の検出を試みる。 具体的には、各10秒のウィンドウで、同じ手で10回以上連続する可能性のあるキーストロークを除外します。

## ワード予測
タイピングしたワードを予測するためには、タイピング動作のタイミングで、どのキーをタイプしたのかを判別する必要があります。そこで、肩と腕の変化に注目します。

![スクリーンショット 2021-01-20 11.52.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/194a2dc0-e994-a8fd-4f67-65ac26e3c763.png)

### 腕の外縁部エッジ検出
腕の外縁部を検出するために、背景を除去済みの左手セグメントに対して、キャニーエッジ検出を行います。このままだと、服のしわや模様などのエッジも検出されるので、セグメントの各行の最も右のエッジのみを検出します。右手セグメントの場合は、逆に最も左のエッジのみを検出します（図b）。
次に、左手セグメントを扱う場合、求めた輪郭の一番左上のピクセルから、４５°の角度で線を引き、輪郭と交わった点（交差点）を求める（図c）。輪郭一番左上のピクセルから交差点までの間を肩の輪郭（図d）、交差点から一番右下のピクセルまでの間を腕の輪郭（図e）とします。

### 変位計算
スパースオプティカルフローを用いて、手の変位を定量化します。各キーストロークフレーム毎に手の変位ベクトルを求め、肩と腕の輪郭それぞれの平均ベクトルを求めます。そして、平均変位ベクトルを使用して、キーストロークに対応するキーの相対位置を決定します。下図のように、静止位置からどっちの方向に移動するのかを腕の変位ベクトルから判定し、タイプされたキーを予測します。

![スクリーンショット 2021-01-20 12.40.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/785c7fbf-d74f-d47e-e556-503e4f597be1.png)

###　ワード推測
単語の推測は、辞書ベースで行われています。左利きと右利きのキーストロークの順序と数の一致、及び計算された腕の変位の方向とテンプレートのキーストローク間の方向の一致に基づいた単語の辞書ベースの検索です。この検索では、候補となる単語が複数存在する可能性があるので、英文学での単語の使用頻度に基づいて辞書を並べ替えます（降順）。上位の予測（つまり、英文学で最も使用されている候補単語）に加えて、攻撃者が追加の意味論的および文脈的を実行します。そして、実際に入力された単語がそのような候補単語の上位k個に含まれているかどうかを評価します。


# 評価
## 実験設定
使用デバイス、ビデオ通話ソフトウェアやWebカメラ、キーボード、服装、タイピングスタイル等を指定して、実験を行った。
また、キーストロークの予測を評価するために、2つの異なる英語の辞書を使用しました。 1つはデータ収集に使用されたのと同じ辞書である4K単語の辞書であり、もう1つは65K英語単語のより包括的な辞書です。
以下は、各ウェブカメラと辞書を用いて、実際にタイプされたワードが予測された候補単語の上位10から200までに含まれる確率を求めたものです。

![スクリーンショット 2021-01-20 13.12.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/4ec659be-1c1f-2855-1e5c-4d6d698c4bee.png)

Top200の候補単語に置いて、最も予測精度が低かったのはLenovoのWebカメラで65K辞書を用いた時の44.3%で、最も予測精度が高かったのは、LogitechのWebカメラで4K辞書を用いた時の,７５%でした。予測精度は高い順に、Logitech、Anivia、Lenovoとなりました。この理由としては、LogitechとAniviaが1080pの解像度であるのに対して、Lenovoは720pの解像度であったこと、Aniviaは広角レンズであるためユーザの上半身をキャプチャーしているピクセル数がLogitechよりも少なかったことが考えられると述べられています。

論文中では、他に、服装による影響やタイピングスタイルによる影響も評価されているので、興味を持たれた方は是非、論文を読んでみてください。評価を総合すると、最も理想的な環境でタイプされたワードの予測を行った場合の予測精度は70%程であると考えられます。


# 攻撃への対策
作成したワード予測システムに対する効果的な対策を提案し、評価します。
## ぼやかす・ピクセル化
![スクリーンショット 2021-01-20 13.19.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268694/66139b9e-b4bd-cd29-7cc4-97a20c53328d.png)

ぼやかしは、各フレームの一定割合のピクセルを周辺ピクセルの平均値に畳み込むカーネルを適応するというものです。処理には、フレーム毎に約17msかかるそうです。
ピクセル化は、各フレームの一定割合のエリアの全てのピクセル値をそのエリアの平均値にするというものです。処理には、フレーム毎に約1.41msかかるそうです。

## フレームスキップ
バッファにあるフレーム数をfとすると、タイピングが検出された際に、現在バッファにあるフレームと、さらにfフレームをドロップし、配信しないようにするというものです。

ぼやかす・ピクセル化には、明らかにビデオクオリティーが下がるという問題があり、フレームスキップには、ビデオ通話の相手にとって、キータイピングの前のフレームで固まっているように見えるという問題があります。しかし、ワードが予測される可能性を著しく下げることには成功しています。

#まとめ
ビデオ通話アプリケーションにおいて、タイプされてテキストを予測するフレームワークの提案とそれの対策についての論文でした。簡単にまとめましたが、この記事では紹介しなかった資料や評価の結果などに興味を持たれた方は是非、論文を読んでみてください。

[論文はこちらからどうぞ](https://arxiv.org/pdf/2010.12078)