平文パスワードの再送問題について

MySoftbankの「パスワード確認」機能がパスワード再発行ではなく過去に設定したパスワードを平文で再送してきたことについて愚痴ったら、ツッコミが入った件。 論点はハッシュから元パスワードが復元できるか?という話になってます。 この点に関してはどうも@kawazの認識に間違いがあったようです。 今回はこの分野について勉強しなおすよい機会になりました。 続きを読む
16
Yoshiaki Kawazu🐸ずん @kawaz

うは、MySoftbankのパスワード忘れたのでパスワード確認から送信してもらったらSMSに「昔設定した覚えのあるパスワード」が再送されてキター!平文保存確定かよ、そこは再発行して欲しかった…orz

2010-12-09 16:55:37
tomokisanaki @tomoki0sanaki

なんで深謀遠慮しないかなぁ~。確かに平文かも知れないが、暗号化ぐらいしているかも知れないでしょうに。 QT @kawaz 平文保存確定かよ、そこは再発行して欲しかった…orz

2010-12-09 17:26:38
tomokisanaki @tomoki0sanaki

てか、「パスワードリマインダしてます」ってステータスをパブリックにするのは、危険じゃないのか?・・・数日経ってから、「先日、パスワードリマインダしたんだけど・・・」と呟く方がリスクは減少していると思うが・・・まぁ、どうでもいいけど・・・

2010-12-09 17:30:34
Yoshiaki Kawazu🐸ずん @kawaz

@tomoki0sanaki 仮にサーバ側で暗号化されているとして復号できる暗号化に何の意味が?ユーザが入力したパスワードは例え管理者だろうと復元できないよう暗号ではなくハッシュ化して保存されるべきでしょう。

2010-12-09 17:47:47
徳丸 浩 @ockeghem

@kawaz @tomoki0sanaki 単にハッシュ値で保存するくらいなら、暗号化した方がよっぽとマシだと思いますね。ハッシュ値のパスワードから元パスワードを復元するテクニックがありますので。PCI DSSの要求も、ハッシュではなく暗号化(ハッシュでもよいのだとは思うけど)

2010-12-09 17:52:05
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem @tomoki0sanaki 同じハッシュ値になるパスワードを生成することは可能でも、ハッシュ値から元パスワードを復元出来るという認識は間違っています。例えばあらゆるデータを0か1の二値に落とすハッシュ関数を想像してもらえば復元できないことは明らかでしょう。

2010-12-09 18:23:13
徳丸 浩 @ockeghem

@kawaz @tomoki0sanaki パスワード暗号化の主な意味は、SQLインジェクションなどでパスワードが漏えいした場合の悪用防止ですよね。暗号鍵がもれなければ、暗号化でも目的は達します。管理者には暗号鍵を教えなければよい

2010-12-09 18:01:19
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem @tomoki0sanaki 勘違いされているようです。まず話の発端はMySoftbankのパス確認でパスワードが再発行ではなく過去の設定の再送であったことです。これが出来るということはサーバ上に復号可能な状態でユーザパスが保存されているということです。(続く

2010-12-09 18:23:55
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem @tomoki0sanaki ユーザのパスワード保存には不可逆な暗号(ハッシュ)化アルゴリズムを用いるべきで、サーバ側で復号化可能な暗号化では「SQLインジェクション等で(暗号化パスワードのみが)漏洩した場合」のリスクしか防げず管理者による悪用リスクが残ります

2010-12-09 18:27:23
徳丸 浩 @ockeghem

@kawaz @tomoki0sanaki 単純なハッシュだと、総当たり攻撃、辞書攻撃、レインボーテーブルなどでパスワードが復元できます

2010-12-09 18:29:38
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem @tomoki0sanaki ちなみに僕はMySoftbankさんには普通にMD5Cryptとかで保存してもえればそれで十分なんですが。プロフィールを拝見するとお二方ともセキュリティを生業とされているようなので、その意義は理解して頂きたいところです…。

2010-12-09 18:38:20
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem @tomoki0sanaki いや、復元できませんよ(^^; それで得られるのは元のパスワードの可能性がある文字列なだけです。元のパスワードを一意で復元できるようなものを普通はハッシュ関数とは言わないと思います。http://bit.ly/hbWv2f

2010-12-09 18:45:02
徳丸 浩 @ockeghem

@kawaz @tomoki0sanaki 辞書攻撃などでハッシュ値が一致したら、まず間違いなく元のパスワードでしょう。そうでないと、衝突困難性が足りない悪質なハッシュ関数ということになります。それと、ハッシュ値が一致すれば、悪用には十分です

2010-12-09 18:47:44
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem 衝突困難性が足りない悪質なハッシュ関数を持ち出してきたのはそちらだと思うのですが…。ハッシュ値が一致すれば悪用には十分とのことですが、それはそのサービス内だけに被害が留まってくれますよね、それで十分なのです。僕は初めからハッシュして欲しいと言っています。

2010-12-09 18:59:54
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem 続き)平文だろうと可逆暗号化されていようと復号可能な形でパスワードを保存されている場合は、それ+必要ならアルゴリズムとセットで元パスワードが割れてしまいます。それは同一パスワードを複数サイトで利用していた場合にそちらも破られる等の大きなリスクにもなります。

2010-12-09 19:07:49
徳丸 浩 @ockeghem

@kawaz ハッシュ値からでもパスワードを知る手段はあるということです。 http://j.mp/eVydJG は、@ntsuji さんによるハッシュ値からのパスワード復元の優れた記事です。ご参考までに

2010-12-09 20:47:54
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem @ntsuji その例で得られたパスワードはあくまで同じハッシュ値になる文字列の一つであって、元のパスワードとは限らないでしょう(偶然オリジナルと一致する可能性はありますが)。「AならばB」が正しくても「BならばA」が正しいとは限らないという簡単な論理です。

2010-12-09 21:53:47
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem なんかもうSoftbankのパスワード再送問題とはかけ離れた場所での問答になってますが…。

2010-12-09 21:55:45
徳丸 浩 @ockeghem

私のどのツイートですか? RT @kawaz: 衝突困難性が足りない悪質なハッシュ関数を持ち出してきたのはそちらだと思うのですが…

2010-12-09 20:42:27
Yoshiaki Kawazu🐸ずん @kawaz

これについては僕の勘違いでしたすみません。 RT @ockeghem : 私のどのツイートですか? RT @kawaz: 衝突困難性が足りない悪質なハッシュ関数を持ち出してきたのはそちらだと思うのですが…

2010-12-09 23:00:57
徳丸 浩 @ockeghem

.@kawaz MD5は元々署名に使うものですよ。そんなに簡単にハッシュ値が衝突する平文があっては困るでしょう。MD5は128ビット、パスワードはせいぜい80ビット程度で、十分に余裕はありますし。

2010-12-09 23:03:49
Yoshiaki Kawazu🐸ずん @kawaz

@ockeghem 今回の流れで改めてパスワードの安全性やクラック周りについて調べたところどうやら僕の認識の方に誤りがあったようです。拙い知識と思い込みで批判してしまっていたようですみませんでした。

2010-12-09 23:17:06
徳丸 浩 @ockeghem

@kawaz 理解し合えたようで嬉しいです

2010-12-09 23:20:24
Yoshiaki Kawazu🐸ずん @kawaz

ところで、一番最初のツイートのパスワードが平文で届く件についてはSMSじゃなくてSNSの間違いです、1という番号アドレスから届く。ところでSNSのネットワークは詳しくないんだがどれくらい安全なものだろうか? http://togetter.com/li/77080

2010-12-10 00:31:12