Forum: Offtopic "Funktion" anhand von Parametern und Ergebnis ermitteln?


von Info (Gast)


Lesenswert?

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
von Ernster Rat (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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

von Axel S. (a-za-z0-9)


Lesenswert?

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"

von Info (Gast)


Lesenswert?

Hilft Statistik und/oder ein "lernender" Algorithmus? Gibt es 
Logik-Synthese-Programme die aus den vorhandenen E->A einen Encoder 
erzeugen können?

von Info (Gast)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

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

von Axel S. (a-za-z0-9)


Lesenswert?

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!

von Lästermaul (Gast)


Lesenswert?

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.

von Alexxx (Gast)


Lesenswert?

Die (hier im Forum sehr)beliebte Glaskugel wurde noch vergessen!

von Eric B. (beric)


Lesenswert?

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."

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.