Erkläre die grundlegenden Prinzipien des RSA-Verfahrens und des Diffie-Hellman-Schlüsselaustauschs und beantworte folgende Fragen:
Lösungen:
(a) RSA – Berechnung des privaten Schlüssels d
Gegeben sind p = 23 q = 29 und e = 17
Zuerst berechnen wir das RSA-Modul:
N = p · q = 23 · 29 = 667
Danach bestimmen wir die Euler’sche Phi-Funktion:
φ(N) = (p − 1)(q − 1) = 22 · 28 = 616
Der private Schlüssel d ist das modulare Inverse von e modulo φ(N):
d · 17 ≡ 1 (mod 616)
Daraus ergibt sich:
d = 367 (Berechnung über den erweiterten euklidischen Algorithmus)
(b) Diffie-Hellman – Berechnung des geheimen Schlüssels
Gegeben sind g = 5, p = 23,
Alice wählt a = 6, Bob wählt b = 15.
Öffentlicher Schlüssel von Alice:
A = 56 mod 23 = 8
Öffentlicher Schlüssel von Bob:
B = 515 mod 23 = 19
Gemeinsamer geheimer Schlüssel:
K = 196 mod 23 = 2
Beide Parteien erhalten denselben geheimen Schlüssel: 2
(c) Unterschied zwischen RSA und Diffie-Hellman
RSA ist ein asymmetrisches Kryptosystem, das zur Verschlüsselung und für digitale Signaturen verwendet wird. Diffie-Hellman dient ausschließlich dem sicheren Austausch eines gemeinsamen geheimen Schlüssels.
In modernen Kommunikationssystemen (z. B. HTTPS) wird Diffie-Hellman zum Schlüsselaustausch eingesetzt, während RSA zur Authentifizierung oder Signatur genutzt wird.
(d) Digitale Signatur mit RSA
Gegeben sind N = 667, d = 367
und die Nachricht m = 123.
Die digitale Signatur wird berechnet mit:
s = md mod N = 123367 mod 667
Ergebnis der Signatur:
s = 148
Bob überprüft die Signatur, indem er
se mod N berechnet.
Erhält er wieder m = 123
ist die Signatur gültig und die Nachricht unverändert.
Klicke auf den Button, um das Array zu sortieren!
Bubble Sort Algorithmus:
Der Bubble Sort Algorithmus vergleicht benachbarte Elemente eines Arrays und tauscht sie, wenn sie in der falschen Reihenfolge sind. Dieser Vorgang wiederholt sich, bis das gesamte Array sortiert ist.
function fBubble () {
vArray = [3,6,2,4,7,9,2,8,7,3];
var vtemp = 0;
var i = 0;
for (var j=0; j< vArray.length; j++ ) {
for (var i=0; i< vArray.length; i++ ) {
if (vArray[i] > vArray[i+1]) {
vtemp = vArray[i];
vArray[i] = vArray[i+1];
vArray[i+1] = vtemp;
}
}
}
document.getElementById("Ausgabe").innerHTML = vArray;
}