Protected Confirmation
Stay organized with collections
Save and categorize content based on your preferences.
Android Protected Confirmation leverages a hardware-protected user interface
called Trusted UI to facilitate high assurance to critical
transactions. Android Protected Confirmation is available to supported devices
running Android 9 (API level 28) or higher.
When an app invokes Protected Confirmation, Trusted UI queries the user for
confirmation. The Trusted UI asserts the user’s approval of the prompted message
with a high degree of confidence even if Android or its kernel (Linux) have been
compromised. Together with Keymaster, this assertion is then conveyed to a
remote party.
Developers can view the Android Protected Confirmation developer
documentation at developer.android.com.
Scope
The implementation of Android Protected Confirmation can be split into two
parts, both residing in the trusted execution environment (TEE). One part is an
extension to Keymaster. It allows
the generation of keys with the usage requirement Tag::TRUSTED_CONFIRMATION_REQUIRED
.
The second part is an app called ConfirmationUI, which
generates confirmation tokens. These tokens are cryptographic statements and
convey to Keymaster when the user confirms a given message. This document
describes the implementation of ConfirmationUI and the confirmation statements
to Keymaster.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-08-28 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Missing the information I need"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Too complicated / too many steps"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Out of date"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Samples / code issue"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Other"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Easy to understand"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Solved my problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Other"
}]
{"lastModified": "Last updated 2024-08-28 UTC."}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-28 UTC."]]