04.02.2013 Aufrufe

Full paper (pdf) - CDC

Full paper (pdf) - CDC

Full paper (pdf) - CDC

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!