Skip to content

Commit 52728f1

Browse files
authored
Merge pull request #2235 from JinyuID/main
[Azure AI Svcs] add liveness GA document
2 parents 5fe06fa + bbac305 commit 52728f1

File tree

4 files changed

+143
-0
lines changed

4 files changed

+143
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
---
2+
title: Shared responsibility for Face liveness detection
3+
titleSuffix: Azure AI services
4+
description: Azure and customers share responsibility for liveness detection solutions, covering connections, client apps, devices, and abuse monitoring.
5+
author: JinyuID
6+
ms.author: lijiny
7+
manager: nitinme
8+
ms.service: azure-ai-vision
9+
ms.date: 01/15/2025
10+
ms.topic: conceptual
11+
---
12+
13+
# Shared responsibility for Face liveness detection
14+
15+
It's the shared responsibility between Azure and its customers to build a secure and compliant face liveness solution. You can learn more about Azure's shared responsibility at [Shared responsibility in the cloud](/azure/security/fundamentals/shared-responsibility). Understanding the shared responsibility model is especially important for liveness detection solutions. This document covers three aspects of how to secure and monitor your solution.
16+
17+
## Secure the connections
18+
19+
The following diagram shows how customers work with Azure to secure the connections end-to-end.
20+
21+
:::image type="content" source="media/secure-connection.png" alt-text="Diagram that shows connections in an azure liveness solution." border="false":::
22+
23+
Follow these guidelines to secure the connections:
24+
- Ensure your backend service acts as the orchestrator in liveness detection applications, using Azure's security infrastructure to initiate liveness detection sessions and examine the results. The customer is responsible for securing their backend service.
25+
- Implement proper authentication and authorization for the client application in the backend. Ensure the communication between the client application and backend service is protected from manipulation.
26+
- Authenticate the end user's real-world identity and link their account information to the liveness session.
27+
- Sign the application and distribute it only through official stores.
28+
29+
Azure liveness detection secures the connection in following ways:
30+
- Validate all transactions using the session authorization token acquired via the session creation API.
31+
- Allow only HTTPS calls to the backend service.
32+
- Support the setup of Identity Access Management (IAM) roles for customers to authenticate and perform actions.
33+
34+
## Secure the client application
35+
36+
A sophisticated attacker could alter or tamper with the client application, which could render the liveness result untrustworthy. Use different approaches depending on which platform your application uses:
37+
38+
### Mobile applications
39+
40+
In both Android and iOS platforms, there are native and third-party solutions to check application integrity, such as [iOS App Attest](https://developer.apple.com/documentation/devicecheck/establishing-your-app-s-integrity), and [Android Play Integrity](https://developer.android.com/google/play/integrity). It's the application developer’s responsibility to incorporate the integrity check feature and respond promptly to potential hacks.
41+
42+
Azure liveness detection implements safeguards against untrustworthy runtime environments. The liveness detection SDK provides a digest of its liveness detection service calls, which can be passed to the application integrity APIs.
43+
44+
### Web applications
45+
46+
Web applications run in the context of the browsers in which they're loaded. Modern browsers support robust application integrity checks. You are responsible for implementing the integrity checks of the web application that gets deployed to browsers. These responsibilities include, but aren't limited to:
47+
48+
- Ensuring security headers are properly configured. In particular, extra attention should be paid to caching, HTTP Strict Transport Security (HSTS), iframe, and cross-origin policies.
49+
- Configuring the strictest possible Content Security Policy (CSP) for all resources. CSP helps to deny Cross-Site Scripting (XSS) attacks, clickjacking, and weaknesses associated with mixed-content pages.
50+
- Enabling Sub-Resource Integrity (SRI) through CSP and checking to ensure that the loaded SDK is an authentic copy as published by Microsoft.
51+
52+
Azure publishes cryptographic hashes of the liveness detection Web SDK alongside each version, which customers can use in their script integrity CSP header. Azure also ensures the Web SDK can run within the feature restrictions of Secure Context in modern browsers.
53+
54+
## Secure the client device
55+
56+
Different applications have different security needs based on their specific use cases and scenarios, ranging from basic to highly stringent protocols. You should tailor security measures to match these requirements. Here, we highlight the different levels of security necessary for different environments.
57+
58+
In both Android and iOS platforms, application integrity solutions (including their respective first-party offerings) already include device integrity and/or reputation. Customers who implement web applications and require their security baseline to include device integrity need to ensure that the application is accessed only through a trusted modern browser on a trusted device. Typically, this process involves:
59+
60+
- Enterprise Device Management solution configured to manage the device by accessing the application.
61+
- Virtual Network to silo the device communication with Azure, enforced by Device Management.
62+
- Secure Boot to ensure the hardware integrity, enforced by Device Management
63+
- Supply Chain Security for higher security baselines, which can ensure that the device is already managed and all its security policies are enforced from the point of manufacture.
64+
65+
These considerations are also applicable to Android and iOS platforms.
66+
67+
Azure Face API supports Virtual Networks and private endpoints. Refer to the [guide](../cognitive-services-virtual-networks.md).
68+
69+
Customer who use a high security baseline can reference a Device Management solution such as [Microsoft Defender for Endpoints](/defender-endpoint/).
70+
71+
## Keep your solution up to date
72+
73+
Microsoft regularly upgrades the liveness detection client SDK and service to improve security, reliability, and user convenience. Staying current with these updates is crucial because the liveness detection field faces active and sophisticated attacks. Customer should always use the latest client-side SDK, latest service, and latest model. For more details, see [Understanding client-side SDK versions](/azure/ai-services/computer-vision/sdk/understand-the-liveness-sdk-versions).
74+
75+
## Monitor abuse
76+
77+
Facial recognition technology, when used for access authorization, can be a target for attackers attempting to bypass it or the liveness detection technology built on top of it. Often, these attempts involve brute-forcing different materials, like various printed photos, in front of the system, which is considered system abuse. To mitigate such brute force attacks, you can take specific actions around retry count and rate limiting.
78+
79+
- **Create a session with conservative call and time limits**: A session serves as the first line of defense of the liveness detection process by deterring brute force compromises. A session authorization token is generated for each session and is usable for a preset quota of recognition or liveness detection attempts. If an application user doesn't succeed within the attempt limits, a new token is required. Requiring a new token allows for a reassessment of the risk associated with further retries. By setting a conservatively low number of allowed calls per session, you can reevaluate this risk more frequently before issuing a new token.
80+
- **Use the appropriate correlation identifier when creating a session**: Device correlation ID enables the automatic abuse monitoring heuristic within Face API to help you deny abusive traffic to your system. When a particular correlation identifier reaches the threshold of abusive attempts, it can no longer be used to create sessions.
81+
Generate a random GUID string and associate it with sequential attempts from the same individual primary identifier within your system. The choice of identifier or identifier set to map depends on your application needs and other parameters used to assess access risk. To allow for the regeneration of a new random GUID when necessary, avoid using your application’s primary identifier.
82+
- **Design the system to support human judgment**: When a device correlation ID is flagged and no more sessions can be created with the identifier, implement a meaningful human review process to ensure that failures aren't due to abusive traffic or brute forcing attempts. If after review you decide to allow more attempts from the same entity because previous failures are deemed legitimate, reset the association by generating a new random GUID mapped to the individual identifier.
83+
84+
### Azure Support for abuse monitoring
85+
86+
Azure provides the following mechanisms for monitoring liveness detection sessions:
87+
- Monitoring traffic across multiple sessions on same correlation ID; respond when suspicious activity is monitored.
88+
- API support for auditing to download liveness images during the liveness session lifespan.
89+
- Azure keeps sufficient logs to further prevent [repudiation attacks](/azure/security/develop/threat-modeling-tool-threats).
90+
91+
## Report abuse
92+
93+
If Azure AI Face API doesn't detect a presentation attack instrument that you believe should be detected as spoof, [create an Azure support request](/azure/ai-services/cognitive-services-support-options?context=/azure/ai-services/computer-vision/context/context).
94+
95+
The support request should include:
96+
- Type of spoofing material presented.
97+
- Service information returned from the service as part of the API call. At a minimum the information must include API path, request ID (`apim-request-id`), session ID (SID), and API model version (`model-version`).
98+
- Specific conditions required to reproduce the attack.
99+
- Step-by-step instructions to reproduce the attack.
100+
- Exploit image or proof-of-concept image (if possible).
101+
- Description of the business impact of attack.
102+
103+
You might attempt to recreate the attack before reporting it to Microsoft. The reproduction steps would be especially useful if you can't provide the exploited image.
104+
105+
## Next step
106+
107+
[Tutorial: Detect liveness in faces](/azure/ai-services/computer-vision/tutorials/liveness)
215 KB
Loading
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
title: Understand liveness client-side SDK versions
3+
titleSuffix: Azure AI services
4+
description: Explains the importance of updating the Liveness SDK for security and reliability, detailing versioning and update policies
5+
author: JinyuID
6+
ms.author: lijiny
7+
manager: qingflin
8+
ms.service: azure-ai-vision
9+
ms.date: 01/15/2025
10+
ms.topic: conceptual
11+
---
12+
13+
# Understand the liveness versions
14+
15+
Microsoft regularly updates the liveness detection client SDK and service to improve security, reliability, and user convenience. It's important to stay current with these updates because the liveness detection field faces active and sophisticated attacks.
16+
17+
## Client-side SDK version numbers
18+
19+
Liveness detection client-side SDKs use `major.minor.patch` format to indicate the software version.
20+
- A patch version update is an optional reliability fix to the client SDK that doesn't affect compatibility with the service.
21+
- A minor version update is an important security and reliability improvement. We try to extend support for a minor update as long as possible, and Azure announces the retirement of a minor update six months in advance.
22+
- A major version update is a critical security or breaking API update. Customers should update their application as soon as possible. Azure service will block the previous major version after six months.
23+
24+
## Azure Face API version development pattern
25+
26+
The Face liveness detection feature is generally available from version `1.2`. Face API follows the Azure development cycle in which newer API versions add new features during the preview release before becoming generally available. A newer service version might require a newer minimal client SDK version. The requirement is announced when a new service version is available.
27+
28+
## Service model version
29+
30+
In the **Create Liveness Session** operation, customers can specify a liveness model version to use within the session. Azure Face service continually adds or updates models. We strongly recommend customers always use the latest model version, which entails leaving the `model-version` parameter empty in API calls.
31+
- The latest model version (default) remains compatible with all supported client versions.
32+
- Azure announces the retirement of a service model six months in advance, giving customers time to update their backend service.

articles/ai-services/computer-vision/toc.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,8 @@ items:
355355
href: /legal/cognitive-services/face/data-privacy-security?context=/azure/ai-services/computer-vision/context/context
356356
- name: Limited Access features
357357
href: /legal/cognitive-services/computer-vision/limited-access-identity?context=/azure/ai-services/computer-vision/context/context
358+
- name: Shared responsibility for face liveness detection
359+
href: liveness-detection-shared-responsibility.md
358360

359361
- name: Reference
360362
items:
@@ -380,6 +382,8 @@ items:
380382
href: https://aka.ms/azure-ai-vision-face-liveness-client-sdk-ios-api-reference
381383
- name: JavaScript (Web)
382384
href: https://aka.ms/azure-ai-vision-face-liveness-client-sdk-web-api-reference
385+
- name: Understand the liveness versions
386+
href: sdk/understand-the-liveness-sdk-versions.md
383387
- name: Video Analysis
384388
items:
385389
- name: Video Analysis overview

0 commit comments

Comments
 (0)