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

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

ただいまの
回答率

90.01%

二段階認証を使用すればパスワードをハッシュ化するときにソルトやストレッチングはいらない?

解決済

回答 4

投稿

  • 評価
  • クリップ 3
  • VIEW 329

annderber

score 93

お世話になります。

単純な質問になってしまいますが、
二段階認証を強制すれば、例えパスワードが流出しても水際で不正ログインを防ぐことができるので、
パスワードハッシュ時のソルトやストレッチングは必要無いのでないかと思うのですが、いかがでしょうか。

もちろん二段階認証が絶対ではなく、SNS認証などを行っている場合にスマートフォンが盗難に遭えば不正ログインが出来てしまいますが、
そういった問題とは別にお答えいただければありがたいです。

今のところ考えられるのは、自サイト以外で流出したパスワードが使用される危険性があるとかでしょうか。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+5

二段階認証を強制すれば、例えパスワードが流出しても水際で不正ログインを防ぐことができるので、
パスワードハッシュ時のソルトやストレッチングは必要無いのでないかと思うのですが、いかがでしょうか。

いえ、パスワードハッシュ時のソルトやストレッチングは、自サイトの不正ログインを防ぐためのものではそもそもありません。

パスワードを他のサービスで使い回すということが横行している以上、自分のサービスから流出したパスワードで他のサービスに入られるというような被害が考えられますが、これは自分のサイトの認証をどうしようとも無関係です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/18 11:38

    しつこくても申し訳ないのですが、
    例えば別の方のコメント(SurferOnWwwさん)に紹介していただいた記事で内では

    """
    パスワードを特別扱いする理由は何でしょうか。パスワードが漏えいしている状況では、ほかの個人情報も一緒に漏えいしている可能性が高いわけですから、個人情報保護のためというわけではなさそうです。

    しかし、パスワードが漏えいすると、以下のような被害が利用者に及ぶ可能性があります。

    ・利用者の権限による物品購入、送金など金銭的な被害
    ・利用者の権限(名前)による投稿、変更、削除
    ・利用者がパスワードを使い回ししている場合の他サイトへの被害の波及

    このためパスワードについては、特別な保護を講じる場合が多いのです
    """
    とあり、その後具体的なオフライン攻撃の手法とそれの対策のためのソルト、ストレッチングの話へと続いてくのですが、これを見る限りではオフライン攻撃によってパスワードが漏れた場合、利用者になりすましての不正利用と他サイトへの影響を防ぐための方法の1つとしてソルト、ストレッチングの話をしていると思ったのですが、違うのでしょうか。

    キャンセル

  • 2019/10/18 11:41 編集

    > 利用者になりすましての不正利用と他サイトへの影響を防ぐための方法の1つとしてソルト、ストレッチングの話をしていると思ったのですが、違うのでしょうか。

    それは正しいです。

    通常は元の値が必要な名前や住所などの個人情報と違って、パスワードはサービス提供側でももとの値を必要としないので、復元困難な形で記録できるしそれが望ましい、という話です。

    キャンセル

  • 2019/10/18 14:03

    混乱してきました。
    つまりソルト、ストレッチングは自サイトの不正ログインを防ぐための手段であるという認識は間違いではないってことですよね。

    ただ、
    """
    パスワードを他のサービスで使い回すということが横行している以上、自分のサービスから流出したパスワードで他のサービスに入られるというような被害が考えられますが、これは自分のサイトの認証をどうしようとも無関係です。
    """
    とコメントいただいているように二段階認証していようがいまいが、
    他サイトへの影響を防ぐためにはソルト、ストレッチングが必要であるという認識でよろしいでしょうか。

    キャンセル

+2

二段階認証を強制すれば、例えパスワードが流出しても水際で不正ログインを防ぐことができるので、
パスワードハッシュ時のソルトやストレッチングは必要無いのでないかと思うのですが、いかがでしょうか。

対応するセキュリティ要件が違うので、同列で語るものではないです。
要件から設計をする通常のフローで実装を検討していれば、言ってることのズレが理解出来ると思います。

要件は案件によって異なるので、以下が全てではないですが、ざっくりと妄想すると

・厳格な本人確認→マルチファクタによる認証の採用
・機密情報は局所使用に限定→生パスワードの使用箇所を限定/パスワードの突合にはパスワードのハッシュ値を使用
・データ流出時のパスワード解析にかかる時間の引き伸ばし→オフラインでの解析作業を引き伸ばす(salt/ストレッチングの採用)

