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