Bảo mật môi trường

Google cung cấp một bộ API và dịch vụ giúp bạn phát hiện xem ứng dụng của mình có đang chạy trong một môi trường an toàn và đáng tin cậy hay không. Tâm điểm là API Tính toàn vẹn của Play, giúp kiểm tra xem các lượt tương tác có phải là lượt tương tác thật hay không bằng cách phát hiện các lượt tương tác tiềm ẩn rủi ro và gian lận. Ngoài tính toàn vẹn của ứng dụng và thiết bị, API Tính toàn vẹn của Play hiện còn cung cấp thông tin về các rủi ro về quyền truy cập và hỗ trợ tiếp cận, Google Play Protecthoạt động gần đây trên thiết bị. Để củng cố thêm chiến lược chống lừa đảo, nền tảng Android cung cấp API cho các trường hợp cụ thể có thể liên quan đến ứng dụng của bạn.

API Tính toàn vẹn của Play

Các tính năng của API Tính toàn vẹn của Play

API Tính toàn vẹn của Play cho phép bạn tìm hiểu về trạng thái bảo mật của thiết bị đang chạy ứng dụng. Điều này giúp bạn yên tâm rằng đúng người dùng đang truy cập thông tin nhạy cảm.

Tệp này giúp bạn kiểm tra để đảm bảo các lượt tương tác và yêu cầu gửi tới máy chủ đến từ tệp nhị phân của ứng dụng chính thống trong một môi trường đáng tin cậy:

  • Tệp nhị phân của ứng dụng chính thống: Xác định xem bạn có đang tương tác với tệp nhị phân chưa được sửa đổi mà Google Play biết hay không.
  • Bản cài đặt chính thống từ Play: Xác định xem tài khoản người dùng hiện tại có được cấp phép hay không, tức là liệu người dùng đã cài đặt hoặc thanh toán cho ứng dụng/trò chơi trên Google Play chưa.
  • Thiết bị Android thực: Xác định xem ứng dụng của bạn có đang chạy trên thiết bị chạy Android thực sử dụng Dịch vụ Google Play hay không.
  • Không nhiễm phần mềm độc hại đã biết: Xác định xem Google Play Protect đã được bật hay chưa, cũng như liệu Google Play Protect có tìm thấy trên thiết bị này ứng dụng nào gây rủi ro hoặc nguy hiểm hay không.
  • Rủi ro các ứng dụng khác truy cập thấp: Xác định xem các ứng dụng khác đang chạy có thể ghi lại màn hình hoặc điều khiển thiết bị và dữ liệu đầu vào vào ứng dụng của bạn hay không.

Cách điều này giúp giảm thiểu hành vi gian lận

Khi người dùng thực hiện một hành động quan trọng trong ứng dụng, bạn có thể gọi API Tính toàn vẹn của Play. Nếu không, máy chủ phụ trợ của ứng dụng có thể quyết định việc nên làm để chống lại các cuộc tấn công và hành vi lừa đảo. Ví dụ: bạn có thể yêu cầu xác minh thêm người dùng hoặc từ chối cấp quyền truy cập vào chức năng nhạy cảm.

Quy trình quyết định đối với API Tính toàn vẹn của Play

Rủi ro truy cập ứng dụng

Ra mắt tín hiệu App Access Risk (Rủi ro truy cập ứng dụng) để giúp bạn đánh giá xem các ứng dụng khác trên thiết bị có thể xem và ghi lại màn hình khi ứng dụng của bạn đang chạy hoặc truy cập vào ứng dụng của bạn bằng quyền hỗ trợ tiếp cận hay không. Các ứng dụng hỗ trợ tiếp cận đã xác minh sẽ tự động bị loại trừ khỏi những kết quả này. Tính năng đánh giá rủi ro truy cập ứng dụng giúp nhà phát triển bảo vệ ứng dụng của họ trong khi vẫn đảm bảo quyền riêng tư của người dùng vì ứng dụng yêu cầu không lấy thông tin nhận dạng của các ứng dụng đã cài đặt và kết quả không được liên kết với giá trị nhận dạng người dùng hoặc thiết bị.