攻撃手法を分析していないとセキュリティ要件は作れませんし、要件がなければ設計もまともなものになりません。

参考:
政府機関等の情報セキュリティ対策のための統一基準(平成30年度版)

セキュリティ対策を検討する上でワリと網羅的に語られている資料なので読んでみると面白いですよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/18 11:06

    コメントありがとうございます。

    参考でいただいたURLは確認できていないですが、
    攻撃手法ごとにセキュリティ対策が違うというのはもちろんその通りだと思います。

    ただ、単純に考えてパスワードが流出して、オフラインでパスワードが解析されれば、そのサイトに不正ログインできると思いますが、そこで二段階認証が強制的に行われていればログインできませんよね。
    またソルトやストレッチングがかけられていればオフラインでの解析を遅らせて、不正ログインを防ぎます。
    不正ログインを防ぐという文脈においてはどちらも同列で語れないでしょうか。

    もちろん攻撃手法はこれだけではないですが、ソルトやストレッチングがオフライン攻撃におけるパスワード解析のための対策であり、パスワード解析が不正ログインのために行うものであれば、二段階認証のみあれば最終的に防げるので(他サイトへの影響を考慮しなければ)ソルト、ストレッチングは必要ないのではないかと考えました。

    キャンセル

  • 2019/10/18 11:22

    > 不正ログインを防ぐという文脈においてはどちらも同列で語れないでしょうか。

    はい。別物です。
    回答にも書きました。マルチファクタ認証を確認してみてください。

    > ソルトやストレッチングがオフライン攻撃におけるパスワード解析のための対策であり、パスワード解析が不正ログインのために行うものであれば、二段階認証のみあれば最終的に防げるので(他サイトへの影響を考慮しなければ)ソルト、ストレッチングは必要ないのではないかと考えました。

    こちらも回答のとおりです。
    別要件に対しての解であるので、そもそも意味のない検討です。

    annderber さんの紐付けであれば、パスワードのハッシュ値による比較実装すら意味を持たないです。

    攻撃手法の調査とセキュリティ要件からの設計を行ってみると良いです。

    キャンセル

checkベストアンサー

+1

こんにちは。

見ていて思ったことがあるので補足的に回答してみます。

まず、パスワードハッシュ+ソルト+ストレッチングは、DB に格納している「データ」から「生パスワード」の復元を可能な限り困難にするためのものです。
生パスワードそのまま保管はもちろん論外ですが、パスワードハッシュのみではレインボーテーブルなどにより生パスワードが復元されてしまう危険性が高いです。これを同等のサービスレベルを保ちつつ「まず復元するのは不可能だろう」というレベルにまで強固にするためのテクニックがソルト+ストレッチングなのです。

つまりどういうことかというと、
もし仮に、自サービスがハッキングを受けて個人情報流出事故に発展したとして、パスワードハッシュ+ソルト+ストレッチングが徹底されていれば「お客様のパスワードは流出していません(キリッ)」という体裁を保つことができるのです。

決してハッキングを受けることがないのであれば、生パスワードをそのまま保存していたとしても絶対に安全です。何故なら、ハッキングされないからです。
現実ではそんなことはありえませんね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/18 16:56

    まあ、そうですね。
    パスワードが漏洩すれば自サイトのサービスを真っ当に不正利用することができるため、それを踏み台にしての「別サービスに対する不正なリクエスト」ができることを言っていますね。これ自体は正しいです。
    そして、二段階認証を実装していればパスワードが漏洩しても自サイトの不正な正規利用は防げます。これも真です。
    しかし、パスワードの取得 (==自 DB への侵入) がなされたということは、全ての内部情報が攻撃者の手に渡ったという状況なので、自サイトを経由しない独立した攻撃は可能なので、あまり関係ないと思います。
    その点で、「パスワードハッシュ+ソルト+ストレッチングは (パスワードが漏洩しないため) 自サイトへの不正ログインを防ぐことができる」と「パスワードハッシュ+ソルト+ストレッチングは自サイトへの不正ログインを防ぐことが目的ではない」は両立します。
    そのため、「二段階認証を実装していれば、ソルトやストレッチングは不要」とはならないのです。「正面からの不正ログインへの対策」に限れば効果があると言えると思いますが、それだけです。

    まだ納得できない要因があるのなら、当該記事の著者が直接コメントをくれるかもしれないのでしばらく待つのも手です。

    キャンセル

  • 2019/10/18 19:24

    よくわかりました、ありがとうございます。
    徳丸さんはTwitterの方で反応してくれていました。
    他の方々も同じような回答をされていたと思いますが、
    tamotoさんのコメントが一番分かり易かったのでベストアンサーにさせていただきます。

    キャンセル

  • 2019/10/24 07:44

    私の記事を参照いただいていますが、その記事はパスワードリスト攻撃が流行る前のものです。当時、「パスワードリスト攻撃」という用語すらありませんでした。しかしながら、原理的にはあり得ることでしたので、「利用者がパスワードを使い回ししている場合の他サイトへの被害の波及」という表現で書いていました。
    その後パスワードリスト攻撃が大流行している状況のため、現在では、こちらが主目的といってよいかと思います。

    キャンセル

+1

二段階認証を使用すればパスワードをハッシュ化するときにソルトやストレッチングはいらない?

そんなことはないと思います。そもそもソルトやストレッチングは二段階認証とは関係ない話では?

ちょっと古い記事ですか、以下の記事を読んでみてください、

本当は怖いパスワードの話 (1/4)
https://www.atmarkit.co.jp/ait/articles/1110/06/news154.html

それに書いてありますが、

"基本的な前提として、ハッシュ保存されたパスワードに対するオフライン攻撃を検討する際には、ハッシュのアルゴリズムその他の情報は、すべて攻撃者にとって既知であると想定すべきだと考えます。"

・・・ということで考えたらどうでしょう? 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/18 13:00 編集

    > SurferOnWwwさんのおっしゃりたいことがいまいち読み取れていないのですが、

    例えば、あなたが運用・管理するサイトからパスワード(もちろんハッシュ化された)やハッシュのアルゴリズムその他すべての情報が漏洩して、「ソルトやストレッチングはいらない」という間違った判断でハッシュのみしかしてなかったため、簡単に元のパスワードが攻撃者に解析されてしまい、悪用されてユーザーに損害が出たら困るのでは? ソルト&ストレッチングがされていることにより解析に時間がかかれば、その時間で被害を軽減するためにできることがあるはずと思いませんか?

    > maisumakunさんと同じような意味合いで捉えてよろしいでしょうか。

    回答の「パスワードを他のサービスで使い回すということが横行している以上、自分のサービスから流出したパスワードで他のサービスに入られるというような被害が考えられます」を拝見すると同じかなという気はします。

    キャンセル

  • 2019/10/18 13:26

    やはり、流出したパスワードが他サイトで使用される危険性があるというところが問題になるんですね。
    逆に言えば二段階認証が強制されていれば、SurferOnWwwさんに紹介していただいた記事であげられている

    """
    ・利用者の権限による物品購入、送金など金銭的な被害
    ・利用者の権限(名前)による投稿、変更、削除
    ・利用者がパスワードを使い回ししている場合の他サイトへの被害の波及
    ""
    のうち上2つは守られることになりますよね。

    キャンセル

  • 2019/10/18 14:26 編集

    違います。他の回答者全員が言っておられるように、そもそもソルト&ストレッチングと二段階認証は異質な話です。

    運用・管理しているサイトから漏れた情報で元のパスワードが解析されるということは、二段階認証しているから云々とかとは関係なく、絶対的にマズくてそういうことは決してあってはならないのは分かりますか?

    例えば、あなたが運用・管理しているサイトから漏れた情報で元のパスワードが解析されて、銀行とか クレジットカード会社とか Amazon とかで不正に使われる可能性がある。そうされたらたとえそれらすべてのサイトが二段階認証を強制していたとしても、その一段階はクリアで、残りの一段階はすでにクリア済み(もしくは簡単にクリアできる)かもしれない。なので、ソルト&ストレッチングによって解析されるまでの時間を稼ぎ、被害を少しでも少なくするという話です。

    ちゃんと「ソルト&ストレッチング」をやらないと、即解析されて被害が出て、あなたに損害賠償請求が行くかもしれませんけど、どうします?

    損害賠償を請求されて、請求された相手に「自分のせいではない」とは言えないですよ。

    キャンセル

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

  • ただいまの回答率 90.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる