rclone crypt / rclone mount / rclone rcd --weg-gui でクラウドストレージを暗号化する。
rclone で暗号化
- rclone で暗号化
- はじめに
- rclone crypt による暗号化
- rclone crypt を作る
- 暗号化して転送する。
- 暗号化ファイルの確認
- 暗号化方式
- 暗号化後のデメリットと解消法
- なぜ、ドライブに暗号化が必要なのか
- クラウドストレージを安心して使う。
- 2022-02-28追記
- 参考資料
はじめに
rclone で、リモートのクラウドストレージを扱えます。
rclone で google drive → dropbox のような転送が行なえます。
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 で暗号化転送したファイルを確認してみる
ファイル名もそれっぽく偽装してくれる感じなんですね。
ウェブサイトから、ファイルを取り出して、ファイルの中身を確認。
暗号化されていることを確認しておきます。
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 で使う。
Dropboxや Google driveが提供する通常のWEB-UIは使えなくなります。
代わりに rclone mount / rclone GUIを使います。
ファイルが暗号化された
ファイル名もファイル中身も暗号化されるので、ウェブサイトからだと何が何だか分からない。
rclone mount なら見える。
rclone mount でマウントしてあげれば見える。
ファイルサイズとファイル数から、ウェブサイトから見たファイルがこれだとわかる。
rclone mount はWindowsのエクスプローラーと結合する(WinSfp)を使うことでWindowsからでも通常のファイルとして扱える(遅いけど)
rclone mount
rcloune ls
rclone cat
を駆使してファイルを取り出して一覧することができる。
でも不便で利便性が下がっている
rclone web-gui なら見える
コマンドラインだと不便なのでWEB-UIを使う。
rclone には専用のWEB-UIがあり、クラウドストレージのウェブサイト代用として機能する。
rclone rcd --web-gui
を駆使して、フォルダを見るとファイルを見ることができて便利。
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鍵ペアです。
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
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 を直接ssh のRSA公開鍵で暗号化してもいいかもしれませんが、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 Driveが DS_Storeを誤認したように、いつなんどき巻き込まれるかわかりません。また攻撃者は身近にいるものです。存外に家族だったということもあります。
警察の捜査は事業者へ向かう。
また、Windows11になり暗号化ドライブ機能が一般普及しつつあります。今後は警察等の捜査機関は、パソコン・スマホを押収しても中身を読めない詰みになります。押収をしなくなるでしょう。そのかわり被疑者のクラウドストレージへ捜査令状で公開を迫ると思います。これはすでに兆候が伺えます。「図書館の貸し出し履歴、捜査機関に提供 16年間で急増」のように、事業者に対して迫るほうが多くなることでしょう。図書館の例はひどくて令状なしで公開してしまってる例もありました。このあたりは法整備が未整備過ぎます。今後はOffice365やGooge Driveへ照会を掛けるようになっていくことでしょう。利用者の知らない間に企業のデータが事業者から抜かれる可能性は極めて高いのです。
クラウドストレージを安心して使う。
クラウド怖い・インターネットは怖いファイルをネットに置くな。のような「おばけが出るぞ」類似の子供だましのセキュリティを啓蒙するくらいなら、ちゃんと暗号化を使って自分以外がファイルを読めないように設置しておくことが大事なのです。
などと、澄ましたことを言ってますが、要はクラウドストレージの容量を1アカウント単位で課金されると面倒くさいので、複数人で・・・ってことを考えたら、それを解決するする方法があったわけです。
2022-02-28追記
無限に使えるオンラインストレージがなくなったのでrcloneの出番はそんなにないと思いますが。
- github LFS , 1GB/day
- dropbox enterprise 2000 yen / month
- google drive enterprise 2500 yen / month
- google drive bussiness standard 1300x5 user / month
などはまだ行けそうです。AWS でいいのなら glacier や backblaze b2に凍結するのもありかもしれない。
backblaze personal が使えればいいのだろうが、Win/Mac以外は使えないですし。