Frage zur GUID

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Frage zur GUID

    Moin,

    ich habe eine Frage zur GUID. Ist diese bei einem Compilierten Programm IMMER gleich?

    Weil ich sie nutzten wollte, ich habe eine DLL in der die GUID folgendermaßen ermittelt wird

    VB.NET-Quellcode

    1. Dim asm As Assembly = Assembly.GetExecutingAssembly()
    2. _guid = asm.GetType().GUID.ToString()


    Die GUID der Lib ist 1653e60b-f5ed-44b2-b6f4-84dfe33697e7
    Nun binde ich diese Lib in ein Form Projekt ein welches die GUID 4ec6e714-eb66-42ef-a1fc-068ab9fb1d89 hat, wenn ich mir nun zur Laufzeit die GUID ausgeben lasse nach dem oben genannten Prinzip bekomme ich jedoch die GUID 28e89a9f-e67d-3028-aa1b-e5ebcde6f3c8. Also wieso habe ich nun 3 verschiedene GUIDs?

    Eigentlich wollte ich die GUID zur Verschlüsselung nehmen, dass nur dieses Programm auf ein Script zugreifen kann. Hierzu muss jedoch gewährleistet sein dass sich die GUID niemals ändert.
    Mal aus einem meiner Sourcecodes kopiert:

    VB.NET-Quellcode

    1. Dim attributes As Object() = System.Reflection.Assembly.GetExecutingAssembly.GetCustomAttributes(GetType(System.Runtime.InteropServices.GuidAttribute), True)
    2. Dim guid As String = DirectCast(attributes(0), System.Runtime.InteropServices.GuidAttribute).Value


    Wie pico schon sagte ist das nicht unbedingt als Basis für eine Verschlüsselung geeignet.

    Welche Kommunikation willst Du denn verschlüsseln ?
    Es geht um meine MySqlLib, da dachte ich ich nehme einfach die GUID der Applikation in welche meine Lib eingebunden wird, diese GUID wird zusammen mit dem gemeinsamen, über DiffieHellmanverfahren generierten, Schlüssels mit MD5 gehashed und als VerschlüsselungsKey genutzt.

    Hiermir wäre sichergestellt dass NUR diese Applikation auf das Script zugreifen kann.
    Wofür dieser ganze Aufwand für das "Verschlüsselungsverfahren" ?
    - dein DiffieHellman ist eh nur Pseudo und damit leicht zu brechen da keine hohen Primzahlen verwendet werden
    - GUID ist wie von pico beschrieben von jeder Anwendung beliebig zu setzen
    - mit dem Code oben wirst Du wohl eh immer die GUID der DLL übermitteln
    - .NET ist wenn man es drauf anlegt eh leicht zu disassemblieren

    Ich würde daher eher auf ein einfaches, aber "ausreichend sicheres" Verschlüsselungsverfahren setzen.
    Das Problem des "ausreichend sicheres" Verschlüsselungsverfahren ist, das es sowohl in PHP als auch VB verfügbar sein muss. Klar ist das mein DiffieHellman nicht 100% sicher ist, aber dennoch besser als Klartext übertragungen.

    Zudem könnte man mit dem Extra Schlüssel nicht nur ins Verschlüsseln mit einfließen lassen sondern auch vom Script den Schlüssel überprüfen lassen.
    Ich will einfach erreichen dass der User die Möglichkeit hat ein Passwort anzugeben dass nur seine Anwendung auf das Script zugreifen kann und nicht sich jemand einfach die SQL Library nimmt, durch Sniffen die URL zum Script heraus bekommt und eigenstänige Queries ausführen kann.
    Das Problem der Passwortangabe im Programm ist jedoch das es als Klartext in der Exe drin steht oder durch Disassemblieren schnell rausgefunden werden kann. Deswegen wollte ich Informationen aus der Anwendung selbst nutzen, diese irgendwie miteinander verknüpfen, so dass es erschwert wird mit der Lib Schaden anzurichten. Ausschließen kann man es natürlich nicht, aber aufjedenfall den Kreis eingrenzen.