Code Monkey home page Code Monkey logo

passitron's Introduction

Build status Download

What is this?

Software for a separate trusted hardware device ("hardware security module") which essentially acts just like Keepass and only serves the function of storing secrets.

If you use Keepass on your PC and your PC gets compromised by a virus or a hacker, it's game over. But if you use a separate device for storing secrets, your PC compromise does not expose your secrets. This software only exposes your secret when you physically press a button on the device - and only exposes one secret per push acknowledge.

Links

Features

  • No cloud
  • Physical acknowledgement to expose a password by pressing a button on a U2F key (YubiKey for example), so a hacker would need local, physical, access to steal your secrets.
  • Supported secrets:
    • Passwords
    • OTP tokens (Google Authenticator)
    • SSH keys (via SSH agent protocol)
    • Keylists ("printed OTP list")
    • Freetext (any text content is treated as secret data)
  • Create, view and list secrets in a folder hierarchy.
  • Export database to Keepass format (for viewing in mobile devices when traveling etc.)
  • Import data from Keepass format

Recommended hardware

I'm using Raspberry Zero W with wooden case.

It doesn't matter much which hardware you use, as long as you don't run anything else on that system - to minimize the attack surface. For such a light use Raspberry Pi is economical, although this project runs across processor architectures and operating systems because Golang is so awesome. :)

Download & running

Click the "Download" badge at top of this readme and locate the binary for your OS/arch combo:

  • For Raspberry Pi, download pism_linux-arm
  • For Linux PC, download pism_linux-amd64

Note: don't worry about public.tar.gz - it's downloaded automatically if it doesn't exist.

Rename the downloaded binary to pism.

Pro-tip: you can download this directly to your Pi from command line:

$ mkdir passitron/
$ cd passitron
$ curl --fail --location -o pism <url to pism_linux-arm from Bintray>

# mark the binary as executable
$ chmod +x pism

Installation & running:

$ ./pism server init-config admin yourpassword
$ ./pism server install
Wrote unit file to /etc/systemd/system/passitron.service
Run to enable on boot & to start now:
        $ systemctl enable passitron
        $ systemctl start passitron
        $ systemctl status passitron

Looks good. You should now be able to access the web interface at http://<ip of your pi>.

How to build & develop

How to build & develop (with Turbo Bob, our build tool). It's easy and simple!

Getting to know the codebase

See commit where I added support to storing an email field.

passitron's People

Contributors

joonas-fi avatar

Stargazers

 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

passitron's Issues

Metadata for account if U2F token login is enabled

My first instinct was to model this by using a tag with known name (e.g. uses-u2f-token), but we may need richer support to specify which U2F token it is, if user has many tokens.

Also, richer metadata would be good if we want to show statistics (this many accounts have just password, this many have U2F...)

edit: need these types:

  • U2F token
  • Yubikey OTP
  • WebAuthn?
  • others?

Stopping results in a crash (might be only sometimes?)

Sep 18 08:47:40 raspberrypi systemd[1]: Stopping Pi security module...
Sep 18 08:47:40 raspberrypi pism[11749]: 2018/09/18 08:47:40 Received signal terminated; shutting down
Sep 18 08:47:40 raspberrypi pism[11749]: 2018/09/18 08:47:40 Closing stream log
Sep 18 08:47:40 raspberrypi pism[11749]: panic: runtime error: invalid memory address or nil pointer dereference
Sep 18 08:47:40 raspberrypi pism[11749]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x14 pc=0x2412cc]
Sep 18 08:47:40 raspberrypi pism[11749]: goroutine 1 [running]:
Sep 18 08:47:40 raspberrypi pism[11749]: net/http.(*Server).Shutdown(0x12660300, 0x0, 0x0, 0x0, 0x0)
Sep 18 08:47:40 raspberrypi pism[11749]: /usr/local/go/src/net/http/server.go:2581 +0x160
Sep 18 08:47:40 raspberrypi pism[11749]: main.runMain()
Sep 18 08:47:40 raspberrypi pism[11749]: /go/src/github.com/function61/pi-security-module/cmd/pism/main.go:79 +0x320
Sep 18 08:47:40 raspberrypi pism[11749]: main.serverEntrypoint.func1(0x126943c0, 0x89c16c, 0x0, 0x0)
Sep 18 08:47:40 raspberrypi pism[11749]: /go/src/github.com/function61/pi-security-module/cmd/pism/main.go:94 +0x14
Sep 18 08:47:40 raspberrypi pism[11749]: github.com/function61/pi-security-module/vendor/github.com/spf13/cobra.(*Command).execute(0x126943c0, 0x89c16
Sep 18 08:47:40 raspberrypi pism[11749]: /go/src/github.com/function61/pi-security-module/vendor/github.com/spf13/cobra/command.go:766 +0x20c
Sep 18 08:47:40 raspberrypi pism[11749]: github.com/function61/pi-security-module/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x12694280, 0x1269
Sep 18 08:47:40 raspberrypi pism[11749]: /go/src/github.com/function61/pi-security-module/vendor/github.com/spf13/cobra/command.go:852 +0x20c
Sep 18 08:47:40 raspberrypi pism[11749]: github.com/function61/pi-security-module/vendor/github.com/spf13/cobra.(*Command).Execute(0x12694280, 0x12767
Sep 18 08:47:40 raspberrypi pism[11749]: /go/src/github.com/function61/pi-security-module/vendor/github.com/spf13/cobra/command.go:800 +0x1c
Sep 18 08:47:40 raspberrypi pism[11749]: main.main()
Sep 18 08:47:40 raspberrypi pism[11749]: /go/src/github.com/function61/pi-security-module/cmd/pism/main.go:130 +0x14c
Sep 18 08:47:40 raspberrypi systemd[1]: pi-security-module.service: main process exited, code=exited, status=2/INVALIDARGUMENT

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.