🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
セキュリティー

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

Q&A

解決済

4回答

833閲覧

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

annderber

総合スコア98

セキュリティー

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

0グッド

3クリップ

投稿2019/10/17 09:01

お世話になります。

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

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

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

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

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

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

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

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

guest

回答4

0

二段階認証を強制すれば、例えパスワードが流出しても水際で不正ログインを防ぐことができるので、

パスワードハッシュ時のソルトやストレッチングは必要無いのでないかと思うのですが、いかがでしょうか。

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

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

投稿2019/10/17 09:04

maisumakun

総合スコア145975

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

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

annderber

2019/10/18 00:22

コメントありがとうございます。 ”いえ、パスワードハッシュ時のソルトやストレッチングは、自サイトの不正ログインを防ぐためのものではそもそもありません。” とのことですが、これはなぜでしょうか。ソルトストレッチングは単純にパスワードのオフラインでの解析を防ぐ(遅らせる)ために使用するもので、自サイトに不正侵入されるのを遅らせ対策を打つまでの時間を稼ぐものだという認識だったのですが、これは間違いということでしょうか。
maisumakun

2019/10/18 00:35 編集

> 自サイトに不正侵入されるのを遅らせ対策を打つまでの時間を稼ぐものだという認識だったのですが、これは間違いということでしょうか。 はい、パスワードのハッシュ値が流出したということは、その時点で他のデータも同様に流出している危険性が大きく、もはや「自サイトのログイン」云々を考えるレベルの話ではなくなっていることが考えられます。そのような場合にも、「せめてパスワードの元の値だけは解析を困難にする」という、最悪の事態を想定しての対策です。
annderber

2019/10/18 02:09

””” パスワードのハッシュ値が流出したということは、その時点で他のデータも同様に流出している危険性が大きく、もはや「自サイトのログイン」云々を考えるレベルの話ではなくなっていることが考えられます。 ””” とありますが、個人情報がすべて流出してしまっても不正ログインされ、ECサイトで商品を購入されたり、Twitterで他人になりすましてツイートされたりという問題があるとおもうのですが
maisumakun

2019/10/18 02:27 編集

> 個人情報がすべて流出してしまっても不正ログインされ、ECサイトで商品を購入されたり、Twitterで他人になりすましてツイートされたりという問題があるとおもうのですが それはパスワードを守る問題とは別件です。パスワードをハッシュ化しようがしまいが、自サイトに二段階認証があろうがなかろうが、データベース流出時の個人情報からの被害は何も変わりません。
annderber

2019/10/18 02:38

しつこくても申し訳ないのですが、 例えば別の方のコメント(SurferOnWwwさん)に紹介していただいた記事で内では """ パスワードを特別扱いする理由は何でしょうか。パスワードが漏えいしている状況では、ほかの個人情報も一緒に漏えいしている可能性が高いわけですから、個人情報保護のためというわけではなさそうです。 しかし、パスワードが漏えいすると、以下のような被害が利用者に及ぶ可能性があります。 ・利用者の権限による物品購入、送金など金銭的な被害 ・利用者の権限(名前)による投稿、変更、削除 ・利用者がパスワードを使い回ししている場合の他サイトへの被害の波及 このためパスワードについては、特別な保護を講じる場合が多いのです """ とあり、その後具体的なオフライン攻撃の手法とそれの対策のためのソルト、ストレッチングの話へと続いてくのですが、これを見る限りではオフライン攻撃によってパスワードが漏れた場合、利用者になりすましての不正利用と他サイトへの影響を防ぐための方法の1つとしてソルト、ストレッチングの話をしていると思ったのですが、違うのでしょうか。
maisumakun

2019/10/18 02:44 編集

> 利用者になりすましての不正利用と他サイトへの影響を防ぐための方法の1つとしてソルト、ストレッチングの話をしていると思ったのですが、違うのでしょうか。 それは正しいです。 通常は元の値が必要な名前や住所などの個人情報と違って、パスワードはサービス提供側でももとの値を必要としないので、復元困難な形で記録できるしそれが望ましい、という話です。
annderber

2019/10/18 05:03

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

2020/01/25 06:03 編集

> ソルト、ストレッチングは自サイトの不正ログインを防ぐための手段であるという認識は間違いではないってことですよね。 結果的にそういう効果もあるのかもしれませんが、それは主たる目的ではありません。
guest

0

二段階認証を強制すれば、例えパスワードが流出しても水際で不正ログインを防ぐことができるので、

パスワードハッシュ時のソルトやストレッチングは必要無いのでないかと思うのですが、いかがでしょうか。

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

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

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

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

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

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

投稿2019/10/18 01:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

annderber

2019/10/18 02:06

コメントありがとうございます。 参考でいただいたURLは確認できていないですが、 攻撃手法ごとにセキュリティ対策が違うというのはもちろんその通りだと思います。 ただ、単純に考えてパスワードが流出して、オフラインでパスワードが解析されれば、そのサイトに不正ログインできると思いますが、そこで二段階認証が強制的に行われていればログインできませんよね。 またソルトやストレッチングがかけられていればオフラインでの解析を遅らせて、不正ログインを防ぎます。 不正ログインを防ぐという文脈においてはどちらも同列で語れないでしょうか。 もちろん攻撃手法はこれだけではないですが、ソルトやストレッチングがオフライン攻撃におけるパスワード解析のための対策であり、パスワード解析が不正ログインのために行うものであれば、二段階認証のみあれば最終的に防げるので(他サイトへの影響を考慮しなければ)ソルト、ストレッチングは必要ないのではないかと考えました。
退会済みユーザー

退会済みユーザー

2019/10/18 02:22

> 不正ログインを防ぐという文脈においてはどちらも同列で語れないでしょうか。 はい。別物です。 回答にも書きました。マルチファクタ認証を確認してみてください。 > ソルトやストレッチングがオフライン攻撃におけるパスワード解析のための対策であり、パスワード解析が不正ログインのために行うものであれば、二段階認証のみあれば最終的に防げるので(他サイトへの影響を考慮しなければ)ソルト、ストレッチングは必要ないのではないかと考えました。 こちらも回答のとおりです。 別要件に対しての解であるので、そもそも意味のない検討です。 annderber さんの紐付けであれば、パスワードのハッシュ値による比較実装すら意味を持たないです。 攻撃手法の調査とセキュリティ要件からの設計を行ってみると良いです。
guest

0

ベストアンサー

こんにちは。

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

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

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

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

投稿2019/10/18 02:27

tamoto

総合スコア4252

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

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

annderber

2019/10/18 04:32

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

2019/10/18 05:48

「これはありそう」ではなくて、「それしかない」なんです。 「パスワードハッシュ+ソルト+ストレッチングで保護したデータが流出した状況」というのを想像してみて下さい。 それは端的に言って「自サイトの内部情報全てが奪われた後」ということを意味するので、もう「自サイトへの不正ログイン」ができるできないなんてレベルではないんです。 この段階で考えることは「奪われたデータによって (外部サービスに波及する) 二次被害がどれだけ発生するか」という点です。 そこで自信を持って「パスワードは流出していません (==二次被害は防いでいます)」と言えるかどうかに関わるのです。 ここで「二次被害発生しちゃいますごめんなさい」なんて言ったら損害賠償ですね。 パスワードハッシュ+ソルト+ストレッチングは、「自サイトへの不正ログイン」を防ぐものではないのです。
annderber

2019/10/18 08:20 編集

うーん 質問内容にも書いていますが二次被害を防ぐためというのはわかるんです。 ただ >パスワードハッシュ+ソルト+ストレッチングは、「自サイトへの不正ログイン」を防ぐものではないのです。 というのは他の方の回答にもコメントしたのですが、 SurferOnWwwさんが紹介してくれた記事で """ パスワードを特別扱いする理由は何でしょうか。パスワードが漏えいしている状況では、ほかの個人情報も一緒に漏えいしている可能性が高いわけですから、個人情報保護のためというわけではなさそうです。 しかし、パスワードが漏えいすると、以下のような被害が利用者に及ぶ可能性があります。 ・利用者の権限による物品購入、送金など金銭的な被害 ・利用者の権限(名前)による投稿、変更、削除 ・利用者がパスワードを使い回ししている場合の他サイトへの被害の波及 このためパスワードについては、特別な保護を講じる場合が多いのです """ という記載があって、その後具体的なオフライン攻撃の手法とそれの対策のためのソルト、ストレッチングの話へと続いていきます。 被害項目の上2つの内容は自サイトに不正ログインされて不正利用されることを言っていると思うんですが
tamoto

