夜空日和 [出張版]

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

 

スポンサーサイト


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

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


Category: 技術   Tags: ---
※ これは、「安全なパスワードのお話」ではなく、「パスワードを安全に使用するお話」です。

昨日は「パスワード」を保存する手段として「ハッシュ値」を使用することを書きました。
今日は、どの「タイミング」で行うかを考えます。

結論は、至って簡単です。




Webブラウザとサーバの間を通信するプロトコル(規約)として「Hypertext Transfer Protocol」があります。
アドレスの先頭に付く「http://~」が、このプロトコルで通信するよ!って明示してる訳です。

さて、このプロトコルは「全ての通信情報を平文 (そのまま) で送る」という特徴があります。
つまり、「ユーザにパスワードを打ってもらう → サーバに送る」 なんてやったら、通信経路でバレちゃう訳です。
( 実際、パケット監視してると、それらしいのが見つかります )

さて、パスワードをハッシュ値にする理由は「パスワードを隠蔽するため」が1つでした。
サーバが攻撃されてDBの中身が全て奪われても、ユーザのパスワードが分からなければ、他サービスへの影響を防げるという訳です。

では、パスワードはどのタイミングでハッシュ化すれば良いのでしょうか?


方法1. https を使用して、パスワードをそのまま送信 → サーバでハッシュ化
最も単純な方法で、最も安全な方法です。
「Hypertext Transfer Protocol over Secure Socket Layer」は、その名前の通りセキュリティを考慮した通信プロトコルです。
httpsでは、通信経路上に流れるデータは暗号化されています。そのため、第3者が通信内容を盗聴しても、内容は暗号化 (一般的には、公開鍵暗号方式) されているため、中身を知ることは困難です。
つまり、ブラウザからサーバへ「生のパスワード」をそのまま渡しても、安全性が高いということです。
この場合、「パスワードのハッシュ化」はサーバで行うことになります。
( ゆえに、一般的なWebサービスのログイン画面は https な訳です )


方法2. javascriptで暗号化して送信 → サーバでハッシュ化
こちらはトリッキーで、そして出来ればやってほしくない方法です。
不運にも https が使えない環境の場合、生のパスワードを通信経路上に流すワケにはいきません。
この場合、httpsの機能 (送信データの暗号化) を実装する必要があります。
ただし、気張る必要はありません。
javascriptを使って、送信ボタンのイベントを受け取り、送信内容を全て暗号化してしまえば良いのです。
ただし、暗号化手順は全て公開されてしまうため、暗号化鍵復号化鍵 は違う物を用意する必要があります。
( javascriptのコードは、HTMLと同じで、誰でも閲覧可能ですから )

このような非対称性の鍵を使う暗号方式こそ、言わずもがな、公開鍵暗号方式です。
暗号化鍵は、ページリロードの度にサーバから (one-time-keyとして) 渡されるのが望ましいです。
こうすれば、暗号化したデータの中身を知れるのは、鍵を発行したサーバのみに限定できます。
この場合でも、「パスワードのハッシュ化」はサーバで行うことになります。


さて、2通りの方法を示してみました。
この中で、なぜ「パスワードのハッシュ化をブラウザ側で行う」という選択肢が無いのでしょうか?

理由は単純です。
「通信経路を盗聴すれば、ハッシュ値が見れる → なりすましが可能」 だからです。

パスワードこそバレませんが、ハッシュ値でユーザ認証が通ってしまうため、本末転倒です。
そもそも、認証に必要な情報を生のまま流すということ自体が言語道断なワケですが。


・・・ということで、長々と講釈を垂れて来ましたが。
結論として httpsを使え! とだけ書いておきます。
これがないと、まず安全性なんてゴミと等価になりますから。
その上で、個人情報などをどうやって守るか (暗号化するか、ハッシュ化するか) を設計すれば良いと思います。
重要なのは 「漏らさないこと」「漏れても限定的被害にすること」 です。
ようするに、履かせるおむつムーニー○ンです。


パスワードは、個人情報に勝るとも劣らない情報です。
そして、パスワードのハッシュ化は、パスワードを守る手段の1つに過ぎません。
https通信も、同じです。

もう一度、パスワードを安全に使用する方法を、考えてみたらどうでしょうか?


スポンサーサイト


Comments

Leave a Comment



10 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 - - - -

09

11


 
プロフィール

ひでたそ

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

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

Archive   RSS   Login

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