Togetter/min.tを安心してお使い頂くためのガイドラインを公開しました。

そもそもスマホアプリ の時代、もはやauthenticationですらないと思うのよね

高木先生のスマホアプリ認証に関する知見
22
Hiromitsu Takagi @HiromitsuTakagi

そもそもスマホアプリ の時代、もはやauthenticationですらないと思うのよね。(何を言ってるかわからねえだろうと思うが。)

2019-07-08 23:14:44
Hiromitsu Takagi @HiromitsuTakagi

スマホでアプリをインストール。初起動し、この時点でサーバと恒久セッションが確立。新規利用登録をして利用開始。このときID・パスワード登録は要らない。そのままサービスを利用できる。アプリを終了させて再びアプリを起動しても、当該恒久セッションが続いて、そのままサービスを利用できる。

2019-07-09 02:40:18
Hiromitsu Takagi @HiromitsuTakagi

問題は、このスマホを紛失したときや、機種変更したとき、初期化する必要が生じたとき、当該セッションは失われるので、サービスを継続できなくなること。 これを解決するための何らかの手段、つまりアカウントを別端末に引き継ぐ方法の提供が求められる。

2019-07-09 02:43:32
Hiromitsu Takagi @HiromitsuTakagi

それはどんな方法でも構わないのだが、ID・パスワーを用いるというのが一つ。 このように、ID・パスワードはログインのための認証というよりも、アカウントを引き継ぐためのキーに過ぎないと、もはや言うべきではなかろうか。スマホアプロにログイン概念など無用なのである。

2019-07-09 02:45:01
Hiromitsu Takagi @HiromitsuTakagi

ログインという発想は、20世紀の昔、1台のコンピュータを複数の人で入れ替わり立ち替わり使っていた文化の名残にすぎない。この文化はWebにも引き継がれた。PCは自分専用ではなく、また、キオスク端末のWebブラウザから使うために、「ログイン」は用意されていたのだ。

2019-07-09 02:50:04
Hiromitsu Takagi @HiromitsuTakagi

そんな流れもあり、Webのステートは一時的なものとの常識が確立された。Webのcookieはクリアされるものであり、クリアされてもサービスできるようにWebアプリは作らなければならないという固定観念が成立した。しかしそれはWebの文化にすぎない。スマホアプリがそうする必要はないのである。

2019-07-09 02:52:50
Hiromitsu Takagi @HiromitsuTakagi

実は、Webでも同じことをやってよい。いまどき、PC(のOS)は(マルチユーザなので)一人ひとりに専用になっているのだから、初回接続・利用登録時の恒久セッションを維持したまま使い続けていいのだ。何らかの都合でcookieが失われたときの手段さえ提供しておけばよい。

2019-07-09 03:00:46
Hiromitsu Takagi @HiromitsuTakagi

そのような復元の手段(アカウントの引き継ぎ手段)は、登録済みメールアドレスへのワンタイムキーを含むURLの送信で可能だ。受信したメールのURLを開くとセッションが回復する。 これは視点を変えれば、パスワードリマインダと等価である。むしろ、リマインダはアカウント復元機能だったのだ。

2019-07-09 03:06:17
Hiromitsu Takagi @HiromitsuTakagi

電話番号もメールアドレスも変わってしまうユーザもいるだろう。なので、初回登録時に、アカウント復元コード(100ビット程度の数字)を発行して表示し、印刷して金庫にしまうなり保管せよと指示しておけばよい。もはやユーザが決めるID・パスワードの出る幕はないのである。

2019-07-09 03:24:49
Hiromitsu Takagi @HiromitsuTakagi

復元コードは慣れないうちは無視される恐れがある。しかし、ID・パスワードの登録のないサービスが当たり前になると、保管しておくことの重要性が理解されるようになる。 今すぐ使いたいのにまずパスワードを決めろと言われて安易なものにしてしまう現状よりよほどよい。復元コードは後で確認できる。

2019-07-09 03:32:18
Hiromitsu Takagi @HiromitsuTakagi

天動説で始まったWebは、パスワードリマインダや秘密の質問といった、逆行運動があった。これをスマホアプリ時代の地動説の視点で見れば、上記の通りシンプルに周転しているだけなのである。7payの設計は、天動説のままであったが故に、破綻したリマインダを設けてしまった。

2019-07-09 03:37:57
Hiromitsu Takagi @HiromitsuTakagi

(ただし、上記の例には、メールが途中で盗聴されないこと、SMSが盗聴されず本人確実に届くことなどの前提があり、本当にそれでいいのか?と割り切れないところがある。しかし、天動説のリマインダーではその割り切りを既にしており、実績も積まれているわけであり……。)

2019-07-09 03:45:47
Hiromitsu Takagi @HiromitsuTakagi

4年前に書いた記事。同じことを言っているが当時よりだいぶ研ぎ澄まされてきた。 web.archive.org/web/2015030200…

2019-07-09 03:56:43
Hiromitsu Takagi @HiromitsuTakagi

ログインのユーザ認証には、端末(ブラウザ)を勝手に他人が触り得るリスクを想定して、利用を終えたらログアウトすることで解決する機能も同時に含まれていた。スマホアプリの今日では、それは端末のアンロック機能や、アプリに追加のローカル認証(生体認証やPIN)が担い、機能が分離されている。

2019-07-09 04:07:44
Hiromitsu Takagi @HiromitsuTakagi

twitter.com/MizunoMe_ppc/s… 複数アカウントを切り替えて使うのが本質的なサービスでは、アプリ自体が複数アカウントを同時使用できるように設計されるべき。Webブラウザと異なりそれは簡単にできる。

2019-07-09 05:16:08

コメント

ポン酢太郎 @ponzoo2you 2019年7月9日
1アカウントに対する複数端末の利用があるからクラウド的には認証はまだまだ必要なんじゃないかなって思った
7
ネワノ @One_of_Engineer 2019年7月9日
「ユーザー」ではなく、「スマホ本体」と契約すればいいって考えか。「印鑑と契約する銀行」と同じように思える。しかも、スマホアプリはスマホ以外のハード不要故に便利なのに、最初に1回だけ表示される「ふっかつのじゅもん」を印刷しておけって利便性捨てている感じ。
1
endersgame @endersgame3 2019年7月9日
複数端末は「端末移行」のバリエーションで実現可能でしょう。旧端末を残すか消すか選べれば良いだけ。 それよりPCやスマホのロック解除の管理が雑な人たちがなんとかならんものか
0
さ​ろ​げー​と @surrogatepair 2019年7月9日
スマホ壊れたのでTwitterアカウント作り直す人の案件だ
5
RGB000 @19666_61 2019年7月10日
各々にIDとパスワードを設定する代わりに、GoogleやFaceBook等(野良実装と比べて)信頼できるサービスとの連携という形が提示されていると思うけど...Appleがそれをストアアプリに強制実装させるってこないだ話題になったやん
0
RGB000 @19666_61 2019年7月10日
復元コードは現状に置き換えれば「変更不可な長めのパスワード(入力機会は減らす)」という理解をしたけど、それを各々のサービスで発行して金庫に保管する能力があれば現状で十分回るでしょ。多くのユーザーは野良保管or保存しないor奥にしまいすぎて無くすorコードとサービスの対応がわからない、そんな落ちが見える。
1
緣藏 @jinsei_febreze 2019年7月10日
生体認証によるスマホのロック解除でIDaaSの多要素認証機能を肩代わり、まではまぁわからんでもない。 通ってしまえばあとはアプリ側でログイン情報とセッション保持してしまえばいいだけだしな。 技術的にはいいんだが復元コード保管運用を個人にやらせるのは難しいんじゃねえかなぁ。 なんか方法あれば別だけども思いつかねえわ。
0
wingball @wingball 2019年7月10日
これ、ソシャゲのゲストログインだよね。
0
tetra @tetra1945 2019年7月12日
ponzoo2you PC2台とスマホ2台、タブレット1枚の計5台で同じアカウント使ってるので、その通りですね。
1
たるたる @heporap 2019年7月12日
中古のスマホを買ったら、スマホIDに紐付けられたアカウントに勝手にログインできて、、、
1
蒼井 亜生 @aoi_blue 2019年7月12日
eightって、割と近い考え方でログインID発行している・・・と思われる。
0