Yahoo! JAPANのワンタイムパスワードアプリを使ったり調べたりした

こんにちは、ritouです。
昨年、EmailによるOTP送信機能の提供を始めたYahoo! JAPANがいよいよiOS/Android向けのアプリを出したようです。

記憶+所持の組み合わせが目的ではあるものの、携帯メールではないWebメールへのOTP送信だと記憶+記憶になってしまう、たしかにそうですね。
あと以前見たGoogleの論文みたいなのには、海外などネット環境によってメールが受け取れないときもあるよね+そういうときアプリ使えると便利みたいなことも書いてありました。

設定手順

設定をするにはワンタイムパスワードの設定画面にいく必要があるのですね。
PC/スマートフォンワンタイムパスワード設定画面を訪問

メールとアプリのどちらを利用するかを選択

ここで既存の設定がクリアされてしまうのはちょっとあとからめんどくさいです。
しょうがないのかな。でもやっぱりめんどくさいですね。

アプリを選ぶと、次のような手順で進めます。

  • PC : アプリインストール + QRコード読み取り/手動設定
  • SP : アプリインストール + ワンクリックで自動設定/手動設定

そして、アプリにOTPを払い出すようになったらその値をフォームに入力して完了です。
あ、復帰用メアドの設定もしておく方がいいですね。
オプションだけど設定し忘れてどうにもならなくなったら困りますから。
まぁ、ざっくり見た感じだとGoogle Authenticatorと似たような感じですがこれ以上はなかなか調べるの難しそうですね。

中身を予想

スマートフォンの手動設定のあたりを見てもぴんとこなかったので、とりあえずPCからの設定時に表示されるQRコードのURLを見てみます。
こんな感じになっていました。

yjotp://totp/(Yahoo! JAPAN ID)?secret=(SECRET文字列っぽいもの)

こ、これは・・・みたことありますね。
Google Authenticatorの設定用URLを覚えていますでしょうか?

otpauth://totp/ritou@openidconnect.info?secret=base32_encoded_otp_secret

Google認証システムを使って多要素認証を実装してみた - r-weblife

(カスタムURLスキームの利用の是非については一旦おいておきましょう)
otpauthというカスタムURLスキームの部分がyjotpに変わっただけのように見えます。
ということは・・・

一人interopの時間や!

こんな実験をしたいと思いました。

  • Google AuthenticatorからY!J用OTPを払い出す
  • Y!OTPアプリからGoogle用OTPを払い出す

が、普段使っている状態からいろいろ設定しなおすとかがめんどくさいので、簡略化のためにこんなQRコードを用意しました。


両者の違いは、そのQRコードが示すカスタムURLスキームがotpauthかyjotpかということだけです。これを読み込むとGoogle AuthenticatorとY!OTPアプリで同じユーザーについての設定ができました。QRコード読ませてからスクリーンショット撮ったので数字はずれてますが試すと同じの払い出されるはずです。


同じユーザーに対する設定の場合、Google Authenticatorは上書きしちゃうけどY!OTPアプリのほうは別で保存するなど、細かい部分は違いますが、互換性があることはわかりました。
ということは、私が以前作った2要素認証専用プロバイダからもY!OTPアプリが使えると思われますが、モチベーションが低いのですぐにはやりません。

まとめ

  • Y!Jもソフトウェアトークンを払い出すアプリを出してきた
  • QRコードみたらGoogle Authenticatorの設定URLと似ていたので一人Interopを開催し、めでたく互換性が確認できた(誰得

互換性あったぜ!って声高に宣言したところで誰得なの?ってわけですが、ハードウェアトークンに比べてかさばりはしないもののアプリが増え続けるのも今後問題になるのかなと思ったりしていて、互換性があるのならまとめたい気もしないでもないです。dropboxの2要素認証にはGoogle Authenticatorが使えます。 Dropboxのセキュリティが向上する「2ステップ認証」の設定方法。 | AppBank – iPhone, スマホのたのしみを見つけよう
Y!Jのサーバー側がGoogle Authenticatorの仕様にあわせれば自社でアプリを出す必要性がない気もしますが、まぁ常識的に考えて他者のアプリに命を預けるのはアレだし他社の命を預かるのもアレなんで自分のところだけのアプリを作ったというところでしょう。ソフトウェアトークン生成アプリがブラウザほど信用されるようになれば話は変わってくるのかもしれません。

この形式のソフトウェアトークンがスタンダードとなりつつありますが、果たしてこのまますんなりいくものでしょうか。rootとった端末でsecret持っていかれたとか、何か問題がおこって大騒ぎになるきがしないでもないのですが、状況を見守りたいと思います。

おまけ

いつも思いますが、Y!Jの関係者はこういう機能をせっかく出したんだからもっとがっつり宣伝すれば良いと思う。他社も2要素認証やりはじめてるし他人のパスワードを使った不正アクセスも増えているらしい。今こそこのあたりの機能をアッピールするオポチュニティだと思うのでアウトプットする手段ややる気がある人はどんどんするべき。

ではまた。