2012-01-09 19 views
5

Các Security Controls phần trong phần tổng quan In-app Billing chỉ thị để thực hiện một "xác minh chữ ký" tại một máy chủ từ xa hơn là trong ứng dụng (chạy cục bộ trên thiết bị Android):Tại sao xác minh chữ ký trên máy chủ từ xa an toàn hơn trên thiết bị?

Bằng cách thực hiện xác minh chữ ký bạn có thể giúp phát hiện phản hồi đã bị giả mạo hoặc đã bị giả mạo. Bạn có thể thực hiện bước xác minh chữ ký này trong đơn đăng ký của mình; tuy nhiên, nếu ứng dụng của bạn kết nối với máy chủ từ xa an toàn thì chúng tôi khuyên bạn thực hiện xác minh chữ ký trên máy chủ đó.

Nhưng nếu tôi thực hiện việc xác minh chữ ký trên máy chủ từ xa, mong chỉ một yes/no hoặc true/false câu trả lời, không phải là điều này thực sự dễ dàng hơn để đánh chặn và sửa đổi bởi một kẻ tấn công?

Và nếu câu trả lời từ máy chủ từ xa là chữ ký khác thì cách xác minh chữ ký thứ hai cục bộ trên thiết bị an toàn hơn làm chữ ký đầu tiên (Market)?

Tôi đang thiếu gì?

Cập nhật: @alf lưu ý chính xác rằng nếu máy chủ cũng chịu trách nhiệm cung cấp nội dung đã mua và xác minh chữ ký được thực hiện trên máy chủ, ngay cả khi kẻ tấn công xâm phạm ứng dụng, máy chủ sẽ không phân phối nội dung đã mua thông qua thanh toán trong ứng dụng. Điều này là tầm thường và được hiểu rõ.

Những gì tôi không đề cập ban đầu là tôi đang thực sự đề cập đến một kịch bản trong đó máy chủ không mang lại bất kỳ nội dung mà chỉ xác nhận chữ ký, do đó ứng dụng có thể quyết định có nên mở khóa một số tính năng . Trong trường hợp như vậy, lợi thế của xác minh chữ ký máy chủ từ xa qua ứng dụng trong một là gì?

+0

Tôi cũng tự hỏi liệu kiểm tra chữ ký máy chủ có thực sự cần thiết khi triển khai thanh toán trong ứng dụng chỉ để mở khóa các tính năng hay không. Phát hiện của bạn là gì? –

Trả lời

3

điều này có thực sự dễ dàng hơn để chặn và sửa đổi bởi kẻ tấn công không?

Nếu bạn đang sử dụng SSL để liên lạc với máy chủ, họ không thể chặn và thay đổi câu trả lời. SSL cũng xác minh danh tính của máy chủ, vì vậy bạn chắc chắn rằng bạn đang nói chuyện với máy chủ của riêng bạn, không phải của kẻ tấn công. Đối với lý do tại sao thực hiện xác minh chữ ký trên máy chủ, ý tưởng của nhận xét doc ban đầu là nếu bạn làm điều đó trên máy khách, bạn cần phải lưu trữ khóa công khai bên trong ứng dụng. Các tính năng chính của ứng dụng này là một ứng dụng. Kẻ tấn công có lẽ có thể trao đổi chìa khóa với chính họ, và những chữ ký của kẻ tấn công tạo ra sẽ xác minh OK. Bạn có thể tránh điều này bằng cách thực hiện xác minh trên máy chủ. Tuy nhiên, các công cụ bẻ khóa thực tế như AntiLVL sẽ chỉ tìm kiếm mã bytecode trả về true/false và sửa đổi nó để trả về luôn true.

+0

Và với điều này được gọi là ["thủ thuật chứng chỉ SSL thông minh"] (http://techcrunch.com/2011/11/14/siri-cracked-open-theoretically-opening-it-up-to-other-devices-hoặc -even-android /) có vẻ như không có điểm nào đối với bất kỳ loại xác minh nào, thậm chí trên máy chủ qua SSL ... –

+0

Không có gì đặc biệt về điều này - nó chỉ là giả mạo DNS. Điều này có thể được thực hiện dễ dàng trong môi trường phòng thí nghiệm được kiểm soát, nhưng không dễ dàng trên Internet thực. Đặc biệt là cho các trang web lớn. –

2

Vì bạn có quyền kiểm soát mã xác minh trên máy chủ. Mã trên đầu thiết bị có thể đã bị xâm phạm.

+3

Nhưng mã kiểm tra 'true/false' trên thiết bị cũng có thể bị xâm nhập ... Tôi đang thiếu gì? –

2

Nếu bạn không thực hiện xác minh chữ ký trên máy chủ, kẻ tấn công sẽ không làm phiền thiết bị của bạn. Hoặc, nếu muốn, anh ấy có thể tải xuống ứng dụng của bạn, dịch ngược ứng dụng và chỉ xóa xác minh. Bạn sẽ làm gì với ứng dụng đã thay đổi?

+0

Ngay cả khi tôi thực hiện xác minh chữ ký trên máy chủ, kẻ tấn công có thể dịch ngược ứng dụng và chỉ xóa phần giao tiếp với máy chủ để nhận kết quả xác minh. Tôi sẽ làm gì với điều đó? –

+2

Trong trường hợp này, kẻ tấn công sẽ không nhận được nội dung quý giá của bạn, đó là trách nhiệm của máy chủ. Giả định là các máy chủ Android Market đáng tin cậy (ha!), Máy chủ của bạn được tin cậy, nhưng bạn không có quyền kiểm soát ứng dụng. – alf

+0

Trong trường hợp này, bạn đúng, tất nhiên. Tôi quên đề cập đến việc tôi đang nói về việc sử dụng thanh toán trong ứng dụng để mở khóa các tính năng, không phải để phân phối nội dung. Bạn có thể tham khảo kịch bản đó không? +2 cho bây giờ. –

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