[NET] Beveiligen voor gebruik van een class library

Pagina: 1
Acties:

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Dag beste mensen,

Al geruime tijd surf ik over het Internet met een vraag waar ik niet snel een goed antwoord op kan vinden. Namelijk, ik wil mijn (class) library zodanig beveiligen dat het alleen mag worden gebruikt door mij geselecteerde andere assemblys (zoals applicaties).

In de eerste instantie dacht ik aan een check binnen de class library alvorens een functie wordt aangesproken. Zo'n check kan bijvoorbeeld zijn:
1. Controleren op de public key token van de aanroepende assembly (de applicatie). En dit a.d.h. van een lijst (opgeslagen intern in de class library) controleren op het toestaan voor gebruik.
2. Vorm van een licensing in de class library. Bijvoorbeeld, een static functie beschikbaar stellen welke door de aanroepende assembly eerst moet worden aangesproken, alvorens een andere functie wordt uitgevoerd. Zo'n functie binnen de class library controleert of de register key dan in orde is.

Met name dit laatste punt heb ik moeite om eraan te beginnen. Want is dit de goede manier? Zelf zat ik te denken aan een register informatie, bestaande uit een naam en een code.
De ingebouwde controle functie in de class library controleert dit dan als volgt:
a. breid de naam uit met andere informatie zoals de class library public token key
b. maakt er een SHA Hash van
c. en controleert dit met de register key welke door de applicatie met de naam mee wordt gegeven.
Zijn de beide strings identiek, dan is het gebruik van de class library toegestaan.
Nadeel: disassemblers als ILDASM kunnen je toegang tot deze manier geven.

Maar om terug te komen tot mijn vraag: wat is de beste manier om mijn class librarys zodanig te beveiligen dat niet door andere gebruikt kunnen worden, maar alleen door een geselecteerde groep van applicaties.

Ik hoop dat de vraag duidelijk is.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 01-12 20:19

Gerco

Professional Newbie

Ik heb dit eerder gedaan met een LinkDemand securitypermission. Dat werkt prima, als je alle assemblies signed met een private key van je bedrijf oid. Het is vrij makkelijk om je code te decompilen en de LinkDemand eruit te slopen, maar dan is de library natuurlijk niet meer gesigned met jouw private key.

Als je doel is om het onmogelijk te maken de library te gebruiken, geef het dan maar op. Als je doel is om het onmogelijk te maken de library ongewijzigd te gebruiken, kun je LinkDemand goed gebruiken.

Een static class met een static unlock() method kan natuurlijk ook, maar heeft precies hetzelfde probleem met een decompiler.

[ Voor 10% gewijzigd door Gerco op 12-12-2006 10:23 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Ik had wat verder moeten zoeken, maar er is al een topic hierover. Klik.

@Gerco. Bedankt voor de tip. Een oplossing zou zijn door gebruik te maken van StrongNameIdentityPermission. Onze forum collega WhoAmI is al eerder aan begonnen. klik.