Rắc rối hóa chương trình (2)
Đánh dấu mờ phần mềm (wartermarking software) là một ứng dụng hay nếu ta có thể thực sự viết O. Ý nghĩa căn bản của cái gọi là "đánh dấu mờ" như sau:
- Giả dụ ta có một chương trình P đem bán cho khách hàng, nhưng muốn tránh việc khách hàng copy P cho người khác, ta tìm cách, với mỗi khách hàng G, trộn vào trong P một đoạn mã C(G) nào đó, biến P thành P(G).
- P(G) về mặt chức năng thì giống hệt P, và việc thêm C(G) vào P không ảnh hưởng nhiều đến hiệu suất của P.
- C(G) còn có một thuộc tính toán học nào đó mà ta có thể kiểm tra bằng cách kiểm tra P(G). Thuộc tính toán học này có thể dùng để chứng minh rằng P(G) thuộc về khách hàng G. Như vậy, hai khách hàng G1 và G2 khác nhau sẽ có hai chương trình P(G1) và P(G2) khác nhau [và ta kiểm tra được điều đó], dù là chúng giống hệt nhau về mặt chức năng.
- C(G) có thể xem như con dấu hay chữ ký của khách hàng G đã đóng vào P. Như thế G sẽ không đem bản của mình cho người khác được.
- Dĩ nhiên là cả hệ thống phải được thiết kế sao cho việc lấy C(G) ra khỏi P(G) là cực kỳ khó làm. Ngoài ra, bất kể người ta biến đổi P(G) như thế nào (rắc rối hóa nó, dịch nó sang ngôn ngữ khác, vân vân), thì "con dấu" C(G) vẫn bị dính kèm.
<< Home