Systemeigenschaften ermitteln

Begonnen von Basil, 21. April 2006, 23:57:47 Uhr

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Basil

Hallo Leute,

ich bin auf der Suche nach einer Lösung für das folgende Problem:

Ein Bekannter von mir bietet einen Dienst über das Internet an, bei dem Sichergestellt werden muss, dass nur berechtigte Personen darauf zugreifen.
Bisher läuft das so, dass er Zertifikate generiert die dann per eMail an den Kunden gesendet werden.
Nachdem der Kunde das Zertifikat im Internet Explorer installiert hat kann er den Dienst Nutzen, weil der IE beim Kontakt einen Schlüssel übermittelt. Ohne Schlüssel, kein Service.

Jetzt ist es aber so, dass nicht sichergestellt werden kann, dass das Zertifikat nicht auch noch auf anderen Rechnern installiert wird.
Deshalb bin ich auf der Suche nach einer Möglichkeit zusätzlich zum Zertifizierungsschlüssel noch einen Wert aus dem System abzufragen und zu übermitteln.

Ich denke da an die Mac-Adresse der Netzwerkkarte, die Prozessorseriennummer oder Ähnliches.
Also irgendwas was den Rechner einzigartig macht.
So könnte man sicherstellen, dass ein Zertifikat nur einmalig verwendet wird.
Zugrif auf den Dienst gibt es also nur, wenn die Kombination aus Zertifikat und Rechner übereinstimmt.

Ich hoffe, dass klar ist, was gemeint ist.

Meine Frage lautet nun:
Gibt es eine Möglichkeit sowas mit Java und/oder JavaScript zu realisieren?

Ich weiss, dass es aus Sicherheitsgründen eine Reihe von Einschränkungen gibt, die sowas wahrscheinlich verhindern.
Deshalb wären auch ActiveX oder VB Script akzeptabel, weil in jedem Fall der IE zum Einsatz kommen soll.

Bill

Gudi

MAC-Adresse und Festplatten-/Partitions-Seriennummern werden dazu normalerweise verwendet. Unter Umständen ginge auch die Windows-Seriennummer. Einzigartige Prozessor-Seriennummern gibt es nicht. (gab es nur kurze Zeit von Intel - mussten sie vom Markt nehmen).
Das sind aber alles Dinge, die sich manipulieren lassen, wenn man das nur wirklich will... ;)

Festplatten-/Partitions-Seriennummern sind spätestens unter Win2k aber schwierig auszulesen.
Das Auslesen der MAC-Adresse ist per ActiveX (über die Win-API) allerdings gut und einfach möglich. Ob's per Java geht, weiß ich nicht - dazu einfach mal googeln. Ist aber gut möglich, spätestens mit Hilfe des Java Native Interfaces (dann auch über die Win-API).
Mit Java-Script geht es sicherlich nicht.
Wenn man nun einen Mechanismus baut, der einen Schlüssel auf User-Seite generiert, mit diesem einen Gegenschlüssel vom Service anfordert (zur Freischaltung, auf geeigneter Krypto-Methode basierend) und dann mit diesem Paar aus Schlüssel (bei jeder Benutzung vom ActiveX o.ä. ermittelt) und Gegenschlüssel (vom Benutzer einmal eingegeben) als "Zugangscode" arbeitet, kann der Server auf einfache Weise die Authentizität prüfen.
Wenn man dem User dann nicht noch auf die Nase bindet, dass der Schlüssel auf der MAC-Adresse basiert (erfordert nat. gewissen Fallback, falls jemand wirklich keinen Netzwerkadapter hat), ist es eher unwahrscheinlich, dass dieser am Mechanismus rum-manipuliert... ;)

Basil

Hallo Gudi,

danke für Deine Antwort.

> Wenn man nun einen Mechanismus baut, der einen Schlüssel auf User-Seite generiert...

Ich hatte mir die Verfahrensweise so vorgestellt.
Ein neuer Kunde erhält den Link und Zugangsdaten zu dem Service.
Wenn er sich das erste mal einloggt wird die Mac-Adresse/Seriennummer ermittelt, auf dieser Grundlage ein Schlüssel generiert, übertragen und im System gespeichert.
Alle weiteren Zugriffe werden nur dann akzeptiert, wenn die Kombination aus Zugangsdaten, übertragenem Schlüssel und gepeichertem Schlüssel übereinstimmt.

Das Speichern des Schlüssels muss natürlich neu erfolgen, wenn sich die Hardware des berechtigten Computers mal ändert.

Jetzt muss ich nur noch wissen wie ich das mit ActiveX mache.
Davon habe ich nämlich gar keine Ahnung.

Java habe ich zwar schon ein bisschen gemacht, allerdings ist das Wenige das ich gemacht habe schon ein paar Jahre her.
Mit ein paar Hinweisen, die mir die richtige Richtung weisen würde ich das aber vielleicht hinkriegen.
Allerdings habe ich jetzt gelesen, dass mit Java nur das Auslesen weniger und ganz allgemeiner Systemeigenschaften möglich ist.

Bill

Gudi

Mit ActiveX habe ich auch noch nix gemacht... Das musst du dir so angucken... :)
Mit dem Java Navtive Interface auch nicht, müsstest du also auch selbst nachforschen. Beide Sachen sind im Netz aber gut dokumentiert, sollte also nicht so schwierig sein, wenn du dich ersteinmal für eine Methode entschieden hast.

Die MAC-Adresse liest du dann über GetAdaptersInfo() in Iphlpapi.h / iphlpapi.lib aus. Dazu gibts bei msdn auch ein Beispiel...