2010年9月23日木曜日

httpsを使わずに暗号化通信 with aSSL 〜結局aSSL使わず解決w〜

前回の記事を書いた時点できっつい予感はしてたんですが、やはりaSSLのPHP版は動かすに至りませんでした。

原因は全然掴みきれてませんが、PHPの環境構築な可能性が一番高い気がしてます。

しかし、所望の暗号化通信自体には成功しました。
今回はjCryptionというライブラリを使用しました。

こいつもaSSLと同じようなものなんですが、jQueryに依存している点、Javascript+PHPのサンプルが文句なしに動く点が違いましたw

今回はこいつの解説とかを特に行ったりするわけではないですが、 ライブラリに付属してくるサンプルが小さくて解りやすくてすぐ動くので、導入はそこまで大変ではないはずです。

おかげさまで、ユーザにメールアドレスやらパスワードやらを送信してもらう際に、暗号化してデータをPOSTすることが可能になりました。


こんな感じで普通にボタンをクリックすると、wiresharkで見たときに、、


こんな感じで、
$_POST['email] === 'someone@somewhere.com'
$_POST['password'] === 'secret'
であることがモロばれです。

そこでjCryptionを使ってやると・・・



メールアドレスもパスワードも、全部 $_POST['jCryption'] という変数に暗号化して収められていることが分かります。

あとはこいつをPHP側で(サンプル通りに)復号化してやれば、目的達成というわけです。


しかしjQryptionにたどり着くまでに色々なライブラリを試しては挫折しを繰り返し、今日はほぼ一日暗号化に費やしてしまいました。非リア乙。

あとは今後このライブラリ周りで改善していきたいことを書いていって本日の記事を締めくくりたいと思います。


  1. こちらで指摘されているとおり、セッションで鍵情報をやり取りするのはよろしくない
  2. 暗号化はRSAの2048bitだが、さすがに処理が重い。ライブラリのソースいじってビット数をもう少し落としたい

0 件のコメント:

コメントを投稿