エンドツーエンド暗号化は、Proton Driveの核心です。これによってお客様のファイルのプライバシーが保たれ、お客様と指定した人だけがアクセスできるようになります(弊社ですらアクセスできません)。弊社のクラウドストレージアプリでは、すべてのファイル操作がこのように保護されているため、暗号化のパフォーマンスがアップロードやダウンロードの体感速度に直接影響を与えます。

アップロードとダウンロードにおける前回のSDKパフォーマンス改善に続き、今回の最新アップデートでは、Proton Driveの核となる暗号化レイヤーをさらに効率化することで、その取り組みをさらに発展させています。

Proton Driveは、ファイルコンテンツを暗号化するためにOpenPGP標準規格を使用しており、このたび、同規格のアップデートで導入された暗号技術の進歩を採用しました。今年1年をかけてSDKを構築した主な目的は、Driveのファイル操作を共通の基盤に移行し、すべてのプラットフォームでアプリをより高速かつスムーズにすることでした。その結果、ファイルのアップロードパフォーマンスが最大4倍向上しました。また、これは次世代のDrive機能に向けた土台を築くものでもあります。

パフォーマンスへの影響

暗号化は、日常的な使用におけるアプリの操作感に大きな影響を与えるため、その負荷を最大4分の1に削減することで、ファイルのアップロードがはるかに高速に感じられるようになります(特にパフォーマンスが最も重要となるデバイスにおいて顕著です)。

  • モバイルでのベンチマークテストでは、以前は97ミリ秒かかっていた4MBのファイルの暗号化が、現在は32ミリ秒で完了します
  • より高性能なプロセッサでは、以前は12ミリ秒かかっていた同じ処理が、現在は3ミリ秒で完了します

HD映画や1,000枚の高解像度写真の暗号化は、以前はスマートフォンで約1分半、高速なデスクトップで約12秒かかっていました。今回のアップデートにより、同様の処理がモバイルでは約30秒、デスクトップでは約3秒で完了するようになります。

Proton Driveが高速化した仕組み

Proton Driveが使用する構造はファイルの「ノード(node)」であり、これには複数の「リビジョン(revision)」が存在し、それぞれがファイルのバージョンを表します。コンテンツは「ブロック(block)」に分割(チャンク化)されます。ノードには、ブロックを暗号化するために使用される暗号化データが含まれています。ファイルノード上のこの暗号化データは、「ノードキー(node key)」(ロックされたPGP秘密鍵)と「コンテンツキーパケット(content key packet)」(ノードキーで暗号化されたPKESK)で構成されています。

Proton Driveの暗号化アップデートを説明する図

Proton Driveがファイルコンテンツに使用するPGPメッセージは、次の2つのパケットで構成されています。

  • 公開鍵暗号化セッションキー(PKESK):これはノードのコンテンツキーパケットであり、すべてのブロックで共有されます。
  • 共通鍵暗号化整合性保護データパケット(SEIPD):これは暗号化されたブロックコンテンツです。

新しい暗号化スキーム

この暗号化アップデートが行われる前は、アップロードされたファイルにはv3 PKESKとv1 SEIPDが使用されていました。現在は、暗号化アルゴリズムにv6 PKESKとv2 SEIPDが必要となります。コンテンツに使用される共通鍵暗号はAES-GCMであり、大半の最新デバイスのハードウェア暗号化を最大限に活用します。

ファイルの更新時にセッションキーがリビジョン間で共有されるため、ファイル上のすべてのリビジョンは、最初のリビジョンで使用された暗号化スキームと一致する必要があります。つまり、クライアントは、ファイルを変更して新しいリビジョンをアップロードする際に、PKESKバージョンを考慮するようにアップデートされる必要があります。Proton Drive SDKに基づいて構築されたクライアントは、この情報がセッションキーに含まれているため、これを自動的に処理します。キーはこちら(新しいウィンドウ)で生成され、ブロックの暗号化時(新しいウィンドウ)に使用されます。

後になって復号に関する問題が発生するのを防ぐため、誤ったバージョンで送信されたリビジョンは拒否されます。これは、この機能をサポートしていないクライアントは、変更の適用後にアップロードされたファイルを更新できなくなることを意味します。パフォーマンスのメリットを最大限に享受するために、Proton Driveクライアントを必ずアップデートしてください。

今後の予定

これは、Proton Driveの共有コアモデルを、エンドツーエンド暗号化で保護された、より高性能で高機能なクラウドストレージへと進化させるための大きな一歩です。SDKはすべてのDriveクライアントに共有の暗号化コアを提供し、この規模の変更を可能にするとともに、今後の計画をより迅速に進めるのに役立ちます。 今年のさらなる改善にぜひご期待ください。

今後ともご協力をお願いいたします。

Proton Driveエンジニアリングチーム