paw

command module
v0.24.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 3, 2024 License: MPL-2.0 Imports: 11 Imported by: 0

README

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:

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
age
Source code of this file is a modified version of https://github.com/FiloSottile/age/blob/v1.0.0/cmd/age/wordlist.go and it is governed by the license above
Source code of this file is a modified version of https://github.com/FiloSottile/age/blob/v1.0.0/cmd/age/wordlist.go and it is governed by the license above
age/bech32
Package bech32 is a modified version of the reference implementation of BIP173.
Package bech32 is a modified version of the reference implementation of BIP173.
agent
Code in this file has been adapted from https://github.com/FiloSottile/yubikey-agent/blob/v0.1.6/main.go#L77 released under the above license
Code in this file has been adapted from https://github.com/FiloSottile/yubikey-agent/blob/v0.1.6/main.go#L77 released under the above license
cli
favicon
Package favicon provides a favicon downloader
Package favicon provides a favicon downloader
haveibeenpwned
Package haveibeenpwned implements a client for the haveibeenpwned.com API v3 to search if passwords have been exposed in data breaches
Package haveibeenpwned implements a client for the haveibeenpwned.com API v3 to search if passwords have been exposed in data breaches
otp
Package provides an implementation to generate one-time password values based on the TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password) algorithms as defined into the RFC4226 and RFC6238 specifications
Package provides an implementation to generate one-time password values based on the TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password) algorithms as defined into the RFC4226 and RFC6238 specifications
paw
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL