1-zu-1 kryptografisch sicheres Bit-Shuffling

7

Bei einem gegebenen Eingabeelement (N Bytes) suche ich nach einer Funktion, die dies einer Ausgabe zuordnet (immer noch N Bytes). Die Funktion sollte folgende Eigenschaften haben:

  • Es sollte 1: 1 sein, damit alle Eingaben einer Ausgabe zugeordnet werden und keine zwei Eingaben derselben Ausgabe zugeordnet werden.
  • Bei einem Ausgabeelement sollte es schwierig sein, die Eingabe zu erraten, die zu dieser Ausgabe führt, selbst wenn die Zuordnung vollständig bekannt ist.

Existiert eine solche Funktion? Wo kann ich mehr lernen?

JnBrymn
quelle
Ich bin übrigens von Beruf Ingenieur und habe nur einen angewandten Hintergrund in der Informatik. Entschuldigen Sie bitte meine lose / falsche Verwendung der Terminologie.
JnBrymn
3
Ist das nur aus Neugier oder haben Sie einen Grund, dies zu tun? Wenn Sie dies in einem System bereitstellen möchten, empfehle ich Ihnen dringend, sich bei der Informationssicherheit zu erkundigen, ob das, worüber Sie hier fragen, eine vernünftige Lösung für das Problem darstellt, das Sie damit lösen möchten .
David Richerby

Antworten:

10

Dies ist als Einwegpermutation bekannt . Die "Permutation" bezieht sich auf die erste Ihrer beiden Anforderungen; Die "Einbahnstraße" bezieht sich auf die zweite Ihrer beiden Anforderungen. Es gibt verschiedene Kandidatenkonstruktionen für Einwegpermutationen, z. B. basierend auf dem Erhöhen eines RSA-Moduls oder anderer Schemata auf das dritte Leistungsmodul.

DW
quelle
Es lohnt sich auch, nach Feistel-Netzwerken zu suchen. Sie sind eine Standardmethode, um allgemeine Funktionen in Permutationen umzuwandeln.
Pseudonym
2
@Pseudonym, Feistel-Netzwerke benötigen einen Schlüssel und sind nicht einseitig: Sie benötigen den Schlüssel, um die Karte zu berechnen, und mit dem Schlüssel können Sie leicht rückwärts gehen. Sie lösen also ein ganz anderes Problem.
DW
Die strikte Definition eines Feistel-Netzwerks besteht darin, dass ein Schlüssel erforderlich ist, der jedoch nur als Eingabe für die runden Funktionen verwendet wird. Es ist trivial, die Struktur so zu ändern, dass Funktionen ohne Parameter verwendet werden.
Pseudonym
1
@ Pseudonym, ja, aber mit dieser Modifikation ist es keine Einbahnstraße. Die Berechnung der Rückwärtskarte ist ebenso einfach wie die Berechnung der Vorwärtskarte. Sie sind eine sehr coole Technik, aber sie lösen dieses spezielle Problem nicht.
DW
Ah natürlich! Ich habe dieses Detail vermisst, sorry.
Pseudonym
-1

Vielleicht möchten Sie einen Blick auf DES oder AES werfen, sie tun genau das, was Sie wollen. Dies hängt von Methoden ab, die von einem Schlüssel abhängen, der den Klartext verschlüsselt / herunterfährt. Eine andere Methode ist die Verwendung von Doppelschlüsseln (öffentliche und private Schlüssel). Diese Methode wird heutzutage sehr häufig verwendet. Die beliebteste Methode ist RSA. Sie vertieft sich hauptsächlich darauf, einen öffentlichen Schlüssel zu haben, der jedem bekannt ist, und einen Ligusterschlüssel, den nur Sie selbst verwenden sollte es wissen. und wenn Sie jemandem etwas senden möchten, wird er es mit Ihrem öffentlichen Schlüssel verschlüsseln (beachten Sie, dass er es nicht mehr herabsetzen kann, da es nur durch Ihren privaten Schlüssel herabgesetzt wird). und wenn Sie eine Authentifizierung durchführen möchten, können Sie etwas senden, das mit Ihrem privaten Schlüssel verschlüsselt ist, und der Empfänger wird es durch Ihren öffentlichen Schlüssel so herabsetzen, dass er sicher ist, dass es von Ihnen gesendet wird.

Weitere Informationen finden Sie hier:

https://en.wikipedia.org/wiki/RSA_(cryptosystem)

Ehab AlBadawy
quelle
1
AES und DES benötigen einen Schlüssel und sind keine Einbahnstraße: Sie benötigen den Schlüssel, um die Karte zu berechnen, und mit dem Schlüssel können Sie leicht rückwärts gehen. Sie lösen also ein ganz anderes Problem.
DW
-2

Sie könnten dies versuchen:

Nehmen Sie zuerst den SHA-256 oder einen anderen Hash Ihres Eingabewerts. Verwenden Sie dann eine grundlegende Chiffre, so etwas wie die klassische A = C, B = D, C = E ...

Der Unterschied besteht darin, dass Sie den SHA-256 der gesamten Eingabezeichenfolge verwenden, um zu bestimmen, um wie viel verschoben wird (ist es A = B, A = C, A = D usw.)?

Hinweis: Ich bin kein Kryptografieexperte und nicht sicher, wie sicher dies wäre.

CS_Person_M
quelle
1
Das ist schrecklich unsicher. Es spielt keine Rolle, wie ausgefallen eine Methode ist, mit der Sie den Schlüssel einer Caesar-Chiffre bestimmen: Es gibt immer noch nur 26 Optionen, und Sie können sie entschlüsseln, indem Sie jede nacheinander ausprobieren. Außerdem fragt die Frage nach etwas Eins-zu-Eins, was dies möglicherweise nicht ist, und sie fragt nach etwas Einseitigem, was dies sicherlich nicht ist. Regel 1 der Krypto: Rollen Sie nicht Ihre eigenen.
David Richerby