2008-11-03 30 views
14

Tôi muốn tạo khóa cấp phép, thuật toán mã hóa nào bạn sẽ đề xuất?Mật mã .NET cho khóa cấp phép?

Về cơ bản đầu vào sẽ là:

tên công ty
lớn số phiên bản
ngày tạo
ngày expirey
có feature1:
có feature2:
có feature3:

ví dụ Acme Inc 5,0 20081102 20081102 0 1 0

liên quan: Which built-in .NET cryptography algorithm is the most secure?

+0

Có các câu hỏi liên quan đến SO: http://stackoverflow.com/questions/79064/cryptography-algorithm và http://stackoverflow.com/questions/179220/best-cryptography-algorithm và http: // stackoverflow. com/questions/258721/built-in-net-crypotgraphy-algorithm-là-an toàn nhất –

+1

Tại sao điều này đóng lại? Các câu hỏi khác không trả lời câu hỏi này và câu hỏi khác của ASDFdotASPX là tổng quát hơn nhiều. –

+0

Đã mở lại. Nó tương tự như, nhưng không phải là một bản sao của, các liên kết mà tôi đã cung cấp. –

Trả lời

7

Nếu bạn đang làm xác nhận về khách hàng-side, bạn muốn sử dụng mã hóa bất đối xứng. Bằng cách đó bạn không phải phân phối khóa riêng cho khách hàng. Tôi sẽ tạo ra một chữ ký RSA sử dụng SHA-256 và một khóa bit 2048. Nếu bạn làm điều đó, các hoạt động mã hóa sẽ không phải là liên kết yếu. Dĩ nhiên, một cracker có thể thay đổi mã để bỏ qua bước xác minh, nhưng không có thuật toán mã hóa nào giúp được điều đó.

Nếu bạn đang thực hiện xác thực phía máy chủ, tôi sẽ chọn HMAC dựa trên SHA-256.

10

Tôi khuyên bạn nên: Đừng dành quá nhiều thời gian vào việc bảo mật khóa của bạn. Với các ngôn ngữ biên dịch byte rất dễ dàng để dịch ngược và chỉ làm cho ứng dụng bỏ qua bước xác nhận. Không có vấn đề làm thế nào an toàn các phím của bạn, họ không quan trọng khi chức năng xác nhận của bạn luôn luôn trở lại đúng sự thật. Các phím nối tiếp luôn ở đó để giữ cho những người trung thực thành thật.

+0

Ha, ha, ha, "*** rất dễ dàng ** để dịch ngược và chỉ làm cho ứng dụng bỏ qua bước xác thực *". Vì nó rất dễ dàng, hãy tiếp tục, crack chúng tôi phiên bản mới nhất của HP Loadrunner, hoặc phiên bản mới nhất của [Burp Suite] (https://portswigger.net/burp/download.html) và cho chúng tôi thấy nó rất dễ dàng * * làm như vậy. Một blogpost là bằng chứng sẽ là đủ, ví dụ [đây là một cho một phiên bản cũ (rất) của Burp Suite] (http://blog.nibblesec.org/2013/01/anti-debugging-techniques-and-burp-suite .html). Câu hỏi ** thực ** là, bạn đã thiết kế lại bao nhiêu chương trình có giá trị? – Pacerier

+0

"* Các phím nối tiếp ở đó để giữ cho những người trung thực thành thật .. *" ** Sai **. Những người trung thực không cần các khóa nối tiếp để thành thật, một msgbox như "không sử dụng tính năng này trừ khi bạn trả tiền cho tôi trước" là đủ. ** Các phím nối tiếp ở đó để giữ cho người trung thực trung thực. ** Không trung thực, nhưng * rẻ *. [Bảo mật là vấn đề kinh tế] (https://www.google.com/search?q=economics+of+security) trước tiên, sau đó là vấn đề công nghệ thứ hai. – Pacerier

0

Nếu bạn muốn xem ví dụ về mã hóa Triple DES, bạn có thể xem my blog post về mã hóa dữ liệu trong cơ sở dữ liệu.

Bài đăng trên blog chứa video và mã nguồn.

Mặc dù tập trung vào mã hóa cột chuỗi trong cơ sở dữ liệu, bạn chắc chắn có thể sửa đổi nó để làm việc với các trường cấp phép.

Mã nguồn được viết bằng C# và sử dụng thuật toán Triple DES.

1

Bạn cần phải làm 4 điều:
số 1: Checksum ứng dụng của bạn (MD5, với bối cảnh tùy chỉnh md5)
- bối cảnh MD5 cần được encryptedly khởi
- So sánh agains tin chính/công cộng được mã hóa checksum
đoạn văn bản Checksum ứng dụng đang chạy của bạn
số 3:: không có 2 mã hóa Sử dụng phím 4096-Bit RSA Private-Public cấp giấy phép
số 4: Mã hóa bất kỳ chuỗi rất quan trọng, như "chìa khóa sai" hoặc "ok Key"

+0

MD5 là thuật toán băm bị hỏng và không nên sử dụng – Nayef

3

Đối với một khóa cấp phép, bạn không quan tâm nhiều đến việc mã hóa nó, nhưng khi ký nó. Bằng cách ký tên, bạn có thể xác thực rằng ngày hết hạn và danh sách tính năng đã bật không phải là bị làm giả với.Không cần phải ẩn (mã hóa) khóa cấp phép, vì không có mối đe dọa bạn muốn giảm thiểu bằng cách ẩn giấy phép khỏi người dùng cuối.

Chữ ký mật mã được thực hiện bằng cách băm giấy phép và sau đó mã hóa mã băm bằng khóa riêng. Vì bất kỳ ai cũng có thể giải mã băm đó bằng khóa công khai tương ứng, bất kỳ ai cũng có thể xác minh xem giấy phép có bị giả mạo không.

Chức năng CryptoAPI cơ bản để ký và xác minh là CryptSignHashCryptVerifySignature, xem Example C Program: Signing a Hash and Verifying the Hash Signature.

Tương đương .Net Framework là các lớp RSAPKCS1SignatureFormatterRSAPKCS1SignatureDeformatter.

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