← Back to Field Notes & Guides
April 2, 2026 • 10 min read

Zero-Knowledge Mobile Session Hashing for DAU/MAU Measurement

How mobile product teams can calculate daily active users and retention curves without collecting persistent hardware IDs, advertising identifiers, or user account keys.

By Elena Vaneva, Senior Mobile Telemetry Practice
Zero-Knowledge Mobile Session Hashing for DAU/MAU Measurement

The conventional approach to measuring mobile application engagement has relied on transmitting persistent device identifiers: IDFA on iOS, Google Advertising ID (GAID) on Android, or a universally unique identifier (UUID) persisted across app reinstallations in the device Keychain or shared storage.

Under modern privacy regulations (such as the EU GDPR and Thailand PDPA), storing and transmitting persistent identifiers transforms every telemetry event into personal data.


The Rotating Cryptographic Salt Architecture

To measure Daily Active Users (DAU) and cohort retention without maintaining an identity link across time, mobile applications can deploy a client-side ephemeral hashing mechanism.

[ User App Session ] 
       │
       ├── App-Specific Random Seed (Kept in Secure Enclave)
       └── Server-Supplied Daily Epoch Salt (Rotates at 00:00 UTC)
       │
       ▼
   SHA-256( Device_Seed + Daily_Salt + App_Bundle_ID )
       │
       ▼
[ Ephemeral Daily Token (e.g. 7f9a2b...) ]
       │
       ├── Sent with telemetry packet for current 24-hour window
       └── At 00:00 UTC, salt expires → Token becomes unrecoverable

How It Works:

  1. Local Enclave Seed: When the application is launched, a cryptographically secure 256-bit random number is generated and stored exclusively within the device’s Secure Enclave (iOS) or Android Keystore. This seed is never transmitted across the network.
  2. Server-Provided Daily Salt: During the initial network sync of the day, the client fetches a transient public salt string generated by the ingestion gateway.
  3. Daily Pseudo-Identifier Generation: The client hashes its internal seed with the current day’s salt: $$\text{Token}_{\text{day}} = \text{HMAC-SHA256}(\text{DailySalt}, \text{EnclaveSeed})$$
  4. Aggregation at Ingestion: The telemetry server counts unique tokens received during the 24-hour window to calculate exact Daily Active Users.

Calculating Retention Without Cross-Day Identifiers

To compute 7-day or 30-day retention without cross-day tracking:

  • The client locally computes its install date bucket (e.g., “Week 12”).
  • Telemetry packets carry only the coarse install cohort tag (“Cohort: 2026-W12”) and the current day’s ephemeral token.
  • The backend aggregates counts per cohort without ever knowing which specific user belonged to which data point.

This mathematically eliminates the risk of profiling individual user activity across extended timelines while delivering accurate product analytics to engineering and product teams.

Have questions regarding this telemetry pattern?

We assist mobile development teams in conducting code reviews and restructuring live event pipelines.

Consult with an Auditor