Tôi cần lưu trữ thông tin nhạy cảm (khóa mã hóa đối xứng mà tôi muốn giữ riêng tư) trong ứng dụng C ++ của mình. Cách tiếp cận đơn giản là làm điều này:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
Tuy nhiên, việc chạy ứng dụng thông qua strings
quy trình (hoặc bất kỳ quy trình nào khác trích xuất chuỗi từ ứng dụng nhị phân) sẽ tiết lộ chuỗi trên.
Những kỹ thuật nào nên được sử dụng để che khuất những dữ liệu nhạy cảm như vậy?
Biên tập:
OK, rất nhiều bạn đã nói rằng "tệp thực thi của bạn có thể được thiết kế ngược" - tất nhiên! Đây là một con vật cưng của tôi, vì vậy tôi sẽ nói một chút ở đây:
Tại sao 99% (OK, có lẽ tôi phóng đại một chút) tất cả các câu hỏi liên quan đến bảo mật trên trang web này đều được trả lời bằng một dòng torrent là "không có cách nào khả thi để tạo một chương trình hoàn toàn an toàn" - điều đó không hữu ích câu trả lời! Bảo mật là một thang trượt giữa khả năng sử dụng hoàn hảo và không có bảo mật ở một đầu và bảo mật hoàn hảo nhưng không có khả năng sử dụng ở đầu kia.
Vấn đề là bạn chọn vị trí của mình trên thang trượt đó tùy thuộc vào những gì bạn đang cố gắng làm và môi trường mà phần mềm của bạn sẽ chạy. Tôi không viết ứng dụng cho cài đặt quân sự, tôi đang viết ứng dụng cho PC gia đình . Tôi cần mã hóa dữ liệu trên một mạng không đáng tin cậy bằng khóa mã hóa đã biết trước. Trong những trường hợp này, "bảo mật thông qua che khuất" có lẽ là đủ tốt! Chắc chắn, ai đó có đủ thời gian, năng lượng và kỹ năng có thể thiết kế ngược lại hệ nhị phân và tìm mật khẩu, nhưng hãy đoán xem? Tôi không quan tâm:
Thời gian để tôi triển khai một hệ thống bảo mật hàng đầu còn tốn kém hơn cả việc mất doanh số do các phiên bản bị bẻ khóa (không phải tôi thực sự bán cái này, nhưng bạn hiểu ý tôi). Xu hướng "cho phép làm điều đó theo cách tốt nhất có thể" của bầu trời xanh này trong lập trình giữa các lập trình viên mới là điều ngu ngốc khi ít nói.
Cảm ơn bạn đã dành thời gian trả lời câu hỏi này - chúng hữu ích nhất. Thật không may, tôi chỉ có thể chấp nhận một câu trả lời, nhưng tôi đã bầu chọn tất cả các câu trả lời hữu ích.