Informationen im Quelltext verstecken?



  • Hallo,

    ich habe mir zwei kleine Tools geschrieben:

    (1) create_pass.c:
    ^^^^^^^^^^^^^^^^^^
    Fordert den Benutzer auf, ein Passwort anzugeben. Dieses wird mit der crypt Funktion durch ein zufällig gewähltes Salt verschlüsselt in eine Datei geschrieben.

    (2) pass.c:
    ^^^^^^^^^^^
    Fordert den Benutzer auf, das mit (1) erstellte (Klartext-) Passwort einzugeben. Um herauszufinden, ob der Benutzer das korrekte Passwort angegeben hat, wird seine Eingabe mit dem gespeicherten Passwort als Salt verschlüsselt. Das Passwort ist korrekt, wenn bei dieser erneuten Verschlüsselung wieder das verschlüsselte Passwort herauskommt (siehe "man crypt").

    **Nachdem sich der Benutzer unter (2) erfolgreich authentifiziert hat, sollen ihm "sensible Informationen" angezeigt werden.

    Mein Problem ist, dass das "Verstecken" jeglicher Informationen in der kompilierten C Datei nicht funktioniert, weil man sich alle im Quelltext auftauchenden Strings ganz einfach mit einem Hexeditor anzeigen lassen kann.

    Wie kann ich das Programm dennoch (angemessen) sicher machen?**

    Es geht ja nur darum, dass man diese Informationen nicht einfach abgelegt in einer Textdatei auf der Festplatte lesen können soll. Der Zugriff soll nur nach Angabe des korrekten Passwortes möglich sein. Das Passwort verliert jedoch seine Bedeutung, wenn sich jemand die kompilierte Datei kopieren und mit einem Hexeditor anschauen kann.



  • Das Passwort kann doch verschlüsselt drin stehen, oder was meinst du mit "steht im Quelltext"?

    MfG SideWinder



  • Hallo,

    mit (1) legt man ein Passwort fest, welches nach der ersten und einmaligen Auführung von (1) in einer Datei abgelegt wird ((1) verschlüsselt das eingegebene Klartextpasswort mit einem zufälligem Salt s.o.).

    Wenn der Benutzer (2) ausführt und das richtige Passwort eingibt (Passwortüberprüfung analog der Vorgehensweise in "man crypt"), sollen ihm "sensible Informationen" angezeigt werden.

    Das heißt, dass irgendwo im Quelltext sowas steht, wie

    if ( richtigesPasswort ) {
    
     printf ( "richtiges passwort:\n" );
     printf ( "geheime informationen\n" );
    
    } else {
    
     printf ( "falsches passwort\n" );
    
    }
    

    Wenn man sich die kompilierte Version von (2) mit einem Hexeditor anschaut, kann man alle Strings - also auch "richtiges passwort:" und "geheime informationen" - lesen. Das hebelt den Passwortschutz aus.



  • ich wuerd die geheimen informationen einfach auch in einer verschluesselten datei speichern..

    sollte eigentlich nichts neues sein..



  • Hallo,

    das Passwort wird mit einer Einwegverschlüsselung verschlüsselt und in der besagten Datei abgelegt. Ich kann deshalb die geheimen Informationen nicht mit der gleichen Methode verschlüsseln. Wenn ich eine andere Art der Verschlüsselung auf die zu schützenden Daten anwende (keine Einwegfunktion), brauch sich ein potentieller Angreifer auch nur die Datei zu kopieren ...

    Der Witz ist doch, dass ich die eigentlichen Informationen (ob verschlüsselt oder nicht) für den Benutzer nur lesbar machen möchte, wenn dieser vorher das Passwort angegeben hat. Wenn die Infos schon vor der Authentifizierung verschlüsselt in einer weiteren Datei oder aber in der kompilierten Datei liegen, ist der Passwortschutz sinnlos (s.o.) ...



  • In dem Fall bleibt dir wohl nur der Weg über eine zweiseitige Verschlüsselung. Dann mußt du nur dafür sorgen, daß ein Angreifer den Entschlüsselungscode nicht herausfindet.


Anmelden zum Antworten