Cyberduckでオンラインストレージをエンドツーエンド暗号化する

Cyberduckでオンラインストレージをエンドツーエンド暗号化する セキュリティ

Dropboxの有料プランを契約しているが、ストレージ容量がかなり余っている。

これをどのように有効活用しようか考えていたのだが、今までは自宅に設置したNASに保存していた過去の個人的なデータのバックアップ先として活用したいと思った。

しかし、長期にわたる個人的なデータがかなり含まれるので、プライバシー的にそのまま生の状態でオンラインストレージにアップロードするのは気が引ける。

というわけで、Cyberduckを利用してエンドツーエンド暗号化の環境を構築し、こちら側で完全に暗号化してからDropboxに送信してデータをバックアップすることにします。

■動作確認環境
Windows10 Pro バージョン1903

スポンサーリンク

オンラインストレージのデータを自分で暗号化することの重要性

基本的に、DropboxやOneDrive、Googleドライブ等の有名なオンラインストレージでは、同期などの通信中はもちろん、保存しているデータに関しても当然のように強固な暗号アルゴリズムやプロトコルによって暗号化され保護されています。

しかし、重要なのは「暗号化を行ったのは誰で、誰がその暗号化されたデータを復号できるのか?」ということであり、ほとんどのメジャーな大手オンラインストレージサービスでは、「データの暗号化を行うのも、復号を行うのもオンラインストレージ側」という現状です。

暗号化の肝は「自分自身で暗号化し、自分以外は復号できない」という状況をつくり出すことであり、そこで「エンドツーエンド暗号化」というキーワードが重要になってきます。

エンドツーエンド暗号化(End-to-end encryption)

エンドツーエンド暗号化とは、ユーザー側がデータを送信する前に自分しか知り得ない秘密鍵・パスフレーズやパスワード等でデータを暗号化し、自分以外の第三者(サービスの管理者を含む)は通信内容や保存したデータやファイルの中身が一切わからないようにする技術です。
万が一クラウドストレージのアカウント情報が洩れて勝手にログインされてデータを盗まれたとしても、エンドツーエンド暗号化をしてあれば、暗号化した自分以外は誰もデータを復号することが出来ません。

このエンドツーエンド暗号化を、CyberduckとCryptomatorというアプリを利用すれば簡単に実現することが出来ます。

スポンサーリンク

CyberduckとCryptomatorについて

Cyberduck

Cyberduck公式サイト

URL:https://cyberduck.io/

Cyberduckとは各種サーバーやオンラインストレージと接続してファイルのやりとりをするためのオープンソースのアプリです。FTPS、SFTP(SSH)、WebDAV等のさまざまなプロトコルでデータを安全に送受信できます。MicrosoftストアやMac APP Storeからインストールすると有料ですが、デスクトップアプリは無料で利用できます。

Cryptomator

Cryptomator公式サイト

URL:https://cryptomator.org/

Cryptomatorはエンドツーエンド暗号化を実現するためにクライアント側でデータを暗号化・復号するためのオープンソースのアプリです。スマホアプリは有料ですが、PCのデスクトップアプリは無料で利用できます。(※スマホアプリは暗号化の部分のみオープンソースとなっています。)

Cryptomatorを利用すると、ファイル単位でファイルの中身(ファイルコンテンツ)がAES 256ビットで暗号化され、更にファイル名やファイルヘッダーも暗号化されることにより、元々がどんな名前のどんな拡張子(ファイルタイプ)だったかさえわからなくすることが出来ます。
【参考URL】Cryptomatorドキュメント(Architecture)
https://docs.cryptomator.org/en/latest/security/architecture/

今現在、CyberduckにCryptomatorが内蔵されており、CyberduckをインストールするとCryptomatorの機能も自動的に使えるようになります。

クラウドストレージと通信する際の流れ

【送信】

  1. Cyberduckが各種オンラインストレージのサーバーに接続
  2. Cryptomatorがデータを暗号化
  3. 暗号化されたデータを送信

【受信】

  1. Cyberduckが各種オンラインストレージのサーバーに接続
  2. 暗号化されたデータを受信
  3. Cryptomatorがデータを復号

Cryptomator単体ではなく、Cyberduckを利用することの利便性

通常のオンラインストレージを利用する際は、「PC(ローカル)にある専用フォルダに入れたファイルが、そのサービスが提供するアプリによりオンラインストレージに転送さて同期される」という流れになります。

しかし、Cyberduckの場合は、直接Cyberduckが独自でクラウドストレージのサーバーと通信してファイルを転送(送受信)します。

暗号化のみであればCryptomatorだけでエンドツーエンド暗号化が実現可能ですが、DropboxのスマートシンクやOneDriveのファイルオンデマンドなどの機能を有効利用するために、PC(ローカル)にある専用フォルダを介さずに直接クラウドストレージのサーバーと通信するCyberduckが非常に役に立ちます。

DropboxのスマートシンクやOneDriveのファイルオンデマンドとは、クラウドに保存したデータが自動的にPC(ローカル)と同期されるとPCのストレージ容量を圧迫してしまうので、それを防ぐための機能です。
PCのエクスプローラーからフォルダ名やファイル名が確認できてファイルが存在しているように見えますが、実際の実データはPC内に存在せず、ファイルをクリックして開く際にその都度ダウンロードするという仕組みによりPCのストレージ使用量を節約します。
これにより、ノートパソコンのSSDは256GBしかないけれど、2TBのデータをクラウドストレージに預けておいて、いつでも好きな時にエクスプローラーから好きなファイルを利用できるといったことが可能になります。

それではCyberduckのインストールと設定を始めます。

スポンサーリンク

Cyberduckのインストール

