Kontrola licencnych klucov   otázka

Bezpečnost

Prosim vas o radu, nemam v tomto smere ziadne skusenosti. Mam aplikaciu vo VB 2005 a potrebujem vediet, ako naprogramovat kontrolu licencnych klucov.

V praxi funguju licencne kluce napr. tak, ze licencny kluc obsahuje aj nazov firmy, ktora licencie k SW zakupila. Ak tam zmenim jedno pismenko, uz to nefunguje. Moja otazka je, ze ako mohol vyvojar zapracovat do EXE takuto kontrolu? Ako to vlastne funfuje? Vyvojar predsa dopredu nepozna zakaznikov...

Prepacte taketo mozno elementarne otazky, ale ozaj potrebujem poradit uplne zaklady.

Dakujem za kazdy tip, ktory ma navedie na spravny smer.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak nejjednodušší příklad asi představuje způsob, kdy sériové číslo tvoří MD5 hash jména zadaného uživatelem. Pokud sériové číslo zadané zákazníkem nebude odpovídat hodnotě MD5 hash uživatelského jména zadaného zákazníkem, potom bude neplatné. Hodnota MD5 hash se na základě žádosti o licenci vygeneruje ve firmě a odešle zákazníkovi. Toto je samozřejmě ten nejprimitivnější způsob ochrany který bych rozhodně nedoporučoval. Navíc musíte brát v potaz, že reverse engineering autentizačního mechanismu pokud je v .NET bez nějaké zvláštní obfuskace je otázkou maximálně hodin.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ochrana licence funguje tím způsobem, že se zadané hodnoty (kód a jméno klienta) uloží na relativně bezpečné místo (do registru nebo souboru). Při každém spuštění programu se hodnoty rozkódují a porovnají. Licenční klíč se dá generovat třeba takto: [jméno klienta]-[program]-[verze]-[expirace] (např. Honza-Firefox-2-24/12/2008) a to celé se zakóduje pod nějakým heslem nějakým rozkódovatelným algoritmem (třeba Rijindael - http://www.freevbcode.com/ShowCode.Asp?I... ). Při kontrole se registrační klíč rozkóduje, vysplituje spojovníkem a přečtou se hodnoty... Potom to můžete už udělat jak chcete - můžete porovnávat jméno klienta se zakódovaným jménem nebo s online databází klientů. Konec konců do registračního klíče můžete uložit i nějakou zákaznickou identifikaci... Potom se dá rozkódovaná hodnota doplňovat o věci, jako třeba demo licence nebo OEM verze a podobně...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dakujem za vysvetlenia, je mi to jasnejsie. Len tomu nerozumiem, ze ja vytvorim program a potom zacnem na zaklade objednavok generovat licencne kluce. Vy pisete, ze cast kluce moze byt [jmeno klienta] napr. "Honza". Ako ale moj program vie, ze to bude "Honza"? V case, ked si Honza objedna licenciu, je uz EXE hotove. Ako program kontroluje prvu cast licencneho kluca prave na retazec "Honza"?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Program bude po klientovi požadovat dva licenční údaje - jméno klienta a licenční kód. Při dekódování a rozsplitování se hodnoty jména porovnají a podle toho se zjistí pravost. Program také může disponovat online ověřováním proti databázi klientů...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jen bych poznamenal, že jakákoliv online aktivace je neskutečné obtěžování zákazníků nehledě na to, že v některých firmách je na pracovních stanicích i serverech z bezpečnostních důvodů zakázán přístup do Internetu...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Doporučoval bych použít nějaké komerční řešení, existuje mnoho firem, které tohle dělají a mají své osvědčené postupy. Není to nic jednoduchého a rozhodně se to nedá řešit na úrovni .NETu, to se dá jednoduše disassemblovat a prolomit, v tom není problém. Jediné rozumné možnosti jsou ochrany na úrovni assembleru a i ty se dají prolomit, ale není to jednoduché. Prolomit ochranu psanou v .NETu je oproti tomu sranda.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Většina licenčních systémů kompatibilních s .NET aplikacemi je psaná právě v .NET a pokud se aplikuje spolehlivá obfuskační technologie tak vám garantuju, že dál než na MSIL kód se nedostanete a to je v podstatě assembler.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nemáte nějaký typ na takovou to technologii?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

MSIL je sice skoro assembler, ale je to dost high-level assembler, umí např. objekty. Ano, obfuskace provede některé věci, jako třeba přejmenování metod tak, aby nebylo poznat, co dělají, ale s kódem uvnitř toho zase tolik nedělá. Neříkám, že je lehké to prolomit, ale dá to nesrovnatelně méně práce, než když v klasickém assembleru necháte program skočit třeba do půlky instrukce a je to udělané tak, aby to fungovalo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback