2010年9月16日木曜日

httpsを使わずに暗号化通信 with aSSL

「個人情報やり取りするのに平文通信は危ないよね。」という、並のセキュリティ意識は付いてきた夏の日。
でも、httpsプロトコル使うと、SSLサーバ証明書の確認とかでユーザ(クライアント)を煩わせちゃいますよね。特に個人で運営しているWebサーバの場合。

でも、よく考えると暗号化通信にSSLサーバ証明書は必要ないはず。
「証明書がなければ暗号化通信してもそのサーバは信用できない」などとよく聞きますが、これはあくまで一部のユーザの言い分です。
Webサーバを構築する側からしたら、「自分のサーバへ通信しているユーザの個人情報は絶対に盗聴されたくない」というような要望もあっておかしくないはず。

そんな風に考えたので、Web素人の僕はTwitterでフォロワーのみなさまにお知恵を拝借。
すると30分ほどで有力なお答えが!

aSSLというものが上記の要望をそのものずばり叶えてくれそうです。

こいつの仕組みは、
1. The browser calls the server to start the process.

2. The server returns its RSA modulus and the public exponent.

3. The browser generates a random exchange 128-bit key, encrypts it using the server public key and passes the encrypted exchange key to the server.

4. The server receives this encrypted 128-bit exchange key, decrypts it with its private key and, if the result is ok, returns the session duration time.

5. The browser receives the session duration time and sets a timeout to maintain alive the connection.
だそうです。

かるーく和訳すると、
  1. サーバがクライアントに公開鍵(A)を渡す
  2. クライアントが個人情報などを共有鍵(B)で暗号化し、共有鍵(B)と共にサーバに送信。この際共有鍵(B)は公開鍵(A)で暗号化
  3. サーバは受け取った共有鍵(B)を、公開鍵(A)のペアの秘密鍵(A')で復号化。復号化された共有鍵で個人情報を復号化する
って感じですかね。
まだ使ってないのでなんとも言えませんが。

今度作る予定のWebアプリでは、勉強がてらセキュリティにこだわってみたいと思います。
aSSLは絶対取り入れたいですね。

関係ないけど、AES 128-bit にはインターンで作ったネタアプリでお世話になりましたw

0 件のコメント:

コメントを投稿