Beiträge von fablue

    Hallo,
    hiermit melde ich mich nach sehr langer Zeit wieder zurück.

    Um es gleich hinter mich zu bringen: Das Projekt "Chatblack" wurde aus diversen Gründen eingestellt.
    Leider kann ich zu diesem Zeitpunkt nicht mehr darüber sagen, als dass ich mich hier wieder melden werde.

    Habt Geduld!

    Sebastian

    Zum Thema maximale Nutzer:

    Wegen dem Arbeitsspeicher: Der Chatserver braucht nahezu keinen Arbeitsspeicher, da er für jeden Benutzer nur sehr wenige Daten (Texte) Laden muss und diese in Listen speichert! Das ist absolut garnichts! Auch bei Übertragungen von Texten haben wir hier 0,0 Problem, denn ES SIND TEXTE!!! Was könnten alleine 1000 gleichzeitige Nachrichten schon auslasten? Nahezu nichts?! Wegen der CPU wird es auch Verbesserungen geben, beim verschicken von DATEN wird der PI bald nichts mehr verschlüsseln / entschlüsseln müssen und ist somit nur noch auf den Zugriff auf die SD Karte beschränkt! Das einzige Problem wäre, dass momentan für jeden Benutzer ein Thread gebraucht wird, was das System i.wann langsam und ineffizient werden lässt!

    Grundsätzlich traue ich dem PI LOCKER 200 + Clienten zu! Er hält nur die Verbindungen aufrecht, verteilt hier und da mal so eine kleine Textnachricht und greift ab und zu auf die SD Karte zu! Wirklich nichts, wovor man Angst haben müsste, dass der PI ausgelastet ist!

    Kleiner Nachtrag zum update: Ich stelle um auf komplette End-2-End-Verschlüsselung und wir alle sparen uns damit einen Haufen "Server-Leistung" und erkaufen uns nebenbei bessere Sicherheit! =)

    >> Pathstruktur
    Gute Idee! Ich werde zur nächsten Version dann auch eine bessere README.txt mitliefern, bei der klar sein soll was zu tun ist!

    >> Serverschnittstelle:
    Das wäre natürlich eine sehr sehr praktische Sache, WENN beim implementieren auf jedes Sicherheitsdetail geachtet wird! Aber dieses Feature wäre sicher sehr praktisch! Ich bau es bis zum nächsten Update ein, so dass man es starten kann mit: java -jar chatblack_server.jar --remote-admin pseudo

    Ich melde mich hier mal wieder mit wichtigen Neuigkeiten zum bald grlößten Update für Chatblack

    Erstmal möchte ich auf oben erwähnte Sachen etwas eingehen:

    >> wegen der CPU-Auslastung beim versenden von Daten: 100% sind mir persönlich 99% zuviel :) Ich werde mir sofort meinen PI genauer anschauen und versuchen das etwas zu verbessern. Habe selber keine hohen Auslastungen am vServer bemerkt.

    1) Binding worked wird in den nächsten Versionen des Messengers nicht mehr angezeigt. Diese Meldung hat nichts mit der Verbindung zum Server zu tun, sondern zeigt an, dass sich die Android Activity (Oberfläche) mit dem im Hintergrund ruhenden Android Service verbunden hat. Diese Meldung ist absolut irrelevant!
    Aber sehr gute Idee: Ein Indikator, falls keine Verbindung zum Server vorhanden ist!!

    2) Oh ja! Auch an dieses Problem habe ich nicht gedacht.. und das obwohl ich mich selbst immer über das Problem mit dem @reboot ärger! Hätte jemand eine gute Lösung anzubieten, um dieses Problem clever aus der Welt zu schaffen?

    3) Und ganz genau das sollte NIEMALS passieren, da diese messageInbox NIEMALS IN KLARTEXT gepeichert werden sollten! --> Fix folgt in neuen updates. Auch, dass diese Nachrichten überhaupt gespeichert werden ist nicht sehr klug und schreit nach dem nächsten Server update

    4) hat sich hoffentlich mit 3) geklärt

    5)richtig! Einen Nutzer so zu löschen ist auch MOMENTAN sehr sehr kontraproduktiv, da dies zu enormen Problemen auf der Clienten-Seite führt (versucht sehr oft neu zu verbinden)
    Auch das wird natürlich im nächsten Update verschwinden

    Zum Update, von dem ich die ganze Zeit spreche:

    Ich arbeite sehr hart daran eine wirklich alltagstaugliche Version zu erstellen:

    Neue Funktionen werden sein:

    Server:
    - etliche Bug-fixes am Server (und das werden wirklich viele)
    - der Server wird allgemein sehr viel effizienter arbeiten
    - ich werde Kommandos hinzufügen, mit denen man den Server und die Nutzer verwalten kann.

    Client:
    - Sonar-Funktion (absolute Spielerei :( es wird bald möglich sein, auf einer Party etc. andere Nutzer der App direkt zu finden und ihnen schreiben. Das funktioniert über Hash-Fingerabdrücke der Wlan-Accesspoints in der Umgebung. Hierbei fehlt noch die zündende Idee, wie ich meinen Hauptserver und deren Nutzer mit den privaten Servern verbinden könnte. Möglichkeiten wären z.B. Wifi-Direct. Das gefällt mir persönlich aber nicht so gut. Diese Funktion wird daher nur für Nutzer des Hauptservers oder betrügende Ehemänner eine Rolle spielen =D

    - Personalisieren:
    Es ist bald möglich, den Hintergrund der App, die Farben und ein eigenes Profilbild zu wählen. Screenshots poste ich morgen :)

    - Etliche Fixes, die die App endlich allltagstauglich machen sollen!

    Dieses Update wird aber noch einige Wochen dauern: Anregungen sind gerne erwünscht. So viele gute Sachen, wie in diesem Forum lese ich nur selten!!

    Wahrscheinlich erst im nächsten Update wird eine "simulierte Quantenkryptographie" (...) mit an Board sein. Auf die kann man sich meiner Meinung nach wirklich freuen, da ich als Physikstudent sehr viel Begeisterung und Ideen in diese Idee gesteckt habe. Für alle die es interessiert: Natürlich ist das keine echte Quantenkryptographie. Ich nenne es so, da man in Chatblack zukünftig zwei Smartphones miteinander "verschränken" kann, was ein OneTimePad als Verschlüsselung zur Folge hat: http://de.wikipedia.org/wiki/One-Time-Pad

    Alle genannten Funktionen sind auf meinem Smartphone schon -halbwegs- einsatzbereit. Ich rechne mit ca. 4 - 8 Wochen, bis ich das Update veröffentliche!

    Zum Thema Quelltext: Ich habe endlich aufgeräumt: Zumindest beim Clienten :DD

    Ich werde das Projekt bei Github einstellen, sobald ich selbst mit dem Projekt zufrieden bin :)

    Für weitere Fragen einfach weiter posten :)

    Sebi

    Nachtrag: Ich werde die Versionen anders nummerieren, um sofort ersichtlich zu machen, welche Serverversion benötigt wird.
    Ich starte mit Version 0.1.0 , dabei steht die 0 für den Beta/Alpha /wie auch immer -Status , die 1 für die Serverversion und die 0 für die Clientversion

    BSP: Client 0.1.3 -- > Server 0.1.x (x steht für Performance/Sicherheits und Bugfix updates)

    Client 0.39.84 -> Server 0.39.x (ihr versteht)

    Danke fürs bescheid geben =D
    Ich änder die falschen Angaben sofort!
    Mittlerweile ist der Client vom Playstore derselbe, wie der auf der Homepage! Es ist wohl für viele einfacher, die App darüber zu beziehen! Einziges Problem: Wenn ein Update veröffentlicht wird, welches einen neuen Server benötigt, funktioniert die App erst wieder, wenn der Hoster auch den neuen Server aufsetzt!

    Freue mich schon auf dein Feedback!
    P.S. hast du gesehen, dass ich seit gestern spät Abend eine neue Version veröffentlicht habe? Darin sind endlich smilies und andere wirklich wichtige updates =D

    Prinzipiell ja! Die einzige Ausnahme war nur, dass ich im letzen Update den Port geändert habe! Ich werde auf der Homepage kennzeichnen, falls ein Server "out of date" ist!
    Auch werde ich bald die beiden Clienten (zum selbst hosten und der andere) zu einem Verbinden, was es dann möglich mittels Playstore immer die neuesten Funktionen zu nutzen!
    Trotzdem ist es natürlich besser auch den Server hier und da mal zu aktualisieren um die Performance weiter zu verbessern! =D

    Nein du machst sicher keinen Aufwand! Gäbe es keinen der ein Problem feststellt, würde ich diese Probleme niemals lösen können und die Software würde niemals gut werden! =D
    Momentan ist das ganze ja noch in den Kinderschuhen und eine Weiterentwicklung ist eben nur mit Menschen möglich, die die Software testen und eben genau soetewas melden!
    Denn egal was ist... eine App die soviel Strom verbraucht ist Schrott! Ich werde darum etwas einbauen das erkennt, wenn ein übler Fehler vorliegt und einfach die App abschaltet und es dem Benutzer meldet!

    In Android gibt es sogenannte WakeLocks, die es verhindern, dass sich das Gerät bei abgeschaltetem Display in den Ruhezustand setzt! Bekommt Chatblack eine Nachricht, so wird ersteinaml nur ein Byte übertrage, welcher das Gerät für eine sehr kurze Zeit aufweckt. In dieser Zeit wird ein Lock gesetzt und das Gerät überträgt die Nachricht und spielt den Nachrichten Ton ab etc.
    Da die Internetverbindung bei mobilen Geräten häufig abbricht, wechselt oder stribt, versucht Chatblack, sobald Internet verfügbar ist, wieder eine Verbindung herzustellen! Dafür wird ebenfalls ein Lock gesetzt! Wird dabei ein Timeout gerissen, wird kurz gewartet und erneut eine Verbinung aufgebaut! Ist der Server nicht verfügbar, lässt Chatblack dein Gerät nicht schlafen! Dies ist bei der normalen Version der App nicht der Fall, denn sobald Internet verfügbar ist, ist mein Server auch erreichbar! Ist keine Internetverbindung verfügbar, versucht Chatblack auch keine Verbindung aufzubauen! Ich gehe nun stark davon aus, dass dein Server nicht über das Internet erreichbar ist, und deshalb die App dein handy nicht schlafen lässt! Dafür werde ich am Donnerstag ein Update programmieren, welche die maximale Anzahl der Verbindungsversuche drastisch bei der selbst host Version senkt! Ich wäre auch offen für andere Lösungsvorschläge, wie z.b. einen disconnect button etc? Was wäre euch denn lieber?


    Habe gerade bemerkt, dass du die normale app benutzt und die Verbindung dauernd abbricht! Ich seh mir das Problem sofort an!

    Okay! Aus irgendeinem Grund kann dein Smartphone nicht mit dem Server verbinden! Versuche dich neu zu registrieren (ich gebe deinen Benutzernamen frei), in dem du die App Daten in den Android Einstellungen löscht! Solltest du dann immer noch nicht in der Lage sein, mit dem Server zu verbinden, empfehle ich dir die App doch zu deinstallieren, bis ich den Grund dafür gefunden habe! Momentan denke ich, dass etwas im Registrierungsprozess schief lief! (Beim erzeugen der Schlüssel) Ich hoffe, dass das kein Problem von android 5.0 ist, denn bis jetzt bist du der erste Fall, bei dem soetwas auftaucht!

    Auch könnte es sein, dass das update von 0.9.0 auf 0.9.02 einen Fehler hervorruft! Auch hier würde ich dir empfehlen, die Daten zu löschen und sich neu zu registrieren! Solltest du wieder eine Verbiindung mit dem Server herstellen können, dürfte das Problem gelöst sein!
    Auch empfehle ich dir DRINGEND die Version aus dem Playstore zu nutzen, wenn du den Chatblack Server benutzen willst!

    Hast du denn die Schlüssel oder sonstige Daten auf deinem Smartphone verändert, gelöscht etc?

    Da eine RSA verschlüsselung zum Übertragen von Daten zu langsam und viel zu Aufwendig ist, kommt diese nur bei einer Dateigröße unter 100 kb zum Einsatz! Ansonsten
    gibt der Server einen RANDOM AES Schlüssel für eine Datei vor! Die Datei wird auf dem Serverdateisystem verschlüsselt zwischengelagert und mit einem neuen AES Schlüssel zum Empfänger gebracht! Die Datei liegt somit (Blockweise) in Klartext im RAM des Servers! So funktioniert es bis jetzt! Dieses System hat sich als extrem zuverlässig bewährt!

    Ports: Das wäre natürlich machbar! Blöd ist nur, dass ich momentan alleine an diesem Projekt sitze und neben dem Studium noch etwas arbeite. Darum kann es noch ein Weilchen dauern, bis ich dieses Feature eingebaut habe! Aber es wird mit Sicherheit kommen, da ich sogar Server-Mesh-Netzwerke Plane (Ich hoffe der Ausdruck gibt Sinn)

    Bilder: Ja Bildkompression kann ich sogar für den Server implementieren, so dass der Download-Client immer die Wahl hat, und der Upload Client nur das Original hochladen muss! Gute Idee!

    Github: Um ehrlich zu sein schäme ich mich etwas wegen meines richtig schlampigen Programmierstils! Ich werde wohl noch weiter bis Version 1.0 arbeiten , aufräumen und dann veröffentlichen! Momentan bin ich noch am Bugs suchen! Ab nächster Woche will ich Gruppenchats implementieren dannach ist erst ein Einstellungsmenu dran!


    >> Problem bei der App selber ist der ausgereifte PushService, welcher Momentan nur eine Verbindung zu einem Server zulässt =/ Auch kann man in Android Apps mit gleichem Paketnamen nicht 2mal installieren

    @BennY- Web/PC-Client und C++ Server wären eine Spitzen Sache! Ich habe mich für Java entschieden, da ich der Meinung bin, dass ein Nachrichten Messenger nicht enorme Leistung bringen sollte! Trotzdem wäre C++ natürlich die Professionellere Lösung! Wenn du magst kann ich dir den SourceCode vorab schicken!

    Problem bei anderen Clienten ist bestimmt der PushService und der Schlüsselaustasuch! Momentan bin ich ganz froh darüber, dass die Schlüssel nur einmal augetauscht werden müssen und sonst nur verschlüsselt beim Clienten und auf dem Server liegen!

    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?

    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!

    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!

    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 =)

    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!