Giter Club home page Giter Club logo

luxio's Introduction

Luxio © pokepedia.fr

luxio

Luxio is the first evolution form of S(p)hnix. It's another password manager.

What is this thing?

Luxio is an implementation of the Sphinx (a password Store that Perfectly Hides from Itself (No Xaggeration)) scheme, with some extra features (while still guarantees the same security).

For an overview of Sphinx, please see this talk presented by the Levchin Prize winner 2018 Hugo Krawczyk on Real World Crypto. His slides are available here.

Basically, this is different from other password managers which store the passwords in an encrypted database. It prevents

  • offline dictionary attack: whoever has your database cannot try to crack your master password on it (by brute-forcing your master password).
  • "on-the-wire" attack, as long as your machine is secure when you are typing your master password.

Features:

All Sphinx's features including:

  • All domain-specific passwords in a user's device or online.
  • User memorizes a single master password.
  • All passwords are random and independent of each other.

And, Luxio supports:

  • Generate human-readable passwords. Luxio goes a step further, and convert Sphinx's password strings to human-readable passphrase. Each passphrase is a combination of 4 random word, providing 64 bits of entropy, which is strong for most online services. Luxio uses niceware for this task.
  • Change domain-specific passwords. The new password is also random and independent of the old one. This can be done by requiring the device to store a database of random salts for each account. However, this database can still be made online (public). Even the metadata of the user's accounts has been eliminated (that is, no one can see the username or the domain information).
  • Forward Secrecy. If some domain-specific passwords are leaked, the attacker cannot compute the new password from the old ones (even with the database). However, note that a brute-force attack can be performed if a per-domain password and the device key are leaked. This attack is unavoidable for any password-based scheme.

Installation

Currently, this package provides a binary program to run on your machine, without needing to separate the device and the client.

You need to have Go version 1.10 or higher installed. If Go is set up correctly, you can simply run:

go install github.com/vqhuy/luxio/cli/luxio

Usage

Generate a new device key

❯❯❯ luxio keygen
# an ASCII-armored string.

Create a config file

❯❯❯ luxio init

This command generates a defaul config file at ~/.luxiorc and a directory for storing the database and the device key at ~/.luxio/. A random device key will also be generated at ~/.luxio/key.luxio.

The config file is as follows.

DB = "/absolute/path/to/my/password/store"
###
# Turn this flag on if you want to hide your metadata from the database
HideMetadata = true
# ... or turn it off so you can use the `list` functionality.
# HideMetadata = false
###
# Choose either this
Key = "my-hex-encoded-device-key"
# or this
# KeyEval = "run-this-command-to-get-my-ASCII-armored-device-key"

Retrieve password

❯❯❯ luxio request -h
Get password of the given account on the given domain

Usage:
  luxio request [flags]

Examples:
luxio request -d "https://accounts.google.com/" -u "[email protected]"

Flags:
  -d, --domain string     Domain name (an URL, a website, etc)
  -h, --help              help for request
      --password          Print as a random password with a fixed postfix
      --pin               Print as a PIN code
      --plain             Print as a plain, lower-case passphrase
      --special           Print as a title-case passphrase with a fixed postfix
  -u, --username string   Username or Account
❯❯❯ luxio request -d "domain" -u "username"
❯ Enter your Master Password:

Change password

❯❯❯ luxio update -d "domain" -u "username"
❯ Enter your Master Password:

List all accounts

(This is only supported if HideMetadata is false.)

❯❯❯ luxio list "domain"
o
├──domain.com
|  ├──account1
|  └──account2
└──subdomain.domain.com
   └──account

You can also run it as luxio list "*" to get all accounts information from the database.

Disclaimer

As usual, use at your own risk.

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.