中島@ブレーンです。

Zebedee(http://www.winton.org.uk/zebedee/)という暗号化されたトンネルを作っ
てくれるツール(sshのポートフォワーディングみたいなもの)をRubyに移植して
みました。

http://www03.u-page.so-net.ne.jp/dc4/tnaka/zebedee/
http://www03.u-page.so-net.ne.jp/dc4/tnaka/zebedee/rzbd.html

目的は2つあります。

1) 簡単な暗号化通信ライブラリ

Zebedeeのプロトコルはsshよりずっとシンプルですが、DiffieHellman +
blowfishという由緒正しいアルゴリズムを使っていますので、暗号の強度として
は実用的なものです。このプロトコルをRubyのスクリプトから簡単に使えるよう
にしようと思っています。

2) Zebedeeを補助するツールを作成する

Zebedeeには通信を暗号化してフォワードする機能がありますが、sshのようにファ
イルをコピーしたりリモートのコマンドを実行する機能がありません。コマンド
実行はtelnetをトンネルすることで実用上は問題ないのですが、ファイルコピー
がうまくできないのが問題でした。そこで、とりあえずZebedee経由のFTPをでき
るようにしました。

通信ライブラリのAPIはこんな感じです。

-----------------------------------------------------
require "rzbd/zebedee"
include Zebedee

app = Zebedee::App::instance
app.config.parse_config_file("configuration file")

s = ZBDSocket.open(host, portno)

s.puts("...")
a = s.gets
# s はSocketオブジェクトなので、IO::* をそのまま使える
-----------------------------------------------------

configuration fileはZebedeeの形式で、暗号の強度、圧縮の有無、認証用のキー
などを記述したファイルです。

つまり、TCPSocketをZebedee::ZBDSocketに置き換えるだけで、通信が暗号化さ
れるという仕組みです。ちょっと変則的ですが認証の機能もあります。インター
ネットを通して会話するスクリプトがほんのちょっとの手間でsecureになる、と
いうもくろみです。

現バージョンではクライアント側しか実装してないので、相手側にZebedeeが必
要ですが、将来的にはサーバ側の機能(ZBDServer?)も実装して、Rubyスクリプト
だけで暗号化通信ができるようにしようと思っています。

まだアルファレベルですが、いろいろ叩いてもらおうと思って、とりあえずリリー
スしてみることにしました。もし興味のある方がいたら、御意見を聞かせてくだ
さい。

--
中島 拓 (tnaka / brain-tokyo.com)
http://www03.u-page.so-net.ne.jp/dc4/tnaka/