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

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

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

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

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

Q&A

解決済

1回答

2001閲覧

レインボーテーブル対策などに使われるソルトの意味について

annderber

総合スコア98

セキュリティー

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

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

0グッド

1クリップ

投稿2019/10/11 02:26

お世話になります。

現在セキュリティの勉強をしているのですが、
レインボーテーブル対策によくソルトの使用が推奨されていますが、
ソルトの有用性が完全に理解できていません。

質問1

ソルトは基本的に1つのパスワードに紐付き、ソルト自体は秘匿性のあるデータではなく、
例えばユーザーテーブルなどがあったらそこにID、PASS,ソルトなどが1つのレコードとして、登録して運用してることが多いと思うのですが、
世界中のシステムの内情を知っている訳ではないので、実際にどのように管理することが多いのか教えてください。
ファイル?別DBで管理?

質問2

ユーザーテーブルにパスワードとソルトが1つのレコードで保存されているとき、
SQLインジェクションなどでパスワードが流出したの場合、パスワードと一緒にソルトも流出すると思います。
ネットの記事を読むとソルトの要件として十分の長さがある推測困難な文字列であるべきというような記述をよく見ますが、
上記のようなテーブル構成の場合、推測困難であるかどうかは問題ではないと思いますが、この認識で間違いないでしょうか。
または質問1でしたようにパスワードとソルトを同じDBで管理していないことを前提にした話なのでしょうか。

質問3

ユーザーテーブルにパスワードとソルトが1つのレコードで保存されていて、パスワード、ソルトが流出した場合でも
レインボーテーブル対策に有効であり、これは事前に用意してあるレインボーテーブルが使用できないからであるという記事をよく見ます。
例えば100万件のユーザー情報が流出した場合、すべてのユーザーのパスワードを解析するのに100万パターンのレインボーテーブルを作成する必要があり、
これはほとんど不可能であるという事らしいですが、全てのパターンのレインボーテーブルを作成しなくても数件分でも作成すれば解析自体はできると思うのですが、
いかがでしょうか。そもそも1レインボーテーブル作成時間がどれくらいかかるか分からないのですが、どの程度かかるものなのでしょうか。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問1 実際にどのように管理することが多いのか教えてください。

たとえば、PHPのpassword_hash()でハッシュ化すると、ソルトとハッシュ値をつないだ文字列が生成します(PHPマニュアル)。これをそのままデータベースに入れることが多いです。

質問2 上記のようなテーブル構成の場合、推測困難であるかどうかは問題ではないと思いますが、この認識で間違いないでしょうか。

各ユーザーごとにバラバラであれば、予測不能かどうかは問題となりません。全員に同じソルトだった場合、同じパスワードが同じハッシュ値となってしまいます。

質問3 そもそも1レインボーテーブル作成時間がどれくらいかかるか分からないのですが、どの程度かかるものなのでしょうか。

パスワードの長さに大きく依存しますが、ものによっては年単位でかかることもあります。

投稿2019/10/11 02:32

編集2019/10/11 02:43
maisumakun

総合スコア145121

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

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

annderber

2019/10/11 02:46

コメントありがとうございます。 数年もかかるんですか。 当然文字列長によっても変わると思いますが、年単位というのはどの程度の規模なんでしょうか。 最近はGPUを何台も並べて高速化が進んでいるという話も聞きますが、それでもそんなにかかるものなんですね
maisumakun

2019/10/11 02:55

レインボーテーブルを作るのにかかるコストは、同じ個数だけのパスワードを総当り攻撃するコスト+αとなります。たとえば、ASCIIで12桁のパスワードはざっと4.7*10^23通りで、1秒に1億通り試せても1億年以上かかります。 使い回せないのであればテーブル化する価値はありません(1回テーブルを作れば、同じアルゴリズムの攻撃に使い回せるのがテーブル化の意味合いです)。
annderber

2019/10/11 03:02

wikiでも一般的に8文字以上のレインボーテーブルは利用できるようになっていないとありますね。 確かに使い回せなければ作成する意味がなく総当たり攻撃と同じ意味になりますね、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問