2013-07-30 32 views
5

Tôi đang phát triển một ứng dụng Android sử dụng Mono cho Android của Xamarin. Tôi hiện đang nỗ lực thêm khả năng mua trong ứng dụng bằng API Google Play. Để làm như vậy, tôi cần gửi cho Google khóa cấp phép công khai từ bên trong ứng dụng của tôi. Về vấn đề này, Google giới thiệu như sau: Khuyến nghịChuỗi bảo mật trong APK

An ninh: Nó là rất khuyến khích mà bạn không cứng mã giấy phép công cộng chủ chốt chuỗi giá trị chính xác theo quy định của Google Play. Thay vào đó, bạn có thể xây dựng toàn bộ khóa cấp phép công khai chuỗi khi chạy từ các bản chất, hoặc lấy nó từ một kho lưu trữ được mã hóa, trước khi chuyển nó tới hàm tạo. Cách tiếp cận này khiến cho các bên thứ ba độc hại khó khăn hơn trong việc sửa đổi chuỗi khóa cấp phép công khai công khai trong tệp APK của bạn.

Tôi chưa bao giờ xử lý mã hóa, hack/bẻ khóa hoặc bất kỳ khía cạnh nào khác về bảo mật phần mềm, vì vậy tôi không chắc chắn cách thực hiện lời khuyên của Google. Câu hỏi của tôi là làm thế nào để đầy đủ bảo mật chuỗi trong APK Android được tạo bằng Mono dành cho Android mà không phải là chuyên gia bảo mật?

Trả lời

5

Không quá đậm, nhưng tôi tin rằng bạn có thể bỏ qua đề xuất của họ một cách an toàn. Những lợi ích an ninh của những gì họ đang đề xuất là tối thiểu ở mức tốt nhất.

Đối với một cuộc thảo luận chi tiết hơn đọc: How to protect Google Play public key when doing InApp Billing

Sự thật là không ai trong số các phương pháp mô tả ở đó là hoàn toàn an toàn. Nếu ai đó được xác định để tìm ra chìa khóa công khai của bạn, họ sẽ. Không có vấn đề gì bạn làm, khóa công khai sẽ kết thúc được truyền cho ctor, do đó, một người sử dụng độc hại luôn luôn có thể kiểm tra nó vào thời điểm này. Tất cả "trò chơi" mà họ đang đề xuất chỉ làm cho việc này trở nên khó khăn hơn một chút, nhưng chắc chắn không phải là không thể.

Tôi nghĩ rằng đặt cược tốt nhất của bạn là chấp nhận điều này cho những gì nó thực sự là. Phím này là công khai vì lý do và bạn cần phải sống với thực tế là nó có thể bị xâm nhập dễ dàng. Vì mọi người khác ngủ ngon vào ban đêm khi biết điều này, tôi không thấy lý do gì khiến bạn không nên làm như vậy :)

Nếu bạn thực sự không thể ngủ vào ban đêm và muốn làm điều gì đó .. Đặt chìa khóa vào mã của bạn hai ký tự đầu tiên được chuyển. Sau đó, trong thời gian chạy, hãy chuyển đổi hai ký tự trở lại trước khi sử dụng phím. Điều này là đủ để bảo vệ bạn khỏi các cuộc tấn công tự động của bạo lực. Các cuộc tấn công thông minh bạn không thể làm gì cả.

Edit:

Nếu bạn đang tìm kiếm một ngành công nghiệp cách tiêu chuẩn để bảo vệ mã của bạn, sử dụng một obfuscator thương mại. Những công cụ này được thiết kế cho mục đích này. Một số ví dụ là Mono for Android, code obfuscation. Đảm bảo sử dụng các phiên bản thương mại đầy đủ tính năng bao gồm mã hóa chuỗi.

+0

Cảm ơn bạn đã trả lời. Nhưng tôi vẫn muốn biết một số phương pháp tiêu chuẩn công nghiệp tốt để giải quyết vấn đề này, vì khóa Google Play không phải là chuỗi khóa duy nhất trong ứng dụng của tôi (ví dụ: khóa ứng dụng Facebook cũng như có thể trong tương lai). – Ramsay

+0

Sử dụng công cụ obfuscation thương mại. Những công cụ này đi qua mã của bạn và làm cho nó khó dịch hơn. Thương mại thường bao gồm một tính năng mã hóa chuỗi tự động mà làm cho chắc chắn rằng tất cả các chuỗi hardcoded của bạn (như phím) không bao giờ giữ plaintext trong ứng dụng của bạn và được giải mã trong thời gian chạy. Rất nhiều obfuscators có sẵn cho C#/android.Họ rất dễ dàng để tích hợp vào quá trình xây dựng của bạn và họ làm tất cả việc nâng hạng nặng cho bạn trong lĩnh vực bảo vệ mã của bạn. – talkol

+0

Dưới đây là danh sách một số kỹ thuật được sử dụng bởi các bộ obfuscators thương mại để làm phiền các hacker tiềm năng đến chết: http://www.ssware.com/cryptoobfuscator/features.htm. Luôn luôn ghi nhớ rằng một hacker xác định sẽ vẫn có thể vượt qua tất cả điều này .. nhưng nó sẽ được ít hơn nhiều niềm vui cho anh ta;) – talkol