[vz-users] Security

Justin Otherguy justin at justinotherguy.org
Fri Nov 18 01:32:39 CET 2011


Hi Sven und Pepe,

Am 17.11.2011 um 09:22 schrieb Sven Anders:

> ich wollte mal wissen, ob es beim Volkszaehler schon sowas wie Security gibt.
berechtigte Frage!

> In meiner gestern aufgesetzten Testinstallation kann jeder der die URL kennt:
> 
> * Neue Objekte (Channels, etc.) anlegen
> * Falsche Messwerte eintragen
das ist korrekt.

> * Jeden Zähler ansehen (für den er die UUID kennt, 
aus genau dem Grund solltest Du die UUID für Dich behalten

> Bei meinen Nachforschungen im Wiki habe ich auch für die
> Messwertübermittlung keine Authentifizierun gesehen.
auch das ist korrekt.

Wir verwenden die UUID zur Identifikation ("wer bist Du?"), eine Authentifikation ("beweis mal, dass Du wirklich der bist") verwenden wir nicht.

> Ich denke es macht Sinn, sowas zumindest gleich von Anfang an zu planen,
und schon wieder hast Du Recht! ;-)

Ich will das Konzept kurz beschreiben, auch wenn Steffens Mail Deine Fragen schon beantwortet hat:

Sobald ein Passwort für die Authentifizierung im Spiel ist, wird auch eine Mailadresse benötigt (Passwort-Reset). Da wir von Anfang an größten Wert auf Datensparsamkeit gelegt haben, scheint mir das der beste Weg zu sein, genau diese vom Nutzer nicht zu erfragen. Das ist also kein Fehler, sondern ein Feature ;-)

Zu Deiner Anmerkung, ob man diese UUID denn heraus finden kann: über die Middleware ist keine Funktion zum Auflisten von UUIDs vorgesehen. Wenn Du sie also nicht weiter gibst und nicht unverschlüsselt übermittelst, sollte das ausreichen. SSL ist dummerweise für die ATmegas zu viel - die schaffen das nicht; hier bleibt nur http.

> Ist nicht die Identität des Users sowieso gegeben? Entweder der Server steht bei mir Zuhause (Wer in meinem LAN ist weiß auch wer ich bin) oder irgendwo online. Dort ist dann aber im WHOIS auch eindeutig definiert wer dahinter steht.
ich verstehe nicht so ganz, was Du meinst. 

