it-swarm-eu.dev

Nejlepší mechanismus pro generování licenčních klíčů

Jaké metody/knihovny/nástroje by lidé navrhovali pro generování licenčních klíčů (ty krásné věci AAAAA-AAAAA-AAAAA-AAAAA-AAAAA, které vložíte při registraci softwaru)?

Máte nějaké případy, které byste měli při implementaci dávat pozor?

(V tuto chvíli mě to zajímá spíše jako obecná věc než jazyková specifikace, tak jen uveďte, jaký jazyk používáte, pokud je vaše řešení specifické pro jazyk).

35
Jon Hopkins

Je to stejné jako při ukládání hesel. Měli byste mít jedinečný tajný klíč známý pouze generátoru a vašemu programu. Pomocí tohoto klíče můžete manipulovat s podrobnostmi (uživatelské jméno, heslo, organizace atd.) A poté je hashovat. Pak můžete udělat něco triviálního přenosu kódování v Base32 na hash nebo jednoduše přesunout do hex řetězce, pokud vám nezáleží na formátu.

Máte nějaké případy, které byste měli při implementaci dávat pozor?

Udržujte tajemství v tajnosti a oddělte se. Usnadněte si implementaci. Pokud někdo přestane, můžete snadno změnit implementaci? Jednou běžnou implementací stolních aplikací je použití vzdáleného serveru k ověření licence. Tím se odstraní možnost, že by někdo mohl zpětně analyzovat hash nebo algoritmus kontrolou samotné aplikace.

23
Josh K

Stejná otázka byla položena na SO a přijatá odpověď je docela dobrá. Obecný Gist je:

  • Vezměte si uživatelské jméno
  • Spojte uživatelské jméno a tajný klíč a hash s (například) SHA1
  • Rozbalte hash SHA1 jako alfanumerický řetězec. Toto je „Product Key“ jednotlivého uživatele
  • V rámci programu proveďte stejné hashování a porovnejte jej s kódem Product Key. Pokud je to stejné, OK.
10
Walter

Moje upřednostňovaná metoda je vygenerovat 10 000 náhodných licenčních řetězců, hash SHA1 (nebo MD5) nebo HMAC a zahrnout všechny nebo část hash SHA1/MD5 do samotného spustitelného souboru. Když je zadán licenční řetězec, jednoduše použijete zmatený kód pro vygenerování hash řetězce a jeho porovnání s těmi v seznamu. Pokud se shoduje, jedná se o platnou licenci. Pokud máte málo licencí, uvolněte novou verzi s více řetězci.

Stačí použít pouze prvních 96 bitů hash SHA1. 10 000 licencí by tedy zabralo méně než 120 kB. Algoritmické generování klíčů nebo vytvoření generátoru klíčů by bylo nemožné. Jedinou zranitelností, kterou byste si museli dělat starosti, je reverzní inženýrství nebo obcházení. (Nebo někdo, kdo distribuuje svůj platný klíč.)

1
David Schwartz