Beiträge von Phoebit

    Secret Tidings 2.0 ist verfügbar


    Bilder die versteckte Nachrichten enthalten können jetzt noch leichter geteilt werden. Es ist möglich die Bilder direkt mit Picasa, Hangouts, Google+ usw. zu teilen oder wie bisher das Bild per eMail zu verschicken. Weiterhin wurden Probleme mit transparenten Bildern behoben.

    Ich hoffe, du benutzt nicht die SecureRandom Klasse von Android.
    http://www.heise.de/security/m…droid-Patzer-1933714.html


    Ich benutze SecureRandom nicht direkt zur Schlüsselerstellung, allerdings wird es zum salzen verwendet.


    Da die Java PRNG's ja offentsichtlich mehr Löcher als ein Schweizer Käse haben, benutze ich jetzt /dev/urandom stattdessen. Ich habe ein Update in den Play Store hochgeladen.


    Hier ist ein interessanter Artikel über die Schwächen der Zufallsgeneratoren in Java:


    http://armoredbarista.blogspot…d-weaknesses-in-java.html


    Den offiziellen Patch-Source Code findet ihr hier:


    http://android-developers.blog…ecurerandom-thoughts.html


    Was ich mich grad so spontan frag ist, wie der mobile Datenverbrauch aus sieht. Jede Nachricht ist ein Bild wenn ich das richtig verstehe, ist also um ein Vielfaches größer als der Klartext. Kannst du mal das ein oder andere Wort darüber verlieren? ;)


    Die importierten Bilder werden entsprechend der Nachrichtenlänge automatisch verkleinert um den Datenverbrauch in Grenzen zu halten.
    Damit die Bilder bei sehr kurzen Nachrichten nicht nur noch 3x3 Pixel groß sind, beträgt die minimale Bildgröße 100x100 Pixel, das entspricht einer Dateigröße von etwa 20 KB. Damit habe ich versucht einen Kompromiss zwischen Bildgröße und Datenverbrauch zu schaffen. Evtl. biete ich noch eine Option an um die minimale Bildgröße anzupassen.


    Die Daten werden im LSB der RGB-Kanäle gespeichert, d.h pro Pixel können 3 Bit gespeichert werden.
    Der Alpha Kanal eignet sich nicht zum verstecken von Daten wenn ein Trägerbild ohne Transparenz verwendet wird und wir daher nicht zum verstecken der Daten benutzt.



    Die Nachricht wird UTF-16 codiert und verbraucht somit pro Zeichen 2 bis 4 Byte. Zusäzlich gibt es 100 Byte Protokoll Overhead sowie einen gewissen Overhead durch Byte Padding, da die Nachricht in Chunks geteilt wird um auch auf Geräten mit wenig Speicher Stück für Stück sicher ausgelesen werden zu können.


    Bei einer Bildgröße von 100x100 Pixel kann die Nachricht ungefähr 750 bis 1500 Zeichen enthalten.


    Bei einem PNG-Bild könnte man z.B. die einzelnen Bits nacheinander in den niederwertigsten Bits von Pixeln verstecken. Aber die Sequenz der Pixel-Koordinaten vom Schlüssel abhängig machen.


    Ein solcher Algorithmus wäre anfällig für Implementierungsfehler. Besser ist es einen offengelegten Standard-Algorithmus zu verwenden. Genau das bietet meine App selbst wenn sie Closed Source ist.



    Dennoch würde der Schlüssel selbst nicht gespeichert bzw. kann nicht (einfach) herausgefunden werden.


    Wie ich weiter oben schon geschrieben habe wird der Schlüssel nicht im Bild gespeichert

    Ok, aber ist es Open Source so dass ich prüfen kann was genau passiert? D.h. was mich umtreibt ist die Frage woher ich weiß, dass der Schlüssel überhaupt und korrekt verwendet wird? Mit 3 Beispielübertragungen geht das vermutlich nicht... Und warum sollte man Dir (als Black-Box-Programmierer) mehr vertrauen als irgendjemand sonst?


    Die App ist Closed Source. Ich kann dir aber versichern das ich 15 Jahre Programmiererfahrung besitze und bei der Entwicklung der App die Sicherheit eine große Rolle gespielt hat. Closed Source bedeuted nicht automatisch Security through obscurity.



    * Nutze an Stelle eines Kennwortes (welches sicherlich irgendwo in den gespeicherten Daten im Bild stehen wird) lieber eine PIN, die du nicht mit hineinschiebst.


    Zu deiner Kritik bezüglich der Passwortsicherheit muss ich folgendes Klarstellen:


    Im Bild wird weder das Passwort, noch ein Passwort-Hash gespeichert. Es sind auch keine Muster in den Binärdaten zu erkennen die auf den Inhalt der ursprünglichen Nachricht schließen lassen würden.



    - Beim Tippen der Nachricht wurde oftmals die Anzeige nach oben verschoben (meist bei einem Zeilenumbruch), so dass ich nicht mehr sehen konnte was ich bereits geschrieben hatte.


    Wenn du beim tippen der Nachricht den Text nicht mehr siehst müsstest du ihn eigentlich mit einer Wischgeste wieder nach unten scrollen können. Hat das nicht funktionert? Alternativ kannst du das Telefon auch drehen, dann wird auf meinem Telefon die Hälfte der Bildschirmhöhe für den Text reserviert.



    Vielen Dank für dein ausführliches Feedback.

    Vor dem Hintergrund der ganzen Diskussion um Privatsphäre habe ich mal eine Steganographieanwendung entwickelt. Verschlüsselte Nachrichten wecken den Argwohn von Angreifern, also hat man seit je her versucht Botschaften so zu verstecken, dass nur Eingeweihte diese lesen können.


    Das Tool hierfür ist Secret Tidings und ist im Google Play Store verfügbar.


    [Blockierte Grafik: https://developer.android.com/images/brand/en_generic_rgb_wo_60.png]



    Mit diesem Tool kann man Text und beliebige Datei-Anhänge in unverfänglichen Bildern verstecken. Diese Bilder per Email oder Sozialen Netzwerken teilen und ein eingeweihter Empfänger kann diese Nachrichten wieder hervorholen.



    Und so funktioniert das Prinzip der versteckten Nachrichtenübermittlung.


    [Blockierte Grafik: http://imageshack.us/a/img28/3540/fgd5.png]