Algorithmenanalyse

Dieses Thema im Forum "Sicherheit & Datenschutz" wurde erstellt von Grobi, 28. April 2011 .

  1. 28. April 2011
    Hey leute,

    wollte mal fragen ob jemand Ahnung von Algorithmenanalyse hat.
    Habe 3 Ausgangszahlen, die dann per Algorithmus 3 Endzahlen ergeben (alle in hexadezimal).

    Vielleicht hat jemand Ratschläge wie ich mit der Analyse starten kann.
    Werde in nächster Zeit versuchen mehr als nur 3 Ausgangszahlen und Endzahlen zu bekommen da 3 doch sicher zu wenige sind.

    Bei Infos, Tipps oder ähnliches einfach mal posten!

    danke,

    cheers Gröbi
     
  2. 28. April 2011
    AW: Algorithmenanalyse

    Ich verstehe nicht so ganz, was Du meinst.
    Hast Du die Disassembly vom Algorithmus, gehst Du diese einfach durch und versuchst es nachzuvollziehen. Aber das meinst Du wahrscheinlich nicht unter "Algorithmusanalyse"?

    Also eher so: Du hast drei Werte, die gehen in eine "Black-Box", über die Du keine Ahnung hast, und bekommst drei andere Werte als Ausgabe und möchtest jetzt wissen, was in der "Black-Box" passiert?
    Naja, je nachdem, wie die Black-Box gestaltet ist, kann das unmöglich sein (mathematisch beweisbar) oder trivial - ist aber relativ aussichstlos, wenn man so gar nichts weiss.

    Du kannst erstmal die üblichen Beobachtungen sammeln, vielleicht kommt Dir da eine Idee. Entropy vorher/nachher etc. Etwas mehr Informationen, wo die "Black-Box" herkommt, sollte auch extrem helfen.
    Um halbwegs brauchbare Aussagen treffen zu können, wirst Du aber so etwa ein paar million oder milliarden Werte brauchen. Also wenn Du so gar nichts weisst....
     
  3. 28. April 2011
    AW: Algorithmenanalyse

    Wenn Du so rein garnichts weißt, würde ich mir vermutlich Algorithmen sammeln und die Werte dann durch diese hauen und die Ergebnisse vergleichen. Sollte ein Ergebnis stimmen, müssten noch n paar Tests mit dem selben Algo und unterschiedlichen Werten gemacht werden um sicher zu sein, dass das kein Zufall war.
     
  4. 28. April 2011
    AW: Algorithmenanalyse

    Ich führe mal lieber noch ein wenig aus, damit das Problem klarer ist.

    Zuerst einmal musst Du noch folgendes verraten:
    Gehen wir mal davon aus, Dein Algorithmus ist eine Funktion h(X)=Y, also bei der Eingabe von X erhälts Du eine Ausgabe Y. Nun:
    • Welche Größenordnung in Bits haben X und Y?
    • Kannst Du die Eingabe X frei wählen, oder sammelst Du nur Beobachtungen (X,Y)?
    • Liefert h(X) für die gleiche Eingabe immer die gleiche Ausgabe?
    • Hast Du direkten Zugriff auf h(X), oder geht das etwa über eine Webseite etc?

    Nun zu der Problematik:
    Es gibt die Idee des Zufallsorakel. Das ist eine Funktion, die immer eine rein zufällige Ausgabe liefert, ausser man fragt den gleichen Wert mehrfach, dann wird die erste rein zufällige Ausgabe zurückgegeben.
    Wenn Deine Funktion nun tatsächlich so ein (ideales) Zufallsorakel ist, kannst Du soviel anstellen wie Du willst, Du wirst es nie "nachahmen" können.
    Damit kommen wir zum nächsten Problem: Es existieren eine Reihe von Hashfunktionen, die eben von so einem Zufallsorakel nicht unterscheidbar sind. D.h. weisst Du nicht, welche Hashfunktion verwendet wird, hast Du keine Möglichkeit das herauszufinden.

    terraNova hatte jetzt vorgeschlagen, einfach verschiedene Funktionen durchzuprobieren. Das kann klappen, wenn tatsächlich einfach nur Standartfunktionen verwendet wurden. Die Vermutung liegt nahe, wenn Du etwa Passwort-Hashes hast, aber nicht weisst, welche Hashfunktion angewendet wurde. Problematisch wird das ganze aber, wenn die Funktion noch von einer weiteren Eingabe, die Dir unbekannt ist, abhängt. Etwa, wenn die Hashfunktion gesalzen ist, oder wenn eine Chiffre mit unbekanntem Schlüssel verwendet wird, denn dann sind diese wieder dicht am Zufallsorakel-Modell dran (MD4, MD5 und ich glaube auch SHA1 könnte man, wenn man X komplett frei wählen kann, dennoch identifizieren).
    Du kannst eine AES Verschlüssellung unter Schlüssel K1 so gut wie gar nicht von einer Blowfish-Verschlüsselung unter Schlüssel K2 unterscheiden, wenn Du K1 bzw. K2 nicht kennst. Könntest Du das dennoch, würde das auf eine "innere Struktur" rückschliessen lassen, und demnach auf eine Schwäche von AES bzw. Blowfish hindeuten. Unter dem Gesichtspunkt kannst Du natürlich Dir Angriffe auf die verbreitetsten Chiffren anschauen, wobei diese aber in der Regel in Deinem Fall nicht annähernd praktikabel sein werden.
     
  5. 29. April 2011
    AW: Algorithmenanalyse

    Danke euch mal für die tollen antworten!

    um genau zu sein weiß ich nichts von dem algorithmus.
    ich möchte noch etwas konkreter werden:

    es geht um Hardware die natürlich eine id hat (in form von seriennummer)
    um diese zu verwenden ist ein code notwendig.
    ich bin schwer der meinung das der code per funktion/algorithmus über ihre id/seriennummer erzeugt wird.

    da ich von 3 ids das zugehörige passwort habe, kann ich zumindest schon mal ein bisschen muster erkennen.
    achja, der code ist nicht hexadezimal wie ich gesagt hab, sondern bestimmt Großbuchstaben!
     
  6. 30. April 2011
    AW: Algorithmenanalyse

    Also, Du hast ein Gerät, das hat eine ID und braucht ein Passwort. Jedes Gerät hat eine andere ID und braucht ein anderes Passwort. Jetzt vermutest Du einen Zusammenhang zwischen ID und Passwort? Warum?

    Jedes Auto hat eine eindeutige ID (etwa die Fahrgestellnummer). Für jedes Auto brauchst Du ein eigenes Passwort (den Autoschlüssel). Gibt es einen Zusammenhang zwischen Fahrgestellnummer und Schlüssel? Höchstwahrscheinlich nicht.

    Spricht irgend etwas dagegen, hier mal etwas konkret zu werden, und mal genau zu erklären, worum es geht? Dann kann man Dir vielleicht auch besser helfen.
    Übrigens schätze ich mal in solchen Situationen, dass es immer einfacher ist, das Gerät auseinander zunehmen, evtl. die ICs aufzuätzen und zu analysieren, anstelle zu versuchen da hinter irgend ein Muster zu kommen. Aber wie gesagt, da fehlen einfach zu viele Informationen.
     
  7. 19. Juni 2011
    AW: Algorithmenanalyse


    Klingt sehr interessant was du da schreibst, aber von Ics aufätzen und dergleichen hab ich noch nicht gehört. Wie willst du diese dann "analysieren" ? Flashes auslesen mag mir ja noch eingehen, aber wärs nicht einfacher mit Datenblättern zu arbeiten?

    Keine Ironie, ernst gemeinte Frage!
    Grüße
     
  8. 19. Juni 2011
    AW: Algorithmenanalyse

    Manchmal bekommt man aber eben keine Datenblätter, bzw. nicht genug Informationen. Im Fall von SmartCards kannst Du hier schön sehen, wie man das so macht: How to Reverse-Engineer a Satellite TV Smart Card - YouTube
     
  9. 19. Juni 2011
    AW: Algorithmenanalyse

    Wow, danke für den Link. Für mich als Elektroniker sehr beeindruckend. Bei diesem Chip der "nur" aus 2 Layern besteht kann ich es jetzt nachvollziehen, aber wie siehts mit aufwändigeren Chips aus? Er kann mit dieser Technik doch nur auf die 2 äußeren Layer zugreifen, vielleicht maximal noch ne schicht drunter wenn er sich vorsichtig "durchkratzt".

    Sehr spannend das ganze, und auch sehr aufwändig.
     
  10. 19. Juni 2011
    AW: Algorithmenanalyse

    Irgendwo gab es, vielleicht sogar von dem selben Typen, ein Video, wie er einen Chip reversed hat, in dem Layer für Layer erst photographiert und dann weggeschliffen wurde. So macht man das ja auch schon seit es Chips gibt. Ich glaube sogar, es gibt Software, die aus den Photos die Logik mehr oder weniger raten kann. Ich bin aber eher nicht der Hardware-Mensch...

    BTW: wie etwa der U880, die DDR Kopie des Z80:
    MME U880 – Wikipedia
     
  11. 20. Juni 2011
    AW: Algorithmenanalyse

    Achso, dir gings also darum wie der Chip/uC aufgebaut ist.

    Ich dacht jetzt eher daran nen Leiterzug anzuzapfen der durch die mehrlagigen Layers NICHT an der Oberfläche freiliegt.

    Trotzdem, der Typ im Video beeindruckt mich schon durch sein großes Engagement
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.