機種変更時にやるべき Google Authenticator (2段階 認証システム) のリカバリー対策

2段階認証利用時の2段階目の確認コードを発行してくれるのがそれ。

これを機種変更や端末移行時にどうするのが良いか。移行のついでに紛失したときのリカバリーも考慮しておきたい。

「登録QRコードは登録時に一度しか表示されない。」

それらの手順は、そのアカウントを発行しているサービスによって違うのだが共通に使える方法を見ておくと基本的なしくみを理解しやすい。

 

QRコードのキャプチャ画像を保存

簡単だが、保存場所に困る。

バックアップ/リカバリの方法が多いGoogleアカウントのサービス(Drive/Photo) に保存しておくのが安心か。

 

複数端末で同時に登録

認証情報を確認できる端末が複数あることが安全ではない。とも。

ひとつの端末が死んでも安心して利用できる?

 

テキストで保存

A. サービスごとのバックアップコードを保存

画像をキャプチャするか、コピペしてどこかに保存、または、紙に書いておくか。

これも保存場所に困る。

B. QRコードをテキスト化して保存


RFC 6238 - TOTP: Time-Based One-Time Password Algorithm で規定されているテキストURLがQRコードになっているだけなのが実質。


otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example

Key Uri Format · google/google-authenticator Wiki

TOTPのURIを生成し、QRにエンコードとデコードしてから、ワンタイムパスワードを計算する | blog.monophile.net

秘密鍵だけテキスト化して保存しておくこともできるか。

サービスによって微妙にパラメータは違う様子。

 

1段階に戻す

驚異を承知で戻します?

 

まとめ?

サードパーティのQRコードリーダアプリで読み取って履歴保存はやばいよね?

わたしは紙に書いておこうと思っています。

みんなはどうしてる?

スマホに依存しすぎてねえ?

2段階認証プロセスに関する一般的な問題 - Google アカウント ヘルプ


Pixel3 ドコモ版とGoogle版の違い

国内で買うならこの2つがメインとなるはず。

グローバル版を個人輸入購入もあるだろうが、Felica と 掴む電波が北米とは変わる。

ドコモ版「Pixel 3/3 XL」、独自のカスタマイズはなし - ケータイ Watch

など、今現在、たくさんの国内メディアやブログの記事を見ることができる。

OSバージョンアップは共にGooglegが主体。

dカードmini・dカード・dカード GOLD は共に使えない。

 

ドコモ版とGoogle版の違い

ドコモ版はSIMロック(100日で解除可能)。

ドコモ版は dポイント/dメニュー/My docomo アプリがプリインストール。

NFC他端末に関係なくdアカウント・パスワードで利用できるアプリなので、Google版で利用したい人はPlayストアから入れればよいだろう。


dポイントクラブ - Apps on Google Play


dメニュー - Apps on Google Play


My docomo - 料金・通信量の確認 - Apps on Google Play

「OSアップデートがGoogleから配信される」ということであれば、上記の3つのドコモアプリをプレイン+SIMロックをしただけのドコモ版となってるのだろうと思える。

Felica は、Google Pay に絡めてのGoogleによるOS範疇ということか。

利用時の自分向けメモとして。

→ Pixel3 をポチる。配送予定日は 11月9日-16日。
→ プレインストールアプリを削除する


Android Studio に入れておくとよい ライブラリバージョン検索 プラグイン「OK, Gradle!」

ライブラリの最新版を探すのに役に立ちそうな。

OK, Gradle! - Plugins | JetBrains

scana/ok-gradle: IntelliJ/Android Studio plugin for searching artifacts ids of popular Java libraries.

使ってみたけど、役に立つと思う。



動画のように、いろいろあるけど、

いちいち参照先探すのも面倒だから。


Genymotion 無料版 を入れる 2018

ちょっとした検証をドトールでやるとき、実機を出すのは面倒。

かといって公式エミュレータはいまいち感。

なので、ひさびさに入れてみました Genymotion。


Genymotion Android Emulator | Cloud-based Android virtual devices | Develop - Automate your tests - Validate with confidence

 

個人利用の無料版

公式サイトの分かりづらいとこにしれっとある。

上部の「Help」から、

「Genymotion Desktop」-「Fun Zone」

で。

ライセンスキーは不要。アカウント作成→ログインのみで無料利用可能。

Genymotion For Fun – Free Android Emulator (For Personal Use)

 

VirtualBox

「自分でいれなさい」とリンク付きダイアログで言われた。

Downloads – Oracle VM VirtualBox

入れるだけ。

 

GApps を入れる。

【本当に32ビット?】Android端末の CPU の ABI を特定する

「x86」で入れる。

The Open GApps Project

デバイスのイメージを作成後、開いた画面の上にドラッグ&ドロップ。

 

まとめ

以前他で入れていた VirtualBox の残骸などは一度アンインストールしたほうがネットワーク設定などをしなくていいので楽。

あと、Virtual Box を開いたままで Genymotion にログインしようとすると、ネットワークエラーでできない。

いくつか、他のエミュレータを試したがこれが一番なのは今も?

→ Android Studio エミュレータのネットワーク設定

中華のがよい? ⇣

継続する 5555/TCP ポート宛攻撃通信と ADB が有効化された脆弱な Android エミュレータについて


AndroidManifest.xml に Admob application ID の記述が必須になったとさ

こんなエラーメッセージ。


E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ru.balumates.balu, PID: 4409
    java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException:

    ******************************************************************************
    * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers    *
    * should follow the instructions here: https://goo.gl/fQ2neu to add a valid  *
    * App ID inside the AndroidManifest. Google Ad Manager publishers should     *
    * follow instructions here: https://goo.gl/h17b6x.                           *
    ******************************************************************************


        at android.app.ActivityThread.installProvider(ActivityThread.java:6242)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5805)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5722)
        at android.app.ActivityThread.-wrap1(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.IllegalStateException:

    ******************************************************************************
    * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers    *
    * should follow the instructions here: https://goo.gl/fQ2neu to add a valid  *
    * App ID inside the AndroidManifest. Google Ad Manager publishers should     *
    * follow instructions here: https://goo.gl/h17b6x.                           *
    ******************************************************************************


        at com.google.android.gms.internal.ads.zzmn.attachInfo(Unknown Source:17)
        at com.google.android.gms.ads.MobileAdsInitProvider.attachInfo(Unknown Source:3)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6239)
        	... 10 more
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'

Google Mobile Ads SDK v17.0.0 以降で必須だと。

Google Ads Developer Blog: Announcing v17.0.0 of the Android Google Mobile Ads SDK

このことは、


implementation "com.google.firebase:firebase-ads:17.0.0"

も同じ。

以下、AndroidManifest.xml の必須記述。


<manifest>
  <application>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-################~##########"/>

  </application>
</manifest>

Ad Manager や NativeAppInstallAd / NativeContentAd も注意が必要な模様。