[OT] Multi-user hierarchical password management via pki
Sven Ulland
sveniu at ifi.uio.no
Fri Jul 27 13:46:02 CEST 2012
Is there such a thing as a multi-user, hierarchical, arbiter-less,
pki-based
password manager? I'm thinking specifically for use in a system
administration
context where you have multiple sub groups and cross-group roles that
have
access to different sets of passwords.
* Users share one database, and can only view passwords that they are
authorized to access. Authorization is either per-user or per-group.
* Users and groups can be defined either statically, or perhaps
dynamically
looked up through external means like ldap, pam, etc.
* Passwords are organized in a tree/folder structure, and each node
(including
leaves, i.e. passwords) is associated with one or more users or
groups.
Optionally, a user with access to a node would have recursive access
to all
child nodes.
* There is no all-knowing arbiter that can read and write any entry in
the
database. Not having an arbiter will complicates things quite a bit.
* PKI is used so that a new password entry is associated with a list of
users
or groups, and is then encrypted with the target users' pubkeys. A
pubkey
lookup mechanism is needed.
* Preferably have a distributed system, managed by distributed revision
control. This precludes using filesystem semantics like permissions,
acls,
etc, and would instead require the use of a metadata index of sorts.
* Preferably make the system usable without having to rely on a
frontend:
Running 'gpg -d *' would decrypt files encrypted with your pubkey.
As far as I can tell, there exists no such thing -- possibly for very
good
reasons; see below. I've been thinking of how to implement this sort of
system, like so:
* Use one file per password, with a simple structure like:
<path> <access> [<name> <username> <password> <comment>], where
<path>: directory-style path to the entry, e.g. '/dns/resolver/res1'
<access>: user(s)/group(s) with access to the entry. This might have
to
include lookup details, such as ldap url or similar.
<name>: name of entry, e.g. 'root account'
Name, username, password and comment are optional, to facilitate the
creation of password-less branching nodes in the tree, solely for
indicating
user/group access (which then apply recursively).
* Files have inconspicuous names, for example created by hashing the
file
contents, random characters, or a serial number. Possibly add random
decoy
files to discourage traffic analysis. Possibly gather all files in
one tar
or zip archive, which is again encrypted with everyone's pubkeys.
Size is
not a concern.
* Creating a new entry would require inputting the user(s)/group(s)
that
should have access. This, together with the lookup/fetching of target
user
keys, is somewhat tricky.
* Using something like Git would make revision control easy. On the
other
hand, it would make it possible for revoked users to regain
information by
fetching old revisions. This might preclude revision control
altogether.
* Revoking access for users that either leave or switch groups, would
mean
having to re-encrypt all entries where the user had access (and
remove
entries where the user had sole access). Without an all-knowing
arbiter,
this could also easily be a showstopper.
* Having a simple curses-based interface would allow easy navigation of
the
tree, displaying only the entries that the user can access. A web
interface
would not work out, due to the use of pki. A standalone gui
application
could work, for the command line challenged.
Any thoughts on this, especially the showstoppers?
S.
More information about the Gnupg-users
mailing list