質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Q&A

解決済

2回答

2843閲覧

Webアプリケーションのログイン画面のセキュリティについて

Tetsukick

総合スコア297

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

7グッド

10クリップ

投稿2023/02/13 10:41

WEBアプリケーションのセキュリティチェック項目の中に、

ログイン画面でアカウントの存在有無を検知されないこと
という項目がありますよね。

例えば、

  • 認証に失敗したとき、アカウントの存在有無によってエラーメッセージを変えるな
  • ハッシュ化されたパスワードの検証で、アカウントの存在有無によって応答時間を変えるな

とか、そういう指摘を受けることがあります。

でも、最近の大手サービスでも、アカウント名とパスワードが同じ画面にあるのではなく、まずはアカウント名を入力して次の画面でパスワードを入力させるというパターンが増えています。
Googleサービスのログインエラー
Amazonのログインエラー

これって最初に書いた「ログイン画面でアカウントの存在有無を検知されないこと」に反していると思いますが、なぜAmazon, Google等のサービスではこのような設計が許容されているのでしょうか?

YakumoSaki, glyzinieh, uky, nekora, tae255, arcxor, trulytsubasa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ockeghem

2023/02/13 11:41

回答ではなくコメントとしますが、拙著「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」の5.1 認証の「5.1.6 エラーメッセージの要件」には、「◆IDとパスワードのどちらが間違いか分かるとまずい理由」と「◆IDとパスワードを2段階で入力するサイトの増加」という項目があり、ご質問への回答となる説明をしております。
Tetsukick

2023/02/15 04:47

徳丸様 ご本人からメッセージをいただき恐縮です。 書籍の方とても参考になりました。 > このようにする理由は、ログイン認証がユーザには「面倒くさい」ものであり、ユーザへの負担が増えれば増えるほど安易なパスワードをつける傾向になることへの反省と考えられます。多少ログイン試行がやりやすくなるデメリットは許容し、ユーザの負担を減らすことにより、複雑なパスワードをつけるように誘導していると考えられます。 このあたり、とても参考になりました。 私としては、別の回答者に回答いただいたフィッシングされにくくするメリットを享受できることも一つ重要な理由だと考えました。
guest

回答2

0

ベストアンサー

WEBアプリケーションのセキュリティチェック項目の中に、
ログイン画面でアカウントの存在有無を検知されないことという項目がありますよね。

確かにその項目があることがありますが、それを満たしていないからといって問題(脆弱)であると考える必要はない項目だと思います。ID を公開していないサービスにおいては保険的対策の一種として機能するもの(根本的対策ではない)かと思います。

不親切なエラーメッセージにすることの目的と不利益

親切なエラーメッセージによって ID またはパスワードのどちらが間違っているか分かると、パスワード探索が容易になるという理由でこの対策が有効であると言われてきたかと思います。

しかしそれは、適切な強度のパスワードを設定しているユーザにとっては無関係です。パスワードが複雑であれば(十分な長さがあれば)、IDが分かったところで攻撃者はパスワードを当てることができません。

適切な強度のパスワードを設定しているユーザからすれば、エラーメッセージが不親切であることは不便になるだけであって、好ましい仕様であるとは言い切れません。

もし親切なエラーメッセージにしてもよいと考えるのであれば、ID とパスワードを同時に入力させずに、まずは ID を入力させてから次のステップでパスワードを入力させるというフォームにした方が自然で分かりやすいと考えられます。

これが Google のように、まずは ID を入力させてから次にパスワードを入力させるというフォームが増えてきた表面的な理由として考えられます。

また、そもそも ID を公開しているサービス(Twitter など)では、ログインフォームで ID を隠す必要がありません。そうした前提の違いによって、エラーメッセージを不親切にする理由がないケースもあります。

親切なエラーメッセージにすることによるデメリットに対する見解

ID を公開していないサービスがエラーメッセージを親切にしてしまうことで、ID の存在が(悪意のある)第三者にバレてしまうことによって何が問題となるでしょうか。

それは、脆弱なパスワードを設定しているユーザに対するパスワード探索が容易になるということです。

しかし、それに対しては別の根本的対策をすべきだと考えるのが、親切なエラーメッセージにしてしまって良いと考える第二の理由です。

根本的対策としては、ユーザに強度のあるパスワードを設定してもらうよう、次のような施策を行う事が考えられます。

  • パスワード文字長の制限をなくす
  • 複雑なパスワードを強制するために文字種混在を必須にする(これは賛否両論ありますが)
  • 使いやすい UI にして、長いパスワード入力をすることの負担を軽減する(例えばパスワードの表示を可能にしたり、ID とパスワードの入力を同時ではなくそれぞれに分けるなど)
  • 多要素認証を設定してもらう

パスワードを強固にしたり、多要素認証を設定すること、あるいはアカウントロック(同一IDに対するログイン施行の回数制限)を設けることが根本的対策であって、不親切なエラーメッセージにすることは対策ではないと考えることができます。そうなると不親切なエラーメッセージにするメリットが特にないことになりますので、だったら親切なエラーメッセージに倒したほうがよいだろうと考えるというわけです。

親切なエラーメッセージにすることによるメリット

親切なエラーメッセージというよりは、ID とパスワード入力を別々に分けることによるメリットがあります。

ひとつは、利便性があがるということです。ID を間違えたときに ID が間違っていることに気付けます。パスワードも同様です。

ふたつめは、パスワードの入力がしやすくなることで、強固なパスワードを設定してもらいやすくなるということです。

そしてみっつめは、フィッシングされにくくなるということです。フィッシングサイトでは通常、ID とパスワードの組を騙し取ろうとしますが、パスワード入力欄が最初から隠れていれば(ID 入力欄しか表示されていなければ)、もし誤ってフィッシングサイトにアクセスしてしまった場合にも、パスワードを盗み取られる可能性が少なくなります。

こうしたことを総合的に評価した上で、最初に示されていた「ログイン画面でアカウントの存在有無を検知されないこと」という要件はどのような意味を持つか(または無意味であるか)を検討することができます。

最後に

この回答は徳丸先生の資料セキュリティの都市伝説を暴くを参照しつつ私の見解を記述しています。

より正確な回答を知りたければ、コメント欄で示されているように徳丸先生の徳丸本第2版の当該項目を参照してみてください。何が書いてあるのか私も気になります。

投稿2023/02/13 13:03

arcxor

総合スコア2859

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tetsukick

2023/02/15 04:32

> パスワードを強固にしたり、多要素認証を設定すること、あるいはアカウントロック(同一IDに対するログイン施行の回数制限)を設けることが根本的対策であって、不親切なエラーメッセージにすることは対策ではないと考えることができます。そうなると不親切なエラーメッセージにするメリットが特にないことになりますので、だったら親切なエラーメッセージに倒したほうがよいだろうと考えるというわけです。 私も同意です。 セキュリティチェック項目で"ログイン画面でアカウントの存在有無を検知されないこと"という項目が作成された当時は、まだ二段階認証が一般的でなく、この項目が作られた背景もあるかと思っています。 現在では、IDの存在有無が検知されることよりも、不正にログインされない取り組みとしての二段階認証の仕組みの方が大事だと私も考えています。 > そしてみっつめは、フィッシングされにくくなるということです。フィッシングサイトでは通常、ID とパスワードの組を騙し取ろうとしますが、パスワード入力欄が最初から隠れていれば(ID 入力欄しか表示されていなければ)、もし誤ってフィッシングサイトにアクセスしてしまった場合にも、パスワードを盗み取られる可能性が少なくなります。 こちらとても参考になります。確かにこの点においてIDとパスワードを分けるメリットが大きいと感じました。実際にAmazon等はフィッシングサイトを作成されてしまうことも多いですし。。 とても詳しく解説していただきありがとうございます。 大変助かりました。
guest

0

Googleなどの有名サービスは2要素認証もあるし強気に出られるんですかね。
あとはとにかく多くの人がアカウントを持っているので隠すことにはあまり意味がなくて、隠す価値よりも晒す価値の方を選んでいるとか。

利便性とセキュリティはトレードオフの関係にあるので。

投稿2023/02/13 10:48

yuma.inaura

総合スコア1453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tetsukick

2023/02/15 04:58

そもそもTwitterやGoogleのようなIDを公開しているサービスとそうでないものでもこのあたりの対応に違いがあるということですね。 回答いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問