2011-07-05 17 views
1

Flickrの認証APIがここで説明されていますハッシュされたパスワードを保存できますか?

http://www.flickr.com/services/api/auth.spec.html

私はSSLを使用せずに、要求に署名できるように、XML-RPCベースのプロトコルのために非常によく似たものを実装しました。

それは基本的に次のように動作します:

リモート関数呼び出し

doSomething(foo='hello', bar='world') 

のために、私は名前で最初のソート引数、与える:

('bar', 'world'), ('foo', 'hello') 

を、私は文字列の連結を行います

m = "bar:world;foo:hello" 

次に秘密鍵を追加します:

m = "bar:world;foo:hello;someSecret" 

最後に、署名はメッセージmのmd5ハッシュです。

サーバでも同じ機能が呼び出された人が実際に秘密鍵を知っているかどうかをチェックします。

今のところパスワードはサーバー側にプレーンテキストで保存されています。代わりにハッシュされたパスワードを保存する方法はありますか?

私の推測によれば、md5ハッシュ関数はこれを可能にするためには加算性が欠けていると思いますが、巧妙な構造ではまだ達成できるでしょうか?

おかげで、すべての

+0

あなたのクライアントについては、flickr apiまたはクライアントとサーバーのペアについて聞かれますか?プレーンテキストのパスワードをサーバに保存したり、認証中にプレーンテキストのパスワードを送信しないようにするいくつかの認証があります。 SRP http://en.wikipedia.org/wiki/Secure_Remote_Password_Protocol – osgx

+0

あなたはHMACを使うことができる基本的な署名をしています。サーバーにクリアテキストパスワードを保存しない場合は、クライアントとサーバーの両方でmd5()(またはより強力なハッシュ(PBKDFなど)を格納し、md5(パスワード)を使用して署名と確認を行うことができます。 – osgx

+0

私の最初の懸案事項は、パスワードを送信することを避けることです(SSLなし)。このパスワードを暗号化せずにサーバに保存する必要はありません。可能であれば、同じプロトコルを使用しますが、より良いプロトコルがあれば変更できます。 ボーナスの問題は次のとおりです。現在の認証プロトコルではflickrできますか? – ascobol

答えて

1

短い答え:実質的には、いいえ。

長い答え:攻撃者がパスワードのハッシュを使用して認証できるようになったため、いずれかの端にパスワードをハッシュしても役立たない。詳細は、チャレンジレスポンス認証に関するウィキペディアの記事のthis sectionを参照してください。そこ

あなたは彼らがあなたにそれを提供するか、Zero Knowledge Password Proofとして知られ、それを保存することなく、ユーザーのパスワードを確認することができアルゴリズムです。 1つの例はSecure Remote Password Protocolです。しかし、そのようなプロトコルは複雑になる傾向があり、自分自身を実装することは複雑でおそらく賢明ではありません。

公開鍵暗号を使用し、パブリック部分を知っているユーザーの秘密鍵を発行するのが簡単な解決方法です。彼らは自分のメッセージに署名して、自分自身を認証して識別することができます。 SSL/TLSは、これの既成の実装を提供します。

1

まず、私はそのようなSHA2ファミリとして、より強力なハッシュ関数にMD5の発進を示唆しています。

しかし、上記の「someSecret」が実際にはパスワードのハッシュであるのと同じ構造を使用することはできません。これにより、ハッシュされたパスワードをストレージに保存したまま、クライアントとサーバー上で2つのハッシング操作を実行します。

私はまた、自分で作成するのではなく、実際のHMACを使用します。また、パスワードをハッシュする代わりに、妥当な量の反復でPBKDF2以上を使用してください。したがって、クライアントはHMAC(データ、PBKDF2(someSecret、1000))を実行し、サーバーはPBKDF2(someSecret、1000)を格納し、次にHMAC(data、storedResult)を実行します。

+0

PBKDF2 .. 1000が小さすぎます。現代のGPUに簡単にブルートフォースすることができます。 WPA2は4096を使用し、効果的なブルートフォース(1 GTX 295では最大25k /秒、最上位ATI http://golubev.com/gpuest.htmでは30k /秒)。 – osgx

+0

これは、ラウンド数に対する実際の推奨ではなく、ポイントを説明するための単なる例です。 – Nasko

+0

私が上でコメントしたように、両端でハッシュされたパスワードを使用するのは全く意味がありません。ハッシュ出力は、すべての目的と目的に合わせてパスワードになりました。攻撃者はハッシュを盗み、それを使って認証することができます。 –

関連する問題