Wir sind uns einig: die großen sozialen Netzwerke haben außer dem großen Vorteil ihres Verbreitungsgrades nicht viel zu bieten.
Ob Überwachung und Profiling durch Geheimdienste oder global agierenden Firmen, beides ist letztendlich inakzeptabel. Selbst bei Menschen die sich sonst kaum mit (Daten-)Sicherheit oder Privatssphäre beschäftigen regt sich eine gewisse Bereitschaft auf ein anderes Netzwerk umzuziehen, allerdings gibt es noch immer keines welches für die breite Masse genügend Vorzüge bietet.
Meine aus der Luft gegriffenen Anforderungen sind:
- konsequente Datensicherheit
- hohe Usability - sowohl in web wie auch mobiler Version
- schnelle Verbreitung
Es gibt bereits etliche Versuche bessere soziale Netzwerke aufzuziehen, einer der Grundgedanken dabei ist klar Dezentralität. Der gedanke ist offensichtlich: wenn nicht mehr eine Instanz alle Daten in der Hand hält, wird Missbrauch deutlich schwieriger. Problem hierbier sind nur Geheimdienste, die letztendlich immernoch an alle Daten herankommen können.
Nichts ist perfekt, doch nichts kommt näher an echte Privatssphäre heran, als Ende-zu-Ende Verschlüsselung. Will heißen: nur Absender und Empfänger können die Nachricht lesen.
Warum gibt es das noch nicht? Vermutlich wegen dem stark erhöhten Anforderungen an die Infrastruktur.
Klartext:
User Karl verfasst einen Post den nur seine engsten Freunde lesen können sollen. Wir gehen davon aus, dass dies ca. 50 Personen sind.
Karls Nachricht ist 400 Zeichen lang (~400 Byte). PGP Verschlüsselt wächst diese Nachricht auf ~4000 Bytes. Karl muss die Nachricht für jede der 50 Personen individuell verschlüsseln, also muss Karls Rechner 50x400 Byte verschlüsseln und 50x4000 Bytes (~200 kB) an einen Server übertragen. Der Server speichert die selbe Nachricht ebenfalls für jeden Empfänger extra - verschlüsselt.
Mit Textnachrichten geht das noch gut, sobald man allerdings auch Bilder oder andere Dateien verschlüsselt übetragen möchte, wächst der Speicherbedarf schnell an. Ich hab leider meine Rechnungen nicht mehr, aber nach meinen Schätzungen kann man pro Benutzer auf einem Server mit 50 GB Speicherbedarf pro 180 Tage rechnen. Zentral ist das schwer zu stemmen, aber durch ein dezentrales Konzept wird das schon wieder realistischer. Auch ein Verfallsdatum für Einträge ist denkbar - markiert ein Benutzer eine Nachricht oder ein Bild nicht als "archiviert", so wird es nach z.B. 180 Tagen einfach gelöscht.
Abgesehen von Metadaten (z.B. Uhrzeit, Absender und Empfänger der Nachricht) hat absolut niemand Zugriff auf die Nachricht, außer dem Personenkreis für den sie bestimmt ist.
Ich habe nicht vor, ein vollwertiges soziales Netzwerk zu entwickeln. Ich möchte eine simplifizierte Version erschaffen, die beweist, dass es möglich ist. Meine Hoffnung ist, dass andere Menschen von meinem Projekt erfahren und beschließen, dass sie das weitaus besser können als ich und ein Netzwerk entsteht das es allen Menschen erlaubt miteinander zu kommunizieren und dabei Gewissheit zu haben, dass ihre Daten nur mit Menschen geteilt werden, von denen sie es wünschen.
---
Ich nenne mein Projekt SSN - Secure Social Network
Überlegungen:
- Verschlüsselung per PGP
- Die Ver-/Entschlüsselung muss am Client statt finden
- Vorzugsweise eine JavaScript Implementation von PGP, falls es dadurch zu performance Problemen kommt, können Applets angeboten werden (Java, Flash oder Sonstiges). Für Mobile Geräte löst eine Java App das Performance Problem
- Als Backend vorläufig PHP/MySQL, schlicht und einfach weil ich damit vertraut bin. Damit hab ich schnell eine Testumgebung auf den Beinen, dann kann ich weitersehen. Auch Server-Server Kommunikation werde ich vorerst nicht implementieren, aber in der Planungsphase durchaus berücksichtigen.
- Bilder werden beim Client resized bevor sie hochgeladen werden. Dadurch Reduktion von nötiger Rechenleistung zur Verschlüsselung und Uploadmenge (
http://www.plupload.com/)
-
http://apiux.com/2013/04/03/url-design-restful-web-services/Aktueller Stand:
- JS PGP Lib gefunden (
http://openpgpjs.org/) allerdings: "“Fully supports” Chrome only". Bisher scheint aber alles auch in Firefox und Safari zu funktionieren. Andere Browser noch nicht getestet.
- local storage bietet genügend Platz um Sessionübergreifend Daten wie public keys oder Metainformationen von Kontakten lokal im Browser zu speichern. Auch der eigene private Key soll dort abgelegt werden (mit Option zu Import/Export)
Aktuelle To-do:
# Serverseite grundlegend implementieren
- Login
- Metadaten zu Personen anbieten
- Postliste innerhalb von Zeitraum X anbieten ("Posts für meine Timeline", "Posts auf meinem Profil", "Posts auf Profil X", "Kommentare zu Post X", "Private Nachrichten zwischen Benutzer X und Y")
- Einzelne Posts anbieten
- Freundesliste anbieten
- Post erstellen
- Containerseiten anlegen (Profilseite, Timeline, Private Nachrichten, Threadansicht zu Post)
- Datenbankstruktur anlegen
# Clientseite grundlegend implementieren
- Postliste abfragen
- Postliste dekodieren
- Postliste in ihren Container einfügen
- Lokale Daten managen (Cache für Profile und Keys)
Bin mir gerade nicht sicher, ob das ganze vollständig ist. Falls ihr Fragen und/oder Anregungen habt, haltet euch bloß nicht zurück. Auch falls sich jemand beteiligen möchte, bin ich dem nicht abgeneigt.