donjon 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71892ce6ba19ef7b519a3d11751725255e44b319
4
- data.tar.gz: bc53943944cd25d783cd7d9fc0097782a28a3691
3
+ metadata.gz: a183f49f2e60ad2ed9aaa0257580a4c7b094cf05
4
+ data.tar.gz: 1bf7b4ae1bd9907f553d1736c4e4eece9349d938
5
5
  SHA512:
6
- metadata.gz: 244868a56f1ebd8b885f5b23477c15dc4e3ad3f1090b275df80336bfa07cd9c8e9416938952896efbbea11ff5ffd043ebe30895680f0d608f85a6dc8dda11c66
7
- data.tar.gz: d6bb4031a0df5199a5825328961d7fced263a905e97559c54bcdc79becb7c60a9ba0973807c6b84ddb29a1b45ead2e2493e44c537b57c7d27ebc904d571ff95e
6
+ metadata.gz: c5484887af5dca5d4f1ca498d858253ed91a57a11d222d2aa4fad8bd65771d49f44e171e2c28c30abb24dbe836c011a83e2a55d362b4e07be3f898efb30b1afb
7
+ data.tar.gz: 0a3a7f7da362f258fa54e6ba81af5030d3b1aa7c7d3351e78937c36fd20f9e33915de5dade5d4688fc6f49157bfa1bbbbcf65275d294a701d4b98f9cf72cd58a
data/README.md CHANGED
@@ -1,16 +1,109 @@
1
1
  # Donjon
2
2
 
