Full paper (pdf) - CDC
Full paper (pdf) - CDC Full paper (pdf) - CDC
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
- Seite 17 und 18: Kapitel 3 Key-Sharing Die Sicherhei
- Seite 19 und 20: (dies muß nicht unbedingt für die
- Seite 21 und 22: Primzahlen, die aber nicht bekannt
- Seite 23 und 24: Den Teilnehmern übermittelt er die
- Seite 25 und 26: Auf diese Weise ergibt sich eine Za
- Seite 27 und 28: Verfahrens (ein beweisbar sicheres
- Seite 29 und 30: Schlüsselverwendung Es stellt sich
- Seite 31 und 32: Schlüsselerzeugung Um ein ElGamal-
- Seite 33 und 34: Die geheimen Teilexponenten ai für
- Seite 35 und 36: SSL-Webserver [WMB99] und das COCA-
- Seite 37 und 38: verwenden kann. Andererseits ergibt
- Seite 39 und 40: mit Key-Recovery beauftragten Insti
- Seite 41 und 42: SETUP Eine (reguäre) SETUP ist ein
- Seite 43 und 44: heimgehalten werden, da die Chiffre
- Seite 45 und 46: Kapitel 5 Implementierung Der Worte
- Seite 47 und 48: KeyStore der KeyStore eignet sich z
- Seite 49 und 50: entsprechende Schnittstelle für Di
- Seite 51 und 52: ialisieren lassen und die Methode z
- Seite 53 und 54: Abbildung 5.2: Key-Sharing-Basiskla
- Seite 55 und 56: ShoupRSAPrivateKeyShare diese Klass
- Seite 57 und 58: Provider dieser JCA-Provider meldet
- Seite 59 und 60: Abbildung 5.4: Klassen aus dem Pake
- Seite 61 und 62: Abbildung 5.6: Dialog zum Einlesen
- Seite 63 und 64: UndecryptableKeyException diese Aus
- Seite 65 und 66: ei der Fehlervermeidung, -suche und
- Seite 67: (SecretShare[] shares, String integ
- Seite 71 und 72: Keystore speichern Der KeySharer sp
- Seite 73 und 74: wird die Datei filename in shares D
- Seite 75 und 76: Dateien verschlüsseln Der KeyShare
- Seite 77 und 78: Kapitel 6 Ausblick Wir haben mit di
- Seite 79 und 80: X.509 ITU Empfehlung X.509, auch IS
- Seite 81 und 82: ElGamal a privater Exponent, wird z
- Seite 88 und 89: Anhang D Benutzerhandbuch Kommandoz
- Seite 90 und 91: Anhang E Benutzerhandbuch Programmi
- Seite 92 und 93: E.4 Der KeySharer-KeyStore Konfigur
- Seite 94 und 95: PKI, 77 Polynominterpolation, 10 Pr
- Seite 96: [FGPY97] Y. Frankel, P. Gemmell, P.
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