Autor Téma: Informácie o držiteľovi licencie v programe  (Přečteno 743 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Informácie o držiteľovi licencie v programe
« kdy: 28-04-2019, 14:22:00 »
Hm, nikde nemôžem nič nájsť. A to tu bola o tom debata.
Kde uložiť tieto informácie? Tak aby sa nedali zneužiť. Pritom neobmedzovať držiteľa licencie. Vypíšem všetky možnosti čo mi prišli na um.
  • Samostatný súbor. Bude problém ak sa stratí a dá sa preniesť hoc kde. Jedine žeby som mal nejakú kontrolu originality tohto súboru
  • Do DB. To by som tam musel dávať ručne pre každého zákazníka. Ale aj tá sa dá vymeniť :(  Výsledky práce, projekty, sú každý v samostatnom súbore (MS Access)
  • Overovanie cez internet. To by som si musel komplet vyriešiť a starať sa o to. Nestojí mi to zato a pochybujem žeby som to zvládol
  • Priamo zadať do exe. Ale čo bude v prípade update/upgrade?
Ako poistku proti zneužitiu ich chcem použiť na každej strane každej zostavy.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1134
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:Informácie o držiteľovi licencie v programe
« Odpověď #1 kdy: 28-04-2019, 20:06:08 »
Záleží na tom, jak máš udělanou licenci.

Buď uživatel dostane klíč a aktivuje si to kde chce. Pak asi je složité zabránít, aby si to přeneslo hoci kde.
Pokud už to tam nahráváš sám, tak samozřejmě je to složitější dostat z DB. Možnost je např. i registry. Ale vždy to bude asi nějak přístupné.

Možnost je také generovat klíč podle nějaké identifikace počítače. Pak to nejde přenést a je jedno, kam to dáš.
Ověřování přes internet není zas tak složité. Prostě si uděláš DB a přes web vracíš ano/ne, pokud od toho nečekáš zázraky.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #2 kdy: 28-04-2019, 20:50:20 »

Licencia je doslovne viazaná na meno. Mňa nezaujíma na koľkých strojoch a kde to bude. Ale aby to mohol používať len majiteľ licencie.
Ide o viazanú činnosť , ktorá je viazaná na osvedčenie. To je vždy na meno. Aj keď sa tá činnosť, ako taká, bude vykonávať pod hlavičkou napr. sro. Vždy tam musí byť zodpovedná osoba s osvedčením, ktorá každý dokument podpisuje a pečiatkuje (na každej 5 strane). Pečiatka je vydaná na meno. Neviem či sa teraz vydanie pečiatky kontroluje, ale v minulosti to tak nebolo. V každom prípade si platnosť overuje kontrolný orgán (okresný alebo krajský hasiči). Doklad o kontrole musí mať každý dokument. Bez toho sa nikto nehne. Sú to "projekty" požiarnej ochrany. Platnosť programu vlastné končí s neobnovením osvedčenia (vydanie nového), ktoré sa robí raz za 5 rokov. Síce už len formálne, ale musí sa urobiť.
Aby sa Jano s Mišom nedohodli a kúpili spolu jeden program, ktorý budú používať každý samostatne.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 845
  • Karma: 45
    • Verze Delphi: 10.3
Re:Informácie o držiteľovi licencie v programe
« Odpověď #3 kdy: 28-04-2019, 22:42:44 »
A stačilo by, když by se nějaký text (jméno) z toho licenčního souboru tiskl na sestavy? To by kamarády snad odradilo od používání... V tom případě bych doporučoval samostatný licenční soubor (s nějakým kontrolním součtem, aby nestačilo prostě jen přepsat hexa editorem obsah).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #4 kdy: 29-04-2019, 08:10:48 »
Ten kontrolný súčet by som musel asi dať do exe?
Samozrejme, že v takom prípade by som obsah licenčného súboru šifroval.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1453
  • Karma: 35
    • Pepak.net
Re:Informácie o držiteľovi licencie v programe
« Odpověď #5 kdy: 29-04-2019, 08:40:21 »
Excellent
Rated 1 time
Když už to chceš dělat takhle, tak licenční údaje zašifruj asymetrickou šifrou (např. RSA) soukromým klíčem a před použitím to dešifruj veřejným klíčem. Pak nejde vytvořit falešnou registrační informaci, protože nikdo kromě tebe nemá šifrovací klíč. Ale samozřejmě nezabráníš úpravě kódu, která natvrdo použije nějaké konkrétní údaje.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #6 kdy: 29-04-2019, 09:05:18 »
Citace
Ale samozřejmě nezabráníš úpravě kódu, která natvrdo použije nějaké konkrétní údaje.
Niečo také veľmi nepredpokladám.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #7 kdy: 30-04-2019, 21:30:44 »
Když už to chceš dělat takhle, tak licenční údaje zašifruj asymetrickou šifrou (např. RSA) soukromým klíčem a před použitím to dešifruj veřejným klíčem. Pak nejde vytvořit falešnou registrační informaci, protože nikdo kromě tebe nemá šifrovací klíč. Ale samozřejmě nezabráníš úpravě kódu, která natvrdo použije nějaké konkrétní údaje.
O šifrovaní viem, ako sa u vás hovorí, "velké koulový". Na internete som akosi nepochodil. Ale hlavne všade sa píše, že šifrovanie sa robí verejným kľúčom a dešifrovanie súkromným. Ja to potrebujem presne naopak. To dešifrovanie musím urobiť samozrejme v aplikácii.
Na nete sú na to programy. Jeden som si stiahol (OpenPGPStudio), aby som vedel o čo ide. Majú video návod v angličtine. Tú neovládam. Môj záver je, že podobné programy sú mi nanič.
Prosím o nejaké nakopnutie.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1453
  • Karma: 35
    • Pepak.net
Re:Informácie o držiteľovi licencie v programe
« Odpověď #8 kdy: 01-05-2019, 08:28:35 »
O šifrovaní viem, ako sa u vás hovorí, "velké koulový". Na internete som akosi nepochodil.
https://en.wikipedia.org/wiki/RSA_(cryptosystem)
https://cs.wikipedia.org/wiki/RSA

Citace
Ale hlavne všade sa píše, že šifrovanie sa robí verejným kľúčom a dešifrovanie súkromným. Ja to potrebujem presne naopak. To dešifrovanie musím urobiť samozrejme v aplikácii.
V případě RSA jsou operace šifrování a dešifrování identické, liší se pouze klíčem. Takže je úplně jedno, jestli:
- šifruješ veřejným, dešifruješ soukromým
- šifruješ soukromým, dešifruješ veřejným
- dešifruješ veřejným, šifruješ soukromým
- dešifruješ soukromým, šifruješ veřejným
Operace jsou vždy stejné a vždy dojdeš k tomu, že po provedení obou operací dostaneš původní data. Liší se sémantika toho, co se děje (např. #1 je klasické šifrování a #2 je klasický podpis).

Citace
Na nete sú na to programy. Jeden som si stiahol (OpenPGPStudio), aby som vedel o čo ide. Majú video návod v angličtine. Tú neovládam. Môj záver je, že podobné programy sú mi nanič.
Prosím o nejaké nakopnutie.
Stáhni si nějakou kvalitní šifrovací knihovnu a použij ji. Třeba OpenSSL. Nepiš si to sám podle specifikací šifry.

A nebo se na to úplně vykašli a prostě jen licenční údaje zamaskuj (zašifruj je běžnou blokovou šifrou s pevně daným klíčem), stejně to pravděpodobně nikdo crackovat nebude a kdyby náhodou ano, pravděpodobně to nedokážeš udělat tak, aby to představovalo vážnější problém - ani profesionálové, kteří se o to snaží desítky let, zatím nedokázali crackery natrvalo zastavit nebo i jen významně zpomalit.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #9 kdy: 01-05-2019, 08:51:02 »
Ja som si o RSA niečo prečítal. Boli vždy to teoretické veci, ktorým vôbec nerozumiem (neovládam takú vysokú matiku) a sú mi nanič.
Citace
Otazkou je spis zda bude mit cilova skupina uzivatelu Tve aplikace motivaci a umysl ji kdy cracknout.
V tomto konkrétnom prípade to nepredpokladám. V druho prípade to už pripadá do úvahy.
Citace
Stáhni si nějakou kvalitní šifrovací knihovnu a použij ji. Třeba OpenSSL. Nepiš si to sám podle specifikací šifry.

A nebo se na to úplně vykašli a prostě jen licenční údaje zamaskuj (zašifruj je běžnou blokovou šifrou s pevně daným klíčem), stejně to pravděpodobně nikdo crackovat nebude a kdyby náhodou ano
Mne to takto jednoducho stačí.
Keď si stiahnem nejakú knižnicu či šifrovaciu komponentu tak mi stále vŕta v hlave jeden problém. Licenčný súbor potrebujem zašifrovať mimo program. To si mám na to vytvoriť zvlášť program či nejaký *.bat súbor?
Ten odkaz na cs.wiki som predtým našiel a začal čítať. Rýchlo som to prestal, keďže mi to nijako nepomôže :)  Viď hore.
« Poslední změna: 01-05-2019, 08:54:47 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1453
  • Karma: 35
    • Pepak.net
Re:Informácie o držiteľovi licencie v programe
« Odpověď #10 kdy: 01-05-2019, 09:15:50 »
Keď si stiahnem nejakú knižnicu či šifrovaciu komponentu tak mi stále vŕta v hlave jeden problém. Licenčný súbor potrebujem zašifrovať mimo program. To si mám na to vytvoriť zvlášť program či nejaký *.bat súbor?
Ano.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Informácie o držiteľovi licencie v programe
« Odpověď #11 kdy: 01-05-2019, 09:19:14 »
Ja bych na tvem miste pouzil reseni, ktere navrhuje Vandrovnik: nekam chranene zapsat licencni informaci a tu pouzivat vsude, kde to jde, pocinaje caption hlavniho formu: Tato verze je licencovana pro ..... a totez napsal do vsech vystupu/sestav nekam pod podpis/razitko: Bylo vytvoreno aplikaci xxx licencovanou pro ....

Mame zkusenost, ze to bezneho BFU/BFA odradi, protoze malokdo si troufne risknout reputaci firmy, pokud to pouziva profesionalne.

Otazka je, jak moc to chranit, protoze ty asi zadne sifrovaci ani komunikacni knihovny bezne v aplikaci nepouzivas. Ja bych to nejspis udelal tak, ze bych si vytvoril vlastni certifikacni autoritu, vygeneroval certifikat a dal informace, ktere potrebuju. To vsechnu bych udelal pres batch pomoci OpenSSL. A zrejme totez bys docilil i tim PGP studiem.

V aplikaci bych to pak vytahnul, treba spoustenim OpenSSL:
Kód: Delphi [Vybrat]
  1. openssl x509 -enddate -subject -noout -in key.pem
coz vrati:

notAfter=Aug 23 09:16:05 2018 GMT
subject= /C=CZ/L=Prague/O=Xxx  s.r.o./OU=Development/CN=Petr Fejfar/emailAddress=development@xxx.cz


Samozrejme se k tem informacim da dostat i programove, ale to zalezi uz na pouzite knihovne apod.


Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Informácie o držiteľovi licencie v programe
« Odpověď #12 kdy: 01-05-2019, 09:30:35 »
Tady https://stackoverflow.com/questions/10175812/how-to-create-a-self-signed-certificate-with-openssl je, jak ten certifikat vytvorit. Informace by sis nastrkat pomoci
Kód: Delphi [Vybrat]
  1. -subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com"
  2.  
Tady je seznam pouzitelnych poli v tom subject https://stackoverflow.com/questions/6464129/certificate-subject-x-509
« Poslední změna: 01-05-2019, 09:32:19 od pf1957 »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #13 kdy: 01-05-2019, 09:42:48 »
Díky za informácie. Stiahol som si
  • inštalačku OpenSSL,
  • knihu openssl-cookbook.pdf,
  • z internetu The Most Common OpenSSL Commands
Musím si to naštudovať (RSA i OpenSSL) a potom sa rozhnodnúť.
Citace
Ja bych na tvem miste pouzil reseni, ktere navrhuje Vandrovnik: nekam chranene zapsat licencni informaci a tu pouzivat vsude, kde to jde, pocinaje caption hlavniho formu: Tato verze je licencovana pro ..... a totez napsal do vsech vystupu/sestav nekam pod podpis/razitko: Bylo vytvoreno aplikaci xxx licencovanou pro ....
Základnú zostavu, ktorá sa používa pre všetky ostatné, som si takto navrhol od samého začiatku. Na ten formulár to môžem hodiť. Mne to úplne stačí na úrovni BFU.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #14 kdy: 01-05-2019, 09:47:18 »
A čo znamená to BFA? Neviem to nikde nájsť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Informácie o držiteľovi licencie v programe
« Odpověď #15 kdy: 01-05-2019, 11:21:54 »
A čo znamená to BFA? Neviem to nikde nájsť.
To uz zrejme zafungovala nejaka cenzura - byvalo to i na Wikipedii. Vyznam Analogicky: U=User A=Admin

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Informácie o držiteľovi licencie v programe
« Odpověď #16 kdy: 01-05-2019, 11:38:34 »
A čo znamená to BFA? Neviem to nikde nájsť.
Jinak v te Wikipedii kdysi psali, ze jsou to ve svete nerozsirene zkratky puvodem ze stredni/vychodni Evropy. Uz si nepamatuju, jestli tam byly vypsany primo zeme, kde se to pouziva. V kazdem pripade, kdyz jsme pred ~20 lety vyrazili smerem Singapore, HongKong aj., tak se s tim mistni odbornici setkali poprve v zivote a kdyz se jim vysvetlil vyznam, tak cudne klopili zrak, ze si takhlr nekdo dovoluje oznacovat zakazniky=chleborarce...

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 279
  • Karma: 12
    • Verze Delphi: D5, XE2
Re:Informácie o držiteľovi licencie v programe
« Odpověď #17 kdy: 01-05-2019, 19:37:12 »
Já jsem si vždycky myslel, že to vzniklo jako analogie na BFG z Dooma  :)
nil

Offline vq

  • Nováček
  • *
  • Příspěvků: 15
  • Karma: 1
    • Verze Delphi: 2006, 2010, XE5, 10 Seattle
Re:Informácie o držiteľovi licencie v programe
« Odpověď #18 kdy: 02-05-2019, 09:16:44 »
Samozřejmě netuším, v jaké cenové kategorii a cílové skupině se pohybuješ, ale nabízí se celkem levné HW řešení např. https://www.microcosm.com/products/dinkey-pro-fd/prices
Správu licencí včetně časových limitů můžeš dělat i na dálku zasláním licenčního souboru (nepoužívám, mám to jen na in-house programy). Ohledně cracknutí - je to jen otázka motivace a ceny. Jistě se dá dobře odstranit nějaké předčasné ukončení programu v případě, že se nenajde licence. Ale pokud např. někde ve složitějším výpočtu uvnitř programu použiješ konstantu (případně algoritmus), zabudovanou do donglu, tak crack sice bez donglu bude fungovat, ale bude prostě dávat nesmyslé výsledky. Tohle najít/odstranit by asi dalo dost práce, nestojí to nikomu za tu námahu.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Informácie o držiteľovi licencie v programe
« Odpověď #19 kdy: 02-05-2019, 09:47:48 »
Až takú vedu z toho robiť netreba. Motiváciu na cracknutie veľmi nevidím. Ani jeden program sa nebude používať vo veľkom. Budem rád ak sa vôbec budú používať ;)
Ide o základnú laickú ochranu. To s tou konštantou sa mi páči. Len mi tam stále straší "if ... then". HW riešenie vôbec neberiem do úvahy.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Informácie o držiteľovi licencie v programe
« Odpověď #20 kdy: 02-05-2019, 10:20:36 »
Len mi tam stále straší "if ... then".
Uplne primo te strasit nemusi: muzes treba pouzit float constantu 1.0, kterou prenasobis nektere vypocty. Ulozis ji jako string a budes prevadet pomoci StrToFloatDef , kde si jako Default das  nejakou nespravnou hodnotu, idealne pro kazdy vypocet jinou. Fantazii se meze nekladou :-)

Offline vq

  • Nováček
  • *
  • Příspěvků: 15
  • Karma: 1
    • Verze Delphi: 2006, 2010, XE5, 10 Seattle
Re:Informácie o držiteľovi licencie v programe
« Odpověď #21 kdy: 02-05-2019, 11:01:32 »
Fantazii se meze nekladou :-)
Jojo, je to triviální a tuším, že dost nepříjemné pro odstranění. Ono už jen povědomí o tom, že bez donglu to dává špatné výsledky, není zrovna atraktivní scénář pro nelegálního uživatele.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Informácie o držiteľovi licencie v programe
« Odpověď #22 kdy: 02-05-2019, 11:23:45 »
Ono už jen povědomí o tom, že bez donglu to dává špatné výsledky, není zrovna atraktivní scénář pro nelegálního uživatele.
Ta technika nemusi byt nutne pouzita s donglem, nejaka cisla si muze nastrkat treba i do certifikatu napr. do sekce X509v3 Exceptions a princip zustane stejny.

Offline vq

  • Nováček
  • *
  • Příspěvků: 15
  • Karma: 1
    • Verze Delphi: 2006, 2010, XE5, 10 Seattle
Re:Informácie o držiteľovi licencie v programe
« Odpověď #23 kdy: 02-05-2019, 11:32:37 »
Ta technika nemusi byt nutne pouzita s donglem, nejaka cisla si muze nastrkat treba i do certifikatu napr. do sekce X509v3 Exceptions a princip zustane stejny.
Rád věřím, jenže certifikáty atd. jsou pro mě španělská vesnice, ta implementace s donglem mi byla bližší

Offline Faltynek

  • Plnoletý
  • ***
  • Příspěvků: 177
  • Karma: 2
    • Verze Delphi: D5 Enterprise, D2009
Re:Informácie o držiteľovi licencie v programe
« Odpověď #24 kdy: 02-05-2019, 14:37:26 »
Ahoj,
pamatuju se, že jsem naprogramoval takovou malou databázovou aplikaci ještě v dobách paradoxu a na formuláři jsem měl vysvíceno jméno podniku a uživatele. To se načítalo z jedné zaheslované tabulky, heslo na otevření tabulky znal jenom ten exe soubor a byl to shluk nic neříkajících znaků aby si to nemohl úplně jednoduše uživatel v exe najít třeba v norton comandru a tabulka se instalovala někam mimo adresář programu pod nějakým nevinným názvem, aby nepadla hned do oka, kdyby ji chtěl někdo moc trápit.
Jasně že to není silná ochrana, ale nebyl to program za milióny aby se s tím někdo dlouho zabýval a pro laiky...
Samozřejmě že součástí instalačky musela být tabulka už vyplněná pro konkrétního uživatele, ale asi by se dala stahovat nějak nenápadně z netu.

Dalik.
Dalibor (D2009 Enterprise, dřív D5Enterprise)