2016-05-12 14 views
-2

Ich habe ein Programm, das eine Zahl mit RSA-1024-Algorithmus verschlüsseln und teilweise entschlüsseln kann.Partial RSA Decrypter

Zur Verschlüsselung:

C = M^e mod n

Aber für die Entschlüsselung wird einem Ergebnis führen, mod 256:

partialM = (C^d mod n) % 256

Auch weiß ich e = 65537, d = constant, n = constant wird so nicht nach mehrmaligem geändert werden Läufe des Programms.
Ich möchte wissen, ob es für ein gegebenes C möglich ist, M zu finden. Wenn ja, wie?

+0

Was meinst du mit d = ct und n = ct? Es ergibt keinen Sinn: d kann nicht dasselbe wie n sein. – TheGreatContini

+1

Ich stimme für das Schließen dieser Frage als Off-Topic, da dies keine Programmierfrage ist. Es könnte am Thema bei crypto.stackexchange.com sein. Selbst dort wird von Ihnen erwartet, dass Sie versuchen, das Problem selbst zu lösen. Ein Hinweis: Nutzen Sie die multiplikative Eigenschaft von RSA. –

Antwort

3

Ja, es ist möglich, aber nicht einfach.

Es gibt einen bekannten Angriff gegen RSA namens Least Significant Bit Oracle Attack. Kurz gesagt, wenn Sie mit einer Blackbox ausgestattet sind, können Sie nach dem Parity-Bit des Klartexts für jeden ausgewählten Chiffretext fragen, und Sie können vollständigen Klartext anzeigen.

Sie können die gesamte Angriffsbeschreibung in this question finden.

Um es zusammenzufassen: Sie können die Chiffre für ein einzelnes bekanntes Chiffretext - Teilklartextpaar nicht ohne Zugriff auf das Orakel brechen. Sie sollten jedoch niemals irgendwelche Klartextdaten preisgeben - die Kenntnis eines einzelnen Bits für genügend Klartexte kann einen echten Schaden verursachen.