Security Tips
 

OpenSSLを使って公開鍵暗号でファイルを暗号化

りょうわあきら
2004/7/7

 共通鍵暗号方式では、暗号化の際に鍵となるパスワードを手動で入力する必要がある。これはシェルスクリプトなどで指定ファイルを自動的に暗号化して保護したいような場合、例えばログローテーションの際に自動的にログを暗号化して保存するといったような用途では障害になる。パスワードをコマンドライン引数として渡すこともできるが、そうするとそこから鍵が漏えいする危険性が極めて高いため、やめた方がよい。そのような場合には、公開鍵暗号方式の使用をお勧めする。

 公開鍵方式を使用するコマンドとしてはGnuPGコマンドが広く知られているが、opensslのsmimeコマンドを使用しても同様に暗号化を行うことができる。

 S/MIME用公開鍵証明書をsmime.cer、これに対応するRSA秘密鍵をsmime.keyとする。鍵の対は暗号化を行うシステムとは別の信頼の置けるシステム上で作成し、公開鍵だけを暗号化を実行するシステムにコピーしておく。対象ファイルをoriginal.txt、暗号化後のファイルをencrypted.txtとすると、以下のコマンドで暗号化を実行できる。公開鍵を用いるので、暗号化は自動で完了しパスワードなどは要求されない。

$ openssl smime -encrypt -aes256 -in original.txt -out encrypted.txt smime.cer

 一方、暗号化したファイルを復号する場合には、以下のようなコマンドを実行すればよい。秘密鍵がパスフレーズを鍵にして暗号化されている場合は、引き続いてパスフレーズを入力すると元のデータが復号される。

$ openssl smime -decrypt -aes256 -in encrypted.txt -out original.txt -inkey smime.key -recip smime.cer
Enter pass phrase for client.rsa.key:***************

 秘密鍵のファイルは設定ミスや侵害によって漏えいしないように、システム上には保存せずUSBメモリなどのリムーバブルメディアに書き出して常に持ち歩くようにするとよい。このような運用をすれば、秘密鍵の不正使用防止にもつながる。

Security Tips Index



Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間