Eigenen Android Messenger hosten!

  • Seavus,
    ich arbeite nun schon seit mehr als einem Jahr an einem Messenger für Android, den sich jeder selbst zuhause hosten könnte!
    Viele wichtige Funktionen fehlen noch und der Messenger ist noch nicht bereit für die breite Masse! Aber: Der Messenger ist nun endlich alltagstauglich und größten Teils stabil (getestet auf HTC One, Samsung S2, Samsung S4, Wiko Rainbow, LG Optimus, ..)


    Was der Messenger kann:
    >> Er benötigt keinen Google Dienst, wie Whatsapp etc und kann somit von JEDEM Zuhause gehostet werden!
    >> Benutzt für jeden Benuzter individuelle RSA / AES verschlüsselung!
    >> Nachrichten werden INSTANTAN übertragen und TROTZDEM:
    >> In den Testgeräten tauchte die App nahe zu gar nicht in den Akkustatistiken auf!
    >>Die Serversoftware ist extrem leicht zu handhaben und lastet selbst einen PI kaum aus!
    >>Man kann alle Arten von Dateien verschlüsselt versenden
    >>Man benötigt keine schnelle Internetverbindung um den Server zu hosten (DSL 3000 reicht locker!)



    Installationsanleitung:
    Ich habe extra eine kleine Homepage eingerichtet auf der die Server und Client-Software heruntergeladen werden kann!
    dafür gehe bitte auf http://chatblack.fablue.org und lade die neueste Verison herunter.


    >> in dem Paket befindet sich eine .apk für dein Android Gerät (4.2+), und ein Ordner "Server".
    Kopiere den Ordner Server auf deinen Raspberry pi! Wichtig: DU BRAUCHST JAVA 1.8 !
    >> wechsle in das Verzeichnis auf dem Pi und starte den Server mti "java -jar chatblack_server.jar"
    >> drücke y und enter um die Schlüssel für den Registrierungsprozess zu generieren!
    >> Nun läuft der Server! Wichtig hierbei: Die Ports 2001, 2803, 2411 müssen via TCP an euren Firewalls freigegeben werden.


    Nun installiere die .apk auf deinem Smartphone und gib als Server deine dyn-dns oder ip ein!
    Nun solltest du dich bei deinem Server registrieren können! Sende die .apk an deine Freunde und schon hast du neben whatsapp einen zweiten sicheren Kanal zum chatten mit deinen Freunden!


    ____________________________________________
    Für bessere Übersicht über die GUI: screen recording leider packt mein Handy den Recorder nicht so toll, weshlab die ganze Aufnahme recht stark ruckelt. Trotzdem kann man sich damit einen guten Überblick verschaffen!

  • Ich finde dein Projekt echt cool!


    Könntest du auch den Source Code bereitstellen? Dann könnten andere eventuell auch helfen oder aus deinem Code lernen.
    Ich würde mir eine Oberfläche im Webbrowser cool vorstellen um auch am PC schreiben zu können.

    Es gibt KEINE dummen Fragen!

  • Hey,


    dass sieht doch schon mal cool aus :)


    Dürfte man Fragen woher du dein Wissen zur Sicherheit beziehst? Bist du in diesem Bereich tätig? Oder ist dies rein aus dem Internet?

    Aequat omnes cinis. Impares nascimur, pares morimur! - Asche macht alle gleich! Ungleich werden wir geboren, gleich sterben wir! (Seneca)

  • Vielen Dank für das Lob bis jetzt! =)
    Zum Thema Source Code: Ja den kann ich euch schon bereitstellen! Leider bin ich immer zu eifrig um den Code sauber zu kommentieren =/


    Zum Thema Sicherheit: Ich bin leider nur ein Physikstudent! Ich besuche regelmäßig Informatik Vorlesungen. Auch hat mir ein Kommilitone ein gutes Buch zum Thema "Secure Programming for Linux and Unix" geschenkt! Ausserdem tausche ich mich mit bekannten und Freunden regelmäßig über dieses Projekt aus! Ich werden natürlich bald den Quellcode auskommentieren und online zur Verfügung stellen! Sollte dieses Projekt tatsächlich ein wenig Aufmerksamkeit bekommen, so werden restliche Sicherheitslücken, hoffe ich, von der Community ausgemerzt!
    Auch habe ich in meiner Software versucht an jeder nur erdenklichen Stelle einen Sicherheitsmechanismus einzubauen! Klar manche fehlen noch, und manche müssen noch implementiert werden! Aber ich gehe stark davon aus, dass sobald der Registrierungsprozess eines Benutzer (beim jeweiligen Server) abgeschlossen ist, es NICHT mehr möglich ist, Nachrichten mitzulesen, oder sonstigen Schmarn zu treiben! Ich werde auch in den Semesterferien eine kleines PDF erstellen, in dem ich die Sicherheitsmechanismen erkläre und Code-Beispiele anhefte!
    Grundsätzlich vertraue ich dem Prinzip der RSA Verschlüsselung mit einer Schlüssellänge von 2048 bit! Für jeden Benutzer werden 4 von diesen Schlüsseln bei der Registrierung erstellt, welche mithilfe des StartSchlüssels (RSA) ausgetauscht werden! Damit sich ein Benutzer am Server anmelden kann, MUSS er an den privaten Schlüssel des Clienten kommen, der aber nicht einmal in Klartext auf dem Gerät des Benutzers gespeichert wird! Auch Replay Attacken sind zwecklos: Bildlich: Der Server stellt dem Clienten verschlüsselte Rechnenaufgaben,, die nur der Client mti dem richtigen privaten Schlüssel entschlüsseln und berechnen kann! Diese Rechenaufgaben sind absolut Zufällig und viel zu Lange um sie zu erraten. Selbst wenn jemand es schafft den privaten Schlüssel i.wie zu stehlen und die Rechenaufgaben zu lösen, werden die Lösungen vom Server NUR DANN akzeptiert, wenn sie mit dem richtigen Schlüssel VERSCHLÜSSELT werden. Denn hier ist sogar der "public" Schlüssel des RSA verfahrens nicht öffentlich.. Dieser wird nur einmal beim Registrieren übermittelt und ist sonst für keinen mehr zugänglich! Auch wenn ich nicht der beste im Formulieren bin, sieht man hier, dass in diesem Projekt viele gute Gedanken stecken =)

  • nettes Projekt.


    Aber mit Jabber + OTR existiert genau das doch schon seit Ewigkeiten. Zumal es für Jabber+OTR Clients für Android, iOS und PC gibt.

  • Benny, klar gibt es das schon.


    Aber ich denke mal, dass da auch viel Spaß an der Sache und Lust neues zu lernen dahinter steckt. Klar muss man das Rad nicht immer neu erfinden, aber es ist schon cool selbst rumzuprobieren :)


    Von daher: Threadsteller, mach weiter :D

    Aequat omnes cinis. Impares nascimur, pares morimur! - Asche macht alle gleich! Ungleich werden wir geboren, gleich sterben wir! (Seneca)

  • Ich kann den Port natürlich ändern, wenn ihr das wollt =D
    Offlne Messages sind natürlich möglich! Sobald eine Internetverbindung vorhanden ist werden die Nachrichten eben übertragen! Das klappt alles automatisiert und absolut zuverlässig!
    Abbrechende Verbindungen sind für die App und den Server etwas ganz normales und überhaupt nicht schlimm! Die Nachrichten werden auch auf dem Clienten gespeichert (auf Einstellung auch mit AES verschlüsselt)



    Ich denke dass ich es selbst leider nicht schaffen werde, einen Cilenten für iOS zu schreiben, da ich es zeitlich alleine niemals schaffen würde! Wenn ich aber endlich einmal fertig mit der richtigen ersten Version bin und den Quellcode hochlade, könnte ja jemand (der eben Lust und Zeit dafür hat) einen iOs oder PC Clienten programmieren! Rechtlich gesehen braucht sich bei mir niemand etwas denken! Ich würde mich riesig freuen, wenn zusätliche Software dafür verfügbar wird!


    Zum Thema Jabber +: Ich habe diesen Messenger nicht in der Absicht programmiert, sicher und unabhängig mit meinen Freunden zu chatten, sondern auch deshalb, weil ich mit vielen Funktionen in bisherigen Messenger unzufrieden war: Beispielsweise das versenden von Bildern in Whatsapp!


    Chatblack bietet sowohl die Möglichkeit Bilder in VOLLER QUallität zu versenden, als auch sie zu komprimieren, falls man das denn möchte!
    Ausserdem ist es möglich mit meinem Projekt alle möglichen Arten von Dateien zu versenden (nicht nur videos und Bilder).
    Auch Frage ich mich, wieso folgendes nicht schon längst in Whatsapp implementiert ist:
    Bricht bei Chatblack beim Upload die Verbindung ab, so arbeitet der Upload automatisch wieder WEITER (nicht von vorne), wenn wieder eine Internetverbindung vorhanden ist!
    Gleiches gilt beim Download von Daten! .. ICH HASSE ES, wenn ich mein Handy nicht mit nach draussen nehmen kann, weil es gerade etwas hochläd! Oder wenn ich unterwegs bin und der Download jedes mal kurz vor 100% abbricht! Ich HASSE ES einfach =D


    Und deshalb habe ich Chatblack eben anders programmiert!
    Ausserdem denke ich, dass es gut ist, wenn es noch Alternativen gibt! Auch kann ich zum Thema Sicherheit behaupten: Von Software die Niemand kennt, kennt auch Niemand die Sicherheits Lücken! =)


    Ein weiteres was Chatblack "anders" macht ist die Gui.. in den Screenshots ist dies leider nichts zu sehen, aber ich habe mir sehr viel Mühe geben, eigenen und schöne (nicht überladene) Animationen zu programmieren. Auch legt Chatblack die Chats nebeneinander, was es mögich macht den Chat mit einem Wisch nach links oder rechts zu wechseln (was ich ziemlich cool finde) ! Ich denke jeder kann sich seine Meinung dazu bilden und ich bin sicher auch offen für schlechte Kritik!
    [hr]
    Für eine bessere Übericht der Gui: screen recording (youtube) ! Leider packt mein Handy den Screen Recorder nicht so ganz, weshalb alles stark ruckelt! Aber ich denke man bekommt einen recht guten Überblick über die App!

    Edited once, last by fablue ().

  • Wäre spitze! Denn ausser mir hat diese Paket noch keiner getestet! Da es zwei verschiedenen pakete gibt (einmal zum selbst hosten und einmal die apk für den MainServer) hoffe ich, dass das Paket zum selbsthosten genau so gut funktioniert wie das, dass ich verwende! Prinzipiell sind die beiden Pakete gleich, nur einmal kann beim registrieren ein eigener Server eingegeben werden!


    Was ich auch bemerkt habe ist, dass mich der Browser vor meiner eigenen Homepage warnt ("ungewöhnlicher Download") . Hat jemand eine Idee, woher das kommt?

  • Quote

    Was ich auch bemerkt habe ist, dass mich der Browser vor meiner eigenen Homepage warnt ("ungewöhnlicher Download") . Hat jemand eine Idee, woher das kommt?


    Eventuell weil du nicht direkt auf die Datei linkst sonder die irgendwie über PHP bereitgestellt wird. Deshalb konnte ich auch meinen Downloadmanager nicht verwenden.

    Es gibt KEINE dummen Fragen!

  • Hallo fablue, ich glaube was dir meigrafd mitteilen wollte ist,


    dass du nochmal prüfen solltest ob dein chatserver wirklich komplett root rechte braucht. Oder ob er nicht als "normal" User laufen kann. Sowas stellt ja oft eine Sicherheitslücke dar, die gestopft werden kann wenn er nicht soviele rechte braucht :)


    Viele Grüße
    Daniel

    Aequat omnes cinis. Impares nascimur, pares morimur! - Asche macht alle gleich! Ungleich werden wir geboren, gleich sterben wir! (Seneca)


  • Oder ob er nicht als "normal" User laufen kann. Sowas stellt ja oft eine Sicherheitslücke dar, ...


    Evtl. muss der Server wegen dem Port 1002, nur von root gestartet werden und kann dann auch unter einem "normalen" User laufen.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Der Server sollte auch ohne root Rechte laufen! Ich werde am Donnerstag eine Version mit einem anderen Port für die Registrierung hochladen!

  • Mit deiner App aus deinem Playstore habe ich das Problem wenn ich Benutzernamen und Passwort eingebe und auf den Button drücke, dass die App abstürzt.

    Es gibt KEINE dummen Fragen!

  • Welche Android Version benutzt du? Ich schau mir das sofort an!
    [hr]
    Stupid me... Liegt daran, dass ich die falsche Version hochgeladen habe -.- Sollte in 2 Stunden ein update geben, mit dem das Funktioniert!

    Edited once, last by fablue ().


  • Werde ich testen sobald ich das Update habe.


    Du kannst mich zum testen einfach hinzufügen: sebi und mir schreiben!


    Update ist nun hochgeladen! Sollte in wenigen Stunden aktualisieren!
    Habe nun auch von Port 1002 auf POrt 2001 umgestellt!


    Update ist nun auch verfügbar auf chatblack.fablue.org

    Edited once, last by fablue ().

  • Ein Vorschalg von mir wäre, dass du den Code auf Github stellst. Dort hättest du auch einen Bug Tracker dabei und jeder könnte den Code einsehen und mit deiner Erlaubnis auch modifizieren.

    Es gibt KEINE dummen Fragen!