暗号化

2017/9/1

初期処理

  • 乱数生成器がFEK (File Encryption Key)を生成します。qBackupはFEKをファイルの暗号鍵として使用します。
  • ユーザーが入力したパスワードと、乱数生成器が生成したSaltをからPBK (Password-Based Key)を生成します。PBKの生成にはPBKDF2 (Password-Based Key Derivation Function 2)を使用します。PBKDF2はHMAC-SHA256と256-bitのSaltを使用し、イテレーション数は100,000です。
  • PBKと、乱数生成器が生成したIV (Initialization Vector)を使用して、FEKをAES-256暗号化します。
  • Salt、IV、暗号化したFEKを合わせたStorage Keyを生成し、バックアップ先に保存します。

initialization

ファイル暗号鍵の取得

  • バックアップ先からStorage Keyを取得します。
  • PBKDF2を使用し、ユーザーが入力したパスワードとStorage Keyに含まれるSaltからPBKを生成します。
  • PBKと、Storage Keyに含まれるIVを使用して、AES-256暗号化されたFEKを復号します。

retrieving-fek

ファイルの暗号化

  • バックアップ対象のファイルを複数のBlockに分割し、各Blockについて以下の処理を行います。
  • FEKと、乱数生成器により生成したIVを使用して、BlockをAES-256暗号化します。IVはBlockごとにユニークです。
  • IV、暗号化したBlockを合わせたStorage Blockを生成し、バックアップ先に保存します。

file-encryption

ファイルの復号

  • バックアップ先からファイルを構成するStorage Blockを取得し、各Storage Blockについて以下の処理を行います。
  • FEKと、Storage Blockに含まれるIVを使用して、AES-256暗号化されたBlockを復号します。
  • Blockをファイルに書き込みます。

file-decryption