GoatsPass — ローカルAES-256-GCMパスワードマネージャ

Security

概要

GoatsPassは「ローカルで動作するパスワードマネージャ」で、保存するパスワードデータベース全体をAES-256-GCMで暗号化することを前提にした小規模プロジェクトです。Python 3.9以上で実装され、WindowsとLinuxをターゲットにしたバイナリ作成用スクリプト(build_exe.py)を含みます。ファイルベースで暗号化されたデータを保持するため、クラウド同期を行わずにローカルで完全に管理したいユーザーに向いています。MITライセンスのため、改変や再配布が容易で、セキュリティレビューやローカル運用に適したシンプルな基盤を提供します。

GitHub

リポジトリの統計情報

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

主な特徴

  • AES-256-GCM によるデータベース全体の暗号化(機密性と整合性を提供)
  • ローカル保存型(クラウド依存なし)で簡潔な運用
  • Python 3.9+ 実装と配布用ビルドスクリプト(build_exe.py)を同梱
  • MIT ライセンスでソース改変・配布が容易

技術的なポイント

GoatsPassの中心はAES-256-GCMを用いた「認証付き暗号(AEAD)」による暗号化です。AES-GCMは暗号化(機密性)に加えて認証タグを生成するため、データ改竄を検出できます。実装上で重要なのは以下の点です:キー導出、IV(nonce)の扱い、保存フォーマット、ランダム性の品質、及びパッケージングによる配布面です。

まず、マスターパスワードから暗号鍵を作る際は安全なKDF(例:PBKDF2, Argon2)とランダムなソルトが必須です。KDFは計算コストを設定してブルートフォース耐性を高めます。AES-GCMではnonceの再利用が致命的な脆弱性を招くため、暗号化ごとにユニークなIV(通常96ビットのランダム/カウンタ)を生成し、暗号化データと共に保存する必要があります。暗号化後はタグ(認証タグ)とIV、ソルトをメタ情報としてファイルヘッダに含めるのが一般的な設計です。

プロジェクトに build_exe.py が含まれることから、PyInstaller や cx_Freeze を用いてプラットフォームごとの実行ファイルを作成する意図が推測できます。配布用ビルドはユーザー利便性を高めますが、バイナリ化に伴う更新や信頼性の管理、サードパーティ依存のセキュリティチェックが必要です。

コードベースが小規模である点はセキュリティレビューや監査に適しており、MITライセンスは商用利用や派生作成を容易にします。改善提案としては、Argon2idのようなメモリハードなKDF採用、シークレットのメモリ上での安全な消去、セキュアな乱数源(Os.urandom/SecretRandom)の明示、クリップボード処理時の自動消去、およびバックアップ/復元フォーマットの明確化などが挙げられます。また、ファイルフォーマットのマジックバイトとバージョン管理を実装して互換性を保つと将来の拡張が容易になります。

プロジェクトの構成

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

  • LICENSE: file
  • README.md: file
  • build_exe.py: file
  • gitignore: file
  • goatspass.py: file

…他 4 ファイル

まとめ

シンプルで自宅運用に向くローカルAES-256-GCMベースのパスワード管理ツール。監査・改良がしやすい小規模実装。

リポジトリ情報:

READMEの抜粋:

GoatsPass Logo

GoatsPass

Локальный менеджер паролей с шифрованием AES-256-GCM

Platform Python License Encryption


✨ Возможности

  • 🔒 AES-256-GCM шифрование всей базы паролей …