暗号化

単一ファイルの暗号化プログラムを作ろうと思ったのだが、途中で「openssl でいいじゃん」ということに気付いてしまった。というわけで openssl を使った暗号化の方法をメモ。

# 暗号化
openssl enc -e  -pass pass: -in  -out 
# 複合化
openssl enc -d  -pass pass: -in  -out 

には des や aes といった暗号化アルゴリズムを指定する。MacOSX 10.2.8 に入ってる openssl では AES は使用出来ないようです。 "openssl enc --help" で使用出来るアルゴリズムが見れるのでその中から選んで下さい。

ちなみにパスワードのような短いものではなく、もっと長いものを使いたければ -pass の所を "-pass file:" のようにすればそのファイルの一行目をパスワードとして利用する事が出来る。もしくは -pass の所を "stdin" にして "cat passwd.file | openssl *** -pass stdin **** " とすれば先ほどと同様に passwd.file の中身をパスワードに出来る。これを利用して CD-R に長いパスワードを保存しておき複合化するときはその CD-R からパスワードを入力すればよいでしょう。

これを上手く利用してパスワードを USB 形式のメモリに保存して USB を指すと複合化出来るようにすると便利かも…。

openssl ライブラリを使って GUI の暗号化ソフトを作ろうと思ったのですが*1、ちょっと調べたら MacOSX Panther には FileVault というものが入っているようです。
http://www.apple.co.jp/macosx/features/filevault/index.html
128ビットAES によってホームディレクトリを自動的に暗号化/複合化してくれるようです。この『自動的』というのがどういう意味なのかがよく分からないんですよね。どのタイミングで暗号化されて、いつ『自動的』に複合化されるのでしょう? ログイン時に複合化してしまったら、意味ないような…。しかもホームディレクトリ全部の複合化と暗号化には結構な時間がかかるような。
楽しみです。

*1:Stuffit と同じような感覚で使えるものを作ろうかなと…