Shush
Download
You can download the alpha version of shush
for Microsoft Windows
here
(MD5 sum 6d8e83beafae5096da66e26269214025).
This version is intended as a proof of concept, not as a useable
application. The source code of the application is included in the zip
archive so feel free to send me your feedback at
.
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Documentation
Usage
Currently shush does not accept any option. The program simply reads concecutive yubikey static passwords on its standard input. When all the passwords of the participants have been feeded into shush, press enter and the software will produce a single static password that is the result of the XOR of all the individual static passwords. That resulting password is then stored in the OS clipboard so that it can be pasted in the password field of any application without ever being displayed on the screen. Once the password has been pasted, you can press enter again and shush will clear the clipboard and exit.
Principle
The purpose of shush is to allow a group of person to combine their individual cryptographic keys into a shared key that they can use to protect a shared secret. The idea of sharing a secret is nothing new to cryptography [1] but the most prominent secret sharing schemes are designed to generate the secret shares from a chosen shared secret. The principle of shush is the opposite: each participant provides it's secret share and all the secret shares are combined by shush to generate the shared secret.
Application
A typical application for shush is the situation where a group of participants want to put a secret under escrow [2]. Let's say the secret is a file containing confidential data. The participants want the file to be securely encrypted, to protect its content from strangers. But there is also a trust issue between the participants: each participant want to make sure that the other participants cannot decrypt the file without him or her. One way to do that is to "split" the file's encryption key between the participants, so that all the pieces of the key will be needed when the participants decide to decrypt the file. That's how the main secret sharing scheme usually proceeds. But what if the participant wants to choose piece of the key? For example what if they want their piece of the key to be derived from one of their fingerprint [3] or a hardware token containing a static key [4].
Implementation
In its current implementation, shush simply XORs the key of the individual participant's key to produce the shared key. The advantage of using XOR is that it is provably secure. On the other hand, it means that all the pieces of the key are necessary to reconstruct the shared key. If one piece is missing or lost, the show is over. The traditional secret sharing scheme usually provides a way to decide a minimum number of pieces necessary to recover the shared key. We will need to find a way to implement that with shush (feel free to send me your suggestions at the e-mail address at the bottom of this page).
- Wikipedia's article about secret sharing.
- This kind of scheme is actually referred to as a tontine. See Wikipedia's article about tontines.
- Note that this is probably not a very good idea since it would encourage a malicious participant to cut the others participant fingers.
- For example a Yubikey in static password mode.
|
Copyright © 2010 Thomas Leplus.
Unless otherwise noted, the content of this site is licensed under Creative Commons. |
|























