![]() |
AW: RSA: Privaten Schlüssel schneller berechnen
Leider geht aus diesem Thread nicht hervor, wie man den private key mit Hilfe des public keys findet.
Geht das überhaupt? |
AW: RSA: Privaten Schlüssel schneller berechnen
Zitat:
|
AW: RSA: Privaten Schlüssel schneller berechnen
Möglich ist es, "soll" es aber nicht. So habe ich es gelesen.
Mhh.. Demnach kann man RSA-verschlüsselte Texte ja niemals einsehen, wenn man den private key nicht weiß. Das Problem sind die riesen (Prim)zahlen. |
AW: RSA: Privaten Schlüssel schneller berechnen
Zitat:
|
AW: RSA: Privaten Schlüssel schneller berechnen
Zitat:
RSA-Encryption: 2 Prime P, Q P <> Q N = P*Q M = (P-1)*(Q-1) Find an E and a D so that is: S * M + 1 = E * D, E <> D, E relatively prime to M, D 1..M, E 1..M, S > 0 Encrypt: J = I^E mod N, I 0..N Decrypt: I = J^D mod N N, E = Public M, P, Q, D = Private Der Private Schlüssel D lässt sich sogar direkt aus N und E berechnen. Guckst du hier:
Delphi-Quellcode:
Fazit: Der einzige Schutz, den man bei der RSA Verschlüsselung hat, ist, das bei großen Zahlen, empfohlen sind 155 Stellen (int512), diese Procedure Jahre dauert. Für Zahlen im int64 Bereich ist die RSA Verschlüsselung nicht geeignet.
procedure TRSAEncryption.FindD(const N, E: int64); // get the private Key D
var P, Q, M: int64; begin FE:= 0; FD:= 0; FN:= 0; FM:= 0; FP:= 0; FQ:= 0; P:= 2; while P < N do begin if IsPrimeNumber(P) then begin Q:= N div P; if IsPrimeNumber(Q) then begin if P*Q = N then begin M:= (P-1)*(Q-1); if GreatestCommonDivisor(M, E) = 1 then begin FD:= InversMod(E, M); FE:= E; FN:= N; FM:= M; FP:= P; FQ:= Q; Break; end; end; end; end; P:= P+1; end; end; |
AW: RSA: Privaten Schlüssel schneller berechnen
Dann sind wir alle jetzt beruhigter...
|
AW: RSA: Privaten Schlüssel schneller berechnen
Zitat:
Man kann N faktorisieren und das wird letzendlich, nach meinem Wissenstand, immer ein Such-Algorithmus sein der letzendlich per Trial&Error funktioniert. Ich kenne kein praktisches Verfahren um eine zusammengesetzte Zahl, wie beim RSA notwendig, direkt in ihre Primzahlfaktoren zu zerlegen. Gruß Hagen |
AW: RSA: Privaten Schlüssel schneller berechnen
Doch, da N das Produkt von 2 Primzahlen ist, gibt es genau eine Möglichkeit. Und D = InversMod(E, M)
|
AW: RSA: Privaten Schlüssel schneller berechnen
Ich bekomme es fast kompiliert.
Nur findet er InversMod() nicht. Gibt es dazu einen Code? Möchte nur ungern eine komplette Komponente nur für eine Funktion installieren. |
AW: RSA: Privaten Schlüssel schneller berechnen
Delphi-Quellcode:
function GreatestCommonDivisorAdvanced
(A, B: int64; var U, V: int64): int64; var U0, V0: int64; begin if B = 0 then begin Result:= A; U:= 1; V:= 0; end else begin Result:= GreatestCommonDivisorAdvanced(B, A mod B, U0, V0); U:= V0; V:= U0-(A div B)*V0; end; end; function InversMod(A, B: int64): int64; var V: int64; begin GreatestCommonDivisorAdvanced(A, B, Result, V); if Result < 0 then Result:= Result+B; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz