All Projects → ejcx → Passgo

ejcx / Passgo

Licence: mit
Simple golang password manager.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Passgo

Buttercup Desktop
Buttercup is a free, open-source and cross-platform password manager, built on NodeJS with Typescript. It uses strong industry-standard encryption to protect your passwords and credentials (among other data you store in Buttercup vaults) at rest, within vault files (.bcup). Vaults can be loaded from and saved to a number of sources, such as the local filesystem, Dropbox, Google Drive or any WebDAV-enabled service (like ownCloud or Nextcloud ¹).
Stars: ✭ 3,714 (+654.88%)
Mutual labels:  password-vault
Buttercup Core
🎩 The mighty NodeJS password vault
Stars: ✭ 340 (-30.89%)
Mutual labels:  password-vault
T Vault
Simplified secrets management solution
Stars: ✭ 316 (-35.77%)
Mutual labels:  password-vault
Gokey
A simple vaultless password manager in Go
Stars: ✭ 305 (-38.01%)
Mutual labels:  password-vault
Buttercup Mobile
📱 React-Native mobile application for Buttercup
Stars: ✭ 297 (-39.63%)
Mutual labels:  password-vault
Pash
🔒 A simple password manager using GPG written in POSIX sh.
Stars: ✭ 254 (-48.37%)
Mutual labels:  password-vault
web
Cloverleaf is a free, open source app to replace your password manager without storing your passwords anywhere.
Stars: ✭ 33 (-93.29%)
Mutual labels:  password-vault
gpgpwd
Moved to GitLab
Stars: ✭ 22 (-95.53%)
Mutual labels:  password-vault
password-keeper
A simple and secure Password Management System made completely in Python.
Stars: ✭ 26 (-94.72%)
Mutual labels:  password-vault
passbase
Keybase File System (KBFS)-backed CLI-based password manager
Stars: ✭ 26 (-94.72%)
Mutual labels:  password-vault
keevault
Kee Vault is a password manager for your web browser. Password databases (Vaults) are encrypted using the KeePass storage format before being sent to a remote server for synchronisation across any modern device/browser
Stars: ✭ 57 (-88.41%)
Mutual labels:  password-vault
libnitrokey
Communicate with Nitrokey devices in a clean and easy manner
Stars: ✭ 61 (-87.6%)
Mutual labels:  password-vault
Nitrokey App
Nitrokey's Application (Win, Linux, Mac)
Stars: ✭ 210 (-57.32%)
Mutual labels:  password-vault
Buttercup Browser Extension
🌏 Buttercup browser extension
Stars: ✭ 164 (-66.67%)
Mutual labels:  password-vault
Gonepass
GTK+ 1Password reader
Stars: ✭ 134 (-72.76%)
Mutual labels:  password-vault
Rooster
The simple password manager for geeks, built with Rust.
Stars: ✭ 106 (-78.46%)
Mutual labels:  password-vault
Masterpassword
Project moved to https://gitlab.com/spectre.app
Stars: ✭ 1,122 (+128.05%)
Mutual labels:  password-vault
Passwordcockpit
Passwordcockpit is a simple, free, open source, self hosted, web based password manager for teams. It is made in PHP, Javascript, MySQL and it run on a docker service. It allows users with any kind of device to safely store, share and retrieve passwords, certificates, files and much more.
Stars: ✭ 34 (-93.09%)
Mutual labels:  password-vault
Qtpass
QtPass is a multi-platform GUI for pass, the standard unix password manager.
Stars: ✭ 763 (+55.08%)
Mutual labels:  password-vault
Strongbox
A KeePass/Password Safe Client for iOS and OS X
Stars: ✭ 586 (+19.11%)
Mutual labels:  password-vault

passgo

stores, retrieves, generates, and synchronizes passwords and files securely and is written in Go! It is inspired by https://passwordstore.org but has a few key differences. The most important difference is passgo is not GPG based. Instead it uses a master password to securely store your passwords. It also supports encrypting arbitrary files.

passgo is meant to be secure enough that you can publicly post your vault. I've started publishing my passwords here.

Installation

passgo requires Go version 1.11 or later.

(cd; GO111MODULE=on go install github.com/ejcx/passgo/v2)

Getting started with passgo

Create a vault and specify the directory to store passwords in. You will be prompted for your master password:

$ passgo init
Please enter a strong master password:
2019/02/23 16:54:31 Created directory to store passwords: ~/.passgo

Finally, to learn more you can either read about the commands listed in this README or run:

passgo help

The --help argument can be used on any subcommand to describe it and see documentation or examples.

Configuring passgo

The PASSGODIR environment variable specifies the directory that your vault is in.

I store my vault in the default location ~/.passgo. All subcommands will respect this environment variable, including init

COMMANDS

Listing Passwords

$ passgo
├──money
|  └──mint.com
└──another
   └──another.com

This basic command is used to print out the contents of your password vault. It doesn't require you to enter your master password.

Initializing Vault

$ passgo init

Init should only be run one time, before running any other command. It is used for generating your master public private keypair.

By default, passgo will create your password vault in the .passgo directory within your home directory. You can override this location using the PASSGODIR environment variable.

Inserting a password

$ passgo insert money/mint.com
Enter password for money/mint.com: 

Inserting a password in to your vault is easy. If you wish to group multiple entries together, it can be accomplished by prepending a group name followed by a slash to the pass-name.

Here we are adding mint.com to the password store within the money group.

Inserting a file

$ passgo insert money/budget.csv budget.csv

Adding a file works almost the same as insert. Instead it has an extra argument. The file that you want to add to your vault is the final argument.

Retrieving a password

$ passgo show money/mint.com
Enter master password:
dolladollabills$$1

Show is used to display a password in standard out.

Rename a password

$ passgo rename mney/mint.com
Enter new site name for mney/mint.com: money/mint.com

If a password is added with the wrong name it can be updated later. Here we rename our mint.com site after misspelling the group name.

Updating a password

$ passgo edit money/mint.com
Enter new password for money/mint.com:

If you want to securely update a password for an already existing site, the edit command is helpful.

Generating a password

$ passgo generate
%L4^!s,Rry!}s:U<QwliL{vQ

$ passgo generate 8
[;K6otS3

passgo can also create randomly generated passwords. The default length of passgo generated passwords is 24 characters. This length can be changed by passing an optional length to the generate subcommand.

Searching the vault

 $ passgo find money
 └──money
    └──mint.com

 $ passgo ls money
 └──money
    └──mint.com

find and ls can both be used to search for all sites that contain a particular substring. It's good for printing out groups of sites as well. passgo ls is an alias of passgo find.

Deleting a vault entry

$ passgo
├──bb
|  └──ff
├──something
|  └──somethingelse.com
└──twiinsen.com
   └──bbbbb

$ passgo remove bb/ff

$ passgo
├──something
|  └──somethingelse.com
└──twiinsen.com
   └──bbbbb

remove is used for removing sites from the password vault. passgo rm is an alias of passgo remove.

Getting Help

$ passgo --help

All subcommands support the --help flag.

CRYPTOGRAPHY DETAILS

Password Store Initialization.

passgo only uses AEADs for encrypting data. When passgo init is run, users are prompted for a master password. A random salt is generated and the master password along with the salt are passed to the Scrypt algorithm to generate a symmetric master key.

A master public/private keypair is generated when passgo init is run. The symmetric master password is used to encrypt the master private key, while the master public key is left in plaintext.

Generating Passwords.

Password generation takes place in the pc package by using the GeneratePassword function. GeneratePassword creates a random password by reading a large amount of randomness using the func Read([]byte) (int, error) function in the crypto/rand package.

The block of randomness is then read byte-by-byte. Printable characters that match the desired password specification (uppercase, lowercase, symbols, and digits) are then included in the generated password.

Adding A Site.

When a site is added to the password store, a new public private key pair is generated. The newly generated private key, the user's master public key, and a securely generated nonce are used to encrypt the sites data.

The encryption and key computation are done using the golang.org/x/crypto/nacl/box package which uses Curve25519, XSalsa20, and Poly1305 to encrypt and authenticate the site's data.

After the site information is added, the site's generated private key is thrown away.

Threat model

The threat model of passgo assumes there are no attackers on your local machine. The passgo vault puts some level of trust in the remote git repository.

An evil git server could modify the public key of your vault. If the evil git server does this then passgo will tell you that the Vault integrity cannot be verified the next time you attempt to read a password.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].