Building Encrypted iOS Apps Using Fully Homomorphic Encryption
Smartphones hold a trove of sensitive data that users want to keep secure, but this data can also unlock interesting personalization features. Sometimes even on-device processing of sensitive data can be risky as apps may be insecure. With FHE, this data can be kept secret all the while being processed by third-party applications securely, using machine learning or other data analytics algorithms.
The Zama team is releasing several open-source demo applications for iOS and a client SDK so that you can build FHE-enabled mobile applications:
- The Zama Data Vault: securely stores sensitive information
- Demo apps: FHE Health and FHE Ads show how to build user applications using encrypted server-side processing
- Concrete ML Client Extensions SDK: provides FHE functionality to client applications on several platforms. It can interface with Machine Learning applications built with Concrete ML or with other FHE applications built with TFHE-rs or Concrete.
Zama Data Vault: Secure storage for sensitive mobile data
Your smartphone generates sensitive data such as health indicators, location data and application usage statistics. This data are shared with applications which may transmit them to cloud services for analysis, exposing you to risks of data leaks or to undesirable tracking.
For example, online advertising often relies on invasive third-party cookies to build user profiles that are then shared with ad networks. But the risk isn’t limited to the web—even apps running locally on your device can mishandle sensitive data. Once you grant access, you have little control over how your data is used.
Some limited protections exist on smartphones: iCloud KeyChain secures passwords and credit card numbers cryptographically and requires special permissions to access the sensitive data. But these types of data are currently only protected during storage or transfer, and are not protected during processing.
The Zama Data Vault is an application that extends cryptographic security to any type of sensitive data. Furthermore, it can share the encrypted data securely with applications so that apps such as health statistics or social media work just as before, but without exposing your sensitive data.
To ensure privacy, decrypted results are not accessible directly by any other third-party app than Zama Data Vault. Instead, the Data Vault renders sensitive data processing results using Secure Display widgets, which are visible to users but remain unreadable to the third-party apps themselves—even against screen capture.

Privacy-preserving mobile apps demo
We release two open-source demonstration apps that show developers how to build FHE enabled mobile applications on iOS.
FHE Health
FHE Health takes sleep cycle data recorded by the Apple Watch and computes sleep quality scores for each night—without ever revealing the raw sleep data to the app or the server.
- The Zama Data Vault encrypts the sleep data
- A cloud server runs the sleep quality model on the encrypted input
- The encrypted result is returned and decrypted only within the Data Vault
- FHE Health application display the score using a Secure Display widget

FHE Ads
FHE Ads mimics a social media feed, displaying tweet-style posts taken from a public dataset mixed with demo Ads that are tailored to the user’s profile—without actually accessing users’ personal data.
- Users define their encrypted profiles (age, interests, etc.) or generate an example profile in the Zama Data Vault
- The FHE Ads app retrieves this encrypted profile and sends it to the server
- The server selects relevant ads based on the encrypted profile without accessing the personal data in clear
- Ads are shown based on encrypted matching, not behavioral tracking
By leveraging the Data Vault, FHE Health and FHE Ads can retrieve and compute encrypted versions of the raw personal data and can display the private personalized ads or health statistics without gaining access to them.
With FHE, the user applications don’t need additional permissions to read sensitive data, as they only handle such data in its encrypted form and can not access encryption keys. They demonstrate how FHE can enable private-by-design applications, where user data is never exposed—even if the app is compromised or malicious.

Note: These demo applications are currently available via TestFlight only, for demonstration purposes. They are not listed on the App Store. If you'd like to test them out, feel free to contact us to request access.
Concrete ML Client Extensions SDK
This SDK contains code that generates keys, encrypts and decrypts various formats of ciphertexts which can be inputs or outputs of FHE programs written with Concrete ML, TFHE-rs or Concrete.
For Zama Data Vault, the Concrete ML Client Extensions SDK is used to generate keys, encrypt and decrypt through Swift bindings. Although FHE computation is computationally more expensive than clear-text computation, the heavy lifting is performed server-side. Mobile phones can easily run the client-side encryption and decryption of large quantities of data.
The server-side logic of the FHE Health and FHE Ads apps is implemented as a classical Python-based HTTP server with celery task queues. It can use GPU acceleration if available.
Build your own FHE-powered app
In addition to python-based clients, with the new Concrete ML Client Extensions SDK, developers can now build and deploy FHE applications that can now be deployed on iPhones.
To get started, take a look at the demo application code and at the Concrete ML Client Extensions SDK.
FHE Health and FHE Ads demonstrate how to build FHE applications by interfacing with the Zama Data Vault. The Zama Data Vault is the bridge that guarantees that data stays private and provides a platform to build FHE-enabled applications that process this data to provide valuable insights for users.
In this video, Zama team member Jordan Fery walks you through the full implementation of Zama Data Vault and the two FHE apps.
Additional links
- Star Zama's Concrete ML GitHub repository to endorse our work.
- Review the Concrete ML documentation.
- Get support on our community channels.
- Participate in the Zama Bounty Program to get rewards in cash!