それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rclone crypt でクラウドストレージを暗号化する。

rclone crypt / rclone mount / rclone rcd --weg-guiクラウドストレージを暗号化する。

rclone で暗号化

はじめに

rclone で、リモートのクラウドストレージを扱えます。

rclone で google drivedropbox のような転送が行なえます。

rcloneはクラウドストレージには必須ツールです。

ただし、どんなファイルでもいいかというと、パスワードをアップロードは躊躇われます。オンライン・ストレージが「誰からも覗かれない」とは誰も保証してくれないのです。そこで、ストレージに転送するときに「ファイルを暗号化」して、「暗号化ファイルを転送」すればいいのです。rclone crypt では、リモートに転送するときに、ファイルを暗号化して転送してくれます。これにより、他人とストレージ領域を共有してたりアカウント共有(規約で禁止されてると思うが)のような極限状態でも、ファイルを安全に保護して格納できます。いま現代は暗号化必須です。暗号化抜きにセキュリティを語る人は騙りです。無自覚な詐欺師かもしれません。

rclone crypt による暗号化

rclone には crypt というストレージオプションがあり、「既存設定に被せる」形で暗号化を透過的に扱うことができる。

ローカルからリモートへ転送時に暗号化し、リモートからローカルへ転送時に復号化する。

そして、暗号化は既存のリモート設定へのエイリアス(別名)として再帰的に使うことで機能する

rclone crypt を作る

rclone crypt でリモートを暗号化したいと思う。

rclone crypt の準備

最初に、リモート設定を作る。ゼロからcryptは作れない。暗号化は既存のリモート設定に被せる形になる。

リモートを選ぶ。

rclone listemote

リモートの特定フォルダを暗号化に選び、暗号化フォルダのルートとする。

rclone lsd my-remote:/Folder/my-01/crypted/

準備するのは、どのリモートどのフォルダを暗号化するか。パスを決定することである。

crypt の作成

設定編集のコマンドで、新規、crypt を選ぶ

rclone config 
>n
name> my-remote-encrypted
Storage> crypt

つぎの、どのリモートのどのフォルダを暗号化に使うか訊かれる。ので準備したパスを入れる。

remote> my-remote:/Folder/my-01/crypted/

ファイル名も暗号化するか standard/ obfuscate/off

filename_encryption> standard

フォルダ名も暗号化するか

directory_name_encryption> true

パスワードを自動生成するか

Password or pass phrase for encryption.
y/g> g

salt用のパスワード2も作る。

Password or pass phrase for salt. Optional but recommended.
y/g/n> g

これで、暗号化の設定は完了である

password2については、まだ調べてない。

暗号化して転送する。

設定ができたので、暗号ストレージとして利用する。

適当なファイルを転送して、暗号化を試してみる。

rclone .bashrc  my-remote-encrypted:/.bashc

このファイルが暗号ファイルになったか確認する。

my-remote-encrypted:/my-remote:/Folder/my-01/crypted/マッピング。なので通常のアクセスとして暗号化ドライブ設定を外してみると。

通常の設定でアクセス

rclone ls my-remote:/Folder/my-01/crypted/

暗号化を経由してアクセス

rclone ls my-remote-encrypted:/

ファイルの見え方が異なるはずである。ちゃんと暗号化してファイルが届いていることがわかる。

元ファイルを取り出し

復号化ファイルとして取り出してみる。

rclone cat my-remote-encrypted:/.bashrc > decrypted.file

暗号化された状態も取り出してみる

rclone cat my-remote:/Folder/my-01/crypted/暗号化ファイル名 > encrypted.file

ファイルのハッシュ値を比べてみる

md5sum original.file encrypted.file decrypted.file

ファイルのハッシュ値がオリジナルと同じなので、ちゃんと転送されて取り出せることもわかる

通常のアクセスだと、ファイルの中身は暗号化されていて読めないことがわかる。

暗号化ファイルの確認

暗号化されたストレージ・ラッパーを使えば、暗号化で転送されました。

クラウドストレージのウェブサイトにアクセスして、ファイルを確認して見ます。

ウェブサイトで、rclone crypt で暗号化転送したファイルを確認してみる

f:id:takuya_1st:20220226025004p:plain

ファイル名もそれっぽく偽装してくれる感じなんですね。

ウェブサイトから、ファイルを取り出して、ファイルの中身を確認。

暗号化されていることを確認しておきます。

takuya$ hexdump original.file -C | head -n 20
00000000  4d 5a 90 00 03 00 00 00  04 00 00 00 ff ff 00 00  |MZ..............|
00000010  b8 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 d8 00 00 00  |................|
00000040  0e 1f ba 0e 00 b4 09 cd  21 b8 01 4c cd 21 54 68  |........!..L.!Th|
00000050  69 73 20 70 72 6f 67 72  61 6d 20 63 61 6e 6e 6f  |is program canno|
00000060  74 20 62 65 20 72 75 6e  20 69 6e 20 44 4f 53 20  |t be run in DOS |
00000070  6d 6f 64 65 2e 0d 0d 0a  24 00 00 00 00 00 00 00  |mode....$.......|
00000080  55 93 99 d7 11 f2 f7 84  11 f2 f7 84 11 f2 f7 84  |U...............|
00000090  67 6f 8a 84 10 f2 f7 84  67 6f 9a 84 1e f2 f7 84  |go......go......|
000000a0  11 f2 f6 84 20 f3 f7 84  67 6f 8c 84 06 f2 f7 84  |.... ...go......|
000000b0  36 34 85 84 0d f2 f7 84  36 34 8b 84 10 f2 f7 84  |64......64......|
000000c0  36 34 8f 84 10 f2 f7 84  52 69 63 68 11 f2 f7 84  |64......Rich....|
000000d0  00 00 00 00 00 00 00 00  50 45 00 00 64 86 05 00  |........PE..d...|
000000e0  e7 b7 8f 61 00 00 00 00  00 00 00 00 f0 00 23 00  |...a..........#.|
000000f0  0b 02 08 00 00 2e 01 00  00 bc 00 00 00 00 00 00  |................|
00000100  80 37 01 00 00 10 00 00  00 00 00 40 01 00 00 00  |.7.........@....|
00000110  00 10 00 00 00 02 00 00  04 00 00 00 00 00 00 00  |................|
00000120  05 00 02 00 00 00 00 00  00 30 02 00 00 04 00 00  |.........0......|
00000130  c3 8b 02 00 02 00 00 80  00 00 10 00 00 00 00 00  |................|
takuya$ hexdump encrypted.file -C | head -n 20
00000000  52 43 4c 4f 4e 45 00 00  ab 80 58 bd b1 5d b3 be  |RCLONE....X..]..|
00000010  95 16 90 ed fa b7 54 37  4d fe ac c5 c1 6f a1 a2  |......T7M....o..|
00000020  72 1a e7 b9 9e 09 47 98  8c 06 68 92 46 6c 5a f2  |r.....G...h.FlZ.|
00000030  fb e6 1a d9 3b 12 8f f1  2b bf 9f 08 2d 48 6f ea  |....;...+...-Ho.|
00000040  1e 11 d7 17 53 3c a5 20  40 00 ec 23 15 04 e5 3d  |....S<. @..#...=|
00000050  9b f0 c0 cb 82 73 0d c5  67 12 f1 79 ea 99 f3 bf  |.....s..g..y....|
00000060  5c c2 05 ab 4b 00 41 c9  7c 56 69 af 8c f9 e0 1f  |\...K.A.|Vi.....|
00000070  63 2f 47 f5 3e f3 31 ef  8c b3 c0 c6 81 a8 c2 9a  |c/G.>.1.........|
00000080  92 e6 8a 70 ad 8c 95 60  99 dd 2d 2d 76 d5 ad 59  |...p...`..--v..Y|
00000090  42 54 dc 23 63 82 27 d1  e9 7e 0c dd 6c 2a 2e 98  |BT.#c.'..~..l*..|
000000a0  a7 03 26 92 e4 79 17 2a  e4 cd c0 aa 49 5b 3d 74  |..&..y.*....I[=t|
000000b0  9a 15 e4 49 50 8e 95 38  2c f6 85 dd 27 a1 13 f1  |...IP..8,...'...|
000000c0  1e fb ec ee 1d 4b 3f 20  b3 34 8c 3b 6f 83 a4 bf  |.....K? .4.;o...|
000000d0  86 4a 59 b9 30 d6 22 0b  07 43 41 56 01 df 7d ee  |.JY.0."..CAV..}.|
000000e0  3c 6f 4e f0 1b a6 ec f9  20 e8 38 9a 9a d6 9c cd  |<oN..... .8.....|
000000f0  9e 68 37 74 9a 83 d3 c7  8a 92 f1 ce 5b 57 01 6c  |.h7t........[W.l|
00000100  b0 27 e6 99 d1 d8 62 45  80 a3 89 21 8e c5 d1 56  |.'....bE...!...V|
00000110  68 22 35 2d 36 ea b1 c1  3c 23 f8 03 cc 94 b1 4c  |h"5-6...<#.....L|
00000120  7c d5 25 53 e2 f6 24 7c  4c 3b 3b 09 bc 62 b1 20  ||.%S..$|L;;..b. |
00000130  a4 fd e6 70 d1 c4 99 86  cc 98 f0 24 e5 e7 b7 83  |...p.......$....|

ちゃんと暗号化されれているようです。

暗号化方式

XSalsa20 をBaseにした、NaCl SecretBoxを使って暗号化するとのこと。

暗号化後のデメリットと解消法

暗号化後の注意点。暗号化してしまうとデメリットがあります。

標準WEBが使えない→ mount /web-gui で使う。

DropboxGoogle driveが提供する通常のWEB-UIは使えなくなります。

代わりに rclone mount / rclone GUIを使います。

ファイルが暗号化された

ファイル名もファイル中身も暗号化されるので、ウェブサイトからだと何が何だか分からない。 f:id:takuya_1st:20220226025024p:plain

rclone mount なら見える。

rclone mount でマウントしてあげれば見える。 f:id:takuya_1st:20220226025035p:plain

ファイルサイズとファイル数から、ウェブサイトから見たファイルがこれだとわかる。

rclone mount はWindowsエクスプローラーと結合する(WinSfp)を使うことでWindowsからでも通常のファイルとして扱える(遅いけど)

rclone mount rcloune ls rclone cat を駆使してファイルを取り出して一覧することができる。

でも不便で利便性が下がっている

rclone web-gui なら見える

コマンドラインだと不便なのでWEB-UIを使う。

rclone には専用のWEB-UIがあり、クラウドストレージのウェブサイト代用として機能する。

rclone rcd --web-gui を駆使して、フォルダを見るとファイルを見ることができて便利。

f:id:takuya_1st:20220226025044p:plain

rclone rcd --web-guiの存在意味、最初わからなかったけど、crypt するとき必須ですね。

マウントと web-ui でデメリットは解消できそうです。

rclone.confの取扱

設定ファイルに鍵が作られるで、厳重に管理する。バックアップする。

rclone.conf =鍵

rclone.conf ファイルは厳重に管理してください。鍵が入ってます。ssh秘密鍵と同等に扱ってください。

rclone.conf の紛失に備える。

rclone.conf ファイルが鍵になります。このファイルを紛失するともう二度とファイルをもとに戻すことができません。もとに戻せるとしたら暗号を破られたときでその時は世の中のすべてが崩壊します。

rclone.conf ファイルを暗号化しておく。

rclone.confが鍵です。鍵は暗号化すれば大丈夫。一般フォルダに入れても安心です。

rclone.conf ファイルそのものに鍵が含まれるので、rclone.confを暗号化して、バックアップを保管しておくといいでしょう。

rclone.confを暗号化するには openssl などで暗号ファイルにします。

次のコマンドは openssl コマンドでファイルを暗号化する例です

pw=$(pwgen 40 1)
openssl enc -d -k $pw -pbkdf2 -aes256 -base64 -in rclone.conf -out rclone.conf.encrypted

上記コマンドで作った暗号化パスワードを紛失すると悲劇です。

パスワードをよく使う鍵でさらに暗号化して、gistにでも保存しておくと紛失せずに安心です。

よく使う鍵といえば、SSHの公開鍵・秘密鍵RSA鍵ペアです。

パスワードをssh rsa 鍵で暗号化してみる

rcloneファイルを暗号化するパスワードつくり、SSH公開鍵で暗号化して、ssh秘密鍵で開けられるようにしておくのもいいと思います。

暗号化パスワードをrsa公開鍵で暗号化する例。

pass=$(pwgen 40 1) # パスワード生成
enc_pass=rclone.conf.enc.key
pubkey="/home/takuya/.ssh/id_rsa.pub.pks8"
# rclone.confをパスワードで暗号化する
openssl enc -e -k $pass -pbkdf2 -aes256 -base64 -in rclone.conf -out rclone.conf.encypted
# パスワードを公開鍵で暗号化して保存する
echo $pass | openssl rsautl -encrypt -pubin -inkey $pubkey -in - out $enc_pass 

パスワードをRSA秘密鍵で複合して元データを取り出す例

enc_pass="rclone.conf.enc.key" #公開鍵で暗号化されたパスワード
id_rsa="/home/takuya/.ssh/id_rsa"
# 秘密鍵でパスワードを取り出す。
alias pw="openssl rsautl -decrypt -inkey $id_rsa -in $enc_pass" 
# 取り出したパスワードで、rclone.confを平文に復号する
openssl enc -d -k $( pw ) -pbkdf2 -aes256 -base64 -in rclone.conf.encrypted -out -

このように、rcloneの設定ファイル(=鍵)と設定ファイルの暗号化、暗号化したしたパスワードを使って、自分以外がアクセスできない暗号化ストレージをクラウドストレージに作成することが可能になります。

rclone.conf を直接sshRSA公開鍵で暗号化してもいいかもしれませんが、RSA公開鍵による暗号化では、鍵長未満のバイト数しか暗号化できません。解消方法も色々ありますが、パスワードを作ってパスワードをRSA公開鍵で鍵をかけておくのが手っ取り早いと思います。SSH秘密鍵は常に管理していますし、パスフレーズを掛けるし。

rclone.conf を crypt の中に置かない。

暗号化した dropbox 、rclone.confをcryptへバックアップしても意味がありません。

rclone.confなくすとcryptが読めない、cryptが読めないので、rclone.confが読めない。となるので、保管場所はケアしてください。

なぜ、ドライブに暗号化が必要なのか

AndroidスマホGoogle アカウント設定が甘くて家族に写真を見られてしまうとといった設定ミスは跡を絶ちません。

ちゃんと設定を覚えておけ、アカウントを共有するなと思うのですが、転送時に暗号化しておけば安心です。

そして、宅ふぁいる便の流出事故も記憶に新しいと思います。クラウドストレージの提供業者が設定ミスで流出させる事故もあとを絶ちません。

google が誤認でユーザへ警告

Googleドライブが今度はmacOSで自動生成されるファイル「.DS_Store」を著作権違反と誤認中

Google、フリー版のドライブのGoogle ドライブの中身を検閲しています。背景には、著作権ファイルの検閲があります。macのバックアップとってただけでアカウント停止されたらたまったもんじゃないですよね。

Gsuite( google workspace / google apps ) の企業向けは「検閲」しないらしいですが。悪意を持てば中身の閲覧は可能です。

戦争における強権

米国と露軍、米国と中共の対立激化していますが、そのなかで位置情報やクラウドストレージは餌食として狙われています。たとえば、つぎのようなSNSに上げるデータは非公開にし設定したとしても、事業者が軍にデータ供出する可能性は否定できません。

ロシアがウクライナに侵攻しても、すべては「TikTok」に記録されている

TikTokアカウントが軍の動きを可視化 ロシアが部隊を増強する様子が映った短い動画を投稿する一連のアカウントを確認したところ、どのアカウントの所有者たちもごく普通の人に見えることが多い。戦車が動いている動画と並んで子どもたちが遊んでる様子も動画で投稿されている。

たとえば、USAとRussiaが戦争状態に入ったとき、Googleはドライブの中身を政府から守れるでしょうか。アマゾンはAWSのオブジェクトストレージをペンタゴン守ってくれるでしょうか。Baiduは?Yandexは?と考えると、クラウドストレージは事業者を信じられるか。につきます。事業者を信用できないとなると、暗号化して鍵をかけるしかないわけです。

自分の身は自分で守る。

クラウドストレージ(オブジェクトストレージも含む)は便利なのですが、最後にデータを護るのは、利用者(利用したサービス開発者)の責任であり、いくら損害賠償を請求しても流出したデータは戻りません。

そんなデータをもってないと思うかもしれませんが、Google DriveDS_Storeを誤認したように、いつなんどき巻き込まれるかわかりません。また攻撃者は身近にいるものです。存外に家族だったということもあります。

警察の捜査は事業者へ向かう。

また、Windows11になり暗号化ドライブ機能が一般普及しつつあります。今後は警察等の捜査機関は、パソコン・スマホを押収しても中身を読めない詰みになります。押収をしなくなるでしょう。そのかわり被疑者のクラウドストレージへ捜査令状で公開を迫ると思います。これはすでに兆候が伺えます。「図書館の貸し出し履歴、捜査機関に提供 16年間で急増」のように、事業者に対して迫るほうが多くなることでしょう。図書館の例はひどくて令状なしで公開してしまってる例もありました。このあたりは法整備が未整備過ぎます。今後はOffice365やGooge Driveへ照会を掛けるようになっていくことでしょう。利用者の知らない間に企業のデータが事業者から抜かれる可能性は極めて高いのです。

クラウドストレージを安心して使う。

クラウド怖い・インターネットは怖いファイルをネットに置くな。のような「おばけが出るぞ」類似の子供だましのセキュリティを啓蒙するくらいなら、ちゃんと暗号化を使って自分以外がファイルを読めないように設置しておくことが大事なのです。

などと、澄ましたことを言ってますが、要はクラウドストレージの容量を1アカウント単位で課金されると面倒くさいので、複数人で・・・ってことを考えたら、それを解決するする方法があったわけです。

2022-02-28追記

無限に使えるオンラインストレージがなくなったのでrcloneの出番はそんなにないと思いますが。

などはまだ行けそうです。AWS でいいのなら glacier や backblaze b2に凍結するのもありかもしれない。

backblaze personal が使えればいいのだろうが、Win/Mac以外は使えないですし。

参考資料

https://rclone.org/commands/rclone_mount/