GitHub のユーザ名を指定してファイルを暗号化するツール ghcrypt を作った
鳩舎さんで、GitHub の公開鍵を簡単に取得できるのを知りました。
で、ファイルにちょっとした暗号化をかけたいことありますよね。パスワード付き zip よりは、もうちょっとマシなのを使いたい。でも GPG はなんかむつかしいし(印象)、相手がインストールしてない気がする (自分もインストールしてない)。
というわけで。 GitHub の公開鍵を使って簡単にファイルを暗号化するスクリプトを書きました。
暗号化したいファイル名と送りたい相手の GitHub ユーザ名を指定して、暗号化と署名を行います。
$ ghcrypt loveletter-to-koseki.txt koseki --2013-02-14 00:00:00-- https://github.com/koseki.keys Resolving github.com... Connecting to github.com|xxx.xxx.xxx.xxx|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 380 [text/plain] Saving to: `loveletter-to-koseki.txt.enc/koseki.keys' 100%[========================================================>] 380 --.-K/s in 0s 2013-02-14 00:00:00 (xxx MB/s) - `loveletter-to-koseki.txt.enc/koseki.keys' saved [380/380] ---------------------------------------------------------------- Reciever: koseki https://github.com/koseki 2048 5a:b0:0a:cf:8d:64:37:5b:06:ec:b4:d1:cf:96:25:81 loveletter-to-koseki.txt.enc/koseki.keys (RSA) ---------------------------------------------------------------- Enter pass phrase for /path/to/private_key: Successfully Encrypted and Signed! loveletter-to-koseki.txt --> loveletter-to-koseki.txt.enc.tar
(指定したファイル名).enc.tar というファイルが生成されます。tarの中に暗号化したファイルと署名が入ってます。
受け取った相手は、送り主のユーザ名を指定して署名を検証し、復号化を行います。
$ ghcrypt loveletter-to-koseki.txt.enc.tar alice --2013-02-14 00:00:00-- https://github.com/alice.keys Resolving github.com... Connecting to github.com|xxx.xxx.xxx.xxx|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 380 [text/plain] Saving to: `loveletter-to-koseki.txt.enc/alice.keys' 100%[========================================================>] 380 --.-K/s in 0s 2013-02-14 00:00:00 (xxx MB/s) - `loveletter-to-koseki.txt.enc/alice.keys' saved [380/380] ---------------------------------------------------------------- Sender: alice https://github.com/alice 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx: loveletter-to-koseki.txt.enc/alice.keys (RSA) ---------------------------------------------------------------- Verified OK Enter pass phrase for /path/to/private_key: Successfully Verified and Decrypted! loveletter-to-koseki.txt.enc.tar --> loveletter-to-koseki.txt
GitHub の秘密鍵ファイルのパスを $HOME/.ghcrypt に書いておきます。
$ echo /home/koseki/.ssh/id_rsa > ~/.ghcrypt $ chmod 400 ~/.ghcrypt
あるいは、--key で秘密鍵を指定します。
$ ghcrypt --key ~/.ssh/id_rsa loveletter-to-koseki.txt koseki
現状、鍵の長さより大きいファイルは暗号化できません。AES の鍵を生成するといいと思うんだけど、まだやってない。(追記: やりました。)
偶然にも今日はバレンタインデーですね。まだ何ひとつ受け取っておりませんが、 GitHub ユーザの女子の皆さんは、僕にこっそり伝えたいメッセージがあったのではないでしょうか。
ユーザ名は koseki ですよ。