Full paper (pdf) - CDC

Full paper (pdf) - CDC Full paper (pdf) - CDC

cdc.informatik.tu.darmstadt.de
von cdc.informatik.tu.darmstadt.de Mehr von diesem Publisher
04.02.2013 Aufrufe

Die Teiberechnungen können direkt als zwei-dimensionales Bytefeld übergeben werden. Der zweite Parameter message kann bei Signaturen verwendet werden, um die entstandene Signatur automatisch zu verifizieren. Bei Entschlüsselungen wird er nicht ausgewertet. Wenn die Kombination aufgrund fehlerhafter Eingaben nicht rekonstruiert werden konnte, wird eine SecretSharingException ausgelöst, wenn die Verifikations-Funktion für Signaturen fehlt, gibt es eine NoSuchAlgorithmException. 5.3.3 Der Shamir-KeyStore Der ShamirStore ist ein spezieller KeyStore, der seinen Inhalt automatisch auf mehrere Dateien verteilt, aus denen er auch wieder geladen werden kann. Dieser Vorgang ist aufgrund der Einbettung in das KeyStore-Interface der JCA für den Anwender transparent. Konfiguriert wird der ShamirStore mit einer XML-Datei. Konfiguration Der ShamirStore bezieht seine Parametrisierung aus einer XML-Datei, die ihm während dem Ladevorgang über einen Eingabestrom zugeführt werden muß. Dieser etwas umständliche Weg ist durch die seitens JCA vorgegebene Schnittstelle bedingt. Die XML-Datei hat folgenden Aufbau:

Keystore laden Der ShamirStore setzt sich aus den in der Konfigurationsdatei bezeichneten Anteilen zusammen, wenn seine load()-Methode aufgerufen wird. Die Konfigurationsdatei muß ihm über den InputStream dieser Methode zugeführt werden. Ein ebenfalls angegebenes Paßwort wird dazu verwendet, die Integrität der KeyStore-Datei, die sich aus den Anteilen ergibt, zu prüfen. Dies ist zu unterscheiden von dem Integritätspaßworts für die einzelnen Anteile, welches in der XML-Datei angegeben werden kann. FileInputStream in = new FileInputStream("configuration.xml"); ks.load(in, password); in.close(); Wenn das Laden aufgrund fehlender oder fehlerhafter Anteile fehlschlägt wird eine IOException geworfen. Keystore verwenden Der ShamirStore verwendet intern einen normalen JavaKeyStore, an den er alle Anfragen weiterreicht. Daher reagiert er genau so, wie man es von einem solchen erwarten würde. Unter anderem kann man einen Schlüssel mit einem Alias versehen paßwortgeschützt abspeichern und auch wieder laden: ks.setKeyEntry(alias, key, password, certificateChain); Key key = ks.getKey(alias, password); Certificate cert = ks.getCertificate(alias); Keystore speichern Der ShamirStore speichert den intern verwendeten JavaKeyStore zunächst in ein Bytefeld ab und verteilt dieses dann über den SecretSharer auf die angegeben Dateien. Der Ausgabestrom, der der store()- Methode übergeben wird, wird dabei ignoriert. Das Paßwort allerdings wird zum Integritätsschutz des JavaKeyStores verwendet, wenn dieser in das Bytefeld geschrieben wird. ks.store(null, password); 5.3.4 Der KeySharer-KeyStore Der KeySharer ist ein spezieller Keystore, der die ihm anvertrauten Schlüssel mit einem Key-Sharing-Verfahren verteilt und in mehrere abhängige Keystores speichert. Die entstehenden Keystores können unabhängig voneinander verwendet werden, um mit den Teilschlüsseln zu arbeiten. Im Gegensatz zu den dabei entstehenden Teilergebnissen ist es nicht vorgesehen, die Schlüssel selbst wieder zusammenzusetzen. Dementsprechend sollten die Methoden, die einen Schlüssel aus dem Keystore laden für den KeySharer nicht aufgerufen werden. Statt dessen müssen die abhängigen Keystores direkt und einzeln verwendet werden. 68

Keystore laden Der ShamirStore setzt sich aus den in der Konfigurationsdatei<br />

bezeichneten Anteilen zusammen, wenn seine load()-Methode aufgerufen<br />

wird. Die Konfigurationsdatei muß ihm über den InputStream dieser Methode<br />

zugeführt werden. Ein ebenfalls angegebenes Paßwort wird dazu verwendet,<br />

die Integrität der KeyStore-Datei, die sich aus den Anteilen ergibt, zu prüfen.<br />

Dies ist zu unterscheiden von dem Integritätspaßworts für die einzelnen Anteile,<br />

welches in der XML-Datei angegeben werden kann.<br />

FileInputStream in = new FileInputStream("configuration.xml");<br />

ks.load(in, password);<br />

in.close();<br />

Wenn das Laden aufgrund fehlender oder fehlerhafter Anteile fehlschlägt<br />

wird eine IOException geworfen.<br />

Keystore verwenden Der ShamirStore verwendet intern einen normalen<br />

JavaKeyStore, an den er alle Anfragen weiterreicht. Daher reagiert er genau<br />

so, wie man es von einem solchen erwarten würde. Unter anderem kann man<br />

einen Schlüssel mit einem Alias versehen paßwortgeschützt abspeichern und<br />

auch wieder laden:<br />

ks.setKeyEntry(alias, key, password, certificateChain);<br />

Key key = ks.getKey(alias, password);<br />

Certificate cert = ks.getCertificate(alias);<br />

Keystore speichern Der ShamirStore speichert den intern verwendeten JavaKeyStore<br />

zunächst in ein Bytefeld ab und verteilt dieses dann über den<br />

SecretSharer auf die angegeben Dateien. Der Ausgabestrom, der der store()-<br />

Methode übergeben wird, wird dabei ignoriert. Das Paßwort allerdings wird<br />

zum Integritätsschutz des JavaKeyStores verwendet, wenn dieser in das Bytefeld<br />

geschrieben wird.<br />

ks.store(null, password);<br />

5.3.4 Der KeySharer-KeyStore<br />

Der KeySharer ist ein spezieller Keystore, der die ihm anvertrauten Schlüssel<br />

mit einem Key-Sharing-Verfahren verteilt und in mehrere abhängige Keystores<br />

speichert. Die entstehenden Keystores können unabhängig voneinander verwendet<br />

werden, um mit den Teilschlüsseln zu arbeiten. Im Gegensatz zu den dabei<br />

entstehenden Teilergebnissen ist es nicht vorgesehen, die Schlüssel selbst wieder<br />

zusammenzusetzen. Dementsprechend sollten die Methoden, die einen Schlüssel<br />

aus dem Keystore laden für den KeySharer nicht aufgerufen werden. Statt dessen<br />

müssen die abhängigen Keystores direkt und einzeln verwendet werden.<br />

68

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!