Als je perse hardwarecomponenten wilt gebruiken om je beveiliging op te baseren, dan kun je bijv. de volgende
simpele, misschien wat omslachtige en absoluut niet waterdichte methode (even mezelf indekken

) gebruiken:
1) Schrijf een tool die van netwerkkaarten/harddisks/CPU/etc in staat is om er een unieke serienummer uit te halen en er een (ge-encrypte) sleutel van te genereren
2) De klant start deze tool op en wordt voor de keuze gesteld welk van de componenten (kan er ook 1 zijn) er gebruikt moet worden om een sleutel te laten genereren (schrijf er
help instructies bij zodat ie weet waarover het gaat etc. etc)
3) De gegenereerde sleutel wordt samen met de keuze voor het component in een bestand opgeslagen. Deze stuurt de klant naar jullie bedrijf op
4) Jullie bedrijf stopt wat extra data (zoals de licensieperiode etc) bij de van de klant ontvangen data (alles in een structure bijv.), calculeert een 32-bits CRC over de data en stopt die ook in het structure, encrypt het structure met de sleutel van de klant en stuurt het terug naar de klant
5) Jullie applicatie leest de data in (hierin staan nu o.a.: de gegenereerde sleutel, welk component, licensieperiode etc), decrypt de data (met de gebruikte sleutel, leest ie bijv. uit een bestandje dat je bij stap 3 hebt opgeslagen om de schijf van de klant met zijn medeweten!!), verifieert de data middels de 32-bits CRC. Klopt dit alles, dan kunnen er acties ondernomen worden.
Dit is een korte omschrijving van iets dat wel werkt. Zoals ik ook al aangaf: het is misschien wat omslachtig (doet denken aan de
public/
private key methode) en ook dit is
natuurlijk niet waterdicht. Wat wel een voordeel is, is dat de klant op deze manier zelf kan aangeven welk hardware component hij wil gebruiken om zijn sleutel mee te genereren. Als hij bijvoorbeeld de software op 2 computers wil gebruiken (maar niet tegelijkertijd), dan zou hij het bijvoorbeeld op een component kunnen kiezen dat redelijk makkelijk te verwisselen is (als een netwerkkaart).
Tevens zou je tool moeten kijken welke componenten een
valid serienummer teruggeven. Als je de WMI API van Windows gebruikt en je vraagt bijv. de CPU-ID van je processor op, dan zul je niet altijd een bruikbare serienummer terugkrijgen afhankelijk van het processortype (soms is het: 123456789, nou dan weet je het wel

).
Tevens nog eens de opmerking: zoals ook Korben al opmerkte is alleen je MAC-adres altijd een uniek serienummer wereldwijd. Met een kleine kanttekening: er zijn kaarten die middels drivers een MAC-adres kunnen aannemen. Maar reset je de kaart/installeer je je OS opnieuw etc., dan heeft je kaart zijn oorspronkelijke MAC-adres weer. Ik heb nog geen kaart gezien waarop je het hardgebakken MAC-adres kunt 'flashen', maar als iemand dat wel heeft gezien, dan graag een reactie (leer ik ook weer wat). Er zijn dus harddisks/processoren/floppy die
of helemaal geen serienummer hebben
of geen unieke
of wel natuurlijk
BIOS zou ik zowieso niet doen.
Vind het sowieso een beetje kansloos om je software afhankelijk van 1 machine te maken eigenlijk.. als iemand een nieuwe computer koopt, moet ie ook nieuwe software aanschaffen

Hier heb je natuurlijk wel gelijk in, maar geef dan tenminste ook een manier waarvan jij denkt dat het wel meer kans van slagen heeft.

lijkt een beetje op de WinXP beveiliging op deze manier

Same here.
[
Voor 8% gewijzigd door
Primal op 03-04-2003 23:25
]