Ich habe einige Ein- und Ausgangsdaten einer unbekannten Funktion, etwa A = f(E) Daten sind jeweils ein paar Bytes, evtl. mit Prüfsumme oder verodert oder gespiegelt. Nicht alle Eingangsdaten liefern auch ein Ergebnis. Gleiche Eingangsdaten ergeben dasselbe Ergebnis. Die Länge der Daten spielt offenbar keine Rolle. Ich kann Eingangsdaten generieren und mit der "blackbox" Testen, allerdings nicht besonders schnell. Durch "scharfes Hinsehen" bin ich bislang noch nicht wesentlich weiter gekommen, wie von E auf A zu kommen ist oder andersherum. Welche Methoden oder Werkzeuge gibt es, die weitere Informationen über die Funktion liefern? Was sind Stichworte für das Problem?
:
Verschoben durch User
Info schrieb: > Welche Methoden oder Werkzeuge gibt es, die weitere Informationen über > die Funktion liefern? Was sind Stichworte für das Problem? Grips, Erfahrung, Kühnheit, Wissen.
Ernster Rat schrieb: > Info schrieb: >> Welche Methoden oder Werkzeuge gibt es, die weitere Informationen über >> die Funktion liefern? Was sind Stichworte für das Problem? > > Grips, Erfahrung, Kühnheit, Wissen. dazu noch: Glück zum richtigen Zeitpunkt die richtige Idee zu haben
Info schrieb: > Welche Methoden oder Werkzeuge gibt es, die weitere Informationen über > die Funktion liefern? Was sind Stichworte für das Problem? "Reverse Engineering", eventuell auch "Kryptanalysis"
Hilft Statistik und/oder ein "lernender" Algorithmus? Gibt es Logik-Synthese-Programme die aus den vorhandenen E->A einen Encoder erzeugen können?
Info schrieb: > Hilft Statistik und/oder ein "lernender" Algorithmus? Gibt es > Logik-Synthese-Programme die aus den vorhandenen E->A einen Encoder > erzeugen können? Nicht wirklich. Letzten Endes gibt es immer unendlich viele Funktionen, die eine Menge von E Werten auf A Werte abbilden. Die spannende Frage lautet dann: produzieren sie auch das richtige Ergebnis, wenn sie mit einem E Wert konfrontiert werden, der nicht bei der Erstellung der Funktion berücksichtigt wurde. Genau das ist ja auch das 'Problem' bei all diesen "Setzen sie die Reihe fort" Fragen. Es gibt unendlich viele Möglichkeiten, wie man eine begonnene Reihe fortsetzen könnte. Wir entscheiden uns oft für bestimmte Typen von Fortsetzungen, aber das muss nicht 'die Wahrheit' sein. https://www.youtube.com/watch?v=vKA4w2O61Xo
Karl H. schrieb: > Info schrieb: >> Hilft Statistik und/oder ein "lernender" Algorithmus? Gibt es >> Logik-Synthese-Programme die aus den vorhandenen E->A einen Encoder >> erzeugen können? > > Letzten Endes gibt es immer unendlich viele Funktionen, die eine Menge > von E Werten auf A Werte abbilden. Ähh, nein. Wenn man alle Funktionen betrachtet, die E verschiedene Eingangswerte auf A verschiedene Ausgangswerte abbilden, dann gibt es davon A^E verschiedene [1]. Das ist eine endliche Zahl. Allerdings wächst diese Zahl recht schnell. Betrachten wir bspw. alle Funktionen, die 8 Bit auf 8 Bit abbilden. Das sind je 256 Zustände und es gibt folglich 256^256 = (2^8)^256 = 2^2048 ~= 3.23*10^616 Funktionen. Wenn es gleich viele Eingangs- und Ausgangswerte gibt, hat man oft die zusätzliche Einschränkung, daß die Funktion den Wertebereich am Ausgang ausschöpfen muß. Dann sind es nicht mehr N^N Möglichkeiten, sondern nur noch N! (Fakultät) [2]. 256! ~= 8.578*10^506. > Die spannende Frage lautet dann: > produzieren sie auch das richtige Ergebnis, wenn sie mit einem E Wert > konfrontiert werden, der nicht bei der Erstellung der Funktion > berücksichtigt wurde. Sehr unwahrscheinlich. Garantieren kann man das natürlich nur, wenn man eine komplette Wertetabelle hat. [1] das ist recht einfach herzuleiten. Betrachten wir dazu eine Folge Funktionen f1, f2, f3, ... die jeweils 1, 2, 3, ... Eingangswerte auf A Ausgangswerte abbilden. Für die Funktion f1 gibt es offensichtlich genau A Möglichkeiten. f2 kann jedem der beiden Eingangswerte jeweils einen beliebigen der A Werte zuordnen -> es gibt A*A verschiedene Funktionen f2. Für f3 sind es A*A*A usw. usf. [2] analog zu [1] gibt es N Möglichkeiten für f1. N*(N-1) für f2. N*(N-1)*(N-2) für f3. etc. Für fN sind es dann N*(N-1)*(N-2)*...*1=N!
Im dichten Nebel verliert ein Ballonfahrer die Orientierung. Er lässt seinen Ballon langsam ab, bis er am Boden einen Menschen sieht, und ruft herab: "Wo bin ich hier?" Daraufhin grübelt der Passant eine Weile und antwortet: "Im Ballon!" Woran erkennt man, dass der Mann ein Mathematiker ist? Er überlegt lange. Seine Antwort ist wahr. Seine Aussage ist zu nichts zu gebrauchen.
Die (hier im Forum sehr)beliebte Glaskugel wurde noch vergessen!
Der Ballonfahrer fängt an zu schimpfen und schreit zum Mathemaiker: "Was soll der Sch...? Ich muss in 10 min am Ziel sein und durch Sie habe ich wertvolle Zeit verloren und werde mein Termin verpassen!" Der Mathematiker antwortet: "Sie sind bestimmt Projektleiter." Fragt der Ballonfahrer: "Woher wissen Sie das?" Antwortet der Mathematiker: "Sie befinden sich in eine unmögliche Lage; wissen weder wo Sie sind noch wo Sie hin wollen. Bis vor ein paar Minuten haben Sie mich noch nicht mal gesehen, aber irgendwie bin ich plötzlich an allem Schuld."
Ich würde einfach die Blackbox aufschrauben und nachsehen, was sich darin abspielt ;-) Spaß beiseite: Wenn du davon ausgehen musst, dass sich jeder beliebige Algorithmus hinter der Funktion f verbergen kann, ist die Lösung des Problems ziemlich aussichtslos. Sogar die Kryptoanalytiker habe es da sehr viel leichter, da sie i.Allg. das Verschlüsselungsverfahren kennen und "nur" noch den Schlüssel herausfinden müssen. Aber selbst das ist immer noch eine Riesenarbeit, die oft genug erfolglos endet. Wenn du wenigstens weißt, wo die Blackbox her kommt, bietet sich evtl. ein weiteres Lösungsverfahren an, nämlich "Social Engineering". Aber vielleicht weißt du ja auch, was die Blackbox prinzipiell tut bzw. wofür sie eingesetzt wird. Das schränkt den Suchraum weiter ein. Dann lässt sich vielleicht auch eher ein Tool finden bzw. entwickeln, dass bei der Suche hilft.
Axel S. schrieb: > Karl H. schrieb: >> Info schrieb: >>> Hilft Statistik und/oder ein "lernender" Algorithmus? Gibt es >>> Logik-Synthese-Programme die aus den vorhandenen E->A einen Encoder >>> erzeugen können? >> >> Letzten Endes gibt es immer unendlich viele Funktionen, die eine Menge >> von E Werten auf A Werte abbilden. > > Ähh, nein. Wenn man alle Funktionen betrachtet, die E verschiedene > Eingangswerte auf A verschiedene Ausgangswerte abbilden, dann gibt es > davon A^E verschiedene [1]. Das ist eine endliche Zahl. gegeben 2 Eingangswerte und 2 zugehörige Ausgangswerte
1 | E A |
2 | ----------------- |
3 | 0 1 |
4 | 1 0 |
gesucht eine Funktion f, für die gilt f(E) -> A das könnte sein zb sein: A = 1 - E A = cos( E * Pi ) .. wenn ich jetzt nicht so faul wäre, könnte ich auch eine Parabel einpassen, die durch die beiden Punkte geht. Oder jedes Polyonom mit einem beliebigen höheren Grad. Auch kann ich da eine e Funktion reinpfriemeln, usw. usw. So war das gemeint. Meiner Phantasie sind keine Grenzen gesetzt, wie ich die beiden Wertepaar mittels einer Funktion zusammenführen kann.
:
Bearbeitet durch User
Yalu X. schrieb: > Ich würde einfach die Blackbox aufschrauben und nachsehen, was sich > darin abspielt ;-) Geht sogar ohne aufschrauben: Einfach weiß anmalen. Dann ist es eine Whitebox, und man weiß (sic) was drinne ist :-))
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.