ファイル暗号化/復号化(OpenSSL,GPG)

◆OPENSSLによるファイル暗号化

# 秘密鍵の作成 (privkey.pem)
openssl genrsa -des3 -out privkey.pem~
# 電子証明要求書の作成 (csr.pem)
openssl req -new -key privkey.pem -out csr.pem~
# 電子証明書の作成 (csr.pem -> cert.pem : 自己証明書)
openssl req -x509 -in csr.pem -key privkey.pem -out cert.pem
# opensslのsmimeコマンドを使用して暗号化
openssl smime -encrypt -aes256 -in test.txt -out test.crypt cert.pem
# opensslのsmimeコマンドを使用して複号化
openssl smime -decrypt -aes256 -in test.cryp -out test.txt -inkey privkey.pem -recip cert.pem
※以下、別のやり方 (なんかエラー(サイズ制限?)になってダメ?)
# CAで電子証明書を作成する場合 (csr.pem -> cert.pem)
openssl x509 -req -in csr.pem -out cert.pem -CA cacert.pem  -CAkey caprivkey.pem -CAcreateserial

# 電子証明書(公開鍵)を使っての暗号化 (plain.txt -> encrypt.txt by cert.pem)
openssl rsautl -encrypt -in plain.txt -inkey cert.pem -certin -out encrypt.txt
openssl rsautl -encrypt -in mizunodb.tgz -inkey cert.pem -certin -out mizunodb.tgz.crypt

# 暗号の復号 (plain.txt -> encrypt.txt by privkey.pem)
openssl rsautl -decrypt -in encrypt.txt -inkey privkey.pem -out plain.txt


◆GPG*1(GNU Privacy Guard)によるファイル暗号化

----設定 ---------------------------------------
# 公開鍵,秘密鍵の作成(受信側PC)
gpg --gen-key

# 公開鍵をファイルに出力(受信側PC)
gpg -o 公開鍵ファイル名 --export 鍵ID

# 公開鍵を送信側PCに転送
sftp 送信側ホスト
sftp> put 公開鍵ファイル名

# 公開鍵を取り込み(送信側PC)
gpg --import 公開鍵ファイル名

# インポートされたか確認(送信側PC)
gpg --list-keys

# 公開鍵に署名(送信側PC)
gpg --sign-key 鍵ID
-------------------------------------------

---- 暗号化,バックアップ ----
# 公開鍵を使用して暗号化(送信側PC) ※ファイル名.gpgというファイルができる
gpg -r 鍵ID -e 暗号化するファイル名

# 暗号化したファイルを転送(送信側PC)
sftp 受信側ホスト
sftp> put 暗号化ファイル名

# ファイルの複号化(受信側PC)
gpg 暗号化ファイル名
※パスフレーズを聞かれるので入力

---- 以下は鍵作成時に表示されたもの ----

すきな鍵の種類を選択してください:
   (1) DSAとElGamal (既定)
   (2) DSA (署名のみ)
   (5) RSA (署名のみ)
どれにしますか? 5
どの鍵長にしますか? (1024) 1024
要求された鍵長は1024ビット
鍵の期限を決めてください。
      0 = 無期限
        = 有効期限 n 日間
      w = 有効期限 n 週間
      m = 有効期限 n か月間
      y = 有効期限 n 年間
鍵の有効期間は? (0)
Keyは無期限です
これでいいですか (y/n)? y

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) "

本名: daisuke
電子メール・アドレス: daisuke@magata.net
コメント: testkey
次のユーザーIDを設定しました:
    "daisuke (testkey) "

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
秘密鍵を保護するためにパスフレーズがいります。

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めします。
.+++++
+++++
公開鍵と秘密鍵を作り、署名しました。
絶対的に信用した鍵として記録しました。

pub  1024R/16CDA742 2005-04-16 daisuke (testkey) 
                指紋 = 9F8C E10D 0711 A18B 0D7D  21AB 95BE 1850 16CD A742

この鍵は暗号化には使用できないことに注意してください。暗号化を行うには、
「--edit-key」コマンドを用いて副鍵を生成してください。

--list-sigs                鍵と署名の一覧
--check-sigs               鍵の署名を検証
--fingerprint              鍵と指紋の一覧
--list-secret-keys         秘密鍵の一覧

gpg --delete-keys 1024R
gpg --delete-keys 

gpg --delete-secret-keys 16CDA742

*1 大抵のLinuxディストリビューションに収録されてる暗号化ソフト。PGPのオープンソース版。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-11 (木) 00:48:49 (3476d)