EFV — Encrypted File Vault(暗号化ファイルボールト)

Security

概要

EFV(Encrypted File Vault)は、AES Crypt 形式の暗号化ファイル群を堅牢に管理することを目的にした、Rust製のスプリットボールト管理ツールです。設計上、ファイルの暗号化本体と検索・管理用のインデックス(メタデータ)を分離し、データベースには SQLCipher を用いることでディスク上の永続化データを暗号化します。さらに、既存の「平文で保持されている」レガシーデータを安全に移行するための「zero-plaintext」アップグレードパスを重視し、秘密情報のメモリ中残留を防ぐ zeroize、アクセス制御に secure-gate を導入するなど、安全性を意識した設計が特徴です。現状はプレリリースアルファであり、実運用環境での使用は推奨されていません。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 4
  • ファイル数: 9
  • メインの言語: Rust

主な特徴

  • スプリットボールト設計:暗号化データ本体(AES Crypt)とインデックス(SQLCipher)を分離
  • レガシー資産の「zero-plaintext」アップグレード経路を用意
  • Rust の安全性機構に加え、zeroize・secure-gate による秘密情報保護
  • プレリリース(アルファ)段階で公開作業中、実運用は非推奨

技術的なポイント

EFV の設計で注目すべき点は「分離」と「最小露出」の原則です。まずスプリットボールトとは、実ファイル(暗号化されたバイナリ)とその検索・管理用メタデータ(インデックス)を物理的・論理的に分けるアプローチです。本プロジェクトではメタデータ側に SQLCipher(SQLite の暗号化層)を想定しており、インデックス自体を暗号化して保管することで、ファイルリストや属性情報の漏洩リスクを低減します。一方でファイル本体は AES Crypt 形式を前提にしているため、既存の AES Crypt 互換ワークフローと統合しやすくなっています。

「zero-plaintext」アップグレードは、過去にプレーンテキストで保管されていた情報を、運用停止や条件付きの移行を経ずに安全に暗号化済みアーカイブに移すことを想定した方針です。これを実現するために、メモリ中に平文が残らないよう zeroize(Rust のクリアリングを行うクレート)を多用し、シークレット値の露出を避けます。また secure-gate の導入は、認可レイヤや保護境界の確立に寄与し、API や鍵管理操作に対するアクセス制御やガードを強化します。

実装面では Rust を採用しているため、型システムと借用チェッカによるメモリ安全性が期待できます。ただし、暗号実装や鍵のライフサイクルは運用上の重要点であり、ライブラリ選定(例:ring、rust-crypto 等)や安全なランダムソース、シークレットの保護(ディスク上・スワップ・ページングへの配慮)など、さらに監査と実運用テストが必要です。README にある通り現段階はアクティブなワークベンチで、v0.1.0 で履歴をクリーンにした上で初の実用リリースを目指す計画が記載されています。現状はプロトタイプ的要素が多く、実使用前にコード監査とセキュリティレビューが必須です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • CHANGELOG.md: file
  • Cargo.toml: file
  • LICENSE-APACHE: file
  • LICENSE-MIT: file

…他 4 ファイル

リポジトリは小規模で、現状は初期実装と設計メモ、ビルド定義(Cargo.toml)やライセンス類が揃っている状態です。README によると履歴はクリーンアップされる予定で、v0.1.0 で実運用向けの面が整えられる計画です。

まとめ

分割設計とメモリ安全を重視した暗号ファイル管理の実験的実装。監査後の v0.1.0 を待ちたいプロジェクトです。

リポジトリ情報:

READMEの抜粋:

EFV – Encrypted File Vault [PRE-RELEASE ALPHA]

Current version: 0.0.0(開発中)
First public release: v0.1.0(クリーンな履歴、監査済みの表面、実用性を備えたリリース予定)

This repository is a live workbench. It will be deleted and replaced with a clean history at v0.1.0.

Do not use EFV with real data yet.

Everything here is being built in the open:

  • Split-vault design (SQLCipher + separate index)
  • Zero-plaintext legacy upgrades
  • zeroize + secure-gate everywhere …