2015年4月10日金曜日

opensslで暗号化

# 公開鍵と秘密鍵を作成(セキュアな場所:自身のホームディレクトリとかでおこなう)

$ openssl req -x509 -nodes -newkey rsa:2048 -keyout private_key.pem -out pubkey.pem -subj '/'

ここで作成された秘密鍵(private_key.pem)は門外不出にすること(復号に必要)。
公開鍵は(pubkey.pem)ばらまいてよい(暗号に必要)


# 公開鍵で暗号化テスト(ファイルtest.binを暗号化してtest.bin.encを作る)

$ openssl smime -encrypt -aes256 -in test.bin -binary -outform DEM -out test.bin.enc pubkey.pem


# 復号(秘密鍵使用)テスト

$ openssl smime -decrypt -in test.bin.enc -binary -inform DEM -inkey private_key.pem -out test.bin



以上。

公開鍵暗号方式は共通鍵方式に比べ一般の人にはわかりづらいようですが、簡単な考え方として、公開鍵は南京錠そのもので、秘密鍵は南京錠を開く鍵と例えると解り易いかと思います。
即ち大事なものを鍵をかけて送ってもらうには南京錠を開いたまま相手に渡し、鍵をロックして送ってもらう。それを解けるのは自分だけとなります。

(追記)
と思ったら、巨大のファイルはやっぱりダメなので以下の構文で暗号/復号する方がいいかな。
鍵は別系統で渡せばよいし。

暗号(file.txtをfile.txt.encへ)
$ openssl enc -e -aes-256-cbc -in file.txt -out file.txt.enc -kfile passphrase.dat

復号(file.txt.encをout.txtへ)
$ openssl enc -d -aes-256-cbc -in file.txt.enc -out out.txt -kfile passphrase.dat

passphrase.dat は、256文字以上の適当な文字列(鍵)

0 件のコメント: