MobiScale provides a full pipeline for verifying Apple iOS device attestations with zero-knowledge proofs (ZKPs).
It combines Rust, RISC Zero, and Noir circuits into an iOS app that can prove attestation validity in a verifiable and privacy-preserving way.
Read more about the project in the EthGlobal post.
The repository contains:
- Rust iOS Attestation SDK — Rust library for verifying Apple iOS device attestations.
- RISC0 zkVM program — Rust circuit that verifies a hardcoded Apple attestation using the SDK. The program logic resides in {risc0-attestation/guest}.
- Noir zkVM program — Noir circuit that verifies a hardcoded Apple attestation using the SDK.
- zkApp — Wraps Noir and RISC0 circuits, generates zk-proofs of correct attestation verification, and exports functionality to Swift via FFI.
- iOS app — Demo application that uses the zkApp to verify Apple device attestations directly on iOS.
- ML Model Utility — Tools to convert the BuffaloL ML model into MLX format for integration in the iOS app.
First, install Rust and Foundry, then restart your terminal.
# Install Rust
curl https://sh.rustup.rs -sSf | shNext, install cargo-risczero via rzup:
curl -L https://risczero.com/install | bash
rzup installVerify installation:
cargo risczero --versionThis step:
- Builds the RISC0 and Noir circuit code.
- Generates an FFI library for iOS integration.
From the repository root, run:
cargo runOutput: a MoproiOSBindings folder will be generated inside {zk-app}, containing the library and bindings.
Open {ios/zkAppDemo.xcodeproj} in Xcode and drag MoproiOSBindings into the project navigator.
In Xcode:
- Select a simulator or connected device.
- Press Run ({Cmd+R}).
The app will launch and perform an on-device zk-proof of Apple attestation verification.