Full paper (pdf) - CDC
Full paper (pdf) - CDC
Full paper (pdf) - CDC
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
(SecretShare[] shares, String integrityPassword)<br />
throws NoSuchAlgorithmException, SecretSharingException<br />
Diese beiden Methoden kombinieren die ihnen übergebenen Anteile zu dem Bytefeld,<br />
aus dem diese hervorgegangen sind. checkAndCombine überprüft dabei<br />
zuvor die Integrität der Anteile anhand eines Paßwortes. Wenn das Geheimnis<br />
aufgrund fehlerhafter Eingaben nicht rekonstruiert werden konnte, wird eine<br />
SecretSharingException ausgelöst, wenn die MD5-Funktion, die benötigt<br />
wird, um die Korrektheit des Geheimnisses zu prüfen, fehlt, gibt es eine NoSuchAlgorithmException.<br />
5.3.2 Key-Sharing-Basisfunktionalität<br />
Die grundlegenden Key-Sharing-Funktionen werden durch die statischen Methoden<br />
der Klasse keyshare.KeySharer zugänglich gemacht.<br />
Schlüssel verteilen<br />
public static KeyShare[] share<br />
(Key secret, int threshold, int sharenumber)<br />
throws InvalidParameterException, NoSuchAlgorithmException,<br />
InvalidKeySpecException<br />
Diese Methode erzeugt für den übergebenen Schlüssel secret insgesamt sharenumber<br />
Anteile, von denen threshold zur Rekonstruktion benötigt werden. Das dabei<br />
eingesetzte Verfahren hängt von der Art des Schlüssels sowie von den Werten<br />
für sharenumber und threshold ab. Ungültige Werte für sharenumber und<br />
threshold führen zu einer InvalidParameterException, nicht unterstützte<br />
Schlüsseltypen verursachen eine NoSuchAlgorithmException oder eine InvalidKeySpecException.<br />
Teilsignaturen und Teilentschlüsselungen erstellen<br />
Signature signer = Signature.getInstance("DistributedMD5withRSA");<br />
signer.initSign(keyshare);<br />
signer.update(message);<br />
byte[] partialSignature = signer.sign();<br />
Da die erzeugten Instanzen von KeyShare für alle unterstützten Arten von<br />
java.security.PrivateKey selbst die Schnittstelle PrivateKey implementieren,<br />
können die Teilberechnungen JCA-konform über java.security.Signature<br />
und javax.crypto.Cipher erstellt werden. Hierzu müssen die entsprechenden<br />
Implementierungen des keyshare.jca.Provider verwendet werden, der folglich<br />
im Laufzeitsystem registriert werden sollte. Implementiert sind die Signaturen<br />
DistributedMD5withRSA, DistributedSHA1withRSA sowie die Chiffren<br />
DistributedRSA und DistributedElGamal.<br />
Teilberechnungen zusammenführen<br />
public static byte[] combine<br />
(byte[][] shares, byte[] message)<br />
throws NoSuchAlgorithmException, SecretSharingException<br />
66