暗号化
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を生成し、バックアップ先に保存します。
ファイル暗号鍵の取得
- バックアップ先からStorage Keyを取得します。
- PBKDF2を使用し、ユーザーが入力したパスワードとStorage Keyに含まれるSaltからPBKを生成します。
- PBKと、Storage Keyに含まれるIVを使用して、AES-256暗号化されたFEKを復号します。
ファイルの暗号化
- バックアップ対象のファイルを複数のBlockに分割し、各Blockについて以下の処理を行います。
- FEKと、乱数生成器により生成したIVを使用して、BlockをAES-256暗号化します。IVはBlockごとにユニークです。
- IV、暗号化したBlockを合わせたStorage Blockを生成し、バックアップ先に保存します。
ファイルの復号
- バックアップ先からファイルを構成するStorage Blockを取得し、各Storage Blockについて以下の処理を行います。
- FEKと、Storage Blockに含まれるIVを使用して、AES-256暗号化されたBlockを復号します。
- Blockをファイルに書き込みます。