A demonstration Chrome extension that showcases secure password storage using modern web cryptography. This project implements AES-GCM encryption with PBKDF2 key derivation to safely store and retrieve passwords in the browser's local storage.
β οΈ Important: This is an educational/demonstration project and should NOT be used for storing sensitive data in production environments.
- π Strong Encryption: AES-GCM with 256-bit keys
- π Secure Key Derivation: PBKDF2 with SHA-256 and random salt
- π― Simple Interface: Clean, intuitive popup UI
- π Web Crypto API: Leverages browser's native cryptographic functions
- πΎ Local Storage: Encrypted data stored securely in Chrome's local storage
- π Lightweight: Minimal footprint with no external dependencies
Coming soon - Screenshots will be added to showcase the extension's interface
-
Save Password:
- User enters a password in the popup interface
- Password is encrypted using AES-GCM with a randomly generated salt and IV
- Encrypted data is stored in Chrome's local storage
-
Load Password:
- Extension retrieves encrypted data from local storage
- Decrypts the password using the stored salt and IV
- Displays the decrypted password (for demonstration purposes)
- Algorithm: AES-GCM (Galois/Counter Mode)
- Key Derivation: PBKDF2 with SHA-256
- Key Length: 256 bits
- Salt: 128-bit random salt (generated per encryption)
- IV: 96-bit random initialization vector
- Iterations: 100,000 PBKDF2 iterations
-
Clone the repository:
git clone https://github.com/patel5d2/Password-Manager.git cd Password-Manager
-
Load the extension in Chrome:
- Open Chrome and navigate to
chrome://extensions/
- Enable "Developer mode" (toggle in the top right corner)
- Click "Load unpacked" button
- Select the
Password-Manager
directory - The extension icon will appear in your browser's toolbar
- Open Chrome and navigate to
- Download the repository as a ZIP file from GitHub
- Extract the ZIP file to your desired location
- Follow steps 2 from Method 1 above
- Google Chrome (version 88 or later recommended)
- Chrome Developer Mode enabled
- No additional dependencies required
-
Access the Extension:
- Click the extension icon in your Chrome toolbar
- The popup window will open
-
Save a Password:
- Enter your password in the input field
- Click "Save Password"
- The password will be encrypted and stored locally
- You'll see a confirmation message
-
Retrieve a Password:
- Click "Load Password"
- The stored password will be decrypted and displayed
- Check the browser console for additional technical details
- Learning: Understand how modern web cryptography works
- Development: Use as a reference for implementing secure storage
- Education: Demonstrate encryption/decryption concepts
- Prototyping: Base for building more comprehensive password managers
Password-Manager/
βββ π manifest.json # Chrome extension manifest (v3)
βββ π¨ style.css # Global styling and theme
βββ π§ main.js # Additional demo utilities
βββ π README.md # Project documentation
βββ πΌοΈ f548522d-...jpeg # Sample image asset
βββ π js/ # JavaScript modules
β βββ βοΈ crypto.js # Cryptographic functions
β βββ π popup.js # UI logic and event handlers
βββ π views/ # User interface components
β βββ π¨ popup.html # Extension popup interface
βββ π .vscode/ # VS Code configuration
βββ βοΈ settings.json # Editor settings
File/Directory | Purpose | Key Features |
---|---|---|
manifest.json |
Chrome extension configuration | Manifest v3, permissions, popup configuration |
style.css |
Global styling | Modern CSS, theming, responsive design |
js/crypto.js |
Cryptographic core | AES-GCM encryption, PBKDF2 key derivation |
js/popup.js |
UI logic | Event handlers, DOM manipulation, user interactions |
views/popup.html |
User interface | Clean popup design, semantic HTML |
main.js |
Development utilities | Additional demo/testing functions |
- π± Frontend: Semantic HTML5 + Modern CSS3 in
/views
- βοΈ Core Logic: Modular JavaScript (ES6+) in
/js
crypto.js
: Pure cryptographic functionspopup.js
: UI logic and user interactions
- π Security: Web Crypto API with zero external dependencies
- πΎ Storage: Chrome's secure local storage API
- π¨ Styling: Centralized CSS with modern design patterns
Critical: This is a demonstration project and has several security limitations that make it unsuitable for production use:
- Hardcoded Master Password: Uses a placeholder instead of user-defined master password
- Salt Management: Generates new salt for each encryption (should be per-user and persistent)
- Single Password Storage: Only stores one password at a time
- No Authentication: Missing user authentication mechanisms
- Local Storage Only: No secure cloud backup or sync
- Limited Access Control: No session management or auto-lock features
To make this production-ready, implement:
- User-defined master password with secure storage
- Proper salt management and user session handling
- Multiple password entries with categories
- Auto-lock after inactivity
- Secure backup and synchronization
- Password strength validation
- Two-factor authentication support
- Secure password generation
- Import/export functionality with encryption
- Auto-fill capabilities for web forms
- Cross-browser compatibility (Firefox, Edge)
- Biometric authentication support
- Encryption Standard: AES-256-GCM (AEAD - Authenticated Encryption)
- Key Derivation: PBKDF2-SHA256 with 310,000 iterations (NIST recommended)
- Salt Generation: 128-bit cryptographically secure random salt
- IV Generation: 96-bit random initialization vector per encryption
- Random Generation:
crypto.getRandomValues()
for secure entropy - Data Integrity: Built-in authentication with GCM mode
- Storage: Chrome's secure local storage API with JSON serialization
- Code Architecture: Modular separation of cryptographic and UI concerns
Dharmin Patel
- GitHub: @patel5d2
- Project: Password-Manager
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License - Feel free to use, modify, and distribute
Contributions are welcome! Here's how you can help:
- Use the issue tracker to report bugs
- Include steps to reproduce the issue
- Provide browser version and OS information
- Open an issue to discuss new features
- Explain the use case and expected behavior
- Consider backward compatibility
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow existing code style and conventions
- Add comments for complex cryptographic operations
- Test thoroughly before submitting
- Update documentation as needed
- Chrome Extension Development
- Web Crypto API Documentation
- OWASP Cryptographic Storage Cheat Sheet
- PBKDF2 Best Practices
If you find this project helpful:
- β Star the repository
- π΄ Fork it for your own experiments
- π’ Share it with others learning web cryptography
- π Report issues to help improve it