Cyberduckの公式サイト[ https://cyberduck.io/ ]を開き、右上の「Download」をクリックします。

Cyberduckの公式サイトで「Download」をクリック

ダウンロードページで「Cyberduck for Windows」をクリックします。

ダウンロードページで「Cyberduck for Windows」をクリック

ダウンロードされたファイル(Cyberduck-Installer-[バージョン番号].exe)を実行します。

ダウンロードされたファイルを実行

Windows Defender SmartScreenによる警告が出た場合は、「詳細情報」をクリックしてアプリ名と発行元を確認してます。

Windows Defender SmartScreenによる警告が出たら「詳細情報」をクリック

アプリ: Cyberduck-Installer-[バージョン番号].exe
発行元: iterate GmbH

となっていることを確認し、「実行」をクリックします。(※この警告は正常なアプリでもアップデート等で新しいバージョンが出た直後でまだインストールした人が少ない場合などに表示されることがあります。)

アプリ名と発行元を確認し「実行」をクリック

セットアップウィザードに従ってインストールしていきます。

「Install」をクリックします。(※「Options」をクリックするとインストール先を変更できます。)

ウィザードの「Install」をクリック

インストールが始まります。

Cyberduckインストール中

インストールが終了したら「Close」をクリックしてウィザードを閉じればCyberduckのインストールは完了です。

Cyberduckのインストールは完了

オンラインストレージへの接続設定

今回はDropboxで接続テストを行ってみます。

まず、Cyberduckを起動します。

Cyberduckを起動

Cyberduckが起動したら左上の「新規接続」をクリックします。

「新規接続」をクリック

新規接続画面が開きます。

Cyberduckの新規接続画面

Dropboxを選択し、「接続」ボタンをクリックします。

接続先にDropboxを選択

「接続」ボタンをクリック

ブラウザが開かれて、Dropboxの「APIリクエストの承認」というログイン画面が表示されますので、Dropboxのユーザー名とパスワードと二段階認証でログインします。(※既にブラウザでDropboxにログインしている場合はこのログイン画面は出ません。)

Dropboxの「APIリクエストの承認」ログイン画面

「CyberduckがDropbox内のファイルとフォルダへのアクセスをリクエストしています。」と表示されるので「許可」をクリックします。

CyberduckのDropbox内データへのアクセスを許可する

OAuth 2.0のAuthorization Code(認可コード)が表示されますのでコピーします。

Authorization Code(認可コード)をコピー

Cyberduckの「OAuth2 Authorization」に認証コードをペーストして「続ける」をクリックします。

認証コードをペースト

Dropboxに接続され、Dropboxに保存してあるデータの覧が表示されました。

CyberduckとDropboxの接続完了

暗号化フォルダの作成

「アクション」をクリックし、メニューの「New Encrypted Vault」をクリックします。

New Encryted Vault」をクリック

作成する暗号化フォルダの名前とパスワードを入力して「作成」をクリックします。(※今回は「encrypted-folder」という名前のフォルダを作成しました。)

暗号化フォルダの名前とパスワードを設定

暗号化フォルダが作成されました。

暗号化フォルダの作成完了

作成した暗号化フォルダを開いてみます。

暗号化フォルダをダブルクリックで開こうとするとパスワードを聞かれますので、先ほど設定したパスワードを入力して「続ける」をクリックします。

暗号化フォルダをダブルクリックで開く

暗号化フォルダのパスワードを入力

暗号化フォルダが開きました。(まだ何もアップロードしていないのでフォルダの中身は空です。)

暗号化フォルダ

動作確認

暗号化フォルダの動作確認を行います。

アップロードとダウンロードのテスト

ドラッグ&ドロップでファイルをアップロードしてみます。

ドラッグ&ドロップでのアップロードテスト

OKです。正常にアップロードできました。

ドラッグ&ドロップでアップロード完了

アップロード後のファイル一覧

ちなみに、先ほどアップロードしたファイルをエクスプローラーのDropboxフォルダから見ると、ランダムな文字列のファイル名になっています。

Dropboxサーバ上ではランダムな文字列のファイル名に変換されている

今度はドラッグ&ドロップでファイルのダウンロードのテストをします。

ファイルのダウンロードのテスト完了

OKです。正常にダウンロードして即時に復号化されました。

ファイルのダウンロードのテスト完了

ハッシュ値の確認

アップロード前とアップロード後、およびダウンロード後のファイルのそれぞれのハッシュ値の確認をしてみます。

■アップロード前のファイル
・ファイル名:image1.jpg
・ハッシュ値(SHA1):8e9154c133075977b1586431ac72eb6bbc66fdea

■暗号化されてアップロードされたファイル
・ファイル名:A3S4PCEUENKDYHTFWDDHONCVR364SOD64BQWWQAGNZOM3LDN
・ハッシュ値(SHA1):e6d870ad8996af3b93e4739c498fdf9054c57a72

■ダウンロードして復号されたファイル
・ファイル名:image1.jpg
・ハッシュ値(SHA1):8e9154c133075977b1586431ac72eb6bbc66fdea

アップロード前、アップロード後、ダウンロード後のハッシュ値

「暗号化&アップロード」の前と「ダウンロード&復号」後のファイルのハッシュ値が同一なので問題ありません。ちゃんと「暗号化」⇒「復号」の処理ができています。

スマートシンクのテスト

スマートシンクを有効化してみます。

暗号化フォルダのスマートシンクを有効化

スマートシンクが有効になりました。

スマートシンク設定完了(1)

スマートシンク設定完了(2)

スマートシンク有効化状態でのアップロードのテストを行います。

スマートシンク有効化状態でのアップロードのテスト

アップロードOKです。

スマートシンク有効化状態でのアップロードのテストOK

スマートシンク有効化状態でのダウンロードのテストを行います。

スマートシンク有効化状態でのダウンロードのテスト

ダウンロードOKです。

スマートシンク有効化状態でのダウンロードのテストOK

スマートシンクが有効になっていても、ドラッグ&ドロップだけで暗号化済みファイルのアップロード、および暗号化されたファイルをダウンロードしてリアルタイムで復号が可能です。

ファイル名の変更テスト

ファイル名を変更したいファイルを右クリックして「名前を変更」をクリックします。

暗号化済みのファイルのファイル名変更テスト

選択したファイルを移動しますか?聞いてくるので「名前を変更」をクリックします。(※たぶんサーバー側でmvコマンドを実行しているので移動と直訳されたのだと思います。)

ファイル名変更の確認

ファイル名が変更されました。

ファイル名の変更完了

2台のPCで同時にCyberduckを立ち上げて作業したらどうなるか?

2台のPCでCyberduckを同時利用するテストを行ってみます。

以下がテストの内容です。

  • 2台のPCにCyberduckをインストールして同じDropboxアカウントに接続
  • 双方のPCで暗号化済みフォルダを開く
  • 片方(PC-①)で新規ファイルを暗号化してアップロード
  • もう一方(PC-②)の挙動を観測

PC-①で新規ファイルをアップロードします。

2台のPCで同時にCyberduckを立ち上げて暗号化済みフォルダで作業した際のテスト(1)

2台のPCで同時にCyberduckを立ち上げて暗号化済みフォルダで作業した際のテスト(2)

PC-②の状態を確認します。

2台のPCで同時にCyberduckを立ち上げて暗号化済みフォルダで作業した際のテスト(3)

2台のPCで同時にCyberduckを立ち上げて暗号化済みフォルダで作業した際のテスト(4)

通常のDropbox利用時のように、複数デバイスで作業をした際にリアルタイムでファイル一覧の反映はしませんでしたが、「更新」ボタンをクリックすることでファイル一覧が最新の状態に反映します。

VeraCryptやBitLockerを利用した、オンラインストレージ上に作成した仮想ディスクイメージをマウントして仮想ディスク全体を暗号化する方法とは違い、Cyberduckでは一つ一つのファイルごとに暗号化と復号の処理をして個別にサーバーと直接的に送受信を行うので、複数デバイスで同時に作業をしていても排他処理等でのエラーや競合は起こりませんでした。

その他の基本的な操作方法

ブックマーク

一度接続したクラウドストレージは、メニューの「ブックマーク」⇒「新規ブックマーク」をクリックしてブックマークに登録しておきましょう。次に接続する際に便利です。

Cyberduckのブックマーク登録方法

ブックマークへの登録を忘れてしまった場合は、メニューの「ブックマーク」⇒「履歴」で確認できます。

Cyberduckを終了するには

メニューの「ファイル」⇒「Exit」、または右上の「×」で閉じればOKです。

Cyberduckを終了すると最後に寄付のお願いが出ますが、このアプリに満足したら開発者に寄付を送ることによりもっと色々な便利な機能が追加されるかもしれません。

Cyberduckの寄付のお願い画面

各種設定の変更

メニューの「編集」⇒「環境設定」で各種設定を変更できます。

Cyberduckの環境設定画面

OAuth 2.0のアクセストークンに関して

もしCyberduckを利用しなくなりPCから削除した際は、OAuth 2.0のアクセストークンも無効化しておきましょう。

DropboxのWeb版にログインし、アイコンをクリックしてメニューを開き「設定」をクリックします。

CyberduckのOAuth2.0のアクセストークン無効化方法(1)

個人アカウント画面の「リンク済みアプリ」タブをクリックし、一番下までスクロールすると「Dropbox にアクセスできるアプリ」にCyberduckがいるので、これの「×」をクリックします。

CyberduckのOAuth2.0のアクセストークン無効化方法(2)

Cyberduckとのリンクを解除するか聞いてくるので、「リンクを解除」をクリックすればアクセストークンが無効化されます。

CyberduckのOAuth2.0のアクセストークン無効化方法(3)

まとめ

  • オンラインストレージで「エンドツーエンド暗号化」をしたいならCyberduckが便利。(Cryptomatorが既に内蔵されている。)
  • ドラッグ&ドロップで直感的に暗号化済みファイルのアップロードとダウンロードが可能。
  • DropboxのスマートシンクやOneDriveのファイルオンデマンドにも対応。(ローカルのストレージ容量を圧迫しない。)
  • 複数デバイスでの同時利用もOK(ファイル一覧を更新するには「更新」ボタンをクリックする。)

以上で解決です。