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

ist. PrivateKeyShare diese Schnittstelle erweitert KeyShare und gleichzeitig die JCA-Schnittstelle PrivateKey um Methoden, mit denen der zugehörige öffentliche Schlüssel eines Schlüsselanteils erfragt werden sowie Teilsignaturen und Teilentschlüsselungen für ein zu übergebendes Byte-Array erzeugt werden können. AbstractPrivateKeyShare diese abstrakte Klasse stellt Default-Implementierungen für die Methoden eines PrivateKeyShare bereit und dient damit zur Vermeidung von Code-Duplikaten. Insbesondere implementiert sie eine Kodierung von Schlüsselanteilen im PKCS8-Austauschformat. PartialSignature diese Schnittstelle erweitert SecretShare und repräsentiert das Teilergebnis einer verteilten Signatur. Es sind Methoden vorgesehen um den Verifikationsschlüssel zu erhalten sowie den Namen des Signaturalgorithmus. AbstractPartialSignature diese abstrakte Klasse stellt Default-Implementierungen für die Methoden einer PartialSignature bereit und dient damit zur Vermeidung von Code-Duplikaten. Sie erbt dabei von AbstractSecretShare. PartialDecryption diese Schnittstelle erweitert SecretShare und repräsentiert das Teilergebnis einer verteilten Entschlüsselung. Es ist eine Methode vorgesehen um den Namen des Verschlüsselungsalgorithmus zu erfragen. AbstractPartialDecryption diese abstrakte Klasse stellt Default-Implementierungen für die Methoden einer PartialDecryption bereit und dient damit zur Vermeidung von Code-Duplikaten. SimpleRSAPrivateKeyShare diese Klasse stellt einen durch das einfache Verfahren zum Teilen von RSA-Schlüsseln (Abschnitt 3.4) entstandenen Teilschlüssel dar. Sie enthält auch Methoden zum Verteilen eines RSAPrivateCrtKey nach diesem Verfahren, sowie innere Klassen für die zugehörigen PartialSignature und PartialDecryption. SimpleElGamalPrivateKeyShare diese Klasse stellt einen durch das einfache Verfahren zum Teilen von ElGamal-Schlüsseln (Abschnitt 3.8) entstandenen Teilschlüssel dar. Sie enthält auch Methoden zum Verteilen eines ElGamalPrivateKey nach diesem Verfahren, sowie eine innere Klasse für die zugehörige PartialDecryption. FGMY RSAPrivateKeyShare diese Klasse stellt einen durch das Verfahren zum Teilen von RSA-Schlüsseln nach Frankel, Gemmell, MacKenzie und Yung (Abschnitt 3.5.2) entstandenen Teilschlüssel dar. Sie enthält auch Methoden zum Verteilen eines RSAPrivateCrtKey nach diesem Verfahren, sowie innere Klassen für die zugehörigen PartialSignature und PartialDecryption. 53

ShoupRSAPrivateKeyShare diese Klasse stellt einen durch das Verfahren zum Teilen von RSA-Schlüsseln nach Shoup (Abschnitt 3.6) entstandenen Teilschlüssel dar. Sie enthält auch Methoden zum Verteilen eines StrongRSAPrivateCrtKey nach diesem Verfahren, sowie innere Klassen für die zugehörigen PartialSignature und PartialDecryption. RedundantElGamalPrivateKeyShare diese Klasse stellt einen durch das redundante Verfahren zum Teilen von speziellen ElGamal-Schlüsseln (Abschnitt 3.8) entstandenen Teilschlüssel dar. Sie enthält auch Methoden zum Verteilen eines ExtendedElGamalPrivateKey nach diesem Verfahren, sowie eine innere Klasse für die zugehörige PartialDecryption. KeySharer diese Klasse enthält statische Methoden zum einfachen Zugriff auf die Key-Sharing-Funktionalität (Erzeugen von Teilschlüsseln, Kombinieren von Teilsignaturen und -entschlüsselungen). Sie bietet damit eine Fassade für den Key-Sharing-Teil des Pakets. X509 diese Klasse enthält statische Hilfsmethoden im Zusammenhang mit X.509- Zertifikaten. Sie kapselt damit Aufrufe an das ASN1-Codec. PKCS7 diese Klasse enthält statische Hilfsmethoden im Zusammenhang mit PKCS7-Dateien. Dies ist ein standardisiertes Format für verschlüsselte und/oder signierte Daten. Die Klasse kapselt Aufrufe an das ASN1-Codec. JCA-kompatible Schlüsselkodierung Zur Integration in die JCA war es von entscheidender Bedeutung, daß die privaten Schlüsselanteile von Komponenten wie KeyStore und Signature verwendet werden können. Hierzu waren zwei Maßnahmen notwendig: die Unterstützung der JCA-Schnittstelle PrivateKey und eine Kodierung gemäß PKCS8. Dies erlaubt es nämlich beispielsweise einem KeyStore den Schlüssel zu serialisieren und wieder zu rekonstruieren. PKCS8 identifiziert Schlüsselalgorithmen anhand eines Object Identifiers (OID). Der KeyStore sucht beim Laden von Schlüsseln dann über JCA eine KeyFactory für diesen OID, die wir folglich ebenfalls implementierten. Der verwendete OID ist 1.3.6.1.4.1.8301.3.2.99 und entstammt einem der TU Darmstadt zugeordneten Nummernkreis. Die PKCS8-Kodierung selbst enthält diesen OID und den Teilschlüssel als serialisiertes Java-Objekt. 5.2.2 Paket keyshare.jca Das Paket keyshare.jca enthält Hüllen- und Adapterklassen mit denen eine möglichst große Kompatibilität zur Java Cryptographic Architecture hergestellt werden soll. Das Paket enthält Implementierungen von Cipher, Signature und KeyFactory zum Umgang mit Schlüsselanteilen sowie einen JCA-Provider, der die neuen Algorithmen anmeldet und dadurch verfügbar macht. Darüberhinaus werden die speziellen Schlüssel, die vom Shoup- und vom redundanten ElGamal-Key-Sharing-Verfahren benötigt werden, bereitgestellt. Die Struktur der im folgenden kurz beschriebenen Klassen und Schnittstellen ist in Abbildung 5.3 dargestellt. 54

ist.<br />

PrivateKeyShare diese Schnittstelle erweitert KeyShare und gleichzeitig die<br />

JCA-Schnittstelle PrivateKey um Methoden, mit denen der zugehörige<br />

öffentliche Schlüssel eines Schlüsselanteils erfragt werden sowie Teilsignaturen<br />

und Teilentschlüsselungen für ein zu übergebendes Byte-Array erzeugt<br />

werden können.<br />

AbstractPrivateKeyShare diese abstrakte Klasse stellt Default-Implementierungen<br />

für die Methoden eines PrivateKeyShare bereit und dient damit<br />

zur Vermeidung von Code-Duplikaten. Insbesondere implementiert sie eine<br />

Kodierung von Schlüsselanteilen im PKCS8-Austauschformat.<br />

PartialSignature diese Schnittstelle erweitert SecretShare und repräsentiert<br />

das Teilergebnis einer verteilten Signatur. Es sind Methoden vorgesehen<br />

um den Verifikationsschlüssel zu erhalten sowie den Namen des<br />

Signaturalgorithmus.<br />

AbstractPartialSignature diese abstrakte Klasse stellt Default-Implementierungen<br />

für die Methoden einer PartialSignature bereit und dient damit<br />

zur Vermeidung von Code-Duplikaten. Sie erbt dabei von AbstractSecretShare.<br />

PartialDecryption diese Schnittstelle erweitert SecretShare und repräsentiert<br />

das Teilergebnis einer verteilten Entschlüsselung. Es ist eine Methode<br />

vorgesehen um den Namen des Verschlüsselungsalgorithmus zu erfragen.<br />

AbstractPartialDecryption diese abstrakte Klasse stellt Default-Implementierungen<br />

für die Methoden einer PartialDecryption bereit und dient<br />

damit zur Vermeidung von Code-Duplikaten.<br />

SimpleRSAPrivateKeyShare diese Klasse stellt einen durch das einfache Verfahren<br />

zum Teilen von RSA-Schlüsseln (Abschnitt 3.4) entstandenen Teilschlüssel<br />

dar. Sie enthält auch Methoden zum Verteilen eines RSAPrivateCrtKey<br />

nach diesem Verfahren, sowie innere Klassen für die zugehörigen PartialSignature<br />

und PartialDecryption.<br />

SimpleElGamalPrivateKeyShare diese Klasse stellt einen durch das einfache<br />

Verfahren zum Teilen von ElGamal-Schlüsseln (Abschnitt 3.8) entstandenen<br />

Teilschlüssel dar. Sie enthält auch Methoden zum Verteilen eines<br />

ElGamalPrivateKey nach diesem Verfahren, sowie eine innere Klasse für<br />

die zugehörige PartialDecryption.<br />

FGMY RSAPrivateKeyShare diese Klasse stellt einen durch das Verfahren zum<br />

Teilen von RSA-Schlüsseln nach Frankel, Gemmell, MacKenzie und Yung<br />

(Abschnitt 3.5.2) entstandenen Teilschlüssel dar. Sie enthält auch Methoden<br />

zum Verteilen eines RSAPrivateCrtKey nach diesem Verfahren, sowie<br />

innere Klassen für die zugehörigen PartialSignature und PartialDecryption.<br />

53

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!