#author("2020-02-23T08:08:38+00:00","default:sysosa","sysosa") ファイルを暗号化してみる ***共通鍵方式 [#z3eeaf73] 暗号化につかう&color(magenta){パスワード};、複合化につかう&color(magenta){パスワード};がともに同じな方式 だからこちらで&color(magenta){パスワード};を掛けて、&color(orangered){暗号化したファイル};を送って、のちに別の送信方法で&color(magenta){パスワード};を送る。 これで相手側も&color(orangered){暗号化したファイル};を戻せる 使うコマンドは&color(darkbrown){openssl}; -暗号化 #code(nonumber){{ [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@em00 tmp]$ [caster@c tmp]$ }} 436MBのファイルの暗号化に0.1秒ほど必要みたい(3.5GHz CPU). ファイルサイズはさほど変化はありません -複合化 暗号化したファイを元に戻します #code(nonumber){{ [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 コマンドで圧縮する際に&color(magenta){パスワード};を埋め込む方法です &color(red){*};&size(10){gzipには解凍パスワード機能はないみたい}; 使い方は 「zip -e <圧縮+パスワード込みファイル> <入力ファイル>」 で、実行後に「&color(magenta){パスワード};」が問われます #code(nonumber){{ [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 ~]$ }} &color(red){*};マシンが非力ならGB単位のファイルの圧縮は避けたほうがいいかもしれません。圧縮に掛ける時間で転送が終わるかも.. ***公開鍵方式 [#aa2dadf5] いわゆる「秘密鍵」と「&color(darkviolet){公開鍵};」でファイルを暗号化、複合化、あるいは署名とか言った事を行う ここでは再度 openssl を使ってファイルを暗号化/複合化しますが、その鍵には ssh-keygen で作られる -id_rsa -id_rsa.pub を使ってみます。 &size(10){gpgで鍵を作って、暗号化、復号化もありますが、、}; 利用シーンとしては、相手に送りたいファイルがある。これを[[ownCloud]]とかクラウドストレージに配置するが、 取られても中身が見られないように暗号化する。っで、相手から「&color(darkviolet){公開鍵};」を送ってもらって、「&color(darkviolet){公開鍵};」で暗号化する まずは送られてきた&color(darkviolet){公開鍵};をopensslで使うために変換する #code(nonumber){{ [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 }} 変換した鍵を使って対象ファイルを暗号化します #code(nonumber){{ [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」をダウンロードして、自身が保有する「秘密鍵」で復号させる #code(nonumber){{ [assassin@c ~]$ openssl rsautl -decrypt -inkey id_rsa -in Micrographs.tar.enc -out Micrographs.tar }} ***tarファイルを作りつつ暗号化 [#x6808f34] tarでめとめたファイルをパイプ(|)で繋いで、暗号を施して「-out」に出してます #code(nonumber){{ [caster@c ~]$ gtar cf - ./junk | openssl enc -e -aes256 -out junk.tar.enc -k RuleBreaker }} 暗号化しただけでは中途半端で、復号化は下記のように行う。単にopensslで複合化した標準出力をパイプ(|)でtarに繋げているだけ #code(nonumber){{ [caster@c ~]$ openssl enc -d -aes256 -salt -k RuleBreaker -in junk.tar.enc | gtar xf - }}