Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fujieda/a6903b4cbb0c95120473 to your computer and use it in GitHub Desktop.
Save fujieda/a6903b4cbb0c95120473 to your computer and use it in GitHub Desktop.
Bitcasaの暗号化と重複排除の概要

暗号化と重複排除の概要

訳注: これはOverview on encryption and deduplicationをBitcasa社から許諾を得て和訳したものである。

データはどのように暗号化されるのか

ユーザーがデスクトップアプリケーションを使ってコンテンツをBitcasa Driveにコピーしたとき、まずクライアント側でconvergent encryptionと呼ばれる手法で暗号化される。そして小さなデータのブロックとしてキャッシュにコピーされる。convergent encryptionではファイルのハッシュを用いて、ファイルを暗号化するための一意な鍵集合を生成する。convergent encryptionについてはWikipediaにより詳しい説明がある。データがキャッシュにコピーされたら、同期プロトコルでBitcasaにアップロードされる。ユーザーのファイルシステムは、Bitcasaアカウントを作ったときに生成されたユーザーキーで暗号化される。

この暗号化によって、ユーザーのアカウントの中にあるあらゆるデータ(ファイル名を含む)を我々がまったく見られなくなる。我々の側から見えるのは、何の意味もないデータのブロックと、それがユーザーのBitcasa Driveの中でどれくらい容量を使っているかだけである。データが復号化されて再構築されるのは、ユーザーがユーザー名とパスワードを使ってアカウントにログインしたときだけだ。我々は暗号鍵や生のままのパスワードはサーバーにまったく保存しない。

重複排除はどのように行うのか

ユーザーのデータが暗号化されてキャッシュに入ったら、Bitcasaはこれからアップロードする暗号化されたデータのブロックが、サーバーに既に存在しているかを確認する。アップロード済みのブロックがあったら、Bitcasaはそれをスキップして次のブロックの検査に進む。サーバーに既に存在するファイルをアップロードしたときには、ファイルがユーザーのBitcada Driveに現れる前に、Bitcasaはすべてのブロックがアップロード済みであることを確認する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment