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.
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
@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