Ảnh chụp màn hình điện thoại yêu cầu người dùng đóng một số ứng dụng.

Nhờ nỗ lực cộng tác này, chúng tôi đã có được các tín hiệu cần thiết để cung cấp thông tin chi tiết chuyên sâu hơn nhằm bảo vệ khách hàng hiệu quả hơn.
—Nubank, đối tác tiếp cận sớm

Rủi ro truy cập ứng dụng có các mức rủi ro khác nhau:

  • Phản hồi chụp ảnh có nghĩa là các ứng dụng khác đang chạy có thể chụp màn hình.
  • Phản hồi kiểm soát có nghĩa là các ứng dụng khác đang chạy có thể kiểm soát thiết bị. Do đó, chúng có thể vừa chụp màn hình vừa điều khiển đầu vào vào ứng dụng của bạn.

Tính năng đánh giá rủi ro truy cập ứng dụng hiện đã có phiên bản beta công khai và sẽ được cung cấp rộng rãi trong những tháng tới.

Thực thi tính năng Rủi ro truy cập ứng dụng

Xác định các hành động có giá trị cao/nhạy cảm trong ứng dụng hoặc trò chơi để bảo vệ bằng API Tính toàn vẹn của Play, thay vì từ chối quyền truy cập ngay lập tức. Khi có thể, hãy thử thách lưu lượng truy cập rủi ro trước khi cho phép các hành động có giá trị cao tiếp tục. Ví dụ: khi tính năng đánh giá rủi ro truy cập ứng dụng cho biết rằng một ứng dụng đang chạy có thể ghi lại màn hình, hãy yêu cầu người dùng tắt hoặc gỡ cài đặt các ứng dụng có thể ghi lại màn hình trước khi cho phép họ tiếp tục sử dụng chức năng mà bạn muốn bảo vệ.

Bảng này chứa một số kết quả mẫu:

Ví dụ về phản hồi đối với kết quả đánh giá rủi ro truy cập ứng dụng Diễn giải
appsDetected:
["KNOWN_INSTALLED"]
Chỉ có những ứng dụng đã cài đặt mà Google Play nhận dạng được hoặc do nhà sản xuất thiết bị tải trước lên phân vùng hệ thống. Không có ứng dụng nào đang chạy dẫn đến kết quả chụp, kiểm soát hoặc phủ lên trên.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Có những ứng dụng do Google Play cài đặt hoặc do nhà sản xuất thiết bị tải trước lên phân vùng hệ thống. Có những ứng dụng khác đang chạy và được cấp quyền có thể dùng để xem màn hình hoặc ghi lại các dữ liệu đầu vào và đầu ra khác.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Có Play hoặc hệ thống đang chạy được bật quyền có thể dùng để xem màn hình hoặc ghi lại các dữ liệu đầu vào và đầu ra khác. Ngoài ra, còn có các ứng dụng khác đang chạy có quyền có thể dùng để điều khiển thiết bị và trực tiếp điều khiển dữ liệu đầu vào vào ứng dụng của bạn.
appAccessRiskVerdict: {} Tính năng đánh giá rủi ro truy cập ứng dụng không được đánh giá vì thiếu một yêu cầu cần thiết. Ví dụ: thiết bị không đủ tin cậy.

Tín hiệu Play Protect

Tín hiệu Play Protect sẽ cho ứng dụng của bạn biết liệu Play Protect có đang bật và có tìm thấy các ứng dụng gây hại đã biết được cài đặt trên thiết bị hay không.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Nếu mối quan ngại đặc biệt về phần mềm độc hại đối với ứng dụng hoặc dữ liệu của người dùng, thì bạn có thể kiểm tra kết quả này và yêu cầu người dùng bật Play Protect hoặc xoá các ứng dụng gây hại trước khi tiếp tục.

Bật hộp thoại Play Protect

playProtectVerdict có thể có một trong những giá trị sau đây:

Kết quả Giải thích Việc nên làm

NO_ISSUES

Play Protect đã bật và không phát hiện thấy bất kỳ vấn đề nào về ứng dụng trên thiết bị.

Play Protect đang bật và không phát hiện thấy vấn đề nên người dùng không cần làm gì.

NO_DATA

