2009-02-17 30 views
7

Tôi đang làm việc trên một ứng dụng tôi muốn bán một số ngày - sớm hơn là sau này! Tôi muốn phát triển một kế hoạch số serial đơn giản hợp lý để bảo vệ nó.Cách tiếp cận tốt để phát triển trình tạo số/trình xác minh số sê-ri đơn giản là gì?

  • Một sự kết hợp số/thư đơn giản không quá 25-30 ký tự chữ và dài (nghĩ chìa khóa sản phẩm Microsoft)
  • Không yêu cầu người dùng nhập thông tin cá nhân (như địa chỉ thư điện tử) như một phần của xác minh

Tôi đã suy nghĩ về một chút (rất ít) này và tôi nghĩ rằng mật mã khóa công khai là một nơi tốt để bắt đầu. Tôi có thể tạo ra một chuỗi xác định giấy phép (như số sê-ri tích phân của SKU + plain ole), băm nó, mã hóa nó và mã hóa số sê-ri + số nhận dạng thành khóa gồm 25 chữ số (hoặc như vậy). Sau đó, ứng dụng sẽ giải mã khóa thành số sê-ri và "chữ ký", tạo mã băm nhận dạng, giải mã "chữ ký" bằng cách sử dụng khóa công khai tương ứng và so sánh nó với mã băm nhận dạng được tạo.

Về cơ bản, khóa sản phẩm mang hai phần dữ liệu: số sê-ri mà người dùng xác nhận quyền sở hữu cộng với chữ ký của loại chương trình có thể sử dụng để xác minh xác nhận quyền sở hữu đó. Tôi không biết nếu 25 ký tự chữ và số (mã hóa 5 bit cho mỗi bit thực tế là 120 bit) là đủ cho tất cả điều này. Nhưng, nó không phải bảo mật mã hóa, chỉ đủ để các mã không dễ đoán. Tôi ổn với độ dài khóa ngắn và băm ngắn.

Theo như triển khai, ứng dụng được viết trong Objective-C cho Mac OS X, nhưng việc chèn mã vào ứng dụng Cocoa dễ dàng như thế nào, tôi có thể viết mã xác minh ngay thẳng C.

Trả lời

9

Tôi sẽ không sử dụng bất kỳ mật mã mạnh nào, vì bạn phải giải mã nó trong chương trình anyways, làm cho keygens hoặc ít nhất là vết nứt dễ dàng để làm.

Tôi sẽ thực hiện như sau - lấy số, gồm 25 chữ số. Bây giờ, hãy thêm một số quy tắc, chẳng hạn như: - số phải chia hết cho 31 - số phải bắt đầu và kết thúc bằng chữ cái cuối ...

Luôn tạo khóa bằng các quy tắc này. Sử dụng 20 quy tắc trở lên (càng nhiều càng tốt). Khi triển khai ứng dụng, hãy sử dụng số quy tắc nhỏ hơn, ví dụ: 10 để kiểm tra xem khóa có hợp lệ hay không. Các quy tắc này sau đó sẽ được gỡ bỏ và được sử dụng để tạo keygen.

Trên mỗi cập nhật, hãy bật một trong các quy tắc mà bạn không sử dụng trước đây. Nếu quy tắc được chọn chính xác, bạn sẽ vô hiệu hóa hầu hết các khóa được tạo bởi keygens.

+0

Mật mã sẽ làm cho nó dễ nứt như thế nào? Bất kỳ phương pháp nào tôi sử dụng để kiểm tra khóa có thể bị bẻ khóa, vậy điều gì làm cho mật mã dễ bị tổn thương hơn? Làm cách nào để bạn viết trình tạo cho các số tuân thủ nhiều quy tắc đó? Có vẻ như rất khó để làm. – Alex

+0

@Alex: Thuật toán mã hóa thường được thực hiện trong thư viện chuẩn (bạn không bao giờ nên triển khai thực hiện mã hóa của riêng bạn trừ khi bạn thực sự biết mình đang làm gì). Mã của bạn có chứa khóa riêng, vì vậy các trình bẻ khóa chỉ cần có được điều đó, không cần phải đảo ngược mã của trình tạo động cơ. – bh213

1

Tôi thích phương thức @ bh213, tuy nhiên, nó sẽ không ngăn không cho các phím được sửa khi bạn cập nhật các quy tắc số sê-ri của mình. Trên một lưu ý tùy chọn cá nhân hơn, tôi thích trình tạo khóa dựa trên phương pháp quy tắc đặt vì nếu tin tặc phải vá lỗi nhị phân, bạn sẽ nhận được đánh giá xấu về phần mềm của mình vì bản vá lỗi của hacker và chiến đấu giữa bạn và tin tặc.