3
- TODO: Write a gem description
3
+ Donjon is a secure, multi-user store for key-value pairs.
4
+
5
+ Skip to: [Purpose](#purpose) | [Concepts](#concepts) | [Setting
6
+ up](#installation) | [Usage](#usage)
7
+
8
+ ## Purpose
9
+
10
+ We built Donjon to share credentials in a (small) devops team, for services where
11
+ single user accounts don't make sense, e.g.:
12
+
13
+ - root passwords for databases and servers
14
+ - root credentials for hosting accounts
15
+ - accounts for web services that don't do multi-user/multi-admin
16
+ - Two-factor tokens for single-user web services.
17
+
18
+ Donjon uses standards for encryption: 2048-bit asymmetric RSA encryption used to
19
+ prime symmetric 256-bit AES CBC encryption with random padding.
20
+ In other words, while the NSA will probably be able to read your data should it
21
+ get its paws on it, it's unlikely Joe Hacker will.
22
+
23
+ [Online tools](https://lastpass.com) exist that serve the same purpose as Donjon, but simply
24
+ put: they're generally closed source and host the data somewhere we don't
25
+ control. We think the inconvenience of not having a cute toolbar icon for
26
+ passwords is trumped by better security.
27
+
28
+ ## Concepts
29
+
30
+ A **vault** is a directory managed by Donjon. It contains encrypted key-value
31
+ pairs, and public keys for all allowed users. Each key-value pair lives in its
32
+ own directory. The name of the directory is an obfuscated (hashed) version of
33
+ the key, but it's not encrypted. The directory contains one file per user, each
34
+ containing the key-value pair encrypted with their public key.
35
+
36
+ **Syncing** the vault between users is left as an exercice to users or
37
+ integrators :)
38
+ One option is to use a shared drive (e.g. using a cloud server and
39
+ [SSHFS](http://en.wikipedia.org/wiki/SSHFS)). We prefer to sync the vault
40
+ directory using [Bittorrent Sync](http://www.bittorrent.com/sync) rather than
41
+ leave a copy of it with third parties. Another option is to use Git as a
42
+ distribution mechanism.
43
+
4
44
 
5
45
  ## Installation
6
46
 
7
- Install it as you would any gem:
47
+ The setup is slightly different different for new vaults (first subsection below)
48
+ and connecting to an existing vault (second subsection).
49
+
50
+ This section assumes the vault is synced between users using Bittorrent Sync.
51
+
52
+
53
+ ### Creating a new vault
54
+
55
+ Install Donjon:
56
+
57
+ $ gem install donjon
58
+
59
+ Run the Donjon configuration:
60
+
61
+ $ dj init
62
+
63
+ Note that while you can re-use an existing private key for Donjon, it must be
64
+ encrypted and be a 2048-bit RSA key.
65
+
66
+ Add, then read a first key-value pair to confirm encryption is working:
67
+
68
+ $ dj config:set TEST=foobar
69
+ $ dj config:get TEST
70
+ TEST: foobar
71
+
72
+ Download, install, and run [Bittorrent Sync](http://www.bittorrent.com/sync/downloads).
73
+
74
+ Add the vault directory you configured during `dj init` to be synced by
75
+ Bittorrent Sync.
76
+
77
+
78
+ ### Connecting to an existing vault
79
+
80
+ Download and install [Bittorrent Sync](http://www.bittorrent.com/sync/downloads).
81
+
82
+ Ask a peer already using the vault you're interested in to provide you a "one
83
+ time secret" for the shared vault directory. Add this to Bittorrent Sync, and
84
+ wait for syncing to complete.
85
+
86
+ Install Donjon:
8
87
 
9
88
  $ gem install donjon
10
89
 
11
- Then run the interactive setup:
90
+ Configure Donjon; when prompted for a vault path, enter the path to the relevant
91
+ synced directory:
92
+
93
+ $ dj init
94
+
95
+ At this point your public key has been added to the vault, but you can't access
96
+ any data as it hasn't been encrypted for you. Obtain your public key:
97
+
98
+ $ dj user:key
99
+
100
+ and send it over a reasonably secure medium to your peer. They will then run
101
+
102
+ $ dj user:add <your-username>
103
+
104
+ to encrypt all key-value pairs for your user.
12
105
 
13
- $ dj vault:init
106
+ Test that you can read a particular key, and you're all set!
14
107
 
15
108
 
16
109
  ## Usage
@@ -26,11 +119,12 @@ Commands:
26
119
  dj help [COMMAND] # Describe available commands or one specific command
27
120
  dj init # Creates a new vault, or connects to an existing vault.
28
121
  dj user:add NAME [PATH] # Adds user and their public key to the vault. Reads from standard input if no path is given.
122
+ dj user:key # Prints your public key
29
123
  ```
30
124
 
31
125
  ## Contributing
32
126
 
33
- 1. Fork it ( http://github.com/<my-github-username>/donjon/fork )
127
+ 1. Fork it ( http://github.com/mezis/donjon/fork )
34
128
  2. Create your feature branch (`git checkout -b my-new-feature`)
35
129
  3. Commit your changes (`git commit -am 'Add some feature'`)
36
130
  4. Push to the branch (`git push origin my-new-feature`)
@@ -7,6 +7,9 @@ module Donjon
7
7
  desc 'user:add NAME [PATH]', 'Adds user and their public key to the vault. Reads from standard input if no path is given.'
8
8
  decl 'user:add'
9
9
 
10
+ desc 'user:key', 'Prints your public key'
11
+ decl 'user:key'
12
+
10
13
  private
11
14
 
12
15
  def user_add(name, path = nil)
@@ -21,7 +24,7 @@ module Donjon
21
24
  key_data << line
22
25
  end
23
26
  else
24
- key_data = Pathname.new(key_path).expand_path.read
27
+ key_data = Pathname.new(path).expand_path.read
25
28
  end
26
29
 
27
30
  key = OpenSSL::PKey::RSA.new(key_data, '').public_key
@@ -31,6 +34,10 @@ module Donjon
31
34
  database.update
32
35
  say "Success! #{name} has been added to the vault.", [:green, :bold]
33
36
  end
37
+
38
+ def user_key
39
+ puts actor.key.public_key.to_pem
40
+ end
34
41
  end
35
42
  end
36
43
  end
@@ -1,3 +1,3 @@
1
1
  module Donjon
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: donjon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien Letessier