Play Protect đã bật nhưng chưa quét. Thiết bị hoặc ứng dụng Cửa hàng Play gần đây có thể đã được đặt lại.

Play Protect đang bật và không phát hiện thấy vấn đề nên người dùng không cần làm gì.

POSSIBLE_RISK

Play Protect đã bị tắt.

Play Protect đang bật và không phát hiện thấy vấn đề nên người dùng không cần làm gì.

MEDIUM_RISK

Play Protect đã bật và phát hiện thấy các ứng dụng có khả năng gây hại được cài đặt trên thiết bị này.

Tuỳ thuộc vào khả năng chấp nhận rủi ro của mình, bạn có thể yêu cầu người dùng chạy Play Protect và xử lý các cảnh báo của Play Protect. Nếu người dùng không thể đáp ứng các yêu cầu này, bạn có thể chặn họ thao tác trên máy chủ.

HIGH_RISK

Play Protect đã bật và phát hiện thấy các ứng dụng nguy hiểm được cài đặt trên thiết bị này.

Tuỳ thuộc vào khả năng chấp nhận rủi ro của mình, bạn có thể yêu cầu người dùng chạy Play Protect và xử lý các cảnh báo của Play Protect. Nếu người dùng không thể đáp ứng các yêu cầu này, bạn có thể chặn họ thao tác trên máy chủ.

UNEVALUATED

Kết quả xác minh của Play Protect chưa được đánh giá.

Điều này có thể xảy ra vì một vài lý do như sau:

  • Thiết bị không đủ tin cậy.
  • Chỉ trò chơi: Tài khoản người dùng chưa được LICENSED.

Hoạt động gần đây trên thiết bị

Bạn cũng có thể chọn sử dụng hoạt động gần đây trên thiết bị. Hoạt động này cho biết số lần ứng dụng của bạn đã yêu cầu một mã thông báo về tính toàn vẹn trên một thiết bị cụ thể trong 1 giờ qua. Bạn có thể sử dụng hoạt động gần đây trên thiết bị để bảo vệ ứng dụng khỏi các thiết bị không mong muốn, hoạt động quá mức. Đây có thể là dấu hiệu của một cuộc tấn công đang diễn ra. Bạn có thể quyết định mức độ tin cậy cho từng cấp độ hoạt động gần đây trên thiết bị, dựa trên số lần bạn dự kiến ứng dụng của mình được cài đặt trên một thiết bị thông thường để yêu cầu một mã thông báo về tính toàn vẹn mỗi giờ.

Nếu bạn chọn nhận recentDeviceActivity, trường deviceIntegrity sẽ có 2 giá trị:

deviceIntegrity: {
  deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
  recentDeviceActivity: {
    // "LEVEL_2" is one of several possible values.
    deviceActivityLevel: "LEVEL_2"
  }
}

Trước tiên, bạn nên kiểm tra dữ liệu để biết mức độ hoạt động thông thường của thiết bị trong ứng dụng trên tất cả thiết bị của bạn. Sau đó, bạn có thể quyết định cách ứng dụng sẽ phản hồi khi thiết bị thực hiện quá nhiều yêu cầu. Nếu hoạt động hơi cao, bạn có thể yêu cầu người dùng thử lại sau. Nếu hoạt động rất cao, bạn nên áp dụng biện pháp thực thi mạnh mẽ hơn.

Yêu cầu thông thường so với yêu cầu kiểu cũ

Trong quá trình triển khai API Tính toàn vẹn của Play, bạn cần cân nhắc 2 loại yêu cầu này. Trong hầu hết các trường hợp, bạn nên sử dụng các yêu cầu chuẩn để cung cấp phản hồi nhanh nhất, và nên sử dụng các yêu cầu kiểu cũ khi cần có yêu cầu mới được tạo đối với bản ghi chứng thực thiết bị.

Yêu cầu kiểu cũ

Yêu cầu thông thường

Yêu cầu mất nhiều thời gian hơn và nên được thực hiện ít thường xuyên hơn.

Ví dụ: thỉnh thoảng thực hiện một lần để kiểm tra xem một hành động nhạy cảm hoặc có giá trị cao có phải là thật hay không.

Không sử dụng thường xuyên.

Yêu cầu có độ trễ thấp và có thể được sử dụng theo yêu cầu.

Một yêu cầu thông thường bao gồm 2 phần:

  • Chuẩn bị trình cung cấp mã thông báo về tính toàn vẹn (một lần)
  • Yêu cầu mã thông báo về tính toàn vẹn (theo yêu cầu)

Sử dụng theo yêu cầu.

Hãy đọc tài liệu về API Tính toàn vẹn của Play để biết thêm thông tin về các yêu cầu thông thườngkiểu cũ.

Triển khai

Cách bắt đầu sử dụng API Tính toàn vẹn của Play:

Theo mặc định, API Tính toàn vẹn của Play cho phép gửi tối đa 10.000 yêu cầu trên mỗi ứng dụng mỗi ngày. Để bày tỏ mong muốn tăng số yêu cầu tối đa hằng ngày, hãy làm theo các hướng dẫn này. Để đủ điều kiện tăng mức tối đa hằng ngày cho số lượng yêu cầu, ứng dụng của bạn phải triển khai API Tính toàn vẹn của Play đúng cách và xuất hiện trên Google Play (ngoài các kênh phân phối khác).

Những điều cần lưu ý đối với API Tính toàn vẹn của Play

Tính năng tự động bảo vệ tính toàn vẹn (API >= 23)

Tính năng tự động bảo vệ tính toàn vẹn là một dịch vụ bảo vệ mã chống giả mạo, giúp bảo vệ ứng dụng của bạn khỏi hành vi vi phạm tính toàn vẹn dưới hình thức sửa đổi và phân phối lại trái phép. Tính năng này hoạt động mà không cần kết nối dữ liệu, không yêu cầu nhà phát triển làm gì trước khi kiểm thử cũng như không tích hợp máy chủ phụ trợ.

Cách điều này giúp giảm thiểu hành vi gian lận

Khi bạn bật tính năng tự động bảo vệ tính toàn vẹn, Google Play sẽ thêm các bước kiểm tra vào mã của ứng dụng và khiến mã của ứng dụng khó loại bỏ bằng phương thức làm rối mã nguồn nâng cao và kỹ thuật chống đảo ngược. Trong thời gian chạy, tính năng bảo vệ sẽ kiểm tra xem ứng dụng của bạn có bị can thiệp hoặc phân phối lại hay không:

  • Nếu quy trình kiểm tra cho thấy ứng dụng không được cài đặt từ Play, thì người dùng sẽ thấy lời nhắc tải ứng dụng của bạn qua Google Play
  • Nếu quy trình kiểm tra cho thấy có sửa đổi, ứng dụng sẽ không chạy

Việc này giúp bảo vệ người dùng khỏi các phiên bản đã sửa đổi của ứng dụng.

Triển khai

Hiện tại, tính năng tự động bảo vệ tính toàn vẹn chỉ dành cho một số Đối tác của Play. Hãy liên hệ với bộ phận hỗ trợ nhà phát triển của Google Play nếu tính năng này chưa có trong Google Play Console và bạn muốn bày tỏ mong muốn có quyền sử dụng tính năng này.

Bạn có thể bật tính năng bảo vệ khi tạo bản phát hành hoặc trên trang Tính toàn vẹn của ứng dụng (Bản phát hành > Tính toàn vẹn của ứng dụng). Tính năng tự động bảo vệ tính toàn vẹn đòi hỏi ứng dụng của bạn phải dùng Tính năng ký ứng dụng của Play.

Hãy nhớ kiểm thử ứng dụng được bảo vệ của bạn trước khi quảng bá bản phát hành lên phiên bản chính thức.

Những điều cần lưu ý

  • Đừng phát hành phiên bản ứng dụng chưa được bảo vệ
  • Cẩn thận khi kết hợp các giải pháp chống giả mạo
  • Kiểm thử ứng dụng được bảo vệ trước khi phát hành công khai
  • Theo dõi số liệu thống kê như bình thường về mọi sự cố gia tăng
  • Bạn có thể báo cáo cho Google Play các phiên bản bị bẻ khoá của ứng dụng