#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 -
}}
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS