Ervaringen licentie library voor .NET software? *

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Sardaukar
  • Registratie: Januari 2003
  • Laatst online: 18-09 21:01
Goedemiddag,

Ik heb de vraag gekregen om voor een bestaande .NET applicatie te kijken om deze te beveiligen met een licentie. Men heeft nu de vervelende situatie dat mensen met een kopietje er vandoor gaan waar dit niet gewenst is. Ik wil de discussie niet aangaan hoe zinvol een licentie wel/niet is, het is met name om dit soort eenvoudige misbruik tegen te gaan. Een dedicated persoon tegenhouden is zeker niet de bedoeling.

Zo eenvoudig mogelijk. Software geeft bij eerste keer opstarten een sleutel en moet contact opnemen met de klant voor de tegenhanger zodat de software vrijgegeven is voor gebruik.

Nu zou mijn eerste gedachte zijn om hiervoor een commerciële tool/library aan te schaffen en in te zetten maar het blijkt dat er best veel aanbieders zijn ook als ik me alleen beperk tot aanbieders voor specifiek .NET oplossingen. Ik ben onbekend met wie de grotere/bekendere spelers zijn op deze markt.

Heeft iemand positieve ervaringen met zo'n library en welke zou je dan aanraden? Waarschijnlijk dat het me helpt om in ieder geval de keuze wat te beperken. Overigens ben ik ook geïnteresseerd in negatieve ervaringen >:)

EDIT: Bij deze een lijst met criteria toegevoegd.
  • Geen voorkeur voor open source/commercieel
  • Goede support
  • Een licentiehouder mag in principe op meer dan 1 device installeren
  • Mogelijkheid tot koppelen aan hardware kenmerken
  • Mogelijkheid tot aanmaken van tijdelijke keys (voor evaluatie bijvoorbeeld)
  • Mogelijkheid tot online check. Omdat de devices sporadisch aan het internet hangen zal dit vooral gebruikt worden om een key eerder in te kunnen trekken indien nodig.
  • Naam opnemen in de licentie is aardig maar geen dealbreaker als dit niet mogelijk is
  • Prijs van ondergeschikt belang

[ Voor 24% gewijzigd door Sardaukar op 22-06-2018 14:12 . Reden: Lijst van criteria toegevoegd ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sardaukar schreef op donderdag 21 juni 2018 @ 15:58:
Lijstje van wat ik zelf al gevonden heb (nog niet geëvalueerd):
Waarom niet? ;) Al eens gedacht aan googlen naar reviews naar de producten uit je lijstje? Ik kan toch vrij gauw e.e.a. al ontdekken. En is Zen License Manager niet voor PHP :?

[ Voor 30% gewijzigd door RobIII op 21-06-2018 16:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Sardaukar
  • Registratie: Januari 2003
  • Laatst online: 18-09 21:01
RobIII schreef op donderdag 21 juni 2018 @ 16:19:
[...]


Waarom niet? ;) Al eens gedacht aan googlen naar reviews naar de producten uit je lijstje? Ik kan toch vrij gauw e.e.a. al ontdekken.
Ben ik ook mee bezig. Het zijn er echter dermate veel dat ik me afvraag of er een soort de facto standaard is die door meerdere mensen in gebruik is. Maar bedankt voor de link, neem deze ook even mee :)

[ Voor 4% gewijzigd door Sardaukar op 21-06-2018 16:26 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sardaukar schreef op donderdag 21 juni 2018 @ 16:24:
Het zijn er echter dermate veel...
..omdat je amper tot geen criteria stelt ;) Als je eens begint met wat criteria opstellen (waaronder een budget) dan valt er gauw genoeg het e.e.a. af ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Sardaukar
  • Registratie: Januari 2003
  • Laatst online: 18-09 21:01
RobIII schreef op donderdag 21 juni 2018 @ 16:26:
[...]

..omdat je amper tot geen criteria stelt ;) Als je eens begint met wat criteria opstellen (waaronder een budget) dan valt er gauw genoeg het e.e.a. af ;)
Je hebt helemaal gelijk. Prijs is in ieder geval van ondergeschikt belang. Ik ga even nadenken over een lijstje met criteria. Dat zal ik dan wel toevoegen aan de post.

Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Denk na over vragen als:
Moet het gekoppeld zijn aan hardware?
Moet er een online check deel van uitmaken, of is dat misschien zelfs uitgesloten?
Is een named license voldoende (waarbij de naam van de licentiehouder in de software zichtbaar is)?
Moet de software, zonder hulp van de leverancier, zijn over te zetten naar andere devices?
Mag een licentiehouder überhaupt op meer dan één device installeren?

Acties:
  • 0 Henk 'm!

  • Sardaukar
  • Registratie: Januari 2003
  • Laatst online: 18-09 21:01
Ik heb de topicstart aangepast met een lijstje met criteria. Die zal ik uitbreiden indien er nog meer duidelijk is.

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
.NET software is slecht te beveiligen - wanneer het op iemand anders zijn of haar computer draait - omdat het uit intermediate language bestaat.

Een simpele disassembler zoals DotPeek (https://www.jetbrains.com/decompiler/) maakt het mogelijk om elke .NET exe of library te openen en naar een C# project te converteren.

Daarna kun je ermee doen wat je wil.

Op mijn werk is dit ook een issue. Ik heb nog na zitten denken over een obfuscator, maar het grote nadeel is dat je dan ook geen errors meer kunt debuggen op een betekenisvolle manier.

Al met al hebben we er ons maar bij neergelegd dat het tegen iemand die het echt wil hacken, gewoon niet te beveiligen is.

We hebben uiteindelijk iets ingebouwd dat de software aan de hardware koppelt en eens in de zoveel tijd onze licentieserver raadpleegt. Dit houdt de meeste klanten wel tegen om het zomaar overal te gebruiken.

Maar echt veilig is het niet... want even decompilen en de hele controle er uitslopen is niet bepaald rocket science.

PS
We werkten eerst nog met een hardware dongle... maar het kostte mij ongeveer 2 uur om de library daarvoor allemaal SUCCESS codes terug te laten geven en het pakket te laten geloven dat alles koek en ei was ;w

[ Voor 12% gewijzigd door Lethalis op 22-06-2018 23:32 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Rutix
  • Registratie: Augustus 2009
  • Laatst online: 05-09-2024
Lethalis schreef op vrijdag 22 juni 2018 @ 23:23:
Op mijn werk is dit ook een issue. Ik heb nog na zitten denken over een obfuscator, maar het grote nadeel is dat je dan ook geen errors meer kunt debuggen op een betekenisvolle manier.
Toen wij dit gebruikte, gebruikte we https://www.preemptive.com/products/dotfuscator/overview deze heeft best goede tools om ook nadat die geobfuscate is de stacktraces leesbaar te maken en te debugging (door middel van maps die gegenereerd worden bij het process). Het werkte iig erg goed toen ik 1,5 jaar geleden dit gebruikte (samen met signing van de assemblies).

Nothing to see here!


Acties:
  • 0 Henk 'm!

  • jeroenvheel
  • Registratie: Juni 2007
  • Laatst online: 17-09 20:28
ik maak gebruik van http://www.ssware.com/cry...g/cryptolicensing_net.htm

Het kan alles wat je hebt aangegeven en nog veel meer.
De implementatie is ook echt super makkelijk !

Acties:
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Toen ik de commerciele licensing libraries evalueerde (is alweer wat jaren geleden, maar toch) voor .NET, waren ze allemaal te kraken binnen een dag, veelal omdat het gewoon mogelijk is om .NET code te dumpen en er met goede tools naar te kijken. Je ontkomt daar gewoon niet aan. Stoere tools met 'crypto' in de naam, het is allemaal niet zo zinvol, je gaat als cracker nl. niet de library kraken maar gewoon de call er naar toe. In .NET code is die makkelijk te vinden, dus je moet je code dan obfuscaten, met alle narigheid van dien.

Dat gezegd hebbende, kun je natuurlijk voor een commerciele library kiezen, ookal zijn ze te kraken, je hoeft nl. dan niet zelf iets te schrijven. Wil je het zelf schrijven, dan is signed-xml wellicht een optie, maar net als bij de commerciele tools: je gaat echt geen waterdicht systeem maken. Je maakt een xml file met daarin je license data, bv licensee, of de license een tijdelijke is en hoelang deze dan doorloopt en signed deze met een RSA private key. (https://docs.microsoft.co...s-with-digital-signatures) De hash wordt dan in de license file geplaatst en je kunt deze nu verifying door deze te testen met de public key. Dus als iemand de datum verandert in de xml dan is de hash invalid en dus de license.

Ik zou altijd zoveel mogelijk data opnemen in de license die de license koppelt aan de licensee. Dus de naam, bedrijfsnaam etc., zodat ze eerder geneigd zijn om de license te beschermen: ze willen niet dat iedereen via The Pirate Bay hun license loopt de downloaden, hun naam staat er nl. in. Met signed xml ben je vrij in wat je opneemt in de license.

Je kunt ook altijd iets opnemen in je licensing library dat contact maakt met een service. Dat maakt je licensing een stuk moeilijker te kraken: Haal bv een essentieel onderdeel van de software op vanaf de service en alleen wanneer de license klopt/geldig is. Dat essentiele onderdeel bewaar je dan in local storage zodat de user die niet mee kan nemen. Nadeel hiervan is dat je een internetverbinding eist en als dat even niet lukt de gebruiker de software niet kan gebruiken en dat zal je niet in dank worden afgenomen.

Daarmee komen we meteen bij de crux van het verhaal: hoe ver wil je gaan? in 2002-2008 had ik een in C++ geschreven library in de installer die deed alsof het een .NET control library was maar feitelijk alleen bedoelt was om de trial token (waarmee ik checkte hoelang de trial al liep) te checken. Dit was effectief maar had ook nadelen, soms werkte deze niet, en dat was klantonvriendelijk. Eis je een internetverbinding, dan is je beveiliging beter maar mensen die even in een vliegtuig zitten of geen internet verbinding hebben kunnen je software niet gebruiken. Ook dit is klantonvriendelijk.

Verder kost het maken van een licensinglibrary tijd en die tijd kun je ook besteden aan nieuwe features. Immers je software wordt echt toch wel gekraakt. Is het niet met een full license dan via de trial (want dat is vaak het zwakke punt, zeker bij commerciele libraries. Laat maar eens een file/registry monitor meelopen wanneer je je programma installeert/runt).

Dus wil je het zelf doen, dan is signed XML een oplossing: het is simpel, doeltreffend en je kunt het met simpele code genereren en testen. Wil je jezelf die tijd besparen, dan kun je een commerciele library kiezen. Beide hebben wellicht dezelfde kraakkans. Je kunt ook bv een OSS optie kiezen. Bv van Ayende: https://github.com/ayende/rhino-licensing (werkt ook met signed xml files als ik het goed heb)

Ik zie hierboven iemand signed assemblies noemen, maar dat is sinds .net 4 niet meer effectief: assemblies die verandert zijn ookal zijn ze gesigned doen het nog gewoon omdat de CLR by default niet meer de signature checkt. Tja, nooit begrepen waarom deze domme beslissing ooit is genomen, maar het is niet anders.

[ Voor 5% gewijzigd door EfBe op 24-06-2018 09:23 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Acties:
  • 0 Henk 'm!

  • Sardaukar
  • Registratie: Januari 2003
  • Laatst online: 18-09 21:01
EfBe schreef op zondag 24 juni 2018 @ 09:17:
Daarmee komen we meteen bij de crux van het verhaal: hoe ver wil je gaan?
Valide punten allemaal, bedankt voor de uitgebreide feedback.

Men beseft zich wel degelijk dat het geen waterdichte oplossing zal opleveren en dat iemand met voldoende kennis dit kan omzeilen mits er maar genoeg tijd en moeite in gestoken gaat worden.

Dat gezegd hebbende wil men domweg voorkomen dat - zoals nu mogelijk is - iemand een kopietje van de installer te pakken krijgt en daarmee alles al in handen heeft.

Ik denk dat we in eerste instantie voor een zo eenvoudige mogelijke versie gaan. Optioneel kan deze later dan uitgebreid gaan worden met eventuele features zoals een online check om te kijken of de key is ingetrokken, etc.

Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Je kunt eens naar dotnetreactor kijken van Eziriz. Die kan, naast licentiebeheer, een native exe maken, waarna decompilen niet meer meevalt.
Pagina: 1