Khám phá xác nhận được bảo vệ của Android

Xác nhận được bảo vệ của Android là một tính năng bảo mật đã được giới thiệu trở lại trong Android 9 (API cấp 28). Tính năng này cho phép bạn sử dụng Giao diện người dùng đáng tin cậy để xác nhận một hành động nhất định của người dùng (thường là một giao dịch) .
Giao diện người dùng đáng tin cậy là gì?
Trusted UI là giao diện người dùng được bảo vệ bằng phần cứng, tạo điều kiện đảm bảo cao cho các giao dịch quan trọng. Có ba thành phần trong Trusted UI mà bạn cần chú ý:
- Thông báo nhắc nhở : Đây là thông báo mà ứng dụng của bạn muốn người dùng xác nhận. Trong ví dụ dưới đây, thông báo nhắc nhở là
You are going to transfer 4200 EUR to IBAN DE16533700240123456701
- Nút xác nhận : Đây là nút mà người dùng cần nhấp vào để xác nhận giao dịch. Trong ví dụ, nút xác nhận là
Double-press power to confirm
. - Nút Hủy : Đây là nút mà người dùng cần nhấp vào để hủy giao dịch. Trong ví dụ, nút hủy bỏ là
Cancel
.

Tài liệu Xác nhận được bảo vệ của Android chỉ định các bước cần thiết để sử dụng tính năng này, bắt đầu từ việc tạo khóa đăng ký không đối xứng cho đến hiển thị hộp thoại xác nhận.
Trong bài viết này, chúng ta sẽ tạo một ứng dụng đơn giản thực hiện theo các bước đó một cách lỏng lẻo. Chúng tôi sẽ chỉ triển khai mã phía máy khách và bỏ qua mã phía máy chủ (bên phụ thuộc / từ xa). Đây là những gì nó sẽ trông như thế nào ở phần cuối:

Mã nguồn ở đâu?
Giải thích từng bước
Làm theo các bước được cung cấp bên dưới để tạo ứng dụng này.
1. Mở Android Studio. Tạo dự án mới với tùy chọn "Hoạt động trống".
2. Đầu tiên, chúng ta cần thêm jackson-dataformat-cbor
phụ thuộc vào app/build.gradle
tệp của mình. Điều này là cần thiết để phân tích cú pháp cấu trúc dữ liệu CBOR sẽ được trả về bởi Xác nhận được bảo vệ của Android.
3. Tiếp theo, chúng tôi sẽ cập nhật bố cục, activity_main.xml
tệp của chúng tôi. Hình ảnh dưới đây cho thấy cách bố trí sẽ như thế nào. Bắt đầu từ trên cùng, có 3 TextView hiển thị thử thách chứng thực , nhà cấp chứng chỉ chứng thực và dữ liệu bổ sung . Đầu tiên và cuối cùng trong ba điều này là đầu vào của Xác nhận được bảo vệ Android của chúng tôi. Trong một ứng dụng thực, thử thách chứng thực và dữ liệu bổ sung có thể được cung cấp bởi bên phụ thuộc (máy chủ từ xa). Tuy nhiên, trong bài viết này, các giá trị này sẽ được mã hóa cứng.
Bên dưới TextViews, có một nút sẽ kích hoạt lời nhắc Xác nhận được bảo vệ của Android. Nó sẽ mô phỏng một giao dịch của người dùng gửi tiền của họ cho mẹ của họ.
Bên dưới nút, có hai TextView hiển thị dữ liệu đã được xác nhận và chữ ký . “Dữ liệu đã được xác nhận” là kết quả thành công của Xác nhận được bảo vệ của Android. Nó được định dạng bằng cách sử dụng cấu trúc dữ liệu CBOR. Dữ liệu này sau đó sẽ được ký bằng PrivateKey, dẫn đến chữ ký được hiển thị.

Để tạo bố cục ở trên, hãy sao chép-dán đoạn mã bên dưới:
4. Cuối cùng, chúng tôi sẽ cập nhật MainActivity.kt
tệp của mình. Hãy tiếp tục và sao chép-dán đoạn mã bên dưới. Nhưng đây là những điều quan trọng nhất cần lưu ý:
Đầu tiên, trong khi chúng tôi đang tạo PrivateKey để ký, đừng quên gọi setUserConfirmationRequired()
và setAttestationChallenge()
các phương thức. Phương pháp đầu tiên được sử dụng để PrivateKey chỉ có thể được sử dụng để ký dữ liệu được tạo bởi Xác nhận được bảo vệ của Android. Phương pháp thứ hai được sử dụng để chúng tôi có chứng chỉ chứng thực có thể được gửi đến bên phụ thuộc để xác nhận độ tin cậy của chứng thực.
Thứ hai, thông báo nội dung của MyConfirmationCallback
lớp học. Nếu người dùng xác nhận giao dịch, onConfirm(dataThatWasConfirmed)
sẽ được gọi. Lưu ý rằng đó dataThatWasConfirmed
là dữ liệu cấu trúc CBOR sẽ được ký bởi PrivateKey.
Cuối cùng, hãy lưu ý việc sử dụng ConfirmationPrompt.Builder
để hiển thị chính hộp thoại Xác nhận được bảo vệ của Android.
5. Đó là nó! Bây giờ hãy chạy ứng dụng của bạn và bạn sẽ có thể thấy một cái gì đó như sau:

Như mọi khi, cảm ơn vì đã đọc!