Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DIS detailed with more information #285

Merged
merged 5 commits into from
Jun 17, 2024

Conversation

cmarco0
Copy link
Contributor

@cmarco0 cmarco0 commented May 21, 2024

This PR aims to solve the issue #284

Added more information about the DIS (Device Integrity Service):
-What is for Android and iOS.
-Specified key attestation functionality for Android and iOS
-availability on smartphones

@@ -103,8 +103,13 @@ Wallet Instance Initialization and Registration

**Device Integrity Service:** In this section the Device Integrity Service is considered as it is provided by device manufacturers. This service allows the verification of a key being securely stored within the device's hardware through a signed object. Additionally, it offers the verifiable proof that a specific Wallet Instance is authentic, unaltered, and in its original state using a specialized signed document made for this scope.

The service also incorporates details in the signed object, such as the device type, model, app version, operating system version, bootloader status, and other relevant information to assess the device has not been compromised. For Android the service used is `Key Attestation`_ in addition to `Play Integrity API`_, while for iOS the `DeviceCheck`_ service.
This service, specifically developed by the manufacturer, is already integrated within the Android or iOS SDKs, so there is no need for a predefined endpoint to access it. Moreover, as it is specifically developed in the mobile architecture, it does not need to be registered as a Federation Entity, through the national accreditation systems.
The service also incorporates details in the signed object, such as the device type, model, app version, operating system version, bootloader status, and other relevant information to assess the device has not been compromised. For Android the DIS is represented by **StrongBox Keymaster** which is a physical HSM installed directly on the motherboard, it has various feature, the one we are interested to is named `Key Attestation`_, developer can leverage its functionality by the usage of `Play Integrity API`_. *Key attestation* aims to provide a way to strongly determine if a key pair is hardware-backed, what the properties of the key are, and what constraints are applied to its usage.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Android the DIS is represented by **StrongBox Keymaster** which is a physical HSM installed directly on the motherboard, it has various feature, the one we are interested to is named `Key Attestation`_,

This is wrong. Key Attestation is not part of StrongBox Keymaster and can also be used with a Trusted Execution Environment (TEE). The combined use of Key Attestation and Play Integrity Check allows you to create a DIS on Android which therefore guarantees both that the backend hardware key and the app are genuine.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading again the docs https://developer.android.com/privacy-and-security/keystore , key attestation is not part but it is only a supported feature by Stronghox Keymaster.

The service also incorporates details in the signed object, such as the device type, model, app version, operating system version, bootloader status, and other relevant information to assess the device has not been compromised. For Android the service used is `Key Attestation`_ in addition to `Play Integrity API`_, while for iOS the `DeviceCheck`_ service.
This service, specifically developed by the manufacturer, is already integrated within the Android or iOS SDKs, so there is no need for a predefined endpoint to access it. Moreover, as it is specifically developed in the mobile architecture, it does not need to be registered as a Federation Entity, through the national accreditation systems.
The service also incorporates details in the signed object, such as the device type, model, app version, operating system version, bootloader status, and other relevant information to assess the device has not been compromised. For Android the DIS is represented by **StrongBox Keymaster** which is a physical HSM installed directly on the motherboard, it has various feature, the one we are interested to is named `Key Attestation`_, developer can leverage its functionality by the usage of `Play Integrity API`_. *Key attestation* aims to provide a way to strongly determine if a key pair is hardware-backed, what the properties of the key are, and what constraints are applied to its usage.
For Apple devices the DIS is represented by **Secure Enclave**, a dedicated secure subsystem integrated into Apple's SoCs. Apple iOS is more fragmented than Android, in this case exists a series of services named `DeviceCheck`_ which provide a framework and server interface to manage device-specific data securely, developer can leverage its functionality by the usage of the framework itself. *DeviceCheck* It can be used to attest to the integrity of the device, apps, and/or encryption keys generated on the device, ensuring they were created in a secure environment like Secure Enclave.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Apple devices the DIS is represented only by DeviceCheck. Secure Enclave is just a system for storing keys securely on par with Strongbox or TEE. Furthermore, I don't agree with saying that Apple is more fragmented.

@peppelinux
Copy link
Member

As discussed during the editor's call we agreed that this PR must be changed according to the revision made, aiming to hold only the additional clarifications that would aim to improve the specification

@cmarco0 ^

@peppelinux peppelinux marked this pull request as draft May 29, 2024 10:15
Some words were written in a wrong italic format.
There was an error on some spaces.
@peppelinux peppelinux marked this pull request as ready for review June 12, 2024 10:03
@peppelinux peppelinux linked an issue Jun 12, 2024 that may be closed by this pull request
@peppelinux peppelinux merged commit 8c3ab25 into italia:versione-corrente Jun 17, 2024
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Not enough details about DIS (Device Integrity Service)
4 participants