Am 17.11.2011 um 12:34 schrieb pe82 at gmx.de:
> Heißt das, dass ich bei jedem Zugriff auf den Server die UUID jedes Sensors erneut eingeben muss?
nein, die UUID wird als Cookie im Browser gespeichert (schau Dir mal die Demo an: https://demo.volkszaehler.org/ )

> Sonst stehen die Daten ja (sofern nicht nur Lokal) frei verfügbar im Netz rum.
"frei verfügbar" im Sinne von "für jeden, der die UUID kennt": ja, genau. Darum solltest Du die UUID für Dich behalten.

Am 17.11.2011 um 16:42 schrieb Sven Anders:
> Wir haben drei Häuser mit einer Heizung und diversen Wohnugszählern und möchten den Bewohnern ermöglichen, das sie Ihren Verbrauch (Wärmemengenzähler, Kalt-Wasser, Warm-Wasser, Strom) sehen können, zusätzlich gibt es noch ein paar Daten die jeder sehen können soll, wie die Außentemperatur und die Temperatur des Solar-Speichers.
> 
> Ich würde mir wünschen, das ich einfach je einen User: Wohung1, Wohnung2, Wohnung3 etc. anlegen könnte und derjenige sich authentifiziert und dann seine Daten bekommt.
naja - es würde so aussehen:
- jeder Bewohner kennt die UUIDs der Kanäle, die er einsehen können soll
- die UUIDs für die Temperaturwerte kannst Du entweder gleich als "öffentlich" kennzeichnen (s. Demo) oder eben allen Bewohnern mitteilen
Das würde doch passen, oder? Dazu kommt jetzt noch Steffens geniales Gruppenkonzept:
Du kannst alle UUIDs der Kanäle, die ein Bewohner einsehen können soll, gruppieren. Diese Gruppe erhält eine zusätzliche UUID (s. Demo). Diese eine Gruppen-UUID ist die einzige, die der Bewohner dann "abonniert": alle zugehörigen Kanäle werden dann mit aufgelistet. Klaro?

> Ich möchte nicht, das auf meinem Server jeder x beliebige depp Zähler anlegen kann, das kann ja soweit gehen, das er den genau so nennt, wie den den ich angelegt habe und dann haben wir 15 public "Außentemperatur". Da steigt doch auch kein Anwender durch.
naja - mal langsam:
- wenn Du Deinen Server im LAN betreibst, stellt sich die Frage ja nicht (Anm.: ich glaube, dass viele VZ-User das so betreiben)
- wenn Du Deinen Server im Internet betreibst, sind die Daten für jeden Depp (und auch alle anderen) einsehbar, die die UUIDs kennen
Ein Mechanismus, mit dem Du den Zugriff auf die Daten beschränken kannst, existiert derzeit nicht. 
Von Fremden angelegte Kanäle tun m.E. erst mal nicht weh. Wenn es Dir um die Übersicht in der Liste der öffentlichen Kanäle geht: wenn Dir das wichtig ist, könnte man sicher eine Konfig-Option einbauen, die das Anlegen öffentlicher Kanäle deakiviert. Oder auch das Anlegen von Kanälen überhaupt. Eine andere, einfache Möglichkeit wäre das Vorschalten einer HTTP-Authentifizierung. Damit kannst Du regeln, wer Zugriff auf die Applikation hat; dann könnten alle anderen gar keine Daten mehr einsehen. Eine wesentlich feinere Abstufung wird mit dem von Steffen beschriebenen Konzept möglich sein. Wenn Dir das sinnvoll und wichtig erscheint, finden wir sicher einen Weg, wie Du helfen kannst, dass dieses umgesetzt wird :-)
Persönlich finde ich, dass wir lieber an anderen Stellen arbeiten sollten (hauptsächlich am Frontend).

> Trotzdem wäre es gut, wenn man z.B. von einem Arduino-Device mit einen http (nicht https) neue Zählerstände übermitteln könnte.
> Ich hatte die Idde das evtl. mit einem Zähler-Secret zu realisieren.
> 
> Der Zähler macht über seinem Request (inklusive der URL und des Zählerstands plus dem Secret einen Hash) und übermittelt das dann an den volkszaehler.
auch das wäre denkbar. Falls das ein Angebot für die Beschreibung des Konzeptes und die ATmega-seitige Umsetzung war: angenommen! Ich bin sicher, dass sich Jemand findet, der die zugehörigen Middleware-seitigen Anpassungen vornimmt! :-)

> Vorteil: Das Backend muss keine wirklichen Zufallszahlen erzeugen und muss nur wenig crypto kennen.
da verstehe ich jetzt nicht ganz, inwieweit das vorteilhaft wäre. Achso - meinst Du mit "Backend" den ATmega?
Wir verwenden die Begriffe so:
- Backend: Datenbank
- Middleware: PHP-Skripte auf dem Server
- Frontend: Visualisierung (derzeit: ausschl. Browser)
Den ATmega würden wir als "Controller" bezeichnen.

> Wenn er die UUID im Klartext übermittelt ist das ja faktisch als würde man ein Passwort im Klartext übermittelt.
bingo!

> Auf meinem Server möchte ich aber selbst bestimmen, wer was sehen können soll, damit kann der Datenschutz auch besser eingehalten werden, als anders.
Du sprichst vermutlich auf "ich hätte gerne eine Userverwaltung" (Identifikation + Authentifikation) an; das würde einen wesentlichen Umbau/eine wesentliche Erweiterung bedeuten. Falls das bestehende Konzept (UUID) und das besprochene ("Multi-UUID") nicht Deinen Vorstellungen entspricht, kannst Du Dich gerne einbringen. Wir freuen uns!

> Wie wäre es beide Ansätze aufzunehmen und den Admin entscheiden zu lassen?
ja, einverstanden. Leg los! ;-)


Gruss, J.



More information about the volkszaehler-users mailing list