Skip to main content

Privacy-Centric Cross-Media Measurement

A distributed system for cross-publisher, cross-media ads measurement through secure multiparty computations. Built with differential privacy and cryptographic protocols for guaranteed privacy protection.

Kingdom Controller
Duchy Node 1
Duchy Node 2
Secure Multiparty Computation
Privacy: Differential
Encryption: Multi-key

Quick Start

Get the measurement system up and running in your environment

1

Understand the Architecture

Review the system architecture to understand how the Kingdom and Duchy nodes work together. The Kingdom serves as the central coordinator while Duchies perform secure multiparty computations.
# Clone the repository
git clone https://github.com/world-federation-of-advertisers/cross-media-measurement.git
cd cross-media-measurement
The system requires at least one Kingdom deployment and two independent Duchy deployments for security.
2

Set Up Your Build Environment

Install Bazel and the required dependencies for building the measurement system components.
# Check Bazel version (see .bazelversion for required version)
bazel --version

# Run the test suite to verify your environment
bazel test //src/test/...
See the Building guide for detailed environment requirements including Clang, SWIG, and platform specifications.
3

Deploy to Kubernetes

Choose your deployment target (GKE or EKS) and follow the deployment guides for Kingdom and Duchy components.
The Kingdom cluster includes:
  • gcp-kingdom-data-server (Cluster IP service)
  • system-api-server (External load balancer)
  • v2alpha-public-api-server (External load balancer)
  • CronJobs for measurement cleanup and cancellation
Explore the Setup & Deployment section for platform-specific instructions.
4

Configure and Run Measurements

Once deployed, configure measurement reports through the Kingdom API. Publishers fulfill requisitions by computing encrypted sketches and sending them to Duchies.
# Example: Create a measurement using the v2alpha API
# (Requires authenticated access to your Kingdom deployment)
curl -X POST https://your-kingdom-api/v2alpha/measurements \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @measurement-config.json

Explore by Topic

Deep dive into specific areas of the measurement system

System Architecture

Learn how the Kingdom, Duchies, and secure multiparty computation protocols work together.

Deployment Guides

Deploy the measurement system on GKE or EKS with Terraform and Kubernetes.

Differential Privacy

Understand how differential privacy protects user privacy in measurement results.

API Reference

Explore the public and system APIs for measurements, requisitions, and reporting.

Operations

Manage certificates, retention policies, and runtime operations for production deployments.

Development

Build from source, run tests, and contribute to the measurement system codebase.

Key Features

What makes the Halo measurement system unique

Privacy-Preserving Computation

Secure multiparty computation ensures no single party can decrypt measurement data. All Duchies must participate to generate results.

Differential Privacy

Built-in differential privacy protections with noise injection and privacy budget management for mathematically guaranteed privacy.

Multi-Cloud Architecture

Deploy across multiple cloud providers (GCP, AWS) for enhanced security and independence between Duchy operators.

Kubernetes-Native

Designed for cloud-native deployments with Kubernetes manifests, Helm configurations, and Terraform modules.

Ready to Deploy?

Get started with deploying the Halo measurement system in your cloud environment. Follow our comprehensive deployment guides for GKE or EKS.

View Deployment Guides