HTTPS通信は複数のプロトコル、手法が組み合わされて実現されている。そのため、暗号化手法それぞれのリスク、ブラウザの対応等様々な用件があり、全てを理解するにはちょっと時間とリソースが足りない。結局のところ、我々はどのようにして安全なHTTPS通信を提供できるのか。色々調べていたところ、MozillaがMozilla Web siteに使用する、HTTPSの推奨設定を公開している。 Security/Server Side TLS - MozillaWiki このドキュメントはMozillaのサーバ運用チームが、Mozillaのサイトをより安全にするために公開しているもので、他のサイトにそのまま適用できるかは十分に注意する必要がある。例えばガラケー向けサイトとか。そのまま使えないとしても、HTTPS通信の設定をどうすれば良いか、理解の一助になるはずだ。 この記事は上記MozillaWiki
require 'openssl' def encrypt(cipher, msg, pass) salt = OpenSSL::Random.random_bytes(8) enc = OpenSSL::Cipher::Cipher.new(cipher) enc.encrypt enc.pkcs5_keyivgen(pass, salt) return enc.update(msg) + enc.final, salt end def decrypt(cipher, crypt_msg, pass, salt) dec = OpenSSL::Cipher::Cipher.new(cipher) dec.decrypt dec.pkcs5_keyivgen(pass, salt) dec.update(crypt_msg) + dec.final end cipher = 'aes-2
単純な乱数よりだいぶ良くなっていますが、それでも思ったよりシンプルですね。また、最後に MD5 をかけると、 ID の長さが固定されてしまう(鍵空間の広さを調整できない)という欠点もあります。短期間しか使わないセッション ID なら大丈夫でしょうが、永続的な ID としてはちょっと不安が残ります。 なにか Ruby で簡単に強固な ID を生成する方法はないかなぁ、と考えていたのですが、そういえば Ruby には OpenSSL バインドが標準で添付されていました。強力な暗号化には予測困難で偏りの少ない乱数が不可欠ですから、これは期待できますね。そんなわけで、 Ruby から OpenSSL の乱数生成器を利用する方法を調べてみましたので、本日はそれをご紹介しようと思います。 調べてみたところ、 C 言語なら OpenSSL の乱数は RAND_bytes という関数で利用できるようです。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く