安全にラブレターを受け取る方法
クリスマスも近くなり、ラブレターを送りたい!受け取りたい!と思っている方も多いのではないでしょうか。
今回は openssl を使って安全に送り、受け取ることをしたいと思います。
下準備
$ openssl version OpenSSL 0.9.8za 5 Jun 2014 $ which openssl /usr/bin/openssl
標準で入ってる openssl はバージョンが低いので、Homebrew でいれます。
今年は、セキュリティ的に当たりの年でしたね。
「OpenSSL」における Change Cipher Spec メッセージ処理の脆弱性対策について(JVN#61247051):IPA 独立行政法人 情報処理推進機構 : https://www.ipa.go.jp/security/ciadr/vul/20140606-jvn.html
$ brew update && brew upgrade $ brew intall openssl $ brew link openssl --force
確認
$ which openssl /usr/local/bin/openssl $ openssl version OpenSSL 1.0.1j 15 Oct 2014 $ /usr/bin/openssl version OpenSSL 0.9.8za 5 Jun 2014o $ uname -s -r Darwin 14.0.0
鍵生成
秘密鍵を生成
$ openssl genrsa -out private-key.pem Generating RSA private key, 1024 bit long modulus ..++++++ .....................................++++++ e is 65537 (0x10001)
秘密鍵から公開鍵を生成
$ openssl rsa -in private-key.pem -pubout -out public-key.pem writing RSA key
2つの鍵ができていることを確認
$ ls private-key.pem public-key.pem
公開鍵を公開
$ cat public-key.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaLbfQAI3asQRy4bgm5O5gLky+ YB5hEOsLF2/CFCWCCD8cgPnEVvane2HEaCXAg2PefwWszx+lBjDRMTawjhPU5Rf0 1jhu2XTSygIkroGtHws11LU9R4oz9ZRnSG/CdqMA3q9gWostAhGHnDm12E24DjFo 87T3Wo08ENVGlJUY6wIDAQAB -----END PUBLIC KEY-----
これが、僕の公開鍵です。
送ってくれる人がすること
- 適当なファイル(love.txt)にメッセージを綴る。
- 公開鍵を保存(public-key.pem)。
- 公開鍵を使って、ファイル(love.txt)を暗号化(encrypted.dat)。
$ openssl rsautl -pubin -inkey public-key.pem -in love.txt -encrypt -out encrypted.dat $ cat encrypted.dat &"a�v�ʯ���Λ����<҃O��Dɪ�C��.{&<h�0���KfS��N5��W��F�H)U`������qquG� _�ʑV%
- なんらかの方法で送る(encrypted.dat)をメールやなにかしらの方法で送る。※暗号化された中身のテキストでもおk)
受け取る人(自分)がすること
秘密鍵を使って、ファイルを復号化。
$ openssl rsautl -inkey private-key.pem -in encrypted.dat -decrypt -out love2.txt
これで、love2.txt で複合されたメッセージを確認ことができます。
さいごに
メッセージ待ってます!