Skip to main content

Iron Dome - A secure CLI password manager with AES-256 encryption and zero-knowledge architecture

Project description

IronDome

Fortified CLI Password Manager — AES-256 | Zero-Knowledge | Hardware-Bound

PyPI Python License Downloads Open in Colab

Quick StartFeaturesSecurityDevelopersContributing



Your passwords. Your machine. Your rules.

IronDome encrypts everything locally with AES-256, binds keys to your hardware, and operates on a zero-knowledge model — your master password is never stored. Nothing leaves your device. Ever.


Quick Start

pip install IronDome
bunker

On first launch, choose your security level:

  • Biometric Only (Touch ID / Windows Hello / Fingerprint)
  • Biometric + Master Password (two-factor)
  • Master Password Only (traditional)

Two commands. You're protected.


Interactive Presentation

Open Presentation

Test every corner of IronDome directly in your browser — no install required:

Section What You'll Test
Architecture Module map, security model, CLI commands, machine identity
Encryption Engine PBKDF2 benchmarks, Fernet AES-256, zero-knowledge proof, tamper detection
Password Generation All configs, strength scoring, entropy, CSPRNG guarantees
Vault Operations CRUD, search, backup, 1000-entry stress test
Authentication Login flow, brute force lockout, adaptive scaling, timing attacks
Airspace Open/Close Full CLI workflow simulation, session management
Error Handling Missing files, corrupt data, wrong keys, recovery keys

Features

Security

  • AES-256 encryption via Fernet
  • Zero-knowledge — only salted PBKDF2 hash stored
  • 600,000 PBKDF2 iterations (OWASP 2023)
  • Hardware-linked keys — data tied to your machine
  • Brute force protection — adaptive lockouts
  • Auto-timeout — session expires after 30min
  • Touch ID / Windows Hello / Fingerprint support
  • Two-factor mode — biometric gate + master password
  • Emergency recovery key — printed once at setup, stored offline

Management

  • Generate strong, customizable passwords
  • Real-time strength evaluation
  • Search by domain or username
  • Encrypted backup & restore
  • Detailed logging (no secrets exposed)
  • Intuitive CLI navigation

Biometric Authentication

IronDome integrates with the native biometric stack on each platform — no third-party biometric services, no data transmitted.

Supported Platforms

Platform Mechanism Requirement
macOS Touch ID (LocalAuthentication framework) Touch ID sensor or Apple Watch
Windows Windows Hello (PIN, fingerprint, face) Windows Hello-compatible hardware
Linux fprintd (fingerprint daemon) Supported fingerprint reader + fprintd installed

Biometric is optional. If hardware is unavailable, IronDome falls back to Master Password Only mode automatically.

Two Modes

Biometric Only — A cryptographically random vault key is generated at setup and stored in the OS credential store (Keychain on macOS, Windows Credential Manager, libsecret on Linux). Biometric proof unlocks the credential store; the vault key never touches disk unprotected.

Biometric + Master Password — Biometric is a gate, not the key. A successful biometric check permits password entry; PBKDF2 still derives the vault key from your master password. This is the higher-assurance mode — compromising biometrics alone is not sufficient to decrypt the vault.

Recovery Key

When you enroll biometrics, IronDome generates a one-time 24-word recovery phrase (BIP-39 format). Write it down and store it offline. It is the only way to recover the vault if biometric hardware fails or is replaced. IronDome does not store the recovery key.

Re-authentication

Session re-authentication for sensitive operations (delete, export, backup) uses the same method you enrolled with. If you enrolled with Biometric + Master Password, both factors are required for re-authentication.


How It Works

First Launch → Choose Security Level
  ├── Biometric Only     → Touch ID / Face / Fingerprint
  │                            │
  │                      Random vault key generated
  │                            │
  │                      Stored in OS Keychain / Credential Store
  │                            │
  │                      Biometric proof unlocks key on each session
  │
  ├── Biometric + Password → Biometric Gate (must pass)
  │                            │
  │                      Master Password entry
  │                            │
  │                      PBKDF2-HMAC-SHA256 (600k iterations)
  │                            │
  │                      Vault key derived — biometric alone is insufficient
  │
  └── Password Only      → Username + Master Password
                                 │
                           PBKDF2-HMAC-SHA256 (600k iterations)
                                 │
                           Vault key derived (existing flow)

                    ──────────────── common path ────────────────

                    ┌─────────────────────────┐
                    │       Vault Key          │
                    └───────────┬─────────────┘
                                │
                 ┌──────────────┼──────────────┐
                 ▼                             ▼
    ┌────────────────────┐        ┌────────────────────┐
    │  Machine-Specific  │        │   User-Specific    │
    │    System Key      │        │  Encryption Key    │
    │ (hardware-bound)   │        │ (user+pass+salt)   │
    └────────┬───────────┘        └────────┬───────────┘
             │                             │
             ▼                             ▼
    ┌────────────────────┐        ┌────────────────────┐
    │ Encrypts master    │        │ Encrypts password  │
    │ credentials        │        │ database           │
    └────────────────────┘        └────────────────────┘

Usage

First-Time Setup

On first run, create your master account:

  1. Enter a master username (min 4 characters)
  2. Create a strong master password (min 8 characters)
  3. Confirm your master password

Main Menu

╔══════════════════════════════╗
║     === Password Manager === ║
║     Logged in as: nir        ║
╠══════════════════════════════╣
║  1. Generate a new password  ║
║  2. Save a password          ║
║  3. Find passwords           ║
║  4. List all websites        ║
║  5. Delete a password        ║
║  6. Create backup            ║
║  7. Show storage location    ║
║  8. Logout                   ║
║  9. Exit                     ║
╚══════════════════════════════╝

Security Architecture

Encryption Layers

Layer Purpose Scope
Machine-specific system key Encrypts master credentials Ties data to your hardware
User-specific encryption key Encrypts password database Requires both username + password

Authentication Security

Feature Implementation
Brute force protection Adaptive attempt limits with progressive lockout
Session management Auto-timeout after 30 min inactivity
Sensitive operations Require re-authentication
Device tracking Per-device lockout with identifier tracking

Cryptographic Stack

Component Implementation
Symmetric Encryption AES-256-CBC + PKCS7 padding (Fernet)
Key Derivation PBKDF2HMAC-SHA256, 600k iterations
Password Hashing PBKDF2-HMAC-SHA256 + unique salt
Random Generation Python secrets (CSPRNG)

Data Storage

~/.password_manager/
├── password_manager.log           # Non-sensitive log
├── backups/
│   └── .passwords_backup_*.enc    # Encrypted backups
└── secrets/                       # Restricted (0o700)
    ├── .passwords.enc             # Encrypted password DB
    ├── salt.bin                   # Key derivation salt
    ├── .master_user.enc           # Encrypted master user
    ├── .master_hash.enc           # Encrypted master hash
    └── .login_attempts.dat        # Lockout tracking

Password Strength Scoring

 Excellent  ██████████████████████████████  80+
 Very Strong ████████████████████████░░░░░░  60-79
 Strong      ██████████████████░░░░░░░░░░░░  40-59
 Medium      ████████████░░░░░░░░░░░░░░░░░░  25-39
 Weak        ██████░░░░░░░░░░░░░░░░░░░░░░░░  <25

For Developers

Clone & Run from Source

git clone https://github.com/TheKingHippopotamus/IronDome-Bunker.git
cd IronDome-Bunker
pip install -r requirements.txt
python -m password_manager

Project Structure

password_manager/
├── __init__.py       # Package init + version
├── __main__.py       # Entry point
├── manager.py        # Main SecurePasswordManager class
├── auth.py           # Authentication & master account
├── encryption.py     # Encryption utilities
├── session.py        # Session management & timeout
├── storage.py        # File storage operations
├── generator.py      # Password generation
├── utils.py          # Utility functions
├── logger.py         # Logging setup
└── constants.py      # Constants & configuration

Contributing

We welcome contributions! Please read:


Requirements

  • Python 3.8+
  • cryptography library
  • keyring library (biometric / OS credential store integration)
  • Windows, macOS, or Linux

Optional — platform biometric support:

  • macOS: pyobjc-framework-LocalAuthentication (Touch ID hardware required)
  • Windows: Windows Hello is accessed via the native WinRT API — no extra package
  • Linux: fprintd system daemon + a supported fingerprint reader

License

GNU General Public License v3.0

  • Attribution — credit the original author
  • Share Source — distribute source with binaries
  • Same License — derivatives must use GPL-3.0
  • State Changes — indicate modifications

King Hippopotamus
Created & maintained by King Hippopotamus
Built with security in mind. No data leaves your machine. Ever.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

irondome-2.2.0.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

irondome-2.2.0-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

Details for the file irondome-2.2.0.tar.gz.

File metadata

  • Download URL: irondome-2.2.0.tar.gz
  • Upload date:
  • Size: 44.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for irondome-2.2.0.tar.gz
Algorithm Hash digest
SHA256 047c1296ef2951cf8d6df65275cb42035e208642bf34e0b5ea2dd5db39689320
MD5 a71910f3f05438d945edfdce09c70725
BLAKE2b-256 0c50502a11e006201c1ed721389fd8f90f575022ad8bfbaa4e36819795e2a641

See more details on using hashes here.

Provenance

The following attestation bundles were made for irondome-2.2.0.tar.gz:

Publisher: publish.yml on TheKingHippopotamus/IronDome-Bunker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file irondome-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: irondome-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 46.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for irondome-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bbe9a3a44fe3301a66a06bab4089b3f5f2a092b98202c2849b474f7f733b116b
MD5 bb4f4204f46dd87427707c25391f1f0d
BLAKE2b-256 e75ac37d2704ff72e0617a0c4c166a3e0cdcb88776e5257f96cfebd2d36a992f

See more details on using hashes here.

Provenance

The following attestation bundles were made for irondome-2.2.0-py3-none-any.whl:

Publisher: publish.yml on TheKingHippopotamus/IronDome-Bunker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page