Code Monkey home page Code Monkey logo

paw's Introduction

Paw

Simple, modern and privacy-focused Open Source password manager

Paw is a password manager designed to offer a secure and user-friendly solution for managing your digital data across multiple platforms, featuring modern encryption, making it an ideal tool for both personal and professional use.

It is written in Go and uses Fyne as UI toolkit and age as encryption library.

Warning

This software is work in progress, and didn't went through a full security audit.

Do not expect it to be bug free and do not rely on it for any type of security.

Screenshot

Paw - list view Paw - details view

Main features

  • Cross platform application (linux, macOS, Windows, BSD ...) with a single codebase
  • Desktop, Mobile and CLI application with a single binary
  • Minimal direct dependencies
  • Agent to handle SSH keys and CLI sessions
  • Open source: code can be audited
  • Audit passwords against data breaches
  • TOTP support
  • Password import/export

Later goals

  • Automatically detect and use password rules for known web sites that require ones
  • Automatic backup / syncronization
  • Web application
  • Stateless password derivation support
  • Unicode password support

Installation

Latest version

You can download the latest version as a binary from https://paw.pm/download

Development version

To try the development version or help with testing:

go install lucor.dev/paw@latest

How it works - cryptography details

Vault initialization

One or more vaults can be initialized to store passwords and identities.

When the vault is initialized user will be prompt for a vault name and password. An age key is generated and it is encrypted using an age Scrypt recipient with the provided password and saved on disk (key.age) The X25519 identity and its recipient from the key file are used to decrypt and encrypt the vault data. Each item is stored separately on disk so that the content can be decrypted manually using the age tool, if needed. All the items' metadata are encrypted and stored into the vault.age file so that no information are in clear text.

Random password

Random password are derived reading byte-by-byte the block of randomness from a HKDF cryptographic key derivation function that uses the age key as secret. Printable characters that match the desired password rule (uppercase, lowercase, symbols and digits) are then included in the generated password.

Custom password

Where a generated password is not applicable a custom password can be specified.

Vault structure

Vault internally is organized hierarchically like:

- vault
    ├── login
    |    └── www.example.com
    |    └── my.site.com
    ├── password
    |    └── mypassword
    └── note
         └── mysecretnote

where login, password and note are the Paw items, see the dedicated section for details.

Items

Items are special templates aim to help the identity management.

Currently the following items are available:

  • login
  • note
  • password
  • ssh_key

Threat model

The threat model of Paw assumes there are no attackers on your local machine.

Contribute

See https://lucor.dev/projects/#maintenance-policy

Credits

Also thanks to these Open Source password managers that inspired Paw:

paw's People

Contributors

lucor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

paw's Issues

ui: mobile support

Fyne applications are able to run on mobile devices out of the box.
By the way the current UI has been developed and tested mainly on linux.
Test and fix, if needed, the UI on mobile.

paw: add TOTP and HTOP support

Adding support for TOTP and HTOP will allow to store the secret used to generate the 2FA codes for websites that supports it.
Additionally we could display the TOTP code directly in Paw.
A later feature could be to display the QR to allow import into 2FA application like FreeOTP, Google Authenticator, Authy ecc...

CLI application

The main goal of Paw is to be GUI application, anyway a CLI application would be great :-)

ui: add a settings view

Is your feature request related to a problem? Please describe:

The Paw settings are hardcoded, having the possibility to customize them would improve the UX

Is it possible to construct a solution with the existing API?

Yes

Describe the solution you'd like to see:

Add a Settings view that can be showed using a menu entry

Windows binary

Dear @lucor, Windows 7 x64 user here. Could you be so kind to generate .exe for the rest of us who are ordinary users without compilers?

Support showing website favicons

Is your feature request related to a problem? Please describe:

It is often faster to look for something visual (shapes, colours and so on) than to read the text.
Because of this, a lot of password manager allow showing the website favicons/icons for
login items.

Is it possible to construct a solution with the existing API?

I believe so. Might require, or be good, to have some sort of caching so that favicons doesn't have to be downloaded from the websites every time the application loads. I don't know if just storing the cache unencrypted on disk is a good idea though, seems like an easy way for someone to read all the user's logins.

Describe the solution you'd like to see:

Showing a favicon for the login item, instead of a generic website icon (if the website i question has one).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.