Skip to content

🔐 Pluto-Secure – Encrypted Password Manager for Microcontrollers

A professional embedded security project developed in CircuitPython for the Arduino Nano RP2040 Connect.

Pluto-Secure is an experimental password and credential manager built from scratch to demonstrate secure design and encryption practices in constrained environments. It leverages CircuitPython and cryptographic modules to store, encrypt, and retrieve passwords securely.

This project is part of a professional portfolio to showcase full-cycle secure embedded development.


🎯 Project Goal

Build a complete, secure password vault from concept to implementation, demonstrating secure architecture, cryptography, and hardware integration.


📐 Phase 1: Requirements Engineering

✅ Current Functional Requirements (MVP)

  1. Store passwords securely in onboard flash memory.
  2. Encrypt passwords using AES-CTR with a hashed fingerprint template.
  3. Retrieve stored passwords only with correct authentication.
  4. Store the master key securely using hash + salt, in our secure module ATEC608.
  5. Provide a password suggestion tool:
    • Custom length
    • Customizable character set: letters, numbers, symbols

🧩 Future Requirements

  1. Automatically identify which key to provide based on login page or context.
  2. Associate usernames and passwords with services or sites.
  3. Enable local password management with optional user accounts.
  4. Optional display-based UI (OLED or small screen).
  5. Secure export/import of encrypted data.

🛡️ Phase 2: Threat Modeling

Following the STRIDE model:

Threat Risk Mitigation
Spoofing Unauthorized access to secrets Salted hash comparison of master key
Tampering Modification of saved credentials AES-CTR encryption with per-entry IV, use ATEC608 to ensure secure Boot
Repudiation Lack of traceability (Planned) Optional logging system
Information Disclosure Reading /keys.db file directly All data encrypted with strong symmetric encryption
Denial of Service File deletion or filesystem corruption Physical recovery mode and backups
Elevation of Privilege Gaining access to all secrets Context-based segmentation and per-entry authentication (future)

🔐 Phase 3: Security by Design

  • Symmetric encryption: AES-CTR with 16-byte blocks
  • Authentication: SHA256 + salt hash of master key
  • Data integrity: Ensured via IV separation and optional HMAC (future)
  • Separation of concerns: clean modular architecture

📁 Project Structure

CIRCUITPY/
├── boot.py                 # Boot mode logic (safe or writable)
├── code.py                 # Main controller
├── auth_manager.py         # Master key management (registration & validation)
├── crypto_engine.py        # AES encryption engine
├── key_store.py            # Encrypted credential storage
├── keygen.py               # Secure password generator
├── ui_serial.py            # Serial interface for user input
├── /auth.db                # Salt + hash of master password
├── /keys.db                # Encrypted credentials database
└── /logs.txt               # (Optional) Access logs

Popular repositories Loading

  1. desktop-app desktop-app Public

    A secure desktop application for managing credentials stored on a connected USB device. It allows users to add, edit, delete, and view all saved credentials, ensuring full control over their authen…

    Python 1

  2. chrome-extension chrome-extension Public

    ChromeExtension is a browser extension that detects new login pages and extracts their hostnames. It securely communicates with a connected device to manage credential handling and authentication w…

    JavaScript 1

  3. pluto-device pluto-device Public

    Firmware for the secure hardware component of the Pluto system. This microcontroller-based device is responsible for storing encrypted credentials, handling authentication, and ensuring secure comm…

    Python

  4. password-retrieval password-retrieval Public

    Logic to retrieve and backup credentials in pluto with Zero-knowledge from our side

  5. .github .github Public

Repositories

Showing 5 of 5 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…