Tùy chọn của tôi dựa trên sự thật phần mềm phổ quát: Phần mềm có thể và sẽ bị tấn công nếu đủ phổ biến, không có sơ đồ, phương pháp khéo léo nào ngăn điều này xảy ra. Trận chiến này là giữa các nhà phát triển những người có nguồn lực hạn chế và thời gian hạn chế và một nhóm hacker với thời gian không giới hạn trên tay của họ.

Sơ đồ tạo khóa chính của bạn thực sự chỉ để giữ chân khách hàng trung thực - dễ dàng hơn để cắt séc từ Tài khoản phải trả hơn là để Bảo mật đăng xuất trên trình tạo khóa.

+0

Bất cứ ai đánh giá phần mềm bằng cách sử dụng một bản sao nứt có lẽ không phải là loại người sẽ thu hút khách hàng trả tiền dù sao, đúng không? Nhưng bạn nói đúng. Bất kỳ kế hoạch nào cũng sẽ bị phá vỡ. Đó là một thực tế của cuộc sống.Tôi đang cố gắng không đè nặng gánh nặng cho các khách hàng trung thực. – Alex

1

Vì Redbeard 0x0A là chính xác, CD-Keys là để giữ khách hàng trung thực một cách trung thực. Nó chỉ cần một chút ít khó khăn để mua sản phẩm của bạn hơn là tìm một keygen.

Nếu bạn đang bán sản phẩm của mình trực tuyến, thì cách tốt nhất để làm điều đó là cung cấp cho họ tệp có chứa sê-ri. Bằng cách này, nối tiếp có thể dài nhưng bạn muốn và thanh toán khách hàng của bạn không phải lãng phí thời gian vào một chuỗi nối tiếp.

Đề án nối tiếp có thể rất đơn giản:

  1. Có một không gian nối tiếp lớn (25 chử thường là khoảng 10 , nhưng chỉ cần sử dụng một tập tin nối tiếp và làm 80 char x 16 hàng cho một chìa khóa khoảng 10)
  2. Chọn một vài quy tắc để giảm không gian số serial hợp lệ đến 100 lần những gì bạn nghĩ rằng bạn sẽ bán trong mơ của bạn wildest giấc mơ

Nếu sản phẩm của bạn có thành phần trực tuyến (như trò chơi trực tuyến nhiều người chơi), bạn có thể giảm số xê-ri hợp lệ bằng cách sử dụng trình tạo số ngẫu nhiên mã hóa mạnh (để chọn một tập con của các khóa dựa trên quy tắc, quy tắc sử dụng sản phẩm để kiểm tra nối tiếp, máy chủ sử dụng danh sách nối tiếp đúng) . Khi sản phẩm của bạn yêu cầu dịch vụ từ máy chủ của bạn, máy chủ có thể kiểm tra nối tiếp.

+0

Không, không có thành phần trực tuyến. Tôi sẽ không muốn đi tuyến đường giấy phép bởi vì điều đó có vẻ quá cồng kềnh. Tôi nghĩ rằng chìa khóa là những gì mọi người quen thuộc và cũng là điều dễ dàng nhất. Như bạn đã nói, nó phải dễ dàng hơn để mua nó hơn là để crack nó. – Alex

1

Tất cả các quy tắc cho dù phát triển tùy chỉnh hoặc mã hóa dựa trên có thể được tìm thấy và nứt. Hãy nghĩ về người bạn đang xây dựng ứng dụng của bạn. Nhiều sản phẩm của tôi dành cho các doanh nghiệp, vì vậy họ sẽ mua hoặc sản phẩm của họ. Họ thường sẽ không chạy một phiên bản bị tấn công trên mạng của họ. Những người tìm kiếm một keygen không có khả năng mua sản phẩm của bạn bất kể. Bạn chỉ muốn đảm bảo rằng bạn không làm phiền khách hàng của mình đến mức họ không muốn mua ứng dụng của bạn nữa.

Điều đó đang được nói, tôi đã viết một thư viện cho loại điều này để sử dụng trong các ứng dụng của tôi dựa trên mã hóa AES. Tôi đang bán nó với giá 25 đô la và sử dụng cụm từ mật khẩu và muối để làm cho số sê-ri của bạn trở nên độc đáo. Nếu bạn quan tâm, bạn có thể tìm thấy tại đây: http://simpleserials.com

0

Có một bài đăng trên blog sigpipe.macromates.com giải thích cách bạn sử dụng mật mã khóa riêng/công khai để kiểm tra số sê-ri. Nó có thể xác minh rằng người dùng và kết nối Serialnumber. (Ký/Xác minh). Tôi có lẽ sẽ thêm một ít muối, chỉ để chắc chắn.

Vì bài đăng này là từ năm 2004, bạn nên xem xét độ dài khóa được đề xuất tại keylength.com.

Các vấn đề liên quan