2019/10/18 07:56

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

2019/10/18 10:24

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

2019/10/23 22:44

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

0

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

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

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

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

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

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

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

投稿2019/10/17 09:38

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

annderber

2019/10/18 00:28

コメントありがとうございます。 ”そんなことはないと思います。そもそもソルトやストレッチングは二段階認証とは関係ない話では?” maisumakunさんの方でも同じようなコメントをしたのですが、 私の認識ではソルトやストレッチングはパスワード流出の際にパスワードを解析して自サイトへの「不正ログイン」を防ぐ(または遅らせる)ために使用するもので、同じく「不正ログイン」を防ぐ二段階認証を使用すればソルトやストレッチングは必要ないと考えたのですが、この認識が間違いということでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/18 00:36 編集

紹介した記事は読んでいただけたでしょうか? 回答に一部抜粋しましたが「オフライン攻撃」が問題なのです。まず記事を読んでいただいてからの方が話が通じやすいと思いますので、もし読んでなければ、まずは記事を読んでください。
annderber

2019/10/18 01:10 編集

一通り読ませていただきました。 オフライン攻撃が問題だというのは分かります。 SurferOnWwwさんのおっしゃりたいことがいまいち読み取れていないのですが、 maisumakunさんと同じような意味合いで捉えてよろしいでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/18 04:02 編集

> SurferOnWwwさんのおっしゃりたいことがいまいち読み取れていないのですが、 例えば、あなたが運用・管理するサイトからパスワード(もちろんハッシュ化された)やハッシュのアルゴリズムその他すべての情報が漏洩して、「ソルトやストレッチングはいらない」という間違った判断でハッシュのみしかしてなかったため、簡単に元のパスワードが攻撃者に解析されてしまい、悪用されてユーザーに損害が出たら困るのでは? ソルト&ストレッチングがされていることにより解析に時間がかかれば、その時間で被害を軽減するためにできることがあるはずと思いませんか? > maisumakunさんと同じような意味合いで捉えてよろしいでしょうか。 回答の「パスワードを他のサービスで使い回すということが横行している以上、自分のサービスから流出したパスワードで他のサービスに入られるというような被害が考えられます」を拝見すると同じかなという気はします。
annderber

2019/10/18 04:26

やはり、流出したパスワードが他サイトで使用される危険性があるというところが問題になるんですね。 逆に言えば二段階認証が強制されていれば、SurferOnWwwさんに紹介していただいた記事であげられている """ ・利用者の権限による物品購入、送金など金銭的な被害 ・利用者の権限(名前)による投稿、変更、削除 ・利用者がパスワードを使い回ししている場合の他サイトへの被害の波及 "" のうち上2つは守られることになりますよね。
退会済みユーザー

退会済みユーザー

2019/10/18 09:11 編集

違います。他の回答者全員が言っておられるように、そもそもソルト&ストレッチングと二段階認証は異質な話です。 運用・管理しているサイトから漏れた情報で元のパスワードが解析されるということは、二段階認証しているから云々とかとは関係なく、絶対的にマズくてそういうことは決してあってはならないのは分かりますか? 例えば、あなたが運用・管理しているサイトから漏れた情報で元のパスワードが解析されて、銀行とか クレジットカード会社とか Amazon とかで不正に使われる可能性がある。そうされたらたとえそれらすべてのサイトが二段階認証を強制していたとしても、その一段階はクリアで、残りの一段階はすでにクリア済み(もしくは簡単にクリアできる)かもしれない。なので、ソルト&ストレッチングによって解析されるまでの時間を稼ぎ、被害を少しでも少なくするという話です。 ちゃんと「ソルト&ストレッチング」をやらないと、即解析されて被害が出て、あなたに損害賠償請求が行くかもしれませんけど、どうします? 損害賠償を請求されて、請求された相手に「自分のせいではない」とは言えないですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問