Điểm:1

Cách tốt nhất để tạo khóa cài đặt kiểu cũ

lá cờ ps
vsz

Tất cả các phương pháp hay nhất hiện tại về việc tạo và sử dụng khóa mật mã mà tôi đã tìm thấy, đề cập đến việc tạo dữ liệu được mã hóa từ dữ liệu thô. Tuy nhiên, có (hoặc ít nhất là một vài thập kỷ trước) một thông lệ trong đó khóa không được sử dụng để giải mã hoặc xác thực bất kỳ thứ gì, nó chỉ được sử dụng cục bộ như một bằng chứng về quyền sở hữu (rất tuần).

Vào những ngày trước khi có internet, khi bạn mua một phần mềm, bạn đã có nó trên một phương tiện vật lý (đĩa mềm hoặc CD) và có một "chìa khóa" được in trên đó, bạn phải nhập mã này trong khi cài đặt. Không cần kết nối internet, không có máy chủ xác thực bất cứ điều gì hoặc kiểm tra xem khóa đã được sử dụng chưa. Trình cài đặt chỉ kiểm tra xem khóa có tuân theo một số quy tắc có thể phân biệt khóa hợp lệ với khóa không hợp lệ hay không.

Bất kỳ ai cũng có thể sao chép khóa từ chủ sở hữu hợp pháp và cài đặt phần mềm mà không được phép, không có gì ngăn cản hành vi này, nhưng những khóa như vậy vẫn được sử dụng vì không phải ai cũng làm điều đó, do đó, nó đã ngăn ít nhất một phần cơ sở người dùng vi phạm bản quyền .

Nếu được thực hiện ngay hôm nay, trong một môi trường hoàn toàn ngoại tuyến, thì lý tưởng nhất nên tạo một khóa như vậy như thế nào? Nó không nên quá dài để có thể nhập thủ công trong khi cài đặt và vẫn có hàng triệu kết hợp có thể. Tuy nhiên, rất khó xảy ra trường hợp một thay đổi ngẫu nhiên nhỏ trong một khóa hợp lệ dẫn đến một khóa hợp lệ khác.

Một cách tiếp cận ngây thơ sẽ là một nửa số bit của khóa là hằng số bí mật được xác định trước, nửa còn lại là ngẫu nhiên, nhưng chúng được trộn lẫn theo một số logic và tổng kiểm tra cũng được trộn lẫn. Vẫn khả thi cho mục đích đã định và nó có khả năng được sử dụng rộng rãi. Tuy nhiên, có cách tiếp cận hiện đại, tốt hơn nào để tạo các "khóa cài đặt ngoại tuyến" như vậy không?

kelalaka avatar
lá cờ in
Tin tặc sẽ luôn tìm cách vượt qua lớp bảo vệ khóa của bạn, miễn là ứng dụng của bạn khả thi. Xem trong ngành công nghiệp trò chơi.
lá cờ ps
vsz
@kelalaka: tất nhiên là có, tôi chưa bao giờ nói là không, nhưng trừ khi 100% cơ sở người dùng phụ thuộc vào tin tặc, còn không thì sẽ có rất nhiều người hoạt động. Chỉ vì một tên trộm đủ động cơ có thể mở bất kỳ ổ khóa nào, điều đó không có nghĩa là chúng ta không bao giờ nên khóa cửa.
Điểm:2
lá cờ my

Tuy nhiên, có cách tiếp cận hiện đại, tốt hơn nào để tạo các "khóa cài đặt ngoại tuyến" như vậy không?

Có hai cách tiếp cận rõ ràng:

  • Một là sử dụng Mã xác thực thư (MAC); đây là một thuật toán mật mã lấy một chuỗi và một khóa bí mật, đồng thời tạo ra một 'thẻ'; ý tưởng là, nếu không biết khóa bí mật, thật khó để tạo một cặp chuỗi/thẻ khác hợp lệ.

Vì vậy, những gì bạn sẽ làm với tư cách là nhà sản xuất là chọn một khóa bí mật ngẫu nhiên (mà bạn sẽ chèn vào sản phẩm của mình). Để tạo 'khóa sản phẩm' (nhãn được đính kèm với sản phẩm), bạn sẽ lấy một số thứ tự, chạy mã đó qua MAC để tạo thẻ và đặt số thứ tự và thẻ làm khóa sản phẩm.

Sau đó, khi sản phẩm được cài đặt, người dùng nhập khóa sản phẩm; phần mềm tách số thứ tự và thẻ; sau đó nó chạy số thứ tự thông qua MAC (sử dụng khóa bí mật mà nhà sản xuất đã chèn) và so sánh thẻ được tính toán đó với thẻ có trong khóa sản phẩm - nếu chúng khớp nhau, bạn tiếp tục cài đặt.

Ưu điểm là điều này dễ dàng và độ dài của khóa sản phẩm có thể được kiểm soát dễ dàng (với MAC tốt, chẳng hạn như HMAC, thẻ 20 bit sẽ khiến xác suất đoán ngẫu nhiên ít hơn một phần triệu mỗi lần đoán - nếu đó không đủ thấp, chỉ cần chọn một thẻ dài hơn).

Nhược điểm của điều này là nếu một hacker giỏi tách sản phẩm của bạn ra, họ có thể trích xuất khóa bí mật, sau đó tiếp tục tạo khóa sản phẩm của riêng họ theo ý muốn. Đã có những nỗ lực thiết kế các triển khai chống lại điều này ("mật mã hộp trắng"); những người đã được tìm thấy là đáng thất vọng. Tuy nhiên, nếu nỗ lực của kẻ tấn công nhiều hơn nỗ lực chỉ phân phối khóa sản phẩm tốt đã biết, thì có thể chấp nhận được.

  • Cách tiếp cận khác là sử dụng thuật toán chữ ký khóa công khai (với chữ ký ngắn).

Ý tưởng này cũng tương tự, ngoại trừ việc nhà sản xuất tạo một cặp khóa công khai/riêng tư và chèn khóa chung vào thiết bị.

Nhà sản xuất sử dụng khóa riêng để tạo 'khóa sản phẩm'; khi cài đặt, phần mềm sử dụng bản sao khóa chung của nó để xác thực khóa sản phẩm.

Ưu điểm là chúng tôi không còn phải lo lắng về việc tin tặc có được khả năng tạo khóa sản phẩm mới - để làm điều đó, anh ta cần khóa riêng và khóa đó không có trên thiết bị.

Nhược điểm là độ dài của thẻ - ngay cả các thuật toán có chữ ký ngắn nhất (mà tôi tin là BLS) vẫn có chữ ký dài vừa phải (ví dụ: 256 bit cho 100 bit bảo mật); và không giống như vỏ MAC, chúng không thể bị cắt bớt.

Có những công ty đã sử dụng chữ ký cho khóa sản phẩm của họ - tôi cho rằng họ chỉ là thiểu số.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.