# PC identifizieren / Daten auslesen



## OnDemand (1. Nov 2013)

Hallo zusammen,

ist es erlaubt, einen PC anhand seiner MAC Adresse oder so zu identifizieren und dessen MAc-Adresse zu speichern, um den PC zu identifizieren? Oder gibt es da Datenschutzrechtlich bedenken?


----------



## geqoo (1. Nov 2013)

Das kommt drauf an, in welchem Umfeld du was machen willst?


----------



## OnDemand (1. Nov 2013)

Das war ja mal ne rasche Antwort, danke =)

Ich möchte die Mac-Adresse dem Kunden anzeigen, er muss sie mir mitteilen, damit ich ihn für die Nutzung bestimmter Programmteile freischalten kann. Wenn er das nicht will, muss er es nicht machen, kann dann halt nicht mit dem Programm arbeiten


----------



## geqoo (1. Nov 2013)

Hmm, also spielt die ganze Geschichte geschäftlich.
Wenn darauf hingewiesen wird, dass die MAC-Adresse in bestimmten Programmteilen ausgelesen wird, ist das sicher in Ordnung.
Eine MAC-Adresse dient auch nur zur eindeutigen Identifizierung einer Netzwerkkarte (also wahrscheinlich bei euch eines Rechners), nicht zur Identifizierung einer Person.
Natürlich könnte man jetzt sagen diese eine Person hat die und die Netzwerk-Adresse, also ist es indirekt doch zuordenbar.

Willst du auch speichern, welche MAC zu welchem Kunden gehört? Falls dort nur eine Liste mit freigeschalteteten Adressen drin ist, sind das keine personenbezogenen Daten. Damit kann auch ein anderer dann nichts anfangen, wenn diese Zuordnung nicht vorliegt (wobei das in der virtuellen Welt immer etwas schwierig ist).


----------



## OnDemand (1. Nov 2013)

Hmmm danke, das klingt ja sehr grenzwertig, ich wollte die Mac-Adresse nutzen, damit das Programm am Server (wo die MAC dann eingetragen wäre) nachfragt, ob die Kombination aus MAC+SERIAL+KUNDENNR. übereinstimmen. Aber anhand der Kundennummer lässt sich ja dann die Person herausfinden, es sei denn es sitzt grad ein anderer Kollege an dem Rechner  . Aber das ist nun mal eine Nutzungsbedingung, weis nicht was das mit Datenschutz immer soll. Wenn ein Kunde dem nicht zustimmen will, muss er sich ein anderes Programm kaufen.:bloed:


----------



## geqoo (1. Nov 2013)

Die Kommunikation zwischen welchem Server? Eurem oder dem Server beim Kunden, wo das Programm installiert ist?

In diesem Falle liegt natürlich eine besondere Schutzbedürftigkeit der personenbezogenen Daten vor, da für Dritte ein unberechtiger Zugriff ausgeschlossen werden soll. Wahrscheinlich muss die Kommunikation mit dem Server dann sicher verschlüsselt werden, dann dürfte das in Ordnung gehen.


----------



## turtle (1. Nov 2013)

Ich gebe zu bedenken, dass eine MAC-Adresse NICHT eindeutig ist.

Zum Beispiel kann eine virtuellen Maschine mit einer selbst definierten MAC-Adresse leicht erzeugt werden.
Und existieren mehrere Tools (beispielsweise ChangeMac2010), mit denen die MAC-Adresse "gefälscht" werden kann.

Es scheint mir ein Berechtigungssystem auf der MAC-Adresse aufzubauen, nicht besonders sinnvoll.


----------



## OnDemand (1. Nov 2013)

Hi,

oh danke für deinen Tipp! Hast du bessere Ideen was man machen könnte? Andererseits gehe ich davon aus, dass meine User nicht wissen, wie man die MAC ändert, bzw. wiederum auch keine Berechtigungen seitens der Systemrechte haben, diese ändern zu wollen :toll:. Könnte man vielleicht eine Seriennummer o.ä. aus dem Rechner herausbekommen (mit Java-Mitteln) von der GraKa, Motherboard, oder oder oder?


----------



## geqoo (1. Nov 2013)

turtle hat gesagt.:


> Ich gebe zu bedenken, dass eine MAC-Adresse NICHT eindeutig ist.
> 
> Und existieren mehrere Tools (beispielsweise ChangeMac2010), mit denen die MAC-Adresse "gefälscht" werden kann.



Das wäre doch MAC-Spoofing und ist verboten? :rtfm:


----------



## OnDemand (1. Nov 2013)

Stimmt, das ist verboten. Aber wen juckt das oder wie will das jemand jemanden Nachweisen?

Aber nochmal zu meiner Frage, wäre das Verarbeiten der Mac-Adresse auch datenschutzrechtlich gaga? oder wäre es ok, wenn man der MAC-Adresse eine Seriennummer zuordnet, dieser aber keinen Kunden, dann führen wir eben keine Liste mit Kunden und dazugehöriger Nummer, sondern nur MAC+SN-Nr..

Oder dürfen wir den Kunden um Erlaubnis bitten, die Mac zu verarbeiten?! Man findet hier aber auch garnix dazu. Ich schwöre selbst Datenschutzrechtler hätten da keine Antwort ueh:


----------



## turtle (1. Nov 2013)

> Das wäre doch MAC-Spoofing und ist verboten?


Ich bin kein Anwalt und kenne mich damit nur sehr ungenau aus, aber genau so geht es der anderen Seite auch. Zeige mir mal einen Rechtsanwalt, der versteht und beurteilen kann, was Spoofing ist und welche Auswirkungen das in einem konkreten Fall das hatte(oder haben) kann.
Langer Rede kurzer Sinn: Ich halte das für eine laaange Auseinandersetzung zwischen den Beteiligten im Streitfall und dies möchtest du als SW-Anbieter NICHT wirklich mit einem Kunden haben, oder?

Nein, ich glaube, wenn du wirklich Software schreiben möchtest, die nur von lizenzierten Benutzern verwendet wird, kommst du um Hardware nicht herum.

Ich halte beispielsweise den Schutz von Wibu-Key  für ganz ordentlich.


----------



## OnDemand (1. Nov 2013)

Wollte erstmal keine externen mit reinnehmen, vor allem nicht weil ich nicht weis wie viel Einnahmen zustande kommen. Vielleicht hat noch jemand eine Idee bezgl. einer Hardware-Komponenten-Nummer auslesen. Wenn der Kunde die Komponente, Festplatte, Betriebssystem wechselt, muss er eben unseren Support kontaktieren und die Seriennummer erneut freigeben lassen etc.


----------



## turtle (1. Nov 2013)

Ich möchte noch einmal darauf hinweisen, dass mir kein Schutzmechanismus in Java bekannt ist, mit dem erstens Lizenzen erfolgreich verwaltet *und *andererseits die Anforderungen an die Umgebung des Kunden adäquat abgedeckt werden können.

Mit diesem Thema habe ich mich ergiebig auseinander gesetzt und gefunden, dass alle Mechanismen leicht ausgehebelt werden können.
Denn letztendlich muss jedes Java-Programm über den Class File Verifier der JVM gültigen Bytecode repräsentieren. Spätestens an dieser Stelle muss der Bytecode in JVM-kompatibler Form vorliegen. Alle Dinge, die vorher gemacht wurden, wie beipsielsweise Verschlüsselung der 
class-Dateien und Laden derselben über einen eigenen Classloader sind dann hinfällig.
Also lässt sich der Aufruf einer Routine, die prüft, ob ein Benutzer lizenziert ist, ausbauen oder immer mit ja beantworten, also keine Lizenzkosten notwendig.

Ich hatte mal ein System entworfen, in denen Kunden über verschlüsselte Informationen(Zertifikate für Kunde/Anbieter liegen vor) und somit angeben welchen Typ von Lizenz sie benötigen. Danach erstellt der Anbieter eine Schlüsseldatei und überträgt sie zum Kunden. Beim Programmstart wird geprüft, ob das Programm ausreichend lizenziert ist, indem die Lizenzdatei gelesen, entschlüsselt und ausgewertet wird.
Wie oben aber bereits erwähnt, ist dieses "nur" ein Grund, der die Attacke auf das Programm erschwert aber nicht unmöglich macht.

Andere Optionen wären:



Abfrage der Lizenz über das Netzwerk beim Programmstart
Dieses ist eine gute Option, aber meistens nicht mit den Sicherheitsrichtlinien des Kunden vereinbar.
Eine Subalternative wäre die Installation eines Lizenzervers beim Kunden
Dieses ist aber aus offensichtlichen Gründen ebenfalls schwer umsetzbar. Diesmal kann der Kunden natürlich den Server selbst kompromittieren und daher ist das Sicherheitskonzept per se ausgehebelt.



Verdongelung der Software
Dieses ist eine weitere gute Option und kann mit minimalen Aufwand für Anbieter/Kunde umgesetzt werden. Hierbei werden insbesondere die beiden Punkte Verschlüsselung und Sicherstellung das die JVM nicht manipuliert wurde, kombiniert. Mit WibuKey als Beispiel wird für den Kunden ein spezieller Code erzeugt und in den USB-Dongle geschrieben. Gleichzeitig wird die Software verschlüsselt und kann nur noch mit dem richtigen Dongle entschlüsselt werden. Dabei verifiziert die Wibu-SW, dass keine Manipulationen zum Beispiel an den Classloadern der JVM erkannt werden.

Alles in allem, war die Verdongelung der SW die Lösung, die eingesetzt wurde, zumal dies mit überschaubaren Aufwand und Kosten gemacht werden kann.

Leider bietet die JVM nur unzureichende Möglichkeiten des Schutzes der Java-Software. Vielleicht deshalb ist ein extrem großer SW-Bereich Open-source und es wird eher mit (weiteren) Dienstleistungen oder Support gearbeitet.

Ich kann mir auch nicht vorstellen, das deine SW einen sooo grossen Mehrwert erzeugt, dass sich dieser ganze Schutz-Aufwand lohnen würde, zumal geschickt formulierte Eula's hier gut helfen können.

Da ist die Speicherung von MAC-Adressen in der DB beim Anbieter nur ein geringes Problem, wobei dies, wie bereits erwähnt, in den Nutzungsbedingungen erwähnt werden kann. 

Also kannst du diesen Weg weiter verfolgen, aber ich habe dich gewarnt wg. des Aufwandes, der Qualität des Schutzes und der
Akzeptanz beim Kunden.


----------



## OnDemand (1. Nov 2013)

Vielen Dank für Deine informativen Beiträge! Dass es immer einen Weg gibt, sieht man ja an den großen Softwareherstellern. Aber gut fürs Ego, wenn man wenigstens ein paar Hürden einabut, dann hat man es wenigstens versucht und macht die Sache noch seriöser, wenn der Kunde lizensieren muss 

Wie sieht es denn mit Eula  & Co. aus, gibt es da einen Generator, wo ich zb verschiedene Kriterien eingebe, wie meine SW verwendet werden darf und am Ende bekomme ich die beste Lizenzierung vorgeschlagen?! 

Mit diesem ganzen Eula und GPL ZEugs, hab ich mich noch nicht weiter beschäftigt.


----------



## turtle (1. Nov 2013)

Ein (guter) Anwalt ist dein Freund


----------



## OnDemand (1. Nov 2013)

Ohwe, die gibts ja nicht zu oft, jedenfalls ist mir keiner bei uns hier bekannt, das sind dann sicherlich größere Wirtschaftsanwälte ^^


----------

