ファイルを暗号化してみる
暗号化につかうパスワード、複合化につかうパスワードがともに同じな方式
だからこちらでパスワードを掛けて、暗号化したファイルを送って、のちに別の送信方法でパスワードを送る。
これで相手側も暗号化したファイルを戻せる
使うコマンドはopenssl
[caster@c ~]$ openssl enc -e -aes-256-cbc -salt -k <パスワード> -in <暗号対象> -out <暗号化したファイル>
[caster@c ~]$ ls -lh ID006C01_00199.mrc
-rw-r--r-- 1 caster domain users 33M 2月 14 00:58 ID006C01_00199.mrc
[caster@c ~]$ time openssl enc -e -aes-256-cbc -salt -k RuleBreaker -in ID006C01_00199.mrc -out ID006C01_00199.mrc.enc
real 0m0.305s
user 0m0.059s
sys 0m0.033s
[caster@c ~]$
[caster@c ~]$ ls -lh Jun25_15.51.52.tif
-rw-r--r-- 1 caster domain users 436M 8月 8 01:10 Jun25_15.51.52.tif
[caster@c ~]$
[caster@c ~]$ time openssl enc -e -aes-256-cbc -salt -k RuleBreaker -in Jun25_15.51.52.tif -out Jun25_15.51.52.tif.enc
real 0m1.166s
user 0m0.839s
sys 0m0.310s
[caster@c tmp]$
[caster@c ~]$ openssl enc -d -aes-256-cbc -salt -k <パスワード> -in <暗号化したファイル> -out <戻したファイル名>
[caster@c ~]$ time openssl enc -d -aes-256-cbc -salt -k RuleBreaker -in ID006C01_00199.mrc.enc -out ID006C01_00199.mrc.dec
real 0m0.042s
user 0m0.014s
sys 0m0.028s
[caster@c ~]$ diff ID006C01_00199.mrc.dec ID006C01_00199.mrc <-- オリジナルと変化なし
[caster@c ~]$
[caster@c ~]$ time openssl enc -d -aes-256-cbc -salt -k RuleBreaker -in Jun25_15.51.52.tif.enc -out Jun25_15.51.52.tif.dec
real 0m0.456s
user 0m0.172s
sys 0m0.284s
[caster@c ~]$ diff Jun25_15.51.52.tif.dec Jun25_15.51.52.tif
他、共通鍵方式としてはwindowsで一般的な zip コマンドで圧縮する際にパスワードを埋め込む方法です
*gzipには解凍パスワード機能はないみたい
使い方は
「zip -e <圧縮+パスワード込みファイル> <入力ファイル>」
で、実行後に「パスワード」が問われます
[caster@c ~]$ gtar cf Micrographs.tar ./Micrographs/*.mrc
[caster@c ~]$ ls -lh Micrographs.tar
-rw-r--r-- 1 caster domain users 6.3G 8月 8 01:34 Micrographs.tar
[caster@c ~]$
[caster@c ~]$
[caster@c ~]$ zip -e Micrographs.tar.zip Micrographs.tar
Enter password: <--- パスワード入力
Verify password: <--- パスワード再入力
adding: Micrographs.tar (deflated 35%)
[caster@c ~]$
[caster@c ~]$ ls -lh Micrographs.tar.zip
-rw-r--r-- 1 caster domain users 4.1G 8月 8 02:14 Micrographs.tar.zip
[caster@c ~]$
*マシンが非力ならGB単位のファイルの圧縮は避けたほうがいいかもしれません。圧縮に掛ける時間で転送が終わるかも..
いわゆる「秘密鍵」と「公開鍵」でファイルを暗号化、複合化、あるいは署名とか言った事を行う
ここでは再度 openssl を使ってファイルを暗号化/複合化しますが、その鍵には ssh-keygen で作られる
を使ってみます。
gpgで鍵を作って、暗号化、復号化もありますが、、
利用シーンとしては、相手に送りたいファイルがある。これをownCloudとかクラウドストレージに配置するが、
取られても中身が見られないように暗号化する。っで、相手から「公開鍵」を送ってもらって、「公開鍵」で暗号化する
まずは送られてきた公開鍵をopensslで使うために変換する
[caster@c ~]$ ssh-keygen -f <ssh公開鍵> -e -m PKCS8 > <ssh公開鍵.変換>
[caster@c ~]$ ssh-keygen -f id_rsa.pub -e -m PKCS8 > id_rsa.pub.conv
変換した鍵を使って対象ファイルを暗号化します
[caster@c ~]$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.conv -in Micrographs.tar -out Micrographs.tar.enc
できた「Micrographs.tar.enc」を相手が取得可能な場所に置いてURLを伝える。
相手方は、「Micrographs.tar.enc」をダウンロードして、自身が保有する「秘密鍵」で復号させる
[assassin@c ~]$ openssl rsautl -decrypt -inkey id_rsa -in Micrographs.tar.enc -out Micrographs.tar
tarでめとめたファイルをパイプ(|)で繋いで、暗号を施して「-out」に出してます
[caster@c ~]$ gtar cf - ./junk | openssl enc -e -aes256 -out junk.tar.enc -k RuleBreaker
暗号化しただけでは中途半端で、復号化は下記のように行う。単にopensslで複合化した標準出力をパイプ(|)でtarに繋げているだけ
[caster@c ~]$ openssl enc -d -aes256 -salt -k RuleBreaker -in junk.tar.enc | gtar xf -