スポンサードリンク

JavaScriptを使ってセキュアなログインを実現する MD5(Digest)認証

Webアプリで、SSL を使わなくてもセキュアなログインは実現できないものか? と調べていたら、Digest認証(MD5認証)なる方法を見付けたのでメモメモφ(..)。

前提条件としては、ユーザーのIDとパスワードのハッシュ文字列(MD5でハッシュしたもの)を、予めサーバー側に保存しておきます。

実際のデータのやりとりは、以下のとおりになります。

1.クライアント
ⅰ.サーバーに対し、ログインページをリクエスト
2.サーバー
ⅰ.クライアントにランダムな文字列(nonce)を埋め込んだログインページを返す
3.クライアント
ⅰ.ユーザーが入力したパスワードからハッシュ文字列(cMd5pw)を作成
ⅱ.ユーザーが入力したID(id)と、 cMd5pw, nonce からハッシュ文字列(response)を作成
 response = MD5(cMd5pw + nonce + id)
ⅲ.id, nonce, response をサーバーに送信
4.サーバー
ⅰ.クライアントから送られてきた id, nonce と、サーバーに予め格納されているパスワードのハッシュ文字列(md5pw)から、新たにハッシュ文字列(reResponse)を作成
 reResponse = MD5(md5pw + nonce + id)
ⅱ.クライアントから送られてきた response とサーバー側で作成した reResponse を比較して、一致すれば認証成功!

この方法なら平分のパスワードはおろか、ハッシュ化されたパスワードのやりとりもありませんし、サーバーに平文のパスワードを保存しておく必要もないので、パスワードの保護という点においてはかなり強そうです。

参照リンク
 ・Digest認証 - Wikipedia
 ・HTTP クライアントを作ってみよう(6) - Digest 認証編 -

MD5を計算するJavaScriptライブラリ
 ・md5.js (mitsunari@cybozu labs)

関連エントリー
 ・JavaScriptでMD5を計算するライブラリ 「md5.js」

スポンサードリンク
コメント
Verify your Comment
Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

コメントを投稿
トラックバック

このページのトラックバックURL:
http://www.typepad.com/services/trackback/6a01310f1f31c0970c01676344aa44970b

このページへのトラックバック一覧 JavaScriptを使ってセキュアなログインを実現する MD5(Digest)認証:


プロフィール


  • 書いてる人:夢界 陸

    名古屋在住のおっさん。
    プログラミングやガジェットの話など、 日々の興味を徒然と綴っています。



    Twitterやってます @mukairiku



    運営サイト
    www.mukairiku.net

アクセスランキング


ブログ内検索

Licenses

  • Creative Commons License

OTHER

  • このブログのはてなブックマーク数

    ブログパーツ
Blog powered by TypePad

スポンサードリンク