Cơ chế tốt nhất để tạo khóa cấp phép [đóng]


35

Những phương pháp / thư viện / công cụ nào mọi người sẽ đề xuất để tạo khóa cấp phép (những thứ AAAAA-AAAAA-AAAAA-AAAAA-AAAAA mà bạn đưa vào khi đăng ký phần mềm)?

Bất kỳ vấn đề cần chú ý khi thực hiện chúng?

(Hiện tại tôi quan tâm đến vấn đề này như một điều chung chung hơn là ngôn ngữ cụ thể, vì vậy hãy nêu ngôn ngữ bạn đang sử dụng nếu giải pháp của bạn là ngôn ngữ cụ thể).

Câu trả lời:


23

Nó giống như khi lưu trữ mật khẩu. Bạn nên có một khóa bí mật duy nhất chỉ được biết đến với trình tạo và chương trình của bạn. Sử dụng phím này để thao tác các chi tiết (tên người dùng, mật khẩu, tổ chức, v.v.) và sau đó băm nó. Sau đó, bạn có thể thực hiện mã hóa chuyển giao tầm thường trong Base32 trên hàm băm hoặc chỉ cần di chuyển nó sang chuỗi hex nếu bạn không quan tâm đến định dạng.

Bất kỳ vấn đề cần chú ý khi thực hiện chúng?

Giữ bí mật và riêng biệt. Làm cho việc thực hiện của bạn trở nên ngẫu hứng. Nếu ai đó phá vỡ nó, bạn có thể dễ dàng thay đổi việc thực hiện? Một triển khai phổ biến trên các ứng dụng máy tính để bàn là sử dụng máy chủ từ xa để xác thực giấy phép. Điều này loại bỏ khả năng ai đó có thể đảo ngược kỹ thuật băm hoặc thuật toán bằng cách kiểm tra chính ứng dụng.


11
BASE32 để mã hóa là tiêu chuẩn. Nó cho phép người dùng dễ dàng nhập cảnh;) (Base32: lựa chọn các chữ cái và số rất khác nhau. Ví dụ: 0 và O không nằm trong chuỗi)

1
@Pierre: Tôi không biết điều đó, thông tin tốt!
Josh K

10

Câu hỏi tương tự này đã được hỏi trên SO và câu trả lời được chấp nhận là khá tốt. Ý chính chung là:

  • Lấy tên người dùng
  • Nối tên người dùng và khóa bí mật và băm với (ví dụ) SHA1
  • Giải nén băm SHA1 dưới dạng một chuỗi ký tự chữ và số. Đây là "Khóa sản phẩm" của từng người dùng
  • Trong chương trình, thực hiện cùng một hàm băm và so sánh với khóa sản phẩm. Nếu bằng nhau, OK.

1

Phương pháp ưa thích của tôi là tạo 10.000 chuỗi giấy phép ngẫu nhiên, SHA1 (hoặc MD5) băm chúng hoặc HMAC chúng, và bao gồm tất cả hoặc một phần của hàm băm SHA1 / MD5 trong chính tệp thực thi. Khi một chuỗi giấy phép được nhập, bạn chỉ cần sử dụng mã bị xáo trộn để tạo ra hàm băm của chuỗi và so sánh nó với các chuỗi trong danh sách. Nếu nó phù hợp, đó là một giấy phép hợp lệ. Nếu bạn sắp hết giấy phép, hãy phát hành phiên bản mới có nhiều chuỗi hơn.

Chỉ sử dụng 96 bit đầu tiên của hàm băm SHA1 là đủ. Vì vậy, 10.000 giấy phép sẽ mất dưới 120KB. Việc tạo thuật toán tạo khóa hoặc tạo bộ tạo khóa sẽ là không thể. Lỗ hổng duy nhất bạn phải lo lắng là kỹ thuật đảo ngược hoặc bỏ qua. (Hoặc ai đó phân phối khóa hợp lệ của họ.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.