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. Trọng tâm là API Tính toàn vẹn của Play, giúp kiểm tra để đảm bảo các lượt tương tác là chính thống bằng cách phát hiện những 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 cung cấp thông tin về các rủi ro về quyền truy cập và khả năng hỗ trợ tiếp cận, Google Play Protecthoạt động gần đây trên thiết bị. Để tăng cường chiến lược chống gian lận, nền tảng Android cung cấp các 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ị mà ứng dụng của họ đang chạy. Điều này giúp bạn tự tin rằng đúng người dùng đang truy cập vào thông tin nhạy cảm.

API 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 chính hãng: Xác định xem ứng dụng của bạn có đang chạy trên một thiết bị chạy Android chính hãng, được hỗ trợ bởi 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 thấp khi các ứng dụng khác truy cập: Xác định xem các ứng dụng đang chạy khác có thể chụp màn hình hoặc kiểm soát thiết bị và dữ liệu đầu vào vào ứng dụng của bạn hay không.

Cách tính năng 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 để ngăn chặn các cuộc tấn công và hành vi gian lận. Ví dụ: bạn có thể yêu cầu xác minh người dùng bổ sung hoặc từ chối quyền truy cập vào chức năng nhạy cảm.

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

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

Chúng tôi đã ra mắt tín hiệu Rủi ro khi truy cập vào ứ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 được loại trừ khỏi những kết quả này. Nhờ tính năng đánh giá rủi ro khi truy cập vào ứng dụng, nhà phát triển có thể bảo vệ các ứng dụng của họ mà 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 của 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ất định.

Nhờ nỗ lực cộng tác này, chúng tôi có thể nhận đượ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 sử dụng sớm

Tính năng đánh giá rủi ro truy cập ứng dụng có các cấp độ rủi ro khác nhau:

  • Phản hồi chụp màn hì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 điều khiển có nghĩa là các ứng dụng khác đang chạy có thể điều khiển thiết bị, do đó, chúng có thể vừa chụp màn hình vừa điều khiển dữ liệu đầu vào vào ứng dụng của bạn.

Thực thi tính năng đánh giá 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 do Google Play nhận dạng 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ả ghi lại, kiểm soát hoặc lớp phủ.
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ó nhiều ứ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ó những ứng dụng trên Play hoặc ứng dụng hệ thống đang chạy đã bật các 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 cho ứng dụng của bạn biết liệu Play Protect có đang bật hay không và liệu Play Protect có phát hiện 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 phần mềm độc hại là mối lo ngại đặc biệt đối với ứng dụng hoặc dữ liệu của người dùng, 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.

Hộp thoại Bật 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ì cả.

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ì cả.

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ì cả.

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, 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ể thực hiện 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, 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ể thực hiện 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, bao gồm:

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

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 mỗi 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 để xem mức độ hoạt động thông thường của thiết bị đối với ứng dụng của bạn trên tất cả thiết bị. Sau đó, bạn có thể quyết định cách ứng dụng phản hồi khi một thiết bị đưa ra quá nhiều yêu cầu. Nếu hoạt động có nhiệt độ cao một chút, bạn nên yêu cầu người dùng thử lại sau. Nếu hoạt động đó ở mức rất cao, bạn nên áp dụng biện pháp thực thi mạnh 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 hai loại yêu cầu. Trong hầu hết các trường hợp, bạn nên sử dụng yêu cầu thông thường để có được phản hồi nhanh nhất. Bạn nên sử dụng yêu cầu kiểu cũ khi cần một yêu cầu mới tạo dựa trên bản ghi chứng thực thiết bị.

Yêu cầu cổ điển

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

Yêu cầu mất nhiều thời gian hơn và nên ít được thực hiệ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.

Sử dụng không thường xuyên.

Các 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 tối đa 10.000 yêu cầu 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, thì ngoài các kênh phân phối khác, ứng dụng của bạn phải triển khai API Tính toàn vẹn của Play một cách chính xác và có mặt trên Google Play.

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

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 can thiệp 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, nhà phát triển không cần làm gì trước khi kiểm thử và không cần tích hợp máy chủ phụ trợ.

Cách tính năng 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 quy trình kiểm tra vào mã nguồn của ứng dụng và khiến các quy trình kiểm tra đó khó bị 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 hay 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 qua 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ự 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 ứng dụng đã sửa đổi.

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 nhóm hỗ trợ nhà phát triển của Google Play nếu bạn muốn sử dụng tính năng này nhưng không thấy tính năng đó trong Google Play Console.

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 yêu cầu ứng dụng của bạn sử 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ệ trước khi phát hành 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 bảo vệ 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 để phát hiện mọi sự gia tăng về số lượng sự cố
  • Bạn có thể báo cáo các phiên bản bị bẻ khoá của ứng dụng cho Google Play