-
Die
Erfindung betrifft Schlüsselverteilungsschemata
für den
Transfer und die Authentifizierung von Verschlüsselungsschlüsseln
-
HINTERGRUND
DER ERFINDUNG
-
Mit
der Diffie-Hellman-Schlüsselübereinstimmung
("Diffie-Hellman
key agreement")
wurde die erste praktikable Lösung
für das
Schlüsselverteilungsproblem
in kryptographischen Systemen zur Verfügung gestellt. Das Schlüsselübereinstimmungsprotokoll
ermöglichte
es, zwei Parteien, die zuvor noch keinen Kontakt miteinander gehabt
oder kein Schlüsselmaterial
ausgetauscht hatten, ein gemeinsames Geheimnis durch den Austausch
von Nachrichten über
einen offenen (ungeschützten)
Kanal zu etablieren. Hierbei beruht die Sicherheit auf der Nicht-Zurückverfolgbarkeit
des Diffie-Hellman-Problems und dem damit zusammenhängenden Problem
der Berechnung diskreter Logarithmen.
-
Mit
dem Aufkommen des Internets und ähnlicher
Einrichtungen gewinnen das Erfordernis der Verteilung von öffentlichen
Schlüsseln
("public keys") in großem Maßstab sowie
Zertifikate für öffentliche
Schlüssel ("public key"-Zertifikate) zunehmend
an Bedeutung. Public-Key-Zertifikate
sind ein Vehikel, mit dem öffentliche Schlüssel gespeichert,
verteilt oder zugestellt werden können, und zwar über ungesicherte
Medien, ohne dass dabei die Gefahr einer unentdeckbaren Manipulation
besteht. Ziel hierbei ist es, den öffentlichen Schlüssel einer
Partei anderen in einer Weise zur Verfügung zu stellen, dass dessen
Authentizität
und Gültigkeit
("validity") überprüft werden
können.
-
Ein
Public-Key-Zertifikat ist eine Datenstruktur, die aus einem Datenteil
und einem Signaturteil besteht. Der Datenteil enthält Klartextdaten,
welche, als Minimum, einen öffentlichen
Schlüssel
und einen die mit diesem Schlüssel
zu assoziierende Partei identifizierenden Datenstring enthält. Der
Signaturteil besteht aus einer digitalen Signatur einer Zertifizierungsstelle
(CA, "certificate
authority") über dem
Datenteil, hierdurch wird die Identität der Entitäten an den spezifizierten öffentlichen
Schlüssel
gebunden. Die CA ist eine vertrauenswürdige dritte Partei, deren
Signatur auf dem Zertifikat für
die Authentizität
des an die betreffende Entität
gebundenen öffentlichen
Schlüssels
bürgt.
-
Identitätsbasierte
Systeme ("ID-based
systems") sind gewöhnlichen
Public-Key-Systemen insofern ähnlich
als sie eine geheime Transformation und eine öffentliche Transformation beinhalten,
jedoch haben die Parteien, anders als vorher, keine expliziten öffentlichen
Schlüssel.
Stattdessen wird der öffentliche
Schlüssel durch
die öffentlich
zugängliche
Identitätsinformation
(z.B. Name oder Netzadresse) einer Partei ersetzt. Als Identitätsinformation
kann hierbei jede öffentlich
zugängliche
Information dienen, durch welche die Partei eindeutig identifiziert
wird und die unleugbar mit dieser Partei assoziiert werden kann.
-
Eine
alternative Vorgehensweise bei der Verteilung öffentlicher Schlüssel verwendet
implizit zertifizierte öffentliche
Schlüssel.
Zwar existieren hier explizite öffentliche
Schlüssel
der Benutzer, doch müssen
diese rekonstruiert werden anstatt dass sie, wie bei zertifikatsbasierten
Systemen, durch Public-Key-Zertifikate transportiert werden. Somit
können
implizit zertifizierte öffentliche
Schlüssel
als ein alternatives Mittel zur Verteilung öffentlicher Schlüssel (z.B.
Diffie-Hellman-Schlüssel)
Verwendung finden.
-
Ein
Beispiel für
einen implizit zertifizierten Public-Key-Mechanismus ist in dem
schweizerischen Patent
CH 678134 beschrieben
und als Günthersches
Verfahren mit implizit zertifiziertem (ID-basierten) Public-Key bekannt.
Bei diesem Verfahren:
- 1. wählt ein vertrauenswürdiger Server
T eine geeignete, feste, öffentliche
Primzahl p und einen Generator α von
Z * / p. T wählt
eine zufällige
ganze Zahl t, mit 1 ≤ t ≤ p-2 und gcd(t,p-1)
= 1, als seinen geheimen Schlüssel
und veröffentlicht
seinen öffentlichen
Schlüssel
u = αt mod p, zusammen mit α, p.
- 2. T weist jeder Partei A einen eindeutigen Namen oder einen
identifizierenden Datenstring IA und eine
zufällige
ganze Zahl kA mit gcd(kA,
p-1)=1 zu. Dann berechnet T PA = mod
p. PA sind A's öffentliche
Schlüsselrekonstruktionsdaten,
die es anderen Parteien ermöglichen,
(PA)a, siehe unten,
zu berechnen.
- 3. Unter Verwendung einer geeigneten Hash-Funktion h löst T die
nachfolgende Gleichung für
a:
- 4. T schickt das Paar (r,s)=(PA,a),
wobei es sich um T's
ElGama1-Signatur auf IA handelt, gesichert
an A (a ist A's
geheimer Schlüssel
für die
Diffie-Hellman-Schlüsselübereinstimmung).
- 5. Jede andere Partei ist dann in der Lage, den Diffie-Hellman
Public-Key P a / A der Partei A vollständig
aus öffentlich
zugänglichen
Informationen (α,
IA, u, PA, p) durch
Berechnen von zu rekonstruieren.
-
Somit
ist bei Problemen der Berechnung des diskreten Logarithmus zur Signierung
eines Zertifikates eine einzige Potenzierungsoperation erforderlich,
die Rekonstruktion des ID-basierten
implizit-verifizierbaren öffentlichen
Schlüssels
jedoch erfordert zwei Potenzierungen. Bekanntermaßen ist
die Potenzierung in der Gruppe Z * / P sowie ihre analoge skalare Multiplikation
eines Punktes in E(Fq) rechnerisch aufwendig.
So ist z.B. ein RSA-Schema im Vergleich zu Systemen auf Basis elliptischer
Kurven extrem langsam. Trotz der enormen Überlegenheit von EC-Systemen
gegenüber
Systemen des RSA-Typs stellt der Rechenaufwand insbesondere für Recheneinrichtungen,
die über
begrenzte Rechenleistung verfügen,
wie z.B. "Smart
Cards", "Pager" und dergleichen,
jedoch immer noch ein Problem dar.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Das
Ziel der vorliegenden Erfindung besteht in der Bereitstellung eines
effizienten Schemas mit ID-basiertem implizitem Zertifikat, welches
gegenüber
bestehenden Schemata eine verbesserte Rechengeschwindigkeit aufweist.
Der Einfachheit halber werden hier die Schemata über Zp beschrieben,
jedoch können
diese Schemata ebenfalls in auf elliptischen Kurven basierenden
Kryptosystemen implementiert werden.
-
Erfindungsgemäß wird ein
Verfahren zur Erzeugung eines identitätsbasierten öffentlichen
Schlüssels in
einem sicheren digitalen Kommunikationssystem, das wenigstens eine
vertrauenswürdige
Entität
CA und Teilnehmerentitäten
A umfasst, bereitgestellt, welches folgende Schritte umfasst:
- a) für
jede Entität
A wählt
die vertrauenswürdige
Entität
CA eine eindeutige Identität
IA, durch welche die Entität A gekennzeichnet
wird;
- b) Erzeugung öffentlicher
Daten γA zur Rekonstruktion des öffentlichen Schlüssels der
Entität
A durch mathematisches Kombinieren eines Generators der vertrauenswürdigen Partei
CA mit einem geheimen Wert der Entität A, so dass das Paar (IA, γA) als das implizite Zertifikat von A dient;
- c) Kombinieren der impliziten Zertifikatsinformation (IA, γA) gemäß einer
mathematischen Funktion F(γA, IA), um eine Entitätsinformation
f abzuleiten;
- d) Erzeugen eines geheimen Schlüssels a der Entität A durch
Signieren der Entitätsinformation
f und
Übertragen
des geheimen Schlüssels
a an die Entität
A, wobei der öffentliche
Schlüssel
der Entität
A aus der öffentlichen
Information, dem Generator γA und der Identität IA relativ
effizient rekonstruiert werden kann.
-
Gemäß einem
anderen Aspekt der Erfindung wird ein Public-Key-Zertifikat bereitgestellt,
das eine Mehrzahl öffentlicher
Schlüssel
unterschiedlicher Bit-Stärken
umfasst und bei dem einer der öffentlichen Schlüssel ein
implizit zertifizierter öffentlicher
Schlüssel
ist.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Im
Folgenden werden, lediglich beispielhaft, Ausführungen der vorliegenden Erfindung
unter Bezug auf die begleitenden Zeichnungen beschrieben; die Zeichnungen
zeigen:
-
1:
eine schematische Darstellung einer ersten Systemkonfiguration gemäß einer
Ausführungsform
der vorliegenden Erfindung; und
-
2:
eine schematische Darstellung einer zweiten Systemkonfiguration
gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
DETAILLIERTE
BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM
-
Das
Folgende bezieht sich auf 1, in der
ein System mit implizit zertifizierten öffentlichen Schlüsseln dargestellt
ist, allgemein mit 10 gekennzeichnet. Dieses System 10 umfasst
eine vertrauenswürdige
dritte Partei CA und wenigstens ein Paar aus einem ersten und einem
zweiten Korrespondenten A bzw. B. Die Korrespondenten A und B tauschen über einen
Kommunikationskanal Informationen aus und sowohl A als auch B weisen
eine Kryptographieeinheit zur Ausführung visueller Finde-/Prüf-Operationen
und Verschlüsselungs-/Entschlüsselungsoperationen
auf.
-
Im
Folgenden wird wiederum auf 1 Bezug
genommen: Die vertrauenswürdige
Partei CA wählt eine
geeignete Primzahl p mit p=tq+1, wobei q eine große Primzahl
ist, und einen Generator α der
Ordnung q. Die CA wählt
eine zufällige
ganze Zahl c, mit 1 ≤ c ≤ q-1, als
ihren geheimen Schlüssel,
dann berechnet sie den öffentlichen
Schlüssel β=αc mod
p und veröffentlicht
(β, α, p, q).
-
Schema 1:
-
- 1. Für
jede Partei A wählt
die CA eine(n) eindeutige(n), unterscheidbare(n) Namen ("distinguished name") oder Identität IA (z.B. Name, Adresse, Telefonnummer) sowie
eine zufällige
ganze Zahl cA mit 1 ≤ cA ≤ q-1. Dann
berechnet CA γA=αCA mod p. (γA sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen Schlüssels von
A). Das Paar (IA, γA) dient
als das implizite Zertifikat von A)
- 2. CA wählt
eine Funktion f=F(IA, γA).
Zum Beispiel F(γA, IA)=γA+h(IA) oder F(γA,IA)=h(γA+IA), in denen h eine sichere Hash-Funktion
ist, und löst
die nachfolgende Gleichung für
a, welches den geheimen Schlüssel
der Partei A darstellt. Falls a=0, so wählt CA ein anders cA und löst
die Gleichung neu.
- 3. CA sendet das Tripel (γA, a, IA), welches
CA's Signatur auf
IA darstellt, auf sicherem Wege an A. Somit
ist
α ist
der geheime Schlüssel
von A;
γA ist der Generator von A; und
γ a / A (=αcAa)
ist der öffentliche
Schlüssel
von A.
A veröffentlicht
(α, IA, β, γA,
p, q) im frei zugänglichen
Bereich ("Public
Domain").
- 4. Jedermann kann den (ID-basierten) implizit verifizierbaren öffentlichen
Schlüssel
der Partei A aus der Public Domain durch Berechnen von erhalten, d.h. der öffentliche
Schlüssel
wird aus der obigen Gleichung hergeleitet, was lediglich eine einzige Potenzierungsoperation
erfordert.
-
Zwar
kann der öffentliche
Schlüssel
der Partei A von jedermann aus öffentlichen
Daten rekonstruiert werden, jedoch bedeutet dies nicht, dass der
rekonstruierte öffentliche
Schlüssel γ a / A zertifiziert
ist. Dieses Schema ist effektiver, wenn es mit einem Applikationsprotokoll
kombiniert wird, welches zeigt, dass der Partei A der entsprechende
geheime Schlüssel
vollständig
bekannt ist, so z.B. mit dem MQV-Schlüsselübereinstimmungsschema oder
einem beliebigen Signaturschema und insbesondere mit einem KCDSA
(Digitaler Signaturalgorithmus auf Basis des koreanischen Zertifikats).
Generell kann dieses Schema mit implizitem Zertifikat mit jedem
Schema verwendet werden, bei dem eine Verifizierung des Zertifikats
erforderlich ist. Dies kann unter Bezugnahme auf das Signaturschema
mit digitalem Signaturalgorithmus (DSA) gezeigt werden.
-
Angenommen
Alice hat den geheimen Schlüssel α, den Generator γA und
veröffentlicht
(α,IA,β,γA,p,q) in
der Public Domain. Alice will nun eine Nachricht M unter Verwendung
von DSA unterzeichnen.
-
Alice
geht wie folgt vor:
- 1. Sie wählt ein
zufälliges
k, berechnet r=γ k / A (mod
p);
- 2. sie berechnet e=sha-1(M);
- 3. sie berechnet s=k-1(e + ar) (mod
p).
- 4. Die Signatur auf M ist (r,s).
-
Der
Verifizierer geht wie folgt vor:
- 1. Er beschafft
sich Alices öffentliche
Daten (α,
IA, β, γA,
p, q) und rekonstruiert den öffentlichen
Schlüssel
- 2. berechnet e=sha-1(M);
- 3. berechnet u1 = es-1 (mod
q) und u2 = rs-1 (mod
q);
- 4. berechnet mod
p;
- 5. wenn r=r',
so ist die Signatur verifiziert. Gleichzeitig ist Alices (ID-basierter) öffentlicher
Schlüssel
implizit verifiziert.
-
Das
Paar (IA,γA) dient als Alices Zertifikat. Die Rekonstruktion
des öffentlichen
Schlüssels
dient als implizite Verifizierung, sofern das Ergebnis des Applikationsprotokolls
eine gültige
Verifizierung ist. Man erinnere, dass lediglich eine einzige Potenzierungsoperation
erforderlich ist, um den öffentlichen
Schlüssel
zu erhalten.
-
Bei
einer alternativen Ausführungsform
lässt sich
das Schema durch entsprechendes Modifizieren der Signaturgleichung
zu den meisten ElGama1-Signaturschemata verallgemeinern. Im Folgenden
einige Beispiele:
-
Schema 2:
-
CA
verwendet die Signaturgleichung 1=ca+c
Af
(mod q). CA schickt das Tripel (γ
A, a, I
A) gesichert
an A, a ist hierbei der geheime Schlüssel von A, β ist der
Generator von A, und β
a ist der öffentliche Schlüssel von A.
A veröffentlicht
(α, I
A, β, γ
A,
p, q) in der Public Domain. Jedermann kann den (ID-based) implizit
zertifizierten öffentlichen
Schlüssel
der Partei A durch Berechnen von
aus der Public Domain erhalten.
-
Bei
diesem Schema hat jeder Benutzer den gleichen Generator β, der den öffentlichen
Schlüssel
der Partei CA darstellt.
-
Schema 3:
-
CA
verwendet die Signaturgleichung a = cf +
CA (mod
q). CA schickt das Tripel (γ
A, a, I
A) gesichert
an A; a ist hierbei der geheime Schlüssel von A, α ist der
Generator von A und α
a ist der öffentliche Schlüssel von A.
A veröffentlicht
(α, I
A, β, γ
A,
p, q) in der Public Domain. Jeder kann den (ID-basierten) implizit
zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Bei
diesem Schema hat jeder Benutzer, einschließlich CA, den gleichen Generator α.
-
Schema 4:
-
CA
verwendet die Signaturgleichung a ≡
CAf
+ c (mod q). CA schickt das Tripel (γ
A, a,
I
A) gesichert an A; a ist hierbei der geheime
Schlüssel
von A, α ist
der Generator von A und α
a ist der öffentliche Schlüssel von A.
A veröffentlicht
(α,I
A,β,γ
A,p,q)
in der Public Domain. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Bei
diesem Schema hat jeder Benutzer, einschließlich CA, den gleichen Generator α.
-
In
den obigen Schemata hat die Partei A nicht die Freiheit, ihren eigenen
geheimen Schlüssel
zu wählen.
Bei den nachfolgenden Schemata, dargestellt in 2,
haben sowohl CA als auch der Benutzer die Kontrolle über den
geheimen Schlüssel
des Benutzers, jedoch kennt nur der Benutzer seinen geheimen Schlüssel.
-
Schema 5':
-
A
wählt zunächst eine
zufällige
ganze Zahl k und berechnet α
k, dann schickt A α
k an
CA. Der CA berechnet
mod
p und löst
die folgende Signaturgleichung für
k
A
-
Dann
berechnet CA
mod
p und schickt das Tripel (γ 1 / A,
k
A, I
A) an A. A
berechnet a=k
Ak
-1 (mod q)
und γ
A = (γ 1 / A)
k(mod p). a ist hierbei der geheime Schlüssel von
A, γ
A ist der Generator von A und γ a / A ist der öffentliche
Schlüssel
von A. A veröffentlicht
(α,I
A,β,γ
A,p,q)
in der Public Domain. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 6:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet βk, dann sendet A βk an
CA.
- 2. CA wählt
eine zufällige
ganze Zahl cA, berechnet (mod
p) und f=F(γA,IA), löst die Signaturgleichung
für kA (wenn kA=0, wähle ein
anderes cA) CA berechnet (mod
p) und sendet das Tripel (γ 1 / A,
kA, IA) an A.
Anmerkung:
(γ 1 / A, kA, IA) kann über einen öffentlichen
Kanal gesendet werden.
- 3. A berechnet (mod
p), f=F(γA,IA) und a=kA-kf (mod q) (wenn a=0,1, zurück zu Schritt
1). A prüft dann,
ob βa = αγ -f / A. Nun ist
a der geheime Schlüssel
von A, β ist
der Generator von A und βa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 7:
-
A
wählt zunächst zufällig eine
ganze Zahl k und berechnet α
k, welches A an CA schickt. Nun berechnet CA γ
A=α
kα
CA (mod
p) und löst
die Signaturgleichung für
k
A
-
Dann
berechnet CA γ 1 / A =
(α
k)
CA (mod p) und
schickt das Tripel (γ 1 / A,
k
A, I
A) an A. A
berechnet γ
A = (γ 1 / A)
k-1 α
k (mod p). Dann ist a = k
A +
k(mod q) der geheime Schlüssel
von A, α ist
der Generator von A und α
a ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,I
A,β,γ
A,p,q)
in der Public Domain. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 8:
-
- 1. A wählt
zufällig
eine ganze Zahl k, berechnet αk und sendet αk an
CA.
- 2. CA wählt
eine zufällige
ganze Zahl cA, berechnet (mod
p) und f=F(γA, IA), berechnet
kA (wenn kA=0, wähle ein
anderes cA) Dann berechnet CA (mod
p) und schickt das Tripel (γ 1 / A,
kA, IA) an A.
Anmerkung:
(γ 1 / A, kA, IA) kann über einen öffentlichen
Kanal geschickt werden.
- 3. A berechnet (mod
p), f = F(γA,IA) und a = kA + kf (mod q) (wenn a=0,1, geht A zurück zu Schritt 1).
A prüft
dann, ob αa = γ f / Aβ; a ist nun
der geheime Schlüssel
von A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Bei
den obigen Schemata 5-8 kann jeder eine Teilinformation über den
geheimen Schlüssel α des Nutzers
A erhalten, da kA über einen öffentlichen Kanal gesendet
wird. Um diese Information zu verbergen und um die Berechnung der
obige Schemata zu beschleunigen, wird DES-Verschlüsselung
eingeführt,
so dass sich die nachfolgenden Schemata 9-12 durch Modifizieren
der Schemata 5-8 ergeben. Die Vorteile von Schemata 9-12 liegen
darin, dass der Benutzer K leicht berechnen kann, da β fest ist.
-
Schema 9:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl CA, berechnet und
f = F(γA,β,IA), A löst
die Signaturgleichung für
kA (wenn kA = 0,
wähle ein
anderes CA). Als nächstes berechnet CA K = (ak)c(mod p) und k A =
DESK (kA), dann
schickt A das Tripel (γA,k A,IA) an A. γA
- 3. A berechnet K = βk (mod p), kA = DESk (k A), und a = kAk-1 (mod q) (wenn a=1, zurück zu Schritt 1). A prüft dann,
ob γ a / A = αβ-f.
A ist nun der geheime Schlüssel
von A, γA ist der Generator von A und γ a / A ist der öffentliche
Schlüssel
von A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 10:
-
- 1. A wählt
eine zufällige
ganze Zahl k und berechnet βk, dann schickt A βk an
CA.
- 2. CA wählt
eine zufällige
ganze Zahl CA, berechnet und
f = F(γA, β,
IA), löst
die Signaturgleichung für
kA (wenn kA = 0,
wähle ein
anderes CA) Als nächstes berechnet und k A =
DESK(kA), dann sendet
CA das Tripel (γA k A, IA) an A.
Anmerkung:
(γA k A, IA) kann über einen öffentlichen
Kanal geschickt werden.
- 3. A berechnet und
berechnet α =
kA - kf(modq) (wenn a=0,1, zurück zu Schritt
1). A prüft
dann, ob βa = αγ -f / A. Nun ist
a der geheime Schlüssel
von A, β ist der
Generator von A und βa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 11
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet ak, dann
schickt A ak an CA.
- 2. CA wählt
eine ganze Zahl CA, berechnet und
f = F(γA, β,
IA) berechnet kA (wenn
kA = 0, wähle ein anderes CA) Als nächstes berechnet CA K = (αk)c(mod p) und k A = DESK(kA), und schickt das Tripel (γA,k A,IA) an A.
Anmerkung: (γA,k A,IA) kann über
einen öffentlichen
Kanal geschickt werden.
- 3. A berechnet K = βk (mod p), kA = DESK(k A) und α =
kA + k(modq) (wenn a=0,1, zurück zu Schritt
1). Dann prüft
A, ob αa = βfγA. Nun ist a der geheime Schlüssel von
A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von αa = γ f / A (mod
p).
-
Schema 12:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl CA, berechnet und
f = F(γA,β,IA) berechnet kA (wenn kA = 0, wähle
ein anders CA) kA =
cA f + c(mod q).
Als nächstes berechnet
CA K = (αk)c(mod p) und k A =
DESk(kA), dann schickt
CA das Tripel (γA,k A,IA) an A.
Anmerkung:
(γA,k A,IA) kann über einen öffentlichen
Kanal geschickt werden.
- 3. A berechnet K = βk (mod p), kA = DESk (k A), f = F(γA, β,
IA) und a = kA +
kf(mod q) (wenn a=0,1, zurück
zu Schritt 1). Dann prüft
A, ob αa = γ f / Aβ. Nun ist
a der geheime Schlüssel
von A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q).
Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen von
-
Die
Vorteile der Schemata 9-12 liegen darin, dass K vom Nutzer A leicht
berechnet werden kann, da β fix
ist, und dass kA so verschlüsselt ist,
dass niemand anderes kA kennen kann.
-
Man
bemerke, dass der Nutzen der Schemata 5-12 durch Hinzufügen eines
Optionsparameters OP zu der Funktion F(γ
A,β,I
A) (d.h. f = F(γ
A,β,I
A,OP) erhöht
wird. Beispielsweise ist
worin
a
E der geheime Verschlüsselungsschlüssel des
Nutzers A ist und
der öffentliche
Verschlüsselungsschlüssel des
Nutzers A. Auf Schema 15 folgt eine Modifizierung des Schemas 7.
Schemata 5-12 können
in gleicher Weise modifiziert werden. Auch die Schemata 1-4 können in
dieser Weise modifiziert werden.
-
Schema 13
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, A schickt dann αk an
CA.
- 2. CA wählt
eine zufällige
ganze Zahl cA, berechnet und
f = F(γA,IA,OP), berechnet
kA (wenn kA = 0,
wähle ein
anderes cA) Als nächstes berechnet CA K = H((αk)c) und k A=DESK(kA),
dann schickt CA das Tripel (f, k A, IA) an A.
- 3. A berechnet K = H(βk), kA = DESK(k A) und a=kA+k (mod
q) (wenn a=0,1, zurück
zu Schritt 1.) Dann berechnet A γA = αaβ-f (mod p) und prüft, ob f = F(γA,IA,OP). Nun ist a der geheime Schlüssel von
A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Weiterhin
kann die Bandbreite durch das nachfolgende Schema 14 vermindert
werden.
-
Schema 14:
-
- 1. A wählt
eine zufällige
ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
setzt γ ^A als die ersten 80 niedrigstwertigen
Bits von γA. Dann berechnet CA f = F(γ ^A,IA,OP) und kA (wenn
ka=0, wähle
ein anderes cA)
Als nächstes berechnet
CA K = (αk)c (mod p) und k A=DESK(kA), dann sendet
CA (γ ^A, k A, IA) an A.
Anmerkung:
(γ ^A, k A, IA) kann über einen öffentlichen
Kanal geschickt werden.
- 3. A berechnet K = βk (mod p), kA = DESK(k A) und akA+k (mod
q) (wenn a=0,1, zurück
zu Schritt 1). A berechnet dann F(γ ^A,β,IA), γA = αa β-f (mod p) und prüft, ob die ersten 80 niedrigstwertigen
Bits von γA gleich γ ^A sind.
Nun ist a der geheime Schlüssel
von A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Das
Sicherheitsniveau 14 ist nicht so hoch wie das anderer, oben besprochener
Schemata. Schema 14 hat eine 80-Bit-Sicherheit, die jedoch derzeit
für praktische
Anwendungen ausreicht. Die ersten 80 niedrigstwertigen Bits können auf
die niedrigstwertigen Bits bis zur Hälfte der Bits von γA erweitert
werden.
-
Das
implizite Zertifikat kann zur Zertifizierung anderer nützlicher
Information verwendet werden, und zwar durch Aufnahme der Information
in den Optionsparameter OP. Beispielsweise
wobei
a
E ein anderer geheimer Schlüssel des
Benutzers A und
der korrespondierende öffentliche
Schlüssel
ist. Das folgende Schema 15 stellt eine Modifikation des Schemas
7 dar. Andere Schemata können
in der gleichen Weise modifiziert werden.
-
Schema 15:
-
- 1. A wählt
zufällig
eine ganze Zahl aE und berechnet
- 2. A wählt
zufällig
eine ganze Zahl k und berechnet αk, A schickt dann αk und an
CA.
- 3. CA wählt
zufällig
eine ganze Zahl cA, berechnet und (Beispielsweise berechnet
kA (wenn kA = 0,
wähle ein
anderes CA) Dann berechnet und
sendet das Tripel (γ 1 / A,
kA, IA) an A.
Anmerkung:
(γ 1 / A, kA, IA) kann über einen öffentlichen
Kanal geschickt werden.
- 4. A berechnet a=kA+k (mod q) (wenn
a=0,1, zurück
zu Schritt 1) und berechnet Danach prüft A, ob αa = βfγA.
Nun ist a der geheime Schlüssel
von A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A, aE ist der geheime Verschlüsselungsschlüssel von
A und ist
der öffentliche
Verschlüsselungsschlüssel von
A. A veröffentlicht
((α, IA, β, γA,
p, q) in der Public Domain.
- 5. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkungen: (zu Schemata
13-15)
-
- 1. Die Identität IA kann
entweder von CA oder durch die Entität A gewählt werden.
- 2. CA sollte die Entität
A authentifizieren. Dies kann mittels des in Anmerkung 2 zu Schema
11 beschriebenen Verfahrens erfolgen.
- 3. (f, k A,
IA) oder (γ ^A, k A,IA) oder (γ 1 / A,
kA, IA) kann über einen öffentlichen
Kanal geschickt werden.
-
Bei
unseren Schemata ist (α, γA)
die Signatur von CA auf der ID IA von A,
es wurde davon ausgegangen, dass (α,γA) öffentlich
bekannt ist. Jetzt ist a jedoch nur dem Benutzer A bekannt. Werden
diese Schemata verwendet, sollte man also sicherstellen, dass in
dem Applikationsprotokoll der Benutzer A seinen eigenen geheimen
Schlüssel
kennt. Anders ausgedrückt,
muss das Applikationsprotokoll sicherstellen, dass A bei den Berechnungen
seinen geheimen Schlüssel
verwendet.
-
Die
Sicherheit des neuen Schemas hängt
von den Signaturgleichungen ab. Beispielsweise lautet die Signaturgleichung
in Schema 1:
-
Im
Folgenden wird gezeigt werden, dass bei einer gewissen Wahl der
Einwegfunktion (F(γA, IA) das neue Schema
1 äquivalent
ist mit DSA.
-
Angenommen
CA verwendet die DSA-Signaturgleichung, um die Identität IA der Partei A zu signieren. Zunächst wählt CA zufällig ein
cA und berechnet γA = αcA mod
p, dann verwendet CA eine sichere Hash-Funktion h, um h(IA) zu berechnen, schließlich löst CA die Gleichung für s.
-
-
Hierbei
ist (γA,s) CAs Signatur auf IA.
-
Durch
Multiplikation der Gleichung (2) mit h(I
A)
-1 erhalten wir
-
Sei
F(γA,IA) = γAh(IA)-1 und ersetze
in obiger Gleichung sh(IA)-1 durch
a, so ergibt dies Gleichung (1). Gleichung (2) ist offensichtlich äquivalent
mit Gleichung (1), wenn F(γA, IA) = γa h(IA)-1. Das bedeutet,
dass wenn jemand in der Lage ist, das die Signaturgleichung (1)
verwendende Schema zu brechen, so kann er auch das Schema brechen,
das die Signaturgleichung (2) verwendet und bei dem es sich um ein
DSA-Schema handelt.
-
Heuristische
Argumente legen nahe, dass unsere neuen Schemata für eine geeignete
Auswahl von F(γA,IA), mit F(γA,IA) = γA h(IA) oder F(γA,IA) = h(γA,IA), sicher sind.
Man bemerke, dass F(γA,IA) auch ein anderes Format
aufweisen kann, wenn z.B. IA klein ist,
z.B. 20 Bits, q jedoch mehr als 180 Bits enthält, so kann F(γA,IA)=γA + IA verwendet
werden. Ein Nachteil der neuen Schemata besteht darin, dass alle
Benutzer und die CA die gleiche Feldgröße verwenden. Allerdings arbeiten
alle Schemata mit ID-basiertem implizit zertifiziertem Public-Key auf diese Weise,
z.B. Giraults RSA-basiertes Diffie-Hellman-Schlüsselübereinstimmungsschema.
-
Ein
weiterer Satz Schemata kann auch folgendermaßen beschrieben werden:
System-Setup:
Eine vertrauenswürdige
Partei CA wählt
eine geeignete Primzahl p mit p=tq+1, wobei q eine große Primzahl
ist, und einen Generator α der
Ordnung q. Die Partei CA wählt
eine zufällige
ganze Zahl c, mit 1<c<q als ihren geheimen
Schlüssel,
berechnet den öffentlichen
Schlüssel β=αc mod
p und veröffentlicht (β,α,p,q). Dann
wählt CA
eine spezielle kryptographische Funktion f = F(γAIA,OP)(f:{0,1} * → {1,2,...(q-1)}), so dass mit
dieser Funktion das Signaturschema, das zur Erzeugung des impliziten
Zertifikates verwendet wird, sicher ist, wobei OP für Optionsparameter
steht, die den Benutzer betreffen (z.B. das Datum, oder β, der öffentliche
Schlüssel
der Partei CA). Beispielsweise sei h eine sichere Hash-Funktion,
f kann eines der nachfolgend aufgeführten Formate aufweisen:
- 1. F(γAIAOP) = γA+β+h(IA)
- 2. F(γA,IA,OP) = h(γA || β || IA)
- 3. F(γA,IA,OP) = γA+β+IA wobei IA ein Muster
aufweist (oder wenn IA klein ist, z.B. 20
Bits, und q mehr als 180 Bits hat)
- 4. F(γAIA,OP) = γA+h(IA)
- 5. F(γA,IA,OP) = h(γA ||
IA)
- 6. F(γA,IA,OP) = γA+IA wobei IA ein Muster
aufweist (oder wenn IA klein ist, z.B. 20
Bits, und q mehr als 180 Bits hat)
- 7. Die Parameter ein wenig zu verändern, um aus einem gegebenen
sicheren Signaturschema ein sicheres Signaturschema zu erhalten,
ist sehr leicht. So kann F(γA,IA,OP) jedes andere
Format aufweisen, mit dem garantiert ist, dass das zur Erzeugung
des impliziten Zertifikats verwendete Signaturschema sicher ist.
Man bemerke, dass durch geeignete Wahl von F(γA,IA,OP) jedes bisher bekannte Elgamal-artige
Signaturschema mit einem der hierin vorgeschlagenen 4 Schematafamilien äquivalent
ist, wenn es als implizites Zertifikat-Schema nach Modifizierung
verwendet wird. Jedoch besitzen die von uns vorgeschlagenen Schemata die
größte Effizienz.
Anmerkung:
In den nachfolgenden Schemata wird von dem obigen System-Setup ausgegangen.
-
Schema 1.a:
-
- 1. Für
jede Entität
A wählt
CA einen eindeutigen unterscheidbaren Namen ("distinguished name") oder Identität IA (z.B.
Name, Adresse, Telefonnummer) sowie eine zufällige ganze Zahl cA mit
1<cA<q. Dann berechnet (γA sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
von A. (IA, γA) dient
als das implizite Zertifikat von A.)
- 2. CA berechnet f = F(γA,IA,OP) und löst die folgende
Gleichung für
a (wenn a = 0,1, c, c -1 / Ac, so wählt
CA ein anderes cA und löst die Gleichung erneut).
- 3. CA schickt das Tripel (γA, a, IA), welches
CAs Signatur auf IA darstellt, gesichert
an A. Hierbei ist a As geheimer Schlüssel, γA ist
As Generator und ist
As öffentlicher
Schlüssel.
A veröffentlicht (α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkung:
-
- 1. In Schritt 1 kann die Identität IA von der Entität A gewählt werden.
- 2. In Schritt 2 sei a=0,1 ausgeschlossen, da sonst jedermann
mit Leichtigkeit den geheimen Schlüssel der Partei A ermitteln
kann. Insbesondere wenn a=0, c -1 / Ac, kann CAs geheimer Schlüssel c von
jedermann aus 1=cf (mod q) berechnet werden.
- 3. Bei diesem Schema hat jeder Benutzer einen unterschiedlichen
Systemgenerator γA.
-
Schema 1.b:
-
- 1. Für
jede Entität
A wählt
CA eine(n) eindeutige(n) unterscheidbaren Namen oder Identität IA (z.B. Name, Adresse, Telefonnummer) sowie
eine zufällige
ganze Zahl cA mit 1<cA<q. Danach berechnet (γA sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
der Partei A. (IA, γA) dient
als As implizites Zertifikat.)
- 2. CA berechnet f = F(γA,IA, OP) und löst die folgende
Gleichung für
a(wenn a=0,1,c, so wählt
CA ein anderes cA und löst die Gleichung erneut).
- 3. CA schickt das Tripel (γA, a, IA), bei dem
es sich um CAs Signatur auf IA handelt,
sicher an A. Hierbei ist a der geheime Schlüssel von A, β der Generator
von A und βa der öffentliche
Schlüssel
von A. A veröffentlicht
(α, IA,β, γA,
p, q) in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkung:
-
- 1. In Schritt 1 kann die Identität IA von der Entität A gewählt werden.
- 2. In Schritt 2 sei a=0,1 ausgeschlossen, da sonst jedermann
mit Leichtigkeit den geheimen Schlüssel der Partei A ermitteln
kann. Ist a=0, so ist CA nicht in dem Zertifikat involviert.
- 3. Bei diesem Schema hat jeder Benutzer den gleichen Systemgenerator β.
-
Schema 1.c:
-
- 1. Für
jede Entität
A wählt
CA eine(n) eindeutige(n) unterscheidbaren Namen oder Identität IA (z.B. Name, Adresse, Telefonnummer) sowie
eine zufällige
ganze Zahl cA mit 1<cA<q. Danach berechnet (γA sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
der Partei A. (IA, γA) dient
als As implizites Zertifikat.)
- 2. CA berechnet f = F(γA,IA, OP) und löst die folgende
Gleichung für
a (wenn a=0,1 oder c, so wählt
CA ein anderes cA und löst die Gleichung erneut).
- 3. CA schickt das Tripel (γA, a, IA), bei dem
es sich um CAs Signatur auf IA handelt,
gesichert an A. Hierbei ist a der geheime Schlüssel von A, Ader
Generator von A und αa der öffentliche
Schlüssel
von A. A veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkung:
-
- 1. In Schritt 1 kann die Identität IA von der Entität A gewählt werden.
- 2. In Schritt 2 sei a=0,1 ausgeschlossen, da sonst jedermann
mit Leichtigkeit den geheimen Schlüssel der Partei A ermitteln
kann.
- 3. Bei diesem Schema hat jeder Benutzer den gleichen Systemgenerator α.
-
Schema 1.d:
-
- 1. Für
jede Entität
A wählt
CA eine(n) eindeutige(n) unterscheidbaren Namen oder Identität IA (z.B. Name, Adresse, Telefonnummer) sowie
eine zufällige
ganze Zahl cA mit 1<cA<q. Danach berechnet (γA sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
der Partei A. (IA, γA) dient
als As implizites Zertifikat.)
- 2. CA berechnet f=F(γA,IA, OP) und löst die folgende
Gleichung für
a (wenn a=0,1 oder c, so wählt
CA ein anderes cA und löst die Gleichung erneut).
- 3. CA schickt das Tripel (γA, a, IA), bei dem
es sich um CAs Signatur auf IA handelt,
gesichert an A. Hierbei ist a der geheime Schlüssel von A, α der Generator
von A und αa der öffentliche
Schlüssel
von A. A veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkung:
-
- 1. In Schritt 1 kann die Identität IA von der Entität A gewählt werden.
- 2. In Schritt 2 sei a=0,1 ausgeschlossen, da sonst jedermann
mit Leichtigkeit den geheimen Schlüssel der Partei A ermitteln
kann.
- 3. Bei diesem Schema hat jeder Benutzer den gleichen Systemgenerator α.
-
Zwar
kann jeder den öffentlichen
Schlüssel
der Partei A aus den öffentlichen
Daten rekonstruieren, doch bedeutet dies nicht, dass der rekonstruierte öffentliche
Schlüssel
zertifiziert wurde. Um das Zertifikat explizit zu verifizieren,
muss a bekannt sein. Sobald man a kennt, besteht das Verifizierungsverfahren
darin, CAs Signatur auf IA zu verifizieren.
Wenn beispielsweise in Schema 1.a der Verifizierer αβ-f berechnet
und ein Benutzer A γ a / A unter
Verwendung von a berechnet, so können
diese das Zertifikat zusammen verifizieren. Der Verifizierer muss
aber sicherstellen, dass der Benutzer A tatsächlich a kennt. Somit dient
die Rekonstruktion des öffentlichen
Schlüssels
nur dann als implizite Verifizierung, wenn sie mit einem Applikationsprotokoll
kombiniert ist, welches zeigt, dass der Benutzer A den entsprechenden
geheimen Schlüssel
vollständig
kennt. Generell kann das auf implizitem Zertifikat basierende Schema
mit jedem Public-Key-Schema verwendet werden, das die Subjekt-Entität und den öffentlichen
Schlüssel
authentifizieren muss.
-
Im
Folgenden soll dies durch Verwendung des DSA-Signaturschemas als
System mit implizit zertifiziertem öffentlichen Schlüssel und
des Schemas 1.a als Schema mit implizitem Zertifikat demonstriert
werden.
-
Angenommen,
Alice hat den geheimen Schlüssel
a, den Generator γA und veröffentlicht
(α,IA,β,γA,p,q) in
der Public Domain. Alice möchte
nun eine Nachricht M unter Verwendung eines DSA signieren.
-
Alice
geht wie folgt vor:
- 1. sie wählt zufällig ein
k, berechnet r = γ x / A (mod
p).
- 2. sie berechnet e=sha-1(M).
- 3. sie berechnet s=x-1(e+ar) (mod q).
- 4. Die Signatur auf M ist (r,s).
-
Der
Verifizierer geht wie folgt vor:
- 1. er beschafft
sich Alices öffentliche
Daten (α,
IA, β, γA,
p, q), berechnet f und rekonstruiert den öffentlichen Schlüssel
- 2. berechnet e=sha-1(M).
- 3. berechnet u1 = es-1 (mod
q) und u2 = rs-1 (mod
q)
- 4. berechnet
- 5. ist r=r',
so ist die Signatur verifiziert. Gleichzeit ist Alices (ID-basierter) öffentlicher
Schlüssel
implizit verifiziert.
-
Das
Paar (IA, γA) dient
als Alices Zertifikat. Für
DSA wissen wir, dass es sehr schwer ist, Alices Signatur zu fälschen,
ohne a zu kennen. Die Rekonstruktion des öffentlichen Schlüssels dient
dann als implizite Verifizierung, falls das Applikationsprotokoll
mit gültig
endet. Man erinnere, dass lediglich eine Potenzierungsoperation
erforderlich ist, um den öffentlichen
Schlüssel
zu erhalten. Aus diesem Grunde lässt
sich sagen, dass die Verifizierung des impliziten Zertifikats eine
Potenzierungsoperation erfordert.
-
Die
nachfolgenden Schemata mit implizitem Zertifikat können durch
Modifizieren der obigen Schemata, derart dass sowohl CA als auch
die Entität
die Kontrolle über
den geheimen Schlüssel
der Entität
haben, jedoch nur die betreffende Entität ihren geheimen Schlüssel kennt,
abgeleitet werden.
-
In
diesem Abschnitt ist ein weiterer Systemparameter H(*) erforderlich,
wobei H(*) eine Kryptofunktion ist, bei der es sich um eine sichere
Hash-Funktion oder Einweg-Funktion oder eine Identity-Map handeln
kann.
-
Schema 2.a:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA,OP), löst die Signaturgleichung
für kA (wenn kA = 0 oder
c, so wählt
CA ein anderes cA) Dann berechnet und
schickt das Tripel (γ 1 / A,
kA, IA) an A.
- 3. A berechnet a=kAk-1 (mod
q) (ist a = 1, so geht A zurück
zu Schritt 1) und berechnet γA = (γ 1 / A)k (mod p). Dann prüft A, ob γ a / A = αβ-f.
Hierbei ist a der geheime Schlüssel
von A, γA der Generator von A, und γ a / A ist der öffentliche
Schlüssel
von A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 2.b:
-
- 5. A wählt
zufällig
eine ganze Zahl k und berechnet βk, dann schickt A βk an
CA.
- 6. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA, OP), löst die Signaturgleichung
für kA (ist kA = 0, c,
so wählt
CA ein anderes cA) Dann berechnet und
schickt das Tripel (γ 1 / A,
kA, IA) an A.
- 7. A berechnet und
a = kA – kf (mod q) (wenn a =0,1, so geht A zurück zu Schritt
1). Dann prüft
A, ob βa = αγ -f / A. Hierbei
ist a der ge heime Schlüssel
von A, β ist
der Generator von A, und βa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 8. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 2.c:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA,OP), berechnet
kA (wenn kA = c,
so wählt
CA ein anderes cA) Dann berechnet und
schickt das Tripel (γ 1 / A,
kA, IA) an A.
- 3. A berechnet a=kA + k (mod q) (wenn
a=0,1, so geht A zurück
zu Schritt 1) und berechnet Danach
prüft A,
ob Hierbei
ist a der geheime Schlüssel
von A, α ist
der Generator von A, und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 2.d:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA, OP), berechnet
kA (wenn kA = cA, so wählt
CA ein anderes cA) Dann berechnet und
schickt das Tripel (γ 1 / A,
kA, IA) an A.
- 3. A berechnet und
a = kA + kf (mod
q). (Wenn a = 0,1, so geht A zurück zu
Schritt 1). Danach prüft
A, ob αa = γ f / A β Hierbei
ist a der geheime Schlüssel
von A, α ist
der Generator von A, und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkungen: (zu den Schemata
2.a, 2.b, 2.c, 2.d)
-
- 1. Die Identität IA kann
entweder von CA oder der Entität
A gewählt
werden.
- 2. CA sollte die Entität
A authentifizieren. Dies kann durch Anwesenheit vor CA geschehen,
oder über
einen sicheren Kanal oder über
die Stimme (z.B. durch Telefon), oder durch das folgende Verfahren:
Anstatt
das Tripel (γ 1 / A,
kA, IA) an A zu
senden, schickt CA in Schritt 2 zuerst γ 1 / A an A. A berechnet γA,
setzt K=H(γA), verschlüsselt die Authentifizierungsinformation
AAI von A (z.B. VISA-Information) durch
DES (oder ein anderes auf einem symmetrischen Schlüssel basierendes
System, "Symmetric-Key-System") und schickt DESK(AAI) an CA. CA
entschlüsselt
DESK(AAI), um (AAI) zu erhalten. Nach Prüfung der Validität von (AAI) schickt CA (kA,IA) an A.
- 3. (γ 1 / A,
kA, IA) kann über einen öffentlichen
Kanal geschickt werden.
-
In
den obigen Schemata 2.a-2.d, werden die Schemata mit implizitem
Zertifikat durch die Subjekt-Entität und die CA beendet. Jedes
Schema ist im Wesentlichen in zwei Teile aufgeteilt: der Schlüsselaustauschteil und
der Signaturteil. Eine Funktion des Schlüsselaustauschteiles besteht
in der Übertragung
der Information des impliziten Zertifikats von CA an A über einen öffentlichen
Kanal (hierauf wird in Abschnitt 6 näher eingegangen). Um die Berechnung
der obigen Schemata zu beschleunigen, kann der Schlüsselaustauschteil
modifiziert werden. Die nachfolgenden Schemata 3.a-3.d werden durch
Modifizierung der Schemata 2.a-2.d erhalten. Der Vorteil von Schemata
3.a-3.d besteht darin, dass der Benutzer A, daß fix ist, in der Lage ist,
K zu berechnen, bevor er von CA eine Antwort erhält. Hier handelt es sich um
eine vorteilhafte Eigenschaft, insbesondere für den Online-Fall.
-
Schema 3.a:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA, OP), löst die Signaturgleichung
für kA (wenn kA = 0, so
wählt CA
ein anders cA) Als nächstes berechnet CA K = H((αk)c) und k A = DESK(kA), dann schickt CA das Tripel (γA,k A,IA) an A.
- 3. A berechnet K = H(βk), kA = DESK(k A) und a=kAk-1 (mod q). (Wenn a=1, so geht A zurück zu Schritt
1.) Dann prüft
A, ob γ a / A =
aβ-f. Hierbei ist a der geheime Schlüssel von
A, γA ist der Generator von A, und γ a / A ist der öffentliche
Schlüssel
von A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 3.b:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet βk, dann schickt A βk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA,OP), löst die Signaturgleichung
für kA (wenn kA = 0, so
wählt CA
ein anderes cA) Als nächstes berechnet und k A =
DESK(kA) und schickt
dann das Tripel (γA, k A, IA) an A.
- 3. A berechnet und
berechnet a = kA – kf (mod q) (wenn a = 0,1,
so geht A zurück
zu Schritt 1). Dann prüft
A, ob βa = αγ -f / A
Hierbei
ist a der geheime Schlüssel
von A, β ist
der Generator von A, und βa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkung: (zu Schema
3.b)
-
- 1. Die Identität IA kann
entweder von CA oder der Entität
A gewählt
werden.
- 2. CA sollte die Entität
A authentifizieren. Dies kann durch Anwesenheit vor CA geschehen,
oder über
einen sicheren Kanal oder über
die Stimme (z.B. durch Telefon), oder durch das folgende Verfahren:
Anstatt
das Tripel (γA, k A, IA) an A zu senden,
schickt CA in Schritt 2 zuerst γA an A. A berechnet verschlüsselt die
Authentifizierungsinformation AAI von A
(z.B. VISA-Information) durch DES (oder ein anderes mit einem symmetrischen
Schlüssel
arbeitendes System, "Symmetric-Key-System") und schickt DESK(AAI) an CA. CA
entschlüsselt
DESK(AAI), um AAI zu erhalten. Nach Prüfung der Validität von AAI schickt CA( k A, IA) an A.
- 3. (γA,k A,IA) kann über einen öffentlichen
Kanal geschickt werden.
-
Schema 3.c:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA, OP), berechnet
kA (wenn kA = 0,
so wählt
CA ein anderes cA) Als nächstes berechnet CA K = H((αk)c) und k A = DESK(kA), dann schickt CA das Tripel (γA,k A,IA) an A.
- 3. A berechnet K = H(βk), kA = DESK (k A) und a=kA+k (mod
q) (wenn a=0,1, zurück
zu Schritt 1.) Dann prüft A,
ob αa = βfγA Hierbei ist a der geheime Schlüssel von
A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IA,β,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Schema 3.d:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA, OP), berechnet
kA (wenn kA = 0,
so wählt
CA ein anderes cA) Als nächstes berechnet CA K = H((αk)c) und k A = DESK(kA), dann schickt CA das Tripel (γA,k A,IA) an A.
- 3. A berechnet K = H(βk), kA = DESK (k A), f = F(γA,IA, OP) und a=kA+kf (mod q) (wenn a=0,1, zurück zu Schritt 1.)
Dann prüft
A, ob αa = γ f / Aβ. Hierbei
ist α der
geheime Schlüssel
von A, α ist
der Generator von A und αa ist der öffentliche Schlüssel von
A. A veröffentlicht
(α,IAβ,γA,p,q)
in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkungen: (zu Schemata
3.a, 3.c, 2.d)
-
- 1. Die Identität IA kann
entweder von CA oder der Entität
A gewählt
werden.
- 2. CA sollte die Entität
A authentifizieren. Dies kann entweder durch Anwesenheit vor CA
geschehen, oder über
einen sicheren Kanal oder über
die Stimme (z.B. durch Telefon), oder durch das folgende Verfahren:
In
Schritt 1 berechnet A αk und K=H(βk) und schickt dann αk und
DESK(AAI) an CA.
CA berechnet K = H((αk)c) und entschlüsselt DESK(AA1), um (AA1) zu erhalten. Nach Prüfung der Validität von AA1 fährt
CA mit Schritt 2 fort.
- 3. (γA,kA,IA)
kann über
einen öffentlichen
Kanal geschickt werden.
-
Die
Vorteile der Schemata 3.a, 3.c und 3.d liegen darin, dass der Benutzer
A problemlos in der Lage ist, K zu berechnen, da β fix ist,
und dass kA so verschlüsselt ist, dass andere keine
Kenntnis von kA haben können. Tatsächlich wird durch die öffentliche
Bekanntheit von kA die Sicherheit des Zertifikatsschemas
nicht vermindert. Zweck der Verschlüsselung von kA ist
es, sicherzustellen, dass k der Entität bekannt ist. Somit kann bei
den Schemata 3.a-3.d der DES-Verschlüsselungsteil entfallen und k A durch
kA ersetzt werden, vorausgesetzt, dass das
Zertifikatsschema das in Anmerkung 2 beschriebene Verfahren anwendet.
-
Um
in den obigen Schemata an Übertragungsbandbreite
einzusparen, können
die Schemata durch Senden von f = F(γA,IA, OP) anstelle von γA modifiziert
werden. (Man bemerke, dass die Größe von γA im
Allgemeinen größer ist
als 160 Bits, während
f lediglich 160 Bits enthält.)
Das nachfolgende Schema 4.c ist eine Modifizierung von Schema 3.c.
-
Schema 4.c:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
f = F(γA,IA, OP), berechnet
kA (wenn kA = 0,
so wählt
CA ein anderes cA) Als nächstes berechnet CA K = H((αk)c) und k A = DESK(kA) und schickt dann das Tripel (f, k A,
IA) an A.
- 3. A berechnet K = H(βk), kA = DESK(k A) und a = kA + k
(mod q) (wenn a = 0,1, so geht A zurück zu Schritt 1.) Dann berechnet
A γA = αaβ-f (mod p) und prüft, ob f = F(γA,IA, OP). Hierbei ist a der geheime Schlüssel von
A, α der
Generator von A und αa der öffentliche
Schlüssel
von A. A veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Des
Weiteren kann die Bandbreite durch das folgende Schema 5.c vermindert
werden:
-
Schema 5.c:
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA.
- 2. CA wählt
zufällig
eine ganze Zahl cA, berechnet und
setzt γ ^A als die ersten 80 niedrigstwertigen
Bits von γA. Dann berechnet CA f = F(γ ^A,IA,OP) und kA (wenn
kA = 0, so wählt CA ein anderes cA) Als nächstes berechnet CA K = (αk)c (mod p) und k A = DESK(kA) und schickt das Tripel (y ^A,k A,IA) an A.
Anmerkung: (y ^A,k A,IA) kann über
einen öffentlichen
Kanal geschickt werden.
- 3. A berechnet K = βk (mod p), kA = DESK(k A) und a = kA + k
(mod q) (wenn a = 0,1, so geht A zurück zu Schritt 1.) Dann berechnet
A f = F(y ^A, β, IA), γA = αaβ-f (mod
p), γA = αaβ-f (mod p) und prüft, ob die ersten 80 niedrigstwertigen
Bits von γA gleich y ^A sind.
Hierbei ist a der geheime Schlüssel
von A, α der
Generator von A und αa der öffentliche
Schlüssel
von A. A veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
- 4. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Das
Sicherheitsniveau 5.c ist nicht so hoch wie das anderer, oben besprochener
Schemata. Schema 5.c hat nur eine 80-Bit-Sicherheit, die jedoch
derzeit für
praktische Anwendungen ausreicht. Die ersten 80 niedrigstwertigen
Bits können
auf die niedrigstwertigen Bits bis zur Hälfte der Bits von γA erweitert
werden.
-
Das
implizite Zertifikat kann zur Zertifizierung anderer nützlicher
Informationen verwendet werden, und zwar durch Aufnahme der Information
in den Optionsparameter OP. Beispielsweise
wobei a
E ein anderer geheimer Schlüssel des
Benutzers A und
der
korrespondierende öffentliche
Schlüssel
ist. Das folgende Schema 6.c stellt eine Modifikation des Schemas
2.c dar. Andere Schemata können
in der gleichen Weise modifiziert werden.
-
Schema 6.c:
-
- 1. A wählt
zufällig
eine ganze Zahl aE und berechnet
- 2. A wählt
zufällig
eine ganze Zahl k und berechnet ak, dann
schickt A αk und an
CA.
- 3. CA wählt
zufällig
eine ganze Zahl cA, berechnet und berechnet
kA (wenn kA = 0,
so wählt
CA ein anderes cA) Dann berechnet und
schickt das Tripel (γ 1 / A,
kA, IA) an A.
- 4. A berechnet a=kA+k (mod q) (wenn
a = 0,1, so geht A zurück
zu Schritt 1) und berechnet Dann
prüft A,
ob αa = βfγA. Hierbei ist a der geheime Signierschlüssel von
A, α der
Generator von A und αa der öffentliche
Signierschlüssel
von A. αE ist der geheime Verschlüsselungsschlüssel von
A und
der öffentliche
Verschlüsselungsschlüssel von
A. A veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
- 5. Jeder kann den (ID-basierten) implizit zertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Anmerkung: (zu den Schemata
4.c, 5.e, 6.c)
-
- 1. Die Identität IA kann
von CA oder durch die Entität
A gewählt
werden.
- 2. CA sollte die Entität
A authentifizieren. Dies kann durch das in der Anmerkung 2 zu Schema
3.c beschriebene Verfahren erfolgen.
(f, k A, IA)
oder (γ ^A, k A,
IA) oder (γ 1 / A, kA,
IA) können über einen öffentlichen
Kanal geschickt werden.
-
CA-Verkettungsschema
-
zur
Implementierung einer CA-Verkettungsstruktur, d.h. CA1 authentifiziert
CA2, CA2 authentifiziert CA3 und CA3 authentifiziert den Benutzer
A. In diesem Abschnitt wird ein Beispiel mit 3 CAs in der CA-Kette beschrieben.
Wir verwenden das Grundschema 3',
um dieses Beispiel zu demonstrieren.
-
System-Setup:
-
Die
Partei CA1, die das höchste
Vertrauen genießt,
wählt eine
geeignete Primzahl p mit p=tq +1, wobei q eine große Primzahl
ist, und einen Generator α der
Ordnung q. CA1 wählt
eine zufällige
ganze Zahl c
1, mit 1≤c
1≤q-1 als ihren
geheimen Schlüssel,
dann berechnet CA1 den öffentlichen
Schlüssel
und veröffentlicht
(β
1, α,
p, q).
-
Phase 1. CA2 beantragt
einen implizit zertifizierten öffentlichen
bei CA1
-
- 1. CA2 wählt
zufällig
eine ganze Zahl k2 und berechnet dann
schickt CA2 an
CA1.
- 2. CA1 wählt
eine(n) eindeutige(n) unterscheidbare(n) Namen oder Identität ICA2 und eine zufällige ganze Zahl cCA2,
mit 1 ≤ cCA2 ≤ q-1.
Dann berechnet CA1 (mod
p)(γCA2 sind die öffentlichen Daten zur Rekonstruktion
des öffentlichen
Schlüssels
von CA2).
- 3. CA1 wählt
eine Funktion f1 = F(γCA2,ICA2) und berechnet kCA2 (wenn
kCA2=0, so wählt CA1 in Schritt 2 ein anderes
cCA2 und führt eine neue Berechnung von
kCA2 durch).
- 4. CA1 berechnet und
schickt das Tripel (γ 1 / CA2,
kCA2, ICA2) an CA2.
- 5. CA2 berechnet Somit
ist c2 = kCA2 +
k2 (mod q) der geheime Schlüssel von
CA2, α ist
der Generator von CA2 und ist
der öffentliche
Schlüssel
von CA2. CA2 veröffentlicht
(α, ICA2, β1, β2, γCA2, p, q) in der Public Domain.
Anmerkung:
Vertraut ein Benutzer CA2, so kann er β2 direkt
verwenden.
- 6. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei CA2 aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Phase 2. CA3 fordert bei
CA2 einen implizit zertifizierten Schlüssel an
-
- 1. CA3 wählt
zufällig
eine ganze Zahl k3 und berechnet und
schickt dann
an CA2.
- 2. CA2 wählt
eine(n) eindeutige(n) unterscheidbare(n) Namen oder Identität ICA3 und eine zufällige ganze Zahl cCA3 mit
1 ≤ cCA3 ≤ q-1.
Dann berechnet CA2 (γCA3 sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
von CA3.)
- 3. CA2 wählt
eine Funktion f2=F(γCA3,
ICA3) und berechnet kCA3 (wenn
kCA3=0, so wählt CA2 in Schritt 2 ein anderes
cCA3 und führt eine neue Berechnung von
kCA3 durch).
- 4. CA2 berechnet und
schickt das Tripel (γ 1 / CA3,
kCA3, ICA3) an CA3.
- 5. CA3 berechnet Somit
ist c3 = kCA3 +
k3 (mod q) CA3s geheimer Schlüssel, α ist CA3s
Generator und ist
CA3s öffentlicher
Schlüssel.
CA3 veröffentlicht
(α, ICA3,β2, β3, γCA3, p, q) in der Public Domain.
Anmerkung:
Vertraut eine Entität
CA3, so kann sie β3
direkt verwenden.
- 6. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei CA3 aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Phase 3. Der Benutzer
A beantragt bei CA3 einen implizit zertifizierten öffentlichen
Schlüssel.
-
- 1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA3.
- 2. CA3 wählt
einen eindeutigen unterscheidbaren Namen oder Identität IA und eine zufällige ganze Zahl cA mit
1 ≤ cA ≤ q-1.
Dann berechnet (γA sind
die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
von A.)
- 3. CA3 wählt
eine sorgfältig
ausgewählte
Funktion f3=F(γA, IA) und berechnet kA (wenn
kA=0, so wählt CA3 in Schritt 2 ein anderes
cA und führt
eine neue Berechnung von kA durch).
- 4. CA3 berechnet und
schickt das Tripel (γ 1 / A,kA,IA) an A.
- 5. A berechnet Somit
ist a = kA + k (mod q) As geheimer Schlüssel, α ist As Generator und βA = αa ist
As öffentlicher
Schlüssel.
A veröffentlicht
(α, IA, β3, βA, γA, p, q) in der Public Domain.
Anmerkung:
Vertraut ein Benutzer A, so kann er βA direkt
verwenden.
- 6. Jeder kann den (ID-basierten) implizit verifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von
-
Phase 4. Die Signatur
des Benutzers A und Verifizierung
-
Zur
Signierung einer Nachricht M geht der Benutzer A wie folgt vor:
- 1. A wählt
zufällig
x, berechnet r=αx (mod p).
- 2. A berechnet e=fA= F(r, M), wobei
F eine feste Funktion ist.
- 3. A berechnet s=ae+x (mod q)
- 4. Die Signatur auf M ist (r,s).
-
Der
Verifizierer geht wie folgt vor:
- 1. Er holt
sich die öffentlichen
Daten von CA1, CA2, CA3 und die des Anwenders A
- 2. er rekonstruiert As öffentlichen
Schlüssel
- 3. berechnet e=fA=F(r, M)
- 4. berechnet r' = αSβ -e / A (mod p)
- 5. wenn r=r',
so ist die die Signatur verifiziert. Gleichzeitig ist der (ID-basierte) öffentliche
Schlüssel
von CA2, CA3 und des Benutzers A implizit verifiziert.
-
Die
Rekonstruktion des öffentlichen
Schlüssels
des Benutzers A erfordert nur 3 Potenzierungsoperationen mit bekannter
Basis sowie 3 Multiplikationsoperationen. Ist die Signatur gültig, so
ist der (ID-basierte) öffentliche
Schlüssel
von CA2, von CA3 und des Benutzers A implizit verifiziert.
-
Anmerkungen:
-
- 1. Vertraut der Verifizierer der Partei A,
so ist As öffentlicher
Schlüssel βA
- 2. Vertraut der Verifizierer der Partei CA3, so ist der öffentliche
Rekonstruktionsschlüssel
- 3. Vertraut der Verifizierer der Partei CA2, so ist der öffentliche
Rekonstruktionsschlüssel
-
Mitzeichnungsschema ("Co-signing Scheme")
-
Im
Folgenden wird ein Schema beschrieben, dass es einer Mehrzahl von
CAs erlaubt, EIN implizites Zertifikat zu signieren. Dies wird anhand
des Falles erläutert,
in dem drei CAs, ein Zertifikat mit Verwendung des Grundschemas
3' mitzeichnen.
-
System-Setup:
-
CA1,
CA2 und CA3 sollen gemeinsame Systemparameter aufweisen: (1) die
Primzahl p mit p =tq+1, wobei q eine große Primzahl ist; (2) ein Generator α der Ordnung
q; (3) eine sorgfältig
ausgewählte
Funktion
f = F(γ,
(I
A1 + I
A2 + I
A3)) Die Partei CA1 wählt ein zufällige ganze Zahl c
1,
mit 1 ≤ c
1 ≤ q-1
als ihren geheimen Schlüssel,
berechnet dann den öffentlichen
Schlüssel
und
veröffentlicht
(β
1,α,
p, q). CA2 wählt
eine zufällige
Zahl c
2, mit 1≤c
2≤q-1 als ihren
geheimen Schlüssel,
berechnet dann den öffentlichen Schlüssel
und
veröffentlicht
(β
2,α,
p, q). CA3 wählt
eine zufällige
ganze Zahl c
3, 1≤c
3≤q-1 als ihren geheimen
Schlüssel,
berechnet dann den öffentlichen
Schlüssel
und
veröffentlicht
(β
3,α,
p, q).
-
Schritt
1. A wählt
zufällig
eine ganze Zahl k und berechnet αk, dann schickt A αk an
CA1, CA2 und CA3.
-
Schritt
2. Die CAs tauschen Information aus und berechnen implizite Zertifikate.
-
Phase 1.
-
- 1. CA1 wählt
eine(n) eindeutige(n) unterscheidbare(n) Namen oder Identität IA1 und eine zufällige ganze Zahl cA1 mit
1≤cA1≤q-1,
berechnet und
schickt an
CA2 und CA3.
- 2. CA2 wählt
eine(n) eindeutige(n) unterscheidbare(n) Namen oder Identität IA2 und eine zufällige ganze Zahl cA2 mit
1≤cA2≤q-1,
berechnet und
schickt an
CA1 und CA3.
- 3. CA3 wählt
eine(n) eindeutige(n) unterscheidbare(n) Namen oder Identität IA3 und eine zufällige ganze Zahl cA3 mit
1≤cA3≤q-1,
berechnet und
schickt an
CA1 und CA2.
-
Phase 2.
-
- 1. CA1 berechnet (γ sind die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
von A), berechnet f=F(γ,(IA1+IA2+IA3))
und berechnet kA1 (wenn kA1 =
0, so geht CA1 zurück zu Phase 1) CA1 berechnet und
schickt das Tripel (γ 1 / A1,
kA1, IA1) an A.
- 2. CA2 berechnet (γ sind die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
von A), berechnet f=F(γ,(IA1+IA2+IA 3)) und berechnet kA2 (wenn
kA2 = 0, so geht CA2 zurück zu Phase 1) CA2 berechnet und
schickt das Tripel (γ 1 / A2,
kA2, IA2) an A.
- 3. CA3 berechnet γ sind die öffentlichen
Daten zur Rekonstruktion des öffentlichen
Schlüssels
von A), berechnet f = F(γ,
(IA1+IA2+IA3)) und berechnet kA3 (wenn
kA3 = 0, so geht CA3 zurück zu Phase 1). CA3 berechnet und
schickt das Tripel (γ 1 / A3,
kA3, IA3) an A.
-
Schritt
3A berechnet implizit co-zertifizierte geheime Schlüssel und
die Information zur Public-Key-Rekonstruktion
- 1.
A berechnet a=kA1 + kA2 +
kA3+k (mod q). (Wenn a 0 oder 1 ist, geht
A zurück
zu Schritt 1.)
- 2. A berechnet Dann
verifiziert A, ob
- 3. Hierbei ist a der implizit co-zertifizierte geheime Schlüssel von
A, α ist
der Generator von A, IA = IA1+IA2+IA3 ist die gemeinsame
ID von A und (β1β2β3)fγ ist der
implizit co-zertifizierte öffentliche
Schlüssel
von A.
- 4. A veröffentlicht
(α,IA1,IA2,IA3,β1,β2,β3,γ,p,q) in
der Public Domain.
- 5. Jeder kann den (ID-basierten) implizit mitzertifizierten öffentlichen
Schlüssel
der Partei A aus der Public Domain erhalten, und zwar durch Berechnen
von (β1,β2,β3)fγ (mod p)
-
Anwendungen
-
Die
nachfolgenden Beispiele werden mit Bezug auf Schema 3 (oder Schema
7') als CAs Signaturgleichung
beschrieben, da bei diesem Schema jeder den gleichen Generator hat.
Jeder Benutzer kann eine andere CA haben, solange die CAs die gleichen
Systemparameter (p,q,d) verwenden und jeder Benutzer die gleiche
Generierung hat.
-
Setup:
-
-
- CA1:
- Systemparameter (α, β1,
p,q,d)
Alice hat einen geheimen Schlüssel a und einen Generator α und veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
- CA2:
- Systemparameter (α, β2,
p, q)
Bob hat einen geheimen Schlüssel b und einen Generator α und veröffentlicht
(α, IA, β, γA,
p, q) in der Public Domain.
-
Um
zu zeigen, wie das neue Schema zu verwenden ist, wird das MTI/C0-Schlüsselübereinstimmungsprotokoll
angewandt.
-
Angenommen
Alice und Bob möchten
einen Schlüsselaustausch
durchführen.
Das MTI/C0-Protokoll
- 1. Alice rekonstruiert
Bobs öffentlichen
Schlüssel wählt zufällig eine
ganze Zahl x und berechnet (ab)x,
dann schickt Alice (αb)x an Bob.
- 2. Bob rekonstruiert Alices öffentlichen
Schlüssel wählt zufällig eine
ganze Zahl y und berechnet (αa)y, dann schickt
(αa)y an Alice.
- 3. Alice berechnet den gemeinsamen Schlüssel
- 4. Bob berechnet den gemeinsamen Schlüssel
-
Es
handelt sich hierbei um ein Two-Pass-Protokoll. Bei dem erfindungsgemäßen Schema
mit implizitem Zertifikat führt
jede Partei nur drei Potenzierungsoperationen aus, um den gemeinsamen
Schlüssel
zu erhalten, während
sie gleichzeitig eine Verifizierung der Authentifizierungsschlüssel-Übereinstimmung
und des impliziten öffentlichen
Schlüssels
durchführen.
-
Die
nachfolgenden Beispiele sind Beispiele für Schemata mit kombinierter
Signatur und Verschlüsselung
("Signcryption Schemes"). Als CAs Signaturgleichung
wird hier das Schema 3 (oder Schema 7) verwendet, da bei diesem
Schema jeder den gleichen Generator hat. Für das danach folgende Schema
wird Schema 13 als CAs Signaturgleichung verwendet. Bei allen in
diesem Abschnitt aufgeführten
Schemata kann jeder Benutzer eine andere CA haben, solange die CAs
die gleichen Systemparameter (p,q,α) verwenden und jeder Benutzer
den gleichen Generator hat.
-
Setup:
-
-
- CA1:
- Systemparameter (α, β1,
p,q)
- Alice:
- geheimer Schlüssel a,
Generator α,
und (α IA, β1, γA, p, q) in der Public Domain.
- CA2:
- Systemparameter (α, β2,
p, q)
- Bob:
- geheimer Schlüssel b,
Generator α,
und (α,
IB, β2, γB, p, q) in der Public Domain.
-
Bob
möchte
Alice eine signierte und verschlüsselte
Nachricht M schicken.
-
Signcryption-Protokoll
(Protokoll mit kombinierter Signierung und Verschlüsselung)
1:
-
Angenommen,
Bob möchte
Alice eine signierte und verschlüsselte
Nachricht M schicken: Bob geht wie folgt vor:
- 1.
rekonstruiert Alices öffentlichen
Schlüssel
- 2. wählt
zufällig
eine ganze Zahl x und berechnet einen Schlüssel r = (αa)x(mod p)
- 3. berechnet C=DESr(M)
- 4. berechnet e = hash(C||IA)
- 5. berechnet s=be+x(mod q)
- 6. schickt das Paar (C,s) an Alice, somit ist C die verschlüsselte Nachricht
und s die Signatur.
-
Um
die Nachricht wiederherzustellen, geht Alice wie folgt vor:
- 1. berechnet e = hash(C||IA)
- 2. rekonstruiert Bobs öffentlichen
Schlüssel
- 3. berechnet αas(αb)-ac (mod p), was
r ist
- 4. entschlüsselt
die Nachricht M=DESr(C)
- 5. prüft
auf Redundanz
-
Somit
führt Bob
lediglich zwei und Alice drei Potenzierungsoperationen aus. Sowohl
Alice als auch Bob sind jedoch bezüglich ihrer jeweiligen Authentifizierung
sicher. Es sei darauf hingewiesen, dass bei diesem Schema die Nachricht
M eine gewisse Redundanz oder ein gewisses Muster aufweisen muss.
-
Signcryption-Protokoll
2 (allgemeiner Fall):
-
Setup:
-
-
- CA1:
- Systemparameter (α, β1,
p, q)
- Alice:
- geheimer Schlüssel a,
Generator α,
und (α,
IA, β1, γA, p, q) in der Public Domain.
- CA2:
- Systemparameter (α, β2,
p, q)
- Bob:
- geheimer Schlüssel b,
Generator α,
und (α,
IA, β2, γB, p, q) in der Public Domain.
-
Anmerkung:
Dieses Setup gilt für
ein implizites Zertifikat. Für
Schemata mit gewöhnlichem
Zertifikat ist es lediglich erforderlich, dass Alice und Bob den
gleichen Generator haben.
-
Zum
kombinierten Signieren und Verschlüsseln einer Nachricht an Alice
geht Bob wie folgt vor:
- 1. holt sich Alices öffentlichen
Schlüssel αa (im
Falle eines Schemas mit implizitem Zertifikat rekonstruiert er Alices öffentlichen
Schlüssel
- 2. wählt
zufällig
eine ganze Zahl x und berechnet r = (αa)x (mod p)
- 3. berechnet C=DESr(M)
- 4. berechnet e = hash(C||αa)
- 5. berechnet s=be+x (mod q)
- 6. schickt (C,s) an Alice. C ist die verschlüsselte Nachricht und s die
Signatur.
-
Um
die Nachricht wiederherzustellen, geht Alice wie folgt vor:
- 1. berechnet e = hash(C||αa)
- 2. holt sich Bobs öffentlichen
Schlüssel αb (im
Falle eines Schemas mit implizitem Zertifikat rekonstruiert sie Bobs öffentlichen
Schlüssel
- 3. berechnet αas (αb)-ae (mod p), was
r ist
- 4. entschlüsselt
die Nachricht M=DESr(C)
-
Anmerkung:
-
- 1. Wenn es sich bei dem Zertifikatsschema nicht
um das hier beschriebene implizite Zertifikat handelt, so sollte
Alices und Bobs öffentlicher
Schlüssel
verifiziert werden.
- 2. Die Nachricht M muss eine gewisse Redundanz oder ein gewisses
Muster aufweisen.
- 3. Jeder, der einen Wert r kennt, ist in der Lage, jede Nachricht
von Bob an Alice zu entschlüsseln,
da der Wert αab offen gelegt wird.
- 4. Generell sollte ein Optionsparameter in den Hash e aufgenommen
werden, d.h. e = hash(C||αa||OP).
Beispielsweise OP = αb oder
OP = αb||βi||β2
-
Die
obigen Signcryption-Schemata haben den Nachteil, dass dann, wenn
der Signierer seinen geheimen Signierschlüssel verlieren sollte, alle
von dem Signierer gleichzeitig signiert und verschlüsselten
Nachrichten dem Publikum offen gelegt werden. Um Nachrichten nach
der Verschlüsselung
zu schützen,
wird hiermit ein neues Signcryption-Schema vorgeschlagen. Bei diesem
neuen Schema verfügt
jeder Benutzer über zwei
Schlüsselpaare,
davon ist ein Paar für
den Signaturschlüssel
und ein Paar ist der Verschlüsselungsschlüssel. Das
neue Schema kann mit jedem Zertifikatsschema verwendet werden, jedoch
ist es effizienter, wenn es mit dem erfindungsgemäßen Zertifikatsschema
verwendet wird.
-
Signcryption-Protokoll
3 (allgemeiner Fall):
-
Setup:
-
-
- Alice:
- geheimer Signierschlüssel a und
geheimer Verschlüsselungsschlüssel aE, Generator α, und (α, IA, β1, γA, p, q) in der Public Domain
- CA2:
- Systemparameter (α, β2,
p, q)
- Bob:
- geheimer Signierschlüssel b und
geheimer Verschlüsselungsschlüssel bE, Generator α, und (α, IB, β2, γB, p, q) in der Public Domain
-
Anmerkung:
Dieses Setup gilt für
ein implizites Zertifikat, welches das Schema 6.c verwendet. Für Systeme,
die auf Schemata mit gewöhnlichem
Zertifikat basieren, ist es lediglich erforderlich, dass Alice und
Bob den gleichen Generator haben
-
Zur
Signierverschlüsselung
einer Nachricht an Alice geht Bob wie folgt vor:
- 1.
Er beschafft sich Alices öffentlichen
Signaturschlüssel αa und
den öffentlichen
Verschlüsselungsschlüssel im
Falle eines Schemas mit implizitem Zertifikat rekonstruiert er Alices öffentlichen
Signaturschlüssel
- 2. wählt
zufällig
eine ganze Zahl x und berechnet
- 3. berechnet C=DESr(M)
- 4. berechnet
- 5. berechnet s = be + x + bE (mod q)
- 6. schickt (C,s) an Alice. C ist die verschlüsselte Nachricht und s die
Signatur.
-
Um
die Nachricht wiederherzustellen, geht Alice wie folgt vor:
- 1. Sie berechnet
- 2. beschafft sich Bobs öffentlichen
Signaturschlüssel αb und
den öffentlichen
Verschlüsselungsschlüssel (im Falle
eines Schemas mit implizitem Zertifikat rekonstruiert Alice Bobs öffentlichen
Signaturschlüssel
- 3. berechnet was
gleich r ist
- 4. entschlüsselt
die Nachricht M=DESr(C)
-
Anmerkung:
-
- 1. Es ist denkbar, dass der geheime Schlüssel des
Empfängers
Alice a+aE lautet. Dies bedeutet, dass der Empfänger nur
einen geheimen Schlüssel
anstelle von zwei geheimen Schlüsseln
benötigt.
Der Sender Bob benötigt
hingegen zwei geheime Schlüssel.
Im Falle eines normalen Zertifikats benötigt der Empfänger nur
einen einzigen privaten Schlüssel.
- 2. Wenn das Zertifikatsschema nicht das in dieser Anmeldung
beschriebene implizite Zertifikat ist, so sollten Alices und Bobs öffentliche
Schlüssel
verifiziert werden.
- 3. Die Nachricht M muss eine gewisse Redundanz oder ein Muster
aufweisen.
- 4. Der Parameter OP im Hash kann
leer sein oder OP = β1||β2
- 5. Die Kenntnis eines einzigen Wertes r enthüllt keine Information der späteren Nachrichten.
- 6. Bei einem Schema mit implizitem Zertifikat führt Bob
lediglich 2 Potenzierungsoperationen durch und Alice 4 Potenzierungsoperationen.
Alice und Bob sind sich jedoch beide sicher, dass es sich bei dem
jeweils anderen um eine authentifizierte Partei handelt.
- 7. Kennt jemand Alices geheimen Schlüssel a+aE oder
verliert Bob beide geheimen Schlüssel,
so kann die Nachricht nach der Verschlüsselung nicht geschützt werden.
-
Bei
normalen Signaturen besteht ein Problem darin, dass der Signierer
die Signierung leugnet. Dies wird als Nichtanerkennung (Repudiation)
bezeichnet. Die obigen Protokolle 1 und 2 weisen ein Nachweisbarkeitsmerkmal
(Non-repudiation) auf, vorausgesetzt, dass dem Richter vertraut
wird. Dies bedeutet, dass der Signierer nicht leugnen kann, dass
er die signierte und verschlüsselte
Nachricht signiert hat. Protokoll 3 hat auch dann ein Nachweisbarkeitsmerkmal,
wenn der Richter kein Vertrauen genießt. Das nachfolgende Protokoll
zeigt, wie ein Richter einen Fall entscheidet, in dem Bob die Signatur
leugnen will.
-
Non-Repudiation-Protokoll
(Protokoll mit Nachweisbarkeit):
-
- 1. Alice schickt (C,s) an den Richter
- 2. Der Richter berechnet (Anmerkung:
Alices und Bobs zwei Paare von öffentlichen
Schlüsseln
sollten verifiziert werden. Im Falle eines Schemas mit implizitem
Zertifikat sollten die öffentlichen
Schlüssel
mit den öffentlichen
Rekonstruktionsdaten rekonstruiert werden.)
- 3. Der Richter wählt
zufällig
zwei ganze Zahlen r1 und r2,
berechnet und
schickt L an Alice.
- 4. Alice berechnet und
schickt dies zurück
an den Richter
- 5. Der Richter berechnet und
stellt die Nachricht durch M=DESr(C) her
- 6. Hat M das richtige Format, so muss (C,s) von Bob signiert
und verschlüsselt
werden.
- 7. Nachdem der Richter eine Entscheidung gefällt hat, schickt er die Werte an
Alice und Bob, um seine Entscheidung zu stützen.
-
Bei
den beiden anderen Signcryption-Protokollen sind die Non-Repudiation-Protokolle ähnlich unter der
Voraussetzung, dass der Richter volles Vertrauen genießt.
-
Schließlich ist
ersichtlich, dass das vorliegende Schema, wenn es kombiniert wird
mit einem Applikationsprotokoll, für das der geheime Schlüssel des
Anwenders in der Berechnung direkt verwendet werden muss, einen
implizit zertifizierten ID-basierten öffentlichen Schlüssel des
Benutzers bereitstellt. Diese Schemata können auch von einem Schlüsselauthentifizierungszenter
(KAC) verwendet werden, um implizit zertifizierte öffentliche
Schlüssel
an die Nutzer zu verteilen.
-
Eine
weitere Anwendung implizit zertifizierter öffentlicher Schlüssel besteht
darin, dass die Bitstärke der
Zertifizierungsstelle genauso groß ist, wie die öffentlichen
Schlüssel
des Benutzers oder der Entität,
welche zertifiziert werden. "Bitstärke" bedeutet die relativen
Schlüsselgrößen und
die Rechenleistung der betreffenden Entitäten.
-
Eine
Herangehensweise an dieses Problem besteht darin, die implizit zertifizierten öffentlichen
Schlüssel
in traditionellere Zertifikatsstrukturen, z.B. wie spezifiziert
in X.509-Zertifikaten,
einzubetten, bei denen die Signatur auf dem Zertifikat eine größere Bitstärke aufweist
als der implizit zertifizierte öffentliche
Schlüssel.
-
Die
CA hat also den öffentlichen
Schlüssel
des Nutzers auf zwei verschiedenen Sicherheitsniveaus zertifiziert.
Jede andere Entität,
die einen öffentlichen
Schlüssel
abruft, kann entscheiden, welches Sicherheitsniveau sie akzeptieren
möchte.
Bei einigen Anwendungen kann es sein, dass zur Erbringung der erforderlichen
Leistung lediglich das durch den impliziten Wert bereitgestellte
niedrigere Sicherheitsniveau nötig
ist.
-
Zwar
wurde die Erfindung in Verbindung mit spezifischen Ausführungsformen
und spezifischen Anwendungen beschrieben, doch sind für den Fachmann
auch verschiedene abgewandelte Ausführungsformen ersichtlich, ohne
dass diese vom Erfindungsgedanken, wie er in den beigefügten Ansprüchen angegeben
ist, abweichen. Beispielsweise wird in der obigen Beschreibung bevorzugter
Ausführungsformen
multiplikative Notation angewendet, jedoch kann das Verfahren der
vorliegenden Erfindung ebenso gut unter Verwendung der additiven
Notation beschrieben werden. Es ist z.B. allgemein bekannt, dass
der im ECDSA enthaltene elliptische-Kurve-Algorithmus zu dem DSA äquivalent
ist und dass das elliptische-Kurve-Analogon ein Äquivalent eines Diskreter-log-Algorithmus
ist, der üblicherweise
in einer Gruppe F * / p, der multiplikativen Gruppe der ganzen Zahlen
modulo eine Primzahl, beschrieben wird. Es besteht eine Korrespondenz
zwischen den Elementen und Operationen der Guppe F * / p und der elliptische-Kurve-Gruppe
E(F
q). Weiterhin ist diese Signatur-Verfahrensweise ebenso
gut auf Funktionen anwendbar, die in einem über F
p und
definierten
Feld ausgeführt
werden. Es wird außerdem
darauf hingewiesen, dass das oben beschriebene DSA-Signaturschema
ein spezifisches Beispiel des verallgemeinerten ElGamal-Signaturschemas darstellt,
dass den Fachleuten bekannt ist; daher sind die vorliegenden Verfahrensweisen
auf dieses anwendbar.