2012-12-19 24 views
7

Tôi có một chương trình được gửi kèm tệp dữ liệu mà tôi không muốn người dùng cuối đọc trực tiếp. Trong khi nó nằm trên ổ đĩa cứng của người dùng, nó luôn được mã hóa (ngay cả khi chương trình của tôi đang sử dụng nó).Phân phối tệp để người nhận không thể đọc được

Tuy nhiên, tôi không thể bao gồm tệp dữ liệu với trình cài đặt vì chúng rất dễ trích xuất. Tôi đã thử các tính năng mã hóa nhưng chúng dường như không hoạt động tốt.

Vì vậy, tôi đang cố gắng tìm cách phân phối tệp để người dùng không thể đọc tệp khi tệp đang được phân phối. Tôi nghĩ về nhiều cách khác nhau để tải xuống tệp thông qua PHP qua HTTP dưới dạng được mã hóa nhưng thật khó để thực hiện điều đó mà không cần gửi khóa mã hóa. Chưa kể, tôi không có kinh nghiệm về các vấn đề HTTP.

Tôi đã đưa ra một số ý tưởng để giải quyết vấn đề đó nhưng chúng không hoạt động hoặc chúng rất phức tạp. Tôi thà nghĩ ra một giải pháp ít phức tạp hơn.

Điều này không phải là quá an toàn nhưng nó phải đứng lên chống lại trình thám thính HTTP. Điều gì sẽ là cách tốt nhất để thực hiện điều này?

+0

Tại sao mã hóa không hoạt động? Nếu bạn mã hóa nó bằng các khóa chỉ được biết đến với ứng dụng của bạn, thì vấn đề là gì? –

+4

Tôi không hiểu tại sao mã hóa không hoạt động, nhưng tôi phải nói ... chính xác * những gì bạn đang cố gắng đạt được ở đây? Đây chỉ là tiếng reeks của "cái quái gì vậy? Tại sao bạn lại làm điều này?" –

+2

Xem thêm: [** Vấn đề XY **] (http://meta.stackexchange.com/q/66377/135887). – Charles

Trả lời

3

Về cơ bản, không thể thực hiện điều này hoàn toàn bằng phần mềm. Nếu chương trình của bạn chạy trên máy của người dùng có thể đọc nó, thì một chương trình khác chạy trên máy của người dùng có thể đọc nó; và người dùng có thể kiểm soát chương trình khác và trích xuất nội dung của tệp.

Bạn có thể gây khó khăn; mọi người thường gọi tính năng này là DRM và một số chương trình DRM sẽ trở nên khó khăn để phá vỡ. Chúng trở nên mạnh hơn và khó phá vỡ hơn, nếu bạn sử dụng phần cứng chuyên dụng, xử lý giải mã và không cho phép bất kỳ thành phần không được bảo mật nào truy cập dữ liệu. Nhưng cuối cùng, luôn luôn có một cách xung quanh nó; một người dùng chuyên dụng luôn có thể kết nối một máy phân tích logic với bus thích hợp và đọc dữ liệu của nó.

Nếu bạn thực sự muốn phát điên, bạn có thể xây dựng bằng phần cứng giả mạo; về cơ bản phần cứng có các tính năng tự hủy được tích hợp sẵn, vì vậy nếu người dùng cố mở máy tính, nó sẽ phá hủy dữ liệu. Đây là một hành vi khá thù địch, nhưng trong một số trường hợp là cần thiết (các thẻ mang các khóa mã hóa mà bạn không muốn kẻ thù có thể lấy được).

Tuy nhiên, tất cả điều này khá khó khăn, tốn kém và khiến cuộc sống của bạn trở nên khó khăn hơn. Và nếu có một lỗ nhỏ ở đâu đó, thì một người có thể bẻ khóa, sau đó họ có thể trích xuất dữ liệu và đăng nó ở đâu đó; không có vấn đề gì khi hầu hết mọi người bỏ qua, miễn là một người có thể, trò chơi đã hết.

Và tất nhiên, tất cả các cơ chế dựa trên phần cứng này yêu cầu người dùng của bạn phải có phần cứng chuyên dụng hỗ trợ chúng; nếu bạn đang làm một giải pháp hoàn toàn dựa trên phần mềm, thì trò chơi đã sẵn sàng. Người dùng chỉ có thể trỏ một trình gỡ lỗi vào bộ nhớ của chương trình và đọc nội dung của tệp khi bạn đọc nó.

Vì vậy, bạn có thể nên đánh giá lại xem bạn có cần một tính năng như vậy hay không. Dữ liệu này có thực sự nhạy cảm không? Nếu vậy, bạn có thể giữ nó dưới sự kiểm soát của bạn, và yêu cầu phần mềm để nói chuyện qua internet với máy chủ của bạn cung cấp một cổng vào chức năng được cung cấp bởi nó?

Nếu bạn cung cấp thêm một chút thông tin về trường hợp sử dụng của mình, chúng tôi có thể cung cấp các giải pháp tốt hơn cho vấn đề cụ thể của bạn. Ví dụ, nếu bạn chỉ muốn bảo vệ nếu từ người dùng bình thường, bạn có thể mã hóa nó, và làm xáo trộn khóa và mã giải mã nó. Điều này sẽ không cung cấp nhiều sự bảo vệ, nhưng nó có thể ngăn không cho ai đó nhìn thấy nội dung bằng cách liếc nhìn nó. Nếu đó là để cấp phép, bạn có thể xem xét sử dụng máy chủ bảo mật hoặc máy chủ cấp phép bảo mật mà phần mềm của bạn sẽ kiểm tra lại.Nhưng không có cách tiếp cận nào sẽ là chống đạn; cuối cùng, nếu bạn đang cố gắng làm điều gì đó với dữ liệu này trên máy của người dùng cuối, họ sẽ có thể trích xuất dữ liệu từ quy trình của bạn.

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