夜空日和 [出張版]

星を見上げながら、今日を語ってみようか

 

スポンサーサイト


Category: スポンサー広告   Tags: ---
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

パスワードの安全をどうやって守る?


Category: 技術   Tags: ---
飽き性なので、またテーマ変えました。

TLで見つけた記事ですが・・・
徳丸浩の日記: PHP5.3.7のcrypt関数に致命的な脆弱性(Bug #55439)

なんと、PHP 5.3.7 (現在最新版) で、ハッシュ関数に致命的な問題があるという記事。
PHP 5.3.6 にロールバックすれば良いって書いてるから、最新版ではないサーバは対象外みたい。

これ、開発者にとっては顔面蒼白物です。
もし、今使ってる PHP がこんな仕様だったら・・・考えただけで嫌になります。

webサービス開発者の1人として、このハッシュ関数とパスワードの保存の関係を、ちょっと考えてみたいと思います。




まず、ハッシュ関数とは → wikipedia ← ということです。
要するに「文字列をポキポキ折って短くして、それをごちゃごちゃ混ぜた文字列」を返す関数です。
( 数学的には、任意長桁数 を受け取り 固定長桁数 を出力する一方向性関数 )

さて、webサービスで登録ユーザを扱いたい場合、ユーザ名前とパスワードをサーバに保存する必要が出てきます。
しかし、ここで問題になるのが 「パスワードをどうやって保存するか?」 です。

単純に保管しても問題無いでしょう・・・サーバが攻撃されない限りは。
悲しいことに、サーバは四六時中攻撃されてます。酷い場合は乗っ取られたりします。
乗っ取られなくても、SQLインジェクションを仕込まれちゃうかもしれません。
つまり、ユーザのパスワードって簡単に「見られちゃう」可能性が高いんです。 *1

生のパスワードを保存しないで、どうやってユーザ認証するか?
その時に活躍するのが、一方向性関数 = ハッシュ関数 という訳です。
この関数は、次の特徴があります。
  • 出力から入力を見破りにくい (一方向性)
  • 出力が重複しにくい (衝突困難性)
ハッシュ関数は「任意桁数 → 固定桁数」にするため、違う入力で同じ出力が得られる可能性があります。
しかし、この確率はかなり低い (ことが保証されている) ので、気にする必要はありません。

重要なのは 出力(ハッシュ値)を見ても、入力(パスワード)が解析困難だということ!

つまり、パスワードを保管する時は、パスワードのハッシュ値を保管すれば良いという訳です。*2
ハッシュ値がばれたって、ほかサイトに入れる保証はありませんからね。

このように、ハッシュ関数は webサービス を構成する上で必要不可欠な存在な訳です。
逆を言うと、ハッシュ関数に問題があると、webサービスの安全性が瓦解してしまうのです。

上記リンクのバグはハッシュ関数の「衝突困難性」が保証されないバグでした。
これは「違うパスワード = 同じハッシュ値」になってしまうので、誰でも「なりすまし」が出来てしまうバグでした。
・・・考えただけでも、サービスを閉じたくなりますね。

では、「パスワード」をどのタイミングで「ハッシュ値」にするのでしょうか?
これは面白い問題です。次回のお話に回したいと思います。
け、決して書くのに疲れた訳じゃないからね!///


*1
まるで 「敵は城壁の向こうにあり!」見たいに書いていますが、本当の敵は「お城の中」に居るかもしれませんよ?
生のパスワードを保存するなんて言語道断なんです。

*2
同じハッシュ関数の出力から パスワード がバレてしまう可能性があるため、サービス固有の文字を付加することもあります。それを通称「お塩 (salt)」と呼びます。 PHP 5.3.7 では、暗号化に salt しか使われないのが問題になってますが・・・

スポンサーサイト


Comments

Leave a Comment



08 2017
SUN MON TUE WED THU FRI SAT
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

07

09


 
プロフィール

ひでたそ

Author:ひでたそ
Comment:
現役大学生で天文好き。
今日もどこかで、上を見ながら歩いています。

 
 
 
最新トラックバック
 
 
検索フォーム
 
 
 
ブロとも申請フォーム
 
QRコード
QRコード
 

Archive   RSS   Login

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。