スマートフォンのセンサーからPINコードを割り出す手法 37
ストーリー by headless
推測 部門より
推測 部門より
ユーザーのパーミッションを得る必要がないスマートフォンの各種センサーから取得したデータと機械学習により、高い成功率でPINコードを推測できるという研究結果が発表された(論文: PDF、
南洋理工大学のニュースリリース、
HackReadの記事)。
画面に表示されたキーパッドからPINを入力する際には押すキーの位置によって端末の傾きの変化などが異なる。そのため、センサーから取得したデータを処理することでPINを推測する研究は過去にも発表されている。データの取得方法としては、PIN全体の入力パターンを1つのデータとして取得する方法と1桁ごとに取得する方法が考えられる。全体を取得する場合は4桁でも10,000パターンのデータが必要なため、過去の研究では50パターンに限定するという手法がとられていた。今回の研究では1桁ごとに取得する方法を用いており、少ないパターンのデータですべての組み合わせに対応できるほか、桁数の異なるPINにも対応可能となる。
攻撃のシナリオとしては、まずターゲットの端末に送り込んだ攻撃用アプリでプリセットしたPINのパターンを入力させてデータを取得し、アルゴリズムに学習させる。次に実際のPINコード入力時のデータを取得し、学習結果からPINを推測するというものだ。学習データを取得する際には、前後のキー入力の組み合わせによる変化をカバーするため、厳選した70パターンのPINコードを5回ずつ入力させ、検証用に50パターンのランダムなPINコードも入力させている。研究ではボタンをPIN入力用のキーパッドと同じ配置にしたアプリを使用しているが、カジュアルゲームなどを装って学習データを取得する方法が提示されている。
画面に表示されたキーパッドからPINを入力する際には押すキーの位置によって端末の傾きの変化などが異なる。そのため、センサーから取得したデータを処理することでPINを推測する研究は過去にも発表されている。データの取得方法としては、PIN全体の入力パターンを1つのデータとして取得する方法と1桁ごとに取得する方法が考えられる。全体を取得する場合は4桁でも10,000パターンのデータが必要なため、過去の研究では50パターンに限定するという手法がとられていた。今回の研究では1桁ごとに取得する方法を用いており、少ないパターンのデータですべての組み合わせに対応できるほか、桁数の異なるPINにも対応可能となる。
攻撃のシナリオとしては、まずターゲットの端末に送り込んだ攻撃用アプリでプリセットしたPINのパターンを入力させてデータを取得し、アルゴリズムに学習させる。次に実際のPINコード入力時のデータを取得し、学習結果からPINを推測するというものだ。学習データを取得する際には、前後のキー入力の組み合わせによる変化をカバーするため、厳選した70パターンのPINコードを5回ずつ入力させ、検証用に50パターンのランダムなPINコードも入力させている。研究ではボタンをPIN入力用のキーパッドと同じ配置にしたアプリを使用しているが、カジュアルゲームなどを装って学習データを取得する方法が提示されている。
結果としては、加速度センサー+ジャイロセンサーのデータとMLPニューラルネットワークの組み合わせによる成功率が最も高く、良好な測定条件では20回の試行で最高83.7%の成功率だったとのこと。50パターンのPINに限定した過去の研究成果では試行1回で74%の成功率が最高だ。今回の研究で条件をそろえた場合にはMLPニューラルネットワークでは60%の成功率しか得られなかったが、ランダムフォレストでは99.5%の成功率になったとのこと。
このほか、3人の被験者から取得したデータを用いる実験も行われており、本人のデータのみを使用した場合よりも3人のデータを使用する方が成功率が高くなっている。さらに、他の2人のデータのみを使用した場合にも6%前後の成功率が得られ、まったくランダムな推測をする場合の30倍の成功率だという。
論文ではこのような攻撃を避けるため、センサーの最大サンプリングレートを下げる方法やPIN入力時にセンサーを無効化する方法も考えられるが、これらは一時的な対策であり、センサーへのアクセス全体を再考すべきだと述べている。パーミッション不要なセンサーはPINだけでなくユーザーのプライバシーを侵害する可能性もあるとのことだ。
キー配置 (スコア:2)
つまり、キー配置が毎回ランダムであればこの問題は解決できそう。
Re:キー配置 (スコア:2)
「シャッフル」ボタンを用意するなり、強制的にランダムだったり、それって銀行 ATM と同じですね。
ATMの数字ボタンの並びがかわってきている? [excite.co.jp]
そんななか、目に付いたのは、三菱東京UFJ銀行の「シャッフルボタン」だ。
「この『シャッフルボタン』(スクランブル化)は、合併前からそれぞれ設けているもので、東京三菱銀行では平成17年5月から、UFJ銀行では18年6月から導入しています」と、広報担当者は言う。
導入された理由は、やはり「暗証番号が他人にわからないよう、手の動きから判別されないようにするため」とのこと。
一方、シャッフルボタンを自分で押すのではなく、ボタンそのものが勝手に入れ替わるようにしているのは、三井住友銀行だった。
「これは、暗証番号の『ランダム表示』といって、導入のきっかけは、やはり同じ列にしていると、暗証番号が読み解かれてしまう可能性があるためです」(広報担当者)
これは17年12月から導入されたもので、毎回、数字がランダムに表示されているとのこと。ただし、パターン数などは、「犯罪につながりかねないので、公表していません」ということだった。
Re: (スコア:0)
> ただし、パターン数などは、「犯罪につながりかねないので、公表していません」ということだった。
それ聞いたり公表したりする必要あるんか?
Re: (スコア:0)
10!通りではなく、(何故か)数通りのパターンしかないってことだろうな。
全パターン、ソースにハードコーディングしてありそう。
Re: (スコア:0)
「全てランダムにすると組み合わせが膨大になるので、
テストはそのうちの何パターンかのみ行うということでよろしいでしょうか」
「何言ってんだ。全パターンテストするんだよ」
「……全てランダムにすると、打ち間違いやすいパターンなどもでてきますから、
最初から限られたパターンのみ実装するということでいかかでしょうか。
ほら、例えば8と9が入れ替わっただけのようなパターンなどは除外すべきでしょうし」
「それもそうか」
Re: (スコア:0)
意外と正論かと思ってしまいしました。
「完全ランダムに並べ替える」だと、シャッフルルーチンがバグっていて
「希に1が無く9がダブったキーパッドが表示される」ようなへぼいヘマをかます可能性が微レ存で、
それをテストで洗い出すのは困難だし、コードレビューレベルで動作に問題ないことを保証する手間を考えると、パターン数を絞った方が楽そうだ。
Re:キー配置 (スコア:1)
>「希に1が無く9がダブったキーパッドが表示される」ようなへぼいヘマをかます可能性が微レ存で、
シャッフルなんだから、仕様上、ダブルわけないじゃんって、
だれも突っ込まなかったら、それはそれで怖い。
Re: (スコア:0)
シャッフルを謳った製品でランダムに並べ替えてもその殆どが
「感覚的にランダムに見えない」せいで、
結局固定パターンの使い回しにしたことがあったな。
感覚的にはそれで充分だった。
Re: (スコア:0)
仕様が正しくとも、設計やら製造やらテストやらがクソなら
いくらでもバグらせることができるでしょう(ゲームだけど座標計算しくっておかしな配置をする例 [google.com])
って、だれも突っ込まなかったら、それはそれで怖い。
Re:キー配置 (スコア:2)
仕様通りが保証されるんならテストなんかいらんじゃろ…
Re: (スコア:0, 荒らし)
キー配置が毎回ランダムであればこの問題は解決できそう。
当たりもランダムにすれば完璧だね!
# そして確変突入
Re: (スコア:0)
どんだけパチ脳なんだよ
センサー以前の問題 (スコア:1)
>攻撃のシナリオとしては、まずターゲットの端末に送り込んだ攻撃用アプリ
Re: (スコア:0)
>カジュアルゲームなどを装って学習データを取得する方法が提示されている
記事読めよ
Re:センサー以前の問題 (スコア:1)
だから怪しいアプリ入れちゃダメ
情報はセンサーに限らずどこでも取っていくだろう
何を(誰を)信用するかだよ
Re: (スコア:0)
それらセキュリティ上考慮すべきいくつかの項目があるとして
センサー「以前」かどうかは視点によって変わるのでは?
一般的に影響評価と対策効果(耐性)で順序は反転するだろう
# DLP問題が難しいからDLP仮定は弱い?とか未だに混乱
偽のPIN入力画面を表示するアプリにしておけば (スコア:0)
カジュアルゲームに装うのは結構だが、偽の PIN 入力画面を用意しておけば、画面
ロックがかかったものと思ってうっかりユーザーが入力してくれるんじゃないの。
そうしたらセンサーのデータから云々しなくても手っ取り早いのにね。
# だからそういう研究じゃないって
モデレータは基本役立たずなの気にしてないよ
これの(念のため)回避は机に置いて入力すればいいのかな (スコア:0)
普段は指紋センサ使用なので
あまりpinを入力することは無い(再起動したときくらい)のですが
よくもまあいろいろ手段を思いつくものだとそこに感心
いずれこれらに対抗するべくランダム配置のスクリーンキーボードとかになるのか
そうなると面倒だなあ
Re:これの(念のため)回避は机に置いて入力すればいいのかな (スコア:1)
フリック入力にするだけでも推測は難しくなりそう。
あと途中で傾けたり持ち替えたり。
現実的なところでは「キーパッド表示中は加速度やジャイロをOFFにして、別プロセスからも読み出せないようにする」という修正なら、OSレベルで一括対応できるし副作用は比較的少ないかもしれない。(悪影響がないとは言い切れないけど)
うじゃうじゃ
Re: (スコア:0)
机上の空論ってやつだね!
PINロック自体が結構脆弱だと思う (スコア:0)
入力操作がどこかのカメラから録画されていればすぐ開錠されてしまう。
というかちょっと覗かれていただけでも。
外で使うもんだからね。
だから親コメの通り指紋認証にするなり、PINでの防御にあまり期待を置かない方がいいと思う。
Re: (スコア:0)
激しくヘドバンしながら操作するようにしたら、いずれの危険も回避出来る。
未使用 (スコア:0)
ネックストラップで置き忘れないようにしているから、勝手に弄られることも無いし
PINコード (スコア:0)
特に「PINコード」ってがっつり書いちゃうと、「例のあのPINコード」という固有名詞みたいなのを意味する様に見えちゃうけど、多分、原文はそうじゃないので要注意な。英語で「PIN」って言ったら広く一般の「暗証番号」の意味。ここでは、「数値入力ぐらいだったら、加速度・角速度センサーで取れるぞ」というのが本題。
なお、「例のあの」は「SIMの不正使用を避けるために設定するPINコード」とか、「ウェブで電話番号を入力すると送られてくる4桁のPINコード」とか、人によってちょいちょい解釈が違ってる。
なので、解釈がズレてることがままあると言うのに気付かずにコミュニケーションが混乱したり、英語のソフトやハードやサービスに触れてる時に「なぜ『例のあのPINコード』をここで入力させられるんだ?」と混乱することが割とよくある。
Re:PINコード (スコア:1)
PIN は Personal Identification Number なわけで、「PINコード」の「… Number Code」って何やねん感。
Re: (スコア:0)
いいこと聞いた、こいつのスマホ盗んじゃえ
ぼっちのモデレータを逆なでしたようだ (スコア:0)
彼女なり嫁なり同居人がいる場合は、風呂の最中に盗み見られる危険が付きまとうからな
何らかのセキュリティコードを使わず物理的に身に着けることでセキュリティを維持するというのはぼっちの特権だよ。
# だから君が付けるべきは「荒らし」でなく「すば洞」
モデレータは基本役立たずなの気にしてないよ
Re: (スコア:0)
矛盾し破綻した主張をして「荒らしじゃない」と言い張るのは滑稽だな
Re: (スコア:0)
#3340954とかの普通の人は彼女なり嫁なり同居人からスマホを守る必要はあんま無いって事なんじゃないですかね。
「独りぼっち」に絞ったのはハズしているので「すば洞」は付かないし、
誰かの思いを逆なでする事に気付いているのなら「荒らし」は当然ですよね。
感情論で判断するモデレータはスラドに要らない (スコア:1)
たとえひとりでも逆なでする可能性のあるコメントがすべて「荒らし」なら、雑談なんてできないぜ。
# モデレーションの輪に加わる前に、スラドの FAQ 読んで来いよ。
モデレータは基本役立たずなの気にしてないよ
Re: (スコア:0)
親コメントが「独りぼっち」なのか「家族にはノーガード」なのかはわからないですよね。
残念ながら深みに欠けているので、決して「すば洞」ではないと思います。
ツッコミ待ちの親コメントへのツッコミと考えれば、「おもしろおかしい」でしょうか。
でも、親コメントがリアル「独りぼっち」の可能性もあるわけで、
それをあなたのような書き方で指摘する事は単なるケンカの火種、余計な一言だと思います。
「荒らし」というよりは「フレームの元」ですね。
じゃあどうすれば良かったのか。「独りぼっち」は指摘せずに、
家族(同居人)に対するガード方法を聞けば良かったのです。
ところで、感情論でモデレートしすぎるのは問題だと思いますけど、
感情論で判断するモデレータはスラドに要らないというのもまた
論理的と言うより感情的な判断だと思います。
感情論でのモデレートを完全に排除したら、スラドは非社会的な人間の巣窟と
見なされても仕方ないような場所になるんじゃないでしょうか。
社会には感情というものを大切にして、判断しなきゃいけない事も沢山あります。
関連リンク:ジャイロセンサがマイク代わりになるセキュリティホール (スコア:0)
スマートフォンのジャイロセンサを使って周囲の音声を解析する [yro.srad.jp]
センサ系はやはり怖いね。
待て待て (スコア:0)
PINコードって取得した後どうすんの?
外部アプリから入力出来るの?
アプリ側からPINを入力出来るならロック掛からないようにチマチマやれば、ブルートフォースで行った方が楽じゃね?
まさか、PINコード割り出したら直接入力する為に、位置情報使って訪ねてくる?それは怖いわ。
# GPS以外のセンサーにもパーミッション付ければ解決じゃね?バックグラウンドでハードウェアリソース使うと電池減るから、任意にオフに出来ると良いよね。
Re: (スコア:0)
まず、沢山集めるだろ、
で電話番号と紐つけてPINを教えるサイトを作るんだよ。もちろん金をとる。
スマホ盗んだヤツはそこへいくらか払えば端末を即座に解除できる。その後どうするかなんて知らんよ。もうカネはもらったから。
Re: (スコア:0)
このコメント [srad.jp]にも書いたけど、そのPINコードじゃないやつが危ないんじゃないかな。
例えば、GoogleとかAmazonとかのお買い物券のスクラッチを削って出てくる数字とか。入力をバックグラウンドで監視しておいて、入力されたっぽかったら先回りして攻撃者のアカウントにチャージしちゃうという攻撃が成立する。先回りが難しいなら、最後の1桁を当てずっぽうで10回やるという方法とかでも。
Googleギフトカードがそうかは知らないけど、以前に海外で使った何かのプリペイド携帯電話のチャージカードの取扱説明書には、「スクラッチを削って出てきたPINをSNSでこの番号に送ればチャージが完了する」という文脈で「PIN」って単語が使われてた。
Re: (スコア:0)
認証連携で2FAのコードを叩いてるところを盗み取るのかも
特にTOTPだとそれを使ってパスワードリセットするとか2FA無効化の手続きを通すという攻撃はあり得る