Lisans Anahtarları Üretmenin En İyi Mekanizması [kapalı]


35

İnsanların lisans anahtarları üretmek için hangi yöntemleri / kütüphaneleri / araçları önereceğini (yazılım kaydettirirken koyduğunuz güzel AAAAA-AAAAA-AAAAA-AAAAA-AAAAA şeyleri) önerir mi?

Uygularken nelere dikkat etmeniz gerekti?

(Şu anda, bu konuya özel dilden ziyade genel bir şey olarak ilgileniyorum; bu nedenle, çözümünüz dile özgü ise, hangi dili kullandığınızı belirtin).

Yanıtlar:


23

Parola depolarken olduğu gibi. Yalnızca jeneratör ve programınız tarafından bilinen benzersiz bir gizli anahtara sahip olmalısınız. Ayrıntıları (kullanıcı adı, şifre, organizasyon vb.) Değiştirmek için bu anahtarı kullanın ve ardından hash yapın. Daha sonra hashtaki Base32'de kodlama işlemi yapan bir trivial transfer işlemi yapabilir veya bir formatı umursamıyorsanız basitçe altıgen bir dizgeye taşıyabilirsiniz.

Uygularken nelere dikkat etmeniz gerekti?

Sırları gizli ve ayrı tutun. Uygulamanızı geliştirilebilir hale getirin. Birisi kırılırsa uygulamayı kolayca değiştirebilir misiniz? Masaüstü uygulamalarındaki yaygın bir uygulama, lisansı doğrulamak için uzak bir sunucu kullanmaktır. Bu, uygulamanın kendisini inceleyerek birisinin bir karma veya algoritmayı tersine çevirme olasılığını ortadan kaldırır.


11
Kodlamak için BASE32 standarttır. Kolay kullanıcı girişi sağlar;) (Base32: çok farklı harf ve rakamların seçilmesi. Örneğin, 0 ve O diziliminde değildir)

1
@ Pierre: Bunu bilmiyordum, iyi bilgi!
Josh K,

10

Aynı soru SO'da da soruldu ve kabul edilen cevap oldukça iyi. Genel özü şudur:

  • Kullanıcının adını al
  • Kullanıcı adını ve gizli anahtarı ve hash'ı (örneğin) SHA1 ile birleştirin
  • SHA1 karma değerini alfanümerik bir dize olarak açın. Bu, bireysel kullanıcının "Ürün Anahtarı" dır.
  • Programda, aynı hash yapın ve ürün anahtarı ile karşılaştırın. Eşitse, tamam.

1

Tercih edilen yöntemim, 10.000 rasgele lisans dizisi, SHA1 (veya MD5) hash veya HMAC onları üretmektir ve SHA1 / MD5 hashının tümünü veya bir kısmını çalıştırılabilir öğeye dahil etmektir. Bir lisans dizesi girildiğinde, dizenin karmasını oluşturmak ve listedekilerle karşılaştırmak için yalnızca gizlenmiş kodu kullanın. Eşleşirse geçerli bir lisanstır. Lisansları azalıyorsa, daha fazla dizeyle yeni bir sürüm yayınlayın.

SHA1 karma değerinin yalnızca ilk 96 bitini kullanmak yeterlidir. Yani 10.000 lisans 120KB altına alınacak. Algoritmik anahtar üretimi veya bir anahtar üreteci oluşturmak mümkün olmazdı. Endişelenmeniz gereken tek güvenlik açığı tersine mühendislik veya atlamadır. (Veya geçerli anahtarını dağıtan biri.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.