it-swarm-id.com

Mekanisme Terbaik untuk Menghasilkan Kunci Lisensi

Metode/perpustakaan/alat apa yang akan disarankan orang untuk menghasilkan kunci lisensi (hal-hal AAAAA-AAAAA-AAAAA-AAAAA-AAAAA-AAAAA yang Anda masukkan ketika Anda mendaftar perangkat lunak)?

Adakah yang harus diwaspadai saat menerapkannya?

(Saat ini saya tertarik pada hal ini sebagai hal umum daripada spesifik bahasa, jadi sebutkan saja bahasa apa yang Anda gunakan jika solusi Anda spesifik untuk bahasa).

35
Jon Hopkins

Ini hampir sama dengan ketika menyimpan kata sandi. Anda harus memiliki kunci rahasia unik yang hanya diketahui oleh generator dan program Anda. Gunakan tombol ini untuk memanipulasi detail (nama pengguna, kata sandi, organisasi, dll) lalu hash. Anda kemudian dapat melakukan sesuatu encoding transfer sepele di Base32 pada hash atau hanya memindahkannya ke string hex jika Anda tidak peduli tentang format.

Adakah yang harus diwaspadai saat menerapkannya?

Rahasiakan rahasia dan pisahkan. Jadikan implementasi Anda tidak dapat ditingkatkan. Jika seseorang merusaknya, dapatkah Anda dengan mudah mengubah implementasinya? Salah satu implementasi umum pada aplikasi desktop adalah menggunakan server jauh untuk memvalidasi lisensi. Ini menghilangkan kemungkinan seseorang dapat merekayasa balik hash atau algoritme dengan memeriksa aplikasi itu sendiri.

23
Josh K

Hal yang sama pertanyaan ditanyakan pada SO dan jawaban yang diterima cukup bagus. Intinya adalah:

  • Ambil nama pengguna
  • Menyatukan nama pengguna dan kunci rahasia dan hash dengan (misalnya) SHA1
  • Buka kemasan hash SHA1 sebagai string alfanumerik. Ini adalah "Kunci Produk" pengguna individu
  • Di dalam program, lakukan hash yang sama, dan bandingkan dengan kunci produk. Jika sama, OKE.
10
Walter

Metode pilihan saya adalah untuk menghasilkan 10.000 string lisensi acak, SHA1 (atau MD5) hash mereka atau HMAC mereka, dan termasuk semua atau sebagian dari hash SHA1/MD5 dalam executable itu sendiri. Ketika string lisensi dimasukkan, Anda cukup menggunakan kode yang dikaburkan untuk menghasilkan hash dari string dan membandingkannya dengan yang ada di daftar. Jika cocok, itu adalah lisensi yang valid. Jika Anda kehabisan lisensi, lepaskan versi baru dengan lebih banyak string.

Menggunakan 96-bit pertama dari hash SHA1 sudah memadai. Jadi 10.000 lisensi akan memakan waktu di bawah 120KB. Pembuatan kunci algoritmik atau pembuatan generator kunci adalah hal yang mustahil. Satu-satunya kerentanan yang harus Anda khawatirkan adalah rekayasa balik atau memintas. (Atau seseorang yang membagikan kunci valid mereka.)

1
David Schwartz