gzipとOpenSSLを使ったファイル圧縮&暗号化&復号化
https://thom.hateblo.jp/entry/2022/04/09/181647
暗号化するコード
#!/bin/bash
FILES="/home/thom/Test/Archive/*"
TIMESTAMP=`date +'%Y%m%d%H%M%S'`
PASSWORD="pass"
for f in $FILES
do
echo "Encripting: $f"
gzip -c $f | openssl enc -e -aes-256-cbc -pbkdf2 -iter 99999 -salt -k $PASSWORD -out /home/thom/Test/Encrypted/${TIMESTAMP}_$(basename -- $f).aes
mv $f /home/thom/Test/Archived/
done
復号化するコード
#!/bin/bash
FILES="/home/thom/Test/Encrypted/*"
PASSWORD="pass"
for f in $FILES
do
echo "Decrypting: $f"
openssl enc -d -aes-256-cbc -pbkdf2 -iter 99999 -salt -k $PASSWORD -in $f | gzip -d > /home/thom/Test/Decrypted/$(basename -- ${f%.*})
done
----------------------------------------------------
OpenSSLコマンドによる公開鍵暗号、電子署名の方法
https://qiita.com/kunichiko/items/3c0b1a2915e9dacbd4c1
大きなファイルを 117バイトずつのブロックに分割して
ブロックごとに暗号化することも不可能ではありませんが、
通常は以下の理由からそのようなことはしません。
RSAの計算は、非常にコストが高い(時間がかかる)ので、
大きなデータに対して繰り返し行うのは非効率
117バイトが128バイトになるため、データサイズが 約1.1倍くらいおおきくなる
そのため、大きなデータを公開鍵暗号で送る場合は、次のようにします。
まずデータ本体をAESなどの他の共通鍵暗号方式で暗号化します(1)
共通鍵は送り手が一時的に生成します
その共通鍵をRSAで暗号化します(2)
(1)と(2)を相手に送信します
共通鍵は送り手が一時的に生成した鍵を使えば良いため事前に
共有しておく必要がありません。そのため、公開鍵暗号のメリットは
残したまま共通鍵暗号を使うことができます。
opensslコマンドでも openssl enc -aes-256-cbc などでAESの暗号化が
できるので、大きなファイルはこれを使って二段階に暗号化すれば、
上記操作を再現できます。なお、opensslコマンド1回でこれを行う
方法はわかりません。
openssl smime コマンドを使って S/MIME形式にする方法も
あるようですが、あまり詳しく調べていません。
このサイトがいいかもしれない
https://www.web-dev-qa-db-ja.com/ja/linux/%E5%85%AC%E9%96%8B%E9%8D%B5%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6openssl%E3%81%A7%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%9A%97%E5%8F%B7%E5%8C%96%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/940274898/
-----------------------------
【図解】OpenPGPとS/MIMEの仕組みと違い ~メール暗号化と署名,ssl/tlsとの違い~
https://milestone-of-se.nesuke.com/sv-advanced/digicert/openpgp-smime-tls/#:~:text=%E4%B8%80%E6%96%B9%20S%2FMIME%20%E3%81%AF%E8%87%AA%E5%88%86,%E9%AB%98%E3%81%84%E3%81%93%E3%81%A8%E3%81%8C%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A7%E3%81%99%E3%80%82
[0回]