世界を動かす技術を、日本語で。

パスワードをより悪いものに置き換えました

概要

  • 6桁コード認証 を利用するサービスの増加
  • アカウントセキュリティ の重大な懸念
  • フィッシング被害 の現実例
  • パスワードマネージャー の無力化
  • Minecraftアカウント の被害事例

6桁コード認証方式の問題点

  • 多くのサービスで メールアドレスや電話番号入力後、6桁コード送信 方式を採用
  • 攻撃者が 正規サービスに他人のメールアドレスを入力 し、6桁コードを送信可能
  • ユーザーは どのサービスからのコードか判別困難
  • パスワードマネージャー によるフィッシング対策が機能しない現状
  • 攻撃者が 不正な画面でコード入力を促す 手口の横行

実際の被害事例:Minecraftアカウント

  • MicrosoftのMinecraftログイン でこの認証方式を採用
  • 攻撃者による 大量のアカウント盗難 の報告
  • フィッシングメールや偽サイト 経由で6桁コードを入力させる手法
  • 正規のコード入力欄と偽の入力欄 の区別が困難
  • 既存のセキュリティ対策 が無効化されるリスク

今後の認証方式への提言

  • 多要素認証パスワード+認証コード の併用推進
  • メールやSMSのみのワンタイムコード認証 の見直し
  • ユーザービリティとセキュリティ のバランス再考
  • パスワードマネージャーと連携可能な認証設計 の重要性
  • ユーザー教育 によるフィッシング耐性の強化

Hackerたちの意見

完全に同意するけど、The Changelog Podcastのおかげで考え方が変わったよ。要は、パスワードを保存したり管理したりする責任がないってことなんだよね。

支払い情報を入力するショップサイトがセキュリティを強化してるのはちょっと変だよね。例えば、IKEAがそうだね。

パスワードは絶対に保存しちゃダメだよ。ハッシュを保存するんだ。問題が見えないんだけど。もしハッシュを保持する自信がないなら、ユーザー情報を全く保存しない方がいいかもね。

これ、15年後に痛い目見る気がするけど、bcryptは本当に本当に間違えにくいよね。

じゃあ、彼らがパスワードを保管したくないっていうのは、安全に保つ責任を負いたくないからなんだよね?それなら、クレジットカードや他の個人情報を彼らに預けるのは信頼できるの?

だから?彼らが私のパスワードを保管したくないなら、代わりに私のアカウントのセキュリティを大幅に弱めるってこと?これはユーザーにとって良くないよ。

攻撃の流れはこんな感じだよ:1) ユーザーが悪いサイトに行ってサインアップする。2) 悪いサイトが「メールを送ったから、6桁のコードを入力してね!メールは良いサイトから来るよ、彼らがサインインパートナーだから。」って言う。3) 悪いサイトのボットがユーザーのメールを使って良いサイトで「メールのワンタイムコードでサインイン」フローを始める。4) 良いサイトがユーザーのメールアドレスにワンタイムログインコードのメールを送る。5) ユーザーはこのメールを信じやすい。だって良いサイトからだし、正しいログインじゃなかったら良いサイトが送るわけないじゃん。6) ユーザーが悪いサイトにコードを入力する。7) 悪いサイトがそのコードを使って良いサイトにユーザーとしてログインする。これで悪いサイトはユーザーの良いアカウントに完全にアクセスできる。だから「メールでワンタイムコードを送る」ってのはフィッシングにとって最悪の認証フローの一つなんだよね。ユーザーがこのミスをするのを止めるのが本当に難しい。「メールのリンクをクリックする」方が少しマシだけど、ユーザーを良いサイトに直接連れて行くし、そのリンクを悪いサイトに渡すのは面倒だから、より疑わしいよね。でも、もし人気のあるメールサービスが突然ログインメールやログインリンクをブロックし始めたら、多くのユーザーがログインできなくなる。パスキーが最適だと思う。パスキーに対するパスワードマネージャーのサポートもかなり良くなってきてるし、ユーザーが電話を失くしたときにパスキーが全部失われるのは、パスワードの問題よりずっとマシだよ。おばあちゃんが再度口座にアクセスするために銀行に行かなきゃならない方が、誰かにフィッシングされてお金を全部盗まれるよりはいいよね。

いい感じだけど、おばあちゃんが電話を失くした後に新しいパスワードを得るためにGoogleやMicrosoftに行かなきゃならないとしたら、どうするの?

ちょっと前に、これに似た「リンク/コードを送る」サインインアプローチを実装したんだけど、(多分)こんな風に悪用されないと思う - https://sriku.org/blog/2017/04/29/forget-password/ - その点についての意見があれば嬉しいな。ちなみに、これはパスキーが出る前の話で、今後はパスキーが主流になるかもね。

パスキーの問題は、デバイスを失ったときにアクセスを失うことだけじゃなくて、もっと複雑だよ(実際、設定によってはそうならないこともある)。一番の問題はアテステーションで、これがサービスに対して、自由度を高めるツールを使うユーザーをブロックさせるんだ。パスキー、あるいは一般的にチャレンジレスポンスプロトコルは、パスワードの素晴らしい代替品になり得たし、みんなにとってウィンウィンだったはずなのに。残念ながら、デザインの現実は、これが主にビッグテックの優位性をさらに強化し、ユーザーの自由を奪う方向に進んでいるってことだね。

パスキーは最良の選択だと思う。同期可能なパスキーとデバイスに縛られたパスキーの違いがもっとはっきりしてほしいな。セキュリティやユーザーフレンドリーさに関しては、今同じ言葉を使ってるのがすごく違うアプローチになってる気がする。そして、グランマに同期できないパスキーを渡すのは、本当に悪いアイデアだよ、理由はたくさんあるけどね。

パスキーは好きじゃないな。前はログインするのがこうだったんだよね:- ウェブサイトを開く - まだログインしてなかったら1Passwordにログイン - パスワードを自動入力 - TOTPを自動入力 でも今は:- ウェブサイトを開く - 1Passwordにログインしてたらパスキーを使うって表示される - もし表示されなかったら:- 1Passwordにログイン - パスキーを使うを選択 - ほとんど何も起きない - 「他の方法を使う」を選択 - 「パスワード」を選択 - 自動入力 - そしたら今度は2FAの方法を選ぶダイアログが出て、Authenticatorを選択 - 自動入力 パスキーが実際にコンピュータで何かを簡単にしてくれるなら最高なんだけど。スマホではうまくいくけど、そこにいる時間はあんまりないからね。

Hacker Newsで議論の続きを見る