กลไกที่ดีที่สุดสำหรับการสร้างคีย์ใบอนุญาต [ปิด]


35

ผู้คนจะแนะนำวิธีการใด / ไลบรารี่ / เครื่องมือสำหรับการสร้างคีย์ใบอนุญาต (สิ่งที่น่ารักที่ AAAAA-AAAAA-AAAAA-AAAAA-AAAAA-AAAAA ที่คุณใส่เมื่อคุณลงทะเบียนซอฟต์แวร์)?

gotchas ใด ๆ ที่ต้องระวังเมื่อใช้งานพวกเขา?

(ในขณะนี้ฉันสนใจสิ่งนี้เป็นเรื่องทั่วไปมากกว่าเฉพาะภาษาดังนั้นเพียงระบุว่าคุณใช้ภาษาใดหากโซลูชันของคุณเฉพาะภาษา)

คำตอบ:


23

มันเหมือนกับเกี่ยวกับการจัดเก็บรหัสผ่าน คุณควรมีรหัสลับเฉพาะที่รู้จักเฉพาะเครื่องกำเนิดและโปรแกรมของคุณ ใช้คีย์นี้เพื่อจัดการรายละเอียด (ชื่อผู้ใช้รหัสผ่านองค์กร ฯลฯ ) แล้วแฮช จากนั้นคุณสามารถทำสิ่งที่เข้ารหัสการถ่ายโอนเล็กน้อยในBase32บนแฮชหรือย้ายมันไปยังสตริงฐานสิบหกหากคุณไม่สนใจรูปแบบ

gotchas ใด ๆ ที่ต้องระวังเมื่อใช้งานพวกเขา?

เก็บความลับเป็นความลับและแยกจากกัน ทำให้การใช้งานของคุณเป็นไปไม่ได้ หากมีคนหยุดพักคุณสามารถเปลี่ยนการใช้งานได้อย่างง่ายดายหรือไม่? การใช้งานทั่วไปอย่างหนึ่งในแอปพลิเคชันเดสก์ท็อปคือการใช้เซิร์ฟเวอร์ระยะไกลเพื่อตรวจสอบใบอนุญาต สิ่งนี้จะลบความเป็นไปได้ที่บางคนสามารถย้อนกระบวนการแฮชหรืออัลกอริทึมโดยตรวจสอบแอปพลิเคชันเอง


11
BASE32 เพื่อเข้ารหัสเป็นมาตรฐาน อนุญาตให้ป้อนข้อมูลผู้ใช้ได้ง่าย;) (ฐาน 32: การเลือกตัวอักษรและตัวเลขที่แตกต่างกันมากตัวอย่างเช่น 0 และ O ไม่ได้อยู่ในลำดับ)

1
@ เปียโน: ฉันไม่รู้ว่าเป็นข้อมูลที่ดี!
Josh K

10

คำถามเดียวกันนี้ถูกถามเกี่ยวกับ SO และคำตอบที่ได้รับการยอมรับนั้นค่อนข้างดี ส่วนสำคัญคือ:

  • ใช้ชื่อผู้ใช้
  • เชื่อมต่อชื่อผู้ใช้และรหัสลับและแฮชกับ (ตัวอย่าง) SHA1
  • คลายแฮช SHA1 เป็นสตริงตัวอักษรและตัวเลข นี่คือ "รหัสผลิตภัณฑ์" ของผู้ใช้แต่ละคน
  • ภายในโปรแกรมทำแฮชเดียวกันและเปรียบเทียบกับรหัสผลิตภัณฑ์ ถ้าเท่ากับตกลง

1

วิธีที่ฉันชอบคือการสร้าง 10,000 ไลเซนส์สุ่ม, SHA1 (หรือ MD5) แฮชพวกมันหรือ HMAC และรวมถึงแฮช SHA1 / MD5 ทั้งหมดหรือบางส่วนในตัวมันเอง เมื่อป้อนสตริงใบอนุญาตคุณเพียงแค่ใช้รหัส obfuscated เพื่อสร้างแฮชของสตริงและเปรียบเทียบกับสตริงที่อยู่ในรายการ หากตรงกับมันเป็นใบอนุญาตที่ถูกต้อง หากคุณมีไลเซนส์ต่ำให้ปล่อยเวอร์ชันใหม่พร้อมสตริงเพิ่มเติม

การใช้แฮช SHA1 96 บิตแรกก็เพียงพอแล้ว ดังนั้น 10,000 ไลเซนส์จะใช้ต่ำกว่า 120KB การสร้างอัลกอริทึมของคีย์หรือการสร้างตัวสร้างคีย์นั้นเป็นไปไม่ได้ ช่องโหว่เดียวที่คุณต้องกังวลคือวิศวกรรมย้อนกลับหรือบายพาส (หรือบางคนแจกจ่ายรหัสที่ถูกต้อง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.