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 ですよ。