AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RSA-Verschlüsselungs Paradoxon

Ein Thema von Aphton · begonnen am 30. Nov 2009 · letzter Beitrag vom 1. Dez 2009
Antwort Antwort
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#1

RSA-Verschlüsselungs Paradoxon

  Alt 30. Nov 2009, 18:19
Hallo liebe Leute,
Mir bereitet RSA Kopfzerbrechen.

Code:
Legende:
C = Chiffre
T = Text
N = RSA Modul
E & D = Enc. & Decryption exponents

Verschlüsselung:
C = T^e mod N

Entschlüsselung
T = C^d mod N
Das Problem liegt hier: das RSA-Modul (N) muss größer sein als der Text (T), den man verschlüsseln will.
Warum? Nun, da, wenn N < T, man nicht zum richtigen Ergebnis kommt.

Nimmt man beispielsweise für T = "123" (entspricht 0x313233; 3 Bytes; wobei es verkehrt rum im Speicher liegt -> 0x333231)
und N 0x333230 (N hat die Größe 2^24 -> ebenfalls 3 Bytes),
dann käme niemals wieder der ursprüngliche Text (T) nach dem Verschlüsseln & Entschlüsseln raus.
Das sollte noch verständlich sein.

Ich finde leider keine passende/elegante Lösung zu diesem Problem. Nimmt man für N eine größere Zahl (z.B: 4 Bytes (2^32)), so geht man die
Gefahr ein, nach dem Modulo bei der Verschlüsselung eine größere Zahl (> 3 Bytes) als Ergebnis zu bekommen, da eben N = 4 Bytes ist.

Das einzige, was machbar wäre, wäre, für C (je 3 Bytes) einen größeren Speicherbereich (4 Bytes) zu reservieren und anschließend bei der Entschlüsselung 4 Bytes aufeinmal entschlüsselt.



Übrigens, bitte schreibt nur, wenn ihr euch mit RSA auskennt und mir Tipps geben könnt.

Edit:

Ich bin nun nach langem Überlegen davon überzeugt, dass es anders gar nicht geht.
Ich verschlüssle 3 Bytes Datenblöcke und speichere sie in 4 Bytes. Nach dem Entschlüsseln weise ich sie in 3 Byte Datenblöcken wieder zusammen.
Falls trotzdem jeman eine bessere Idee hat, dann nur her damit

MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#2

Re: RSA-Verschlüsselungs Paradoxon

  Alt 30. Nov 2009, 18:45
Hallo,

es ist zwar schon eine Weile her, aber ich habe schonmal was mit RSA gemacht
Bei mir war es so, dass ich eine Delphi und eine PHP-Anwendung "kompatibel" machen musste, was RSA angeht.

Um die beschriebenen Probleme zu "umgehen", gibt es die Block-Definition "bt00", "bt01" und "bt02" - dann wird der Text in Blöcke zerlegt, bzw. aufgefüllt (und wie ist halt in den "bt00", etc. definiert) und der Block ver/entschlüsselt.

Schau mal hier:
http://svn2.assembla.com/svn/wimpCry...Box2/LbRSA.pas

Es gibt für Delphi im übrigen ein paar Packages, die das können:
http://www.cityinthesky.co.uk/cryptography.html
http://sourceforge.net/projects/tplockbox/

Ich hoffe, geholfen zu haben

lg
Sebastian
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#3

Re: RSA-Verschlüsselungs Paradoxon

  Alt 30. Nov 2009, 19:45
Zitat von Aphton:
Übrigens, bitte schreibt nur, wenn ihr euch mit RSA auskennt und mir Tipps geben könnt.

Edit:

Ich bin nun nach langem Überlegen davon überzeugt, dass es anders gar nicht geht.
Ich verschlüssle 3 Bytes Datenblöcke und speichere sie in 4 Bytes. Nach dem Entschlüsseln weise ich sie in 3 Byte Datenblöcken wieder zusammen.
Falls trotzdem jeman eine bessere Idee hat, dann nur her damit :)
Das ist mit Verlaub ziemlicher Unsinn (es sei denn das soll Lernzwecken dienen)! Die Faktorisierung von 32-Bit-Integer ist doch wohl völlig trivial. Und selbstverständlich geht es anders, wie kannst Du der Meinung sein, "dass es anders gar nicht geht"????

Lies Dir mal die RFC2313 und RFC3447 durch. Dort werden Standardcodierungen und Algorithmen beschrieben. Wenn Du eine relativ vollständige EME-PKCS1-v1_5-Implementation in Pascal/Delphi brauchst, kannst Du meine Opensource mp_rsa-Unit aus MPArith benutzen, im SuppTest-Archiv sind einige RSA-Beispiele, und hier ist die Liste der RSA-Funktionen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: RSA-Verschlüsselungs Paradoxon

  Alt 1. Dez 2009, 00:34
@Gammatester: Kann durchaus möglich sein, dass du mein Problem nicht verstanden hast.
Ist auch nicht verweunderlich, habs so schlecht beschrieben.

Schau dir mal das Beispiel hier an:
Code:
P     4099
Q     4111
N     16850989
Phi(N) 16842780
E     16831
D     6935851

Message = "AAAA" = 0x41414141
Enkodieren: 0x41414141 ^E mod N = 0x6FA2FC
Dekodieren: 0x6FA2FC  ^D mod N = 0xF93601
Fazit: 0x41414141 <> 0xF93601
Weil Message > N

Wobei wäre Message < N -> "AAA" = 0x414141
dann sähe das so aus:

Enkodieren: 0x414141^E mod N = 0x6E9094
Dekodieren: 0x6E9094^D mod N = 0x414141
Fazit: 0x414141 = 0x414141
Ich habs so gelöst:
Wertebreich von N berechnen ( bsp: 4 Bytes ) und diesen Wert (nennen wirs M)-1 als Anzahl der Bytes, die man verschlüsseln will, nehmen ( also 3 Bytes ).
Diese M-1 Bytes pack ich in M Bytes Speicher, da der Chiffre Text im Wertebereich 0..N-1 liegt.

Hoffe, dass nicht allzu viel Blödsinn und Halbwissen mit eingeflossen sind.
Ansonsten verzeiht mir, es ist schon so spät =]

MfG und gute Nacht
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

Re: RSA-Verschlüsselungs Paradoxon

  Alt 1. Dez 2009, 07:57
So hört sich das etwas besser, und ist eigentlich schon eine praktikable Rohform: Teile den Klartext in Blöcke ein, deren Zahlenwerte < N sind und verschlüssele die Blöcke.

Wie gesagt, zum Lernen/Verstehen ist das OK, aber für eine richtige Anwendung ist Dein Beispiel-N mit 25 Bit viel zu klein, Richtwert ist heute 1024 ... 2048 Bit.

Was bleibt jetzt eigentlich als Frage?
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: RSA-Verschlüsselungs Paradoxon

  Alt 1. Dez 2009, 11:47
Das Problem war eben, dass ich die Message M mit der gleichen Größe (Anz. der Bytes) von N nicht sicher kodieren kann, da es passieren kann, dass N < M ist ODER/UND wenn N > M - der Chiffre Text anschließend größer sein kann.

MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz