Security & Compliance

Technical reference for IT directors and procurement teams · Version 1.0 · February 2026

1. Executive Summary

ExamLock is a phone-locking and exam/test integrity platform designed for Australian schools. Our core privacy principle is simple: we cannot leak what we do not store.

Students using ExamLock have no accounts, no names, no emails, and no passwords on our servers. Students are identified only by a school-issued student number and a one-way hash of their device ID — both meaningless without access to the school's Student Information System (SIS).

Breach scenario: If an attacker gained full access to ExamLock's database, they would find pseudonymous records such as STU-20481 anda3f8c9...b2e1. They could not identify any student without separately compromising the school's SIS.

All data is hosted on Supabase infrastructure in AWS Sydney (ap-southeast-2), ensuring Australian data sovereignty.

2. How an Exam or Test Session Works

One-time setup (per device):

  1. Student enters their student number on the app
  2. The app generates a random device UUID and hashes it with SHA-256 locally
  3. Only the hash is sent to the server — ExamLock never sees the raw device ID

Per exam or test:

  1. Teacher creates an exam or test in the dashboard → a JWT-signed QR code is auto-generated
  2. Student scans the QR code → self-registers for the exam or test and checks in
  3. Student's phone locks automatically
  4. Teacher monitors status in real time
  5. Teacher ends the session → all phones unlock

Total student interaction: enter student number once (per device), then scan a QR code per exam or test. No app accounts, no passwords, no setup wizards.

3. Privacy Architecture — What Data Lives Where

On ExamLock's ServersNOT on ExamLock's Servers (Ever)On School's Systems Only
device_hash (SHA-256)Student namesstudent_number ↔ real identity mapping
student_numberEmail addressesContact details
school_idPhone numbersParent/guardian info
Timestamps (check-in, lock, unlock)Date of birthMedical or welfare records
Phone lock statusGPS / location data
Platform & OS versionPhotos, contacts, files
Violation events (type + time)Browsing history, biometrics

4. Data Inventory

Data FieldStored?Example ValueSensitivityPurpose
student_numberYesSTU-20481Low (pseudonymous)Link check-ins to a student identity known only to the school
device_hashYesa3f8c9...b2e1Low (irreversible hash)Bind a student number to a specific device
checked_in_atYes2026-02-16T09:00:00ZLowRecord attendance time
phone_lockedYestrueLowTrack exam or test compliance
phone_lock_verified_atYes2026-02-16T09:01:00ZLowConfirm lock was verified
platform / os_versionYesAndroid 14LowDebugging and compatibility
check_in_methodYesqr_codeLowAudit trail of check-in method
violation_typeYesapp_exitLowRecord policy violations
Student nameNoNever collected
Student emailNoNever collected
GPS / LocationNoNever collected
Biometrics / PhotosNoNever collected

5. Breach Scenario Analysis

Scenario: Full database compromise

An attacker gains read access to the entire ExamLock database. What do they get?

  • Student numbers (e.g. STU-20481) — meaningless without the school's SIS
  • Device hashes — irreversible SHA-256 hashes, cannot be linked to a physical device
  • Exam and test timestamps and lock status — operational data only
  • Violation records — "student X exited the app at time Y" with no real identity

Result: The attacker holds purely pseudonymous data. They cannot identify a single student without independently compromising the school's SIS. Under Australia's Notifiable Data Breaches (NDB) scheme, pseudonymous data that cannot be re-identified is unlikely to meet the "serious harm" threshold requiring notification.

For our full breach response procedure, see the Data Breach Notification Procedure.

6. How Teachers See Student Names

ExamLock stores student numbers only. Teachers need to identify students during exams and tests. Here is how name resolution works across current and planned modes:

ModeStatusHow It WorksNames on ExamLock Servers?
ID-Only ModeCurrentTeachers see student numbers and cross-reference with their printed class rollNo
Live SIS LookupRoadmapDashboard queries the school's SIS API in real time to resolve names in the browserNo
CSV CacheRoadmapTeacher uploads a CSV mapping (student_number → name); cached in browser localStorage onlyNo

In every mode — current and planned — student names never flow through ExamLock's servers.

7. QR Code Security Model

QR codes are the primary mechanism for exam and test check-in. Each code is a cryptographically signed JWT token.

ControlImplementation
Token formatJWT (JSON Web Token) per RFC 7519
Signing algorithmHMAC-SHA256
Signing keyEXAMLOCK_JWT_SECRET (server-side env var, never exposed to clients)
Token expiry24 hours from generation
Payload contentsexam_id, school_id, issued_at, expires_at — no student PII
Rate limitingAll anonymous check-in endpoints are rate-limited
Replay protectionServer validates expiry and exam/test status before accepting check-in

8. Phone Locking — How It Works

Android

  • UsageStats polling — detects when the student leaves the ExamLock app
  • SYSTEM_ALERT_WINDOW overlay — displays a blocking screen preventing app switching during exams and tests
  • No MDM profiles, no Device Admin, no Device Owner
  • Permissions: Usage Access + Draw Over Other Apps + Camera + NFC

iOS

  • Automatic Assessment Configuration (AAC) — Apple's official API for exam and test lockdown
  • Uses AEAssessmentSession framework
  • No MDM profiles, no supervised mode required
  • The same API used by standardised testing platforms

What ExamLock does NOT do

  • No MDM profile installation or device enrolment
  • No access to SMS, calls, or contacts
  • No GPS or location tracking
  • No background camera or microphone access
  • No reading of files, photos, or browsing history
  • No data collection outside of active exam or test sessions

9. Infrastructure Security

LayerImplementation
DatabaseSupabase PostgreSQL with Row-Level Security (RLS) on all tables
Encryption in transitTLS 1.2+ on all connections
Encryption at restAES-256 (managed by Supabase / AWS)
API rate limitingApplied to all anonymous endpoints (check-in, QR validation)
Service role keyServer-side only; never shipped in client bundles
Mobile credential storageAndroid: EncryptedSharedPreferences · iOS: Keychain Services
Data hosting regionAWS Sydney (ap-southeast-2) — Australian data sovereignty
AuthenticationSupabase Auth (teachers/admins only); students have no auth accounts

10. Australian Privacy Principles (APPs) Compliance

Compliance with the 13 Australian Privacy Principles under the Privacy Act 1988 (Cth).

APPPrincipleExamLock Compliance
1Open & transparent managementThis document + public privacy policy at /privacy
2Anonymity & pseudonymityStudents are pseudonymous by architecture — student numbers only, no names or personal identifiers
3Collection of solicited informationMinimal collection: student number + device hash + exam/test timestamps. No PII collected.
4Dealing with unsolicited informationNo mechanism exists to submit unsolicited personal information
5Notification of collectionPrivacy policy available at /privacy; this document provided to schools
6Use or disclosureData used solely for exam and test integrity. No third-party sharing, no marketing, no analytics.
7Direct marketingNo student data used for marketing. No marketing communications sent to students.
8Cross-border disclosureAll data hosted in AWS Sydney (ap-southeast-2). No cross-border transfer.
9Adoption, use, or disclosure of govt identifiersStudent numbers are school-assigned, not government identifiers
10Quality of personal informationMinimal data collected; schools manage student number accuracy via their SIS
11Security of personal informationTLS 1.2+, AES-256, RLS, rate limiting, encrypted mobile storage (see Section 9)
12Access to personal informationSchools can export/request all data associated with their school_id
13Correction of personal informationSchools can update student records; students can request correction through school

11. NSW-Specific Compliance

RequirementExamLock Compliance
PPIP Act 1998 (Privacy and Personal Information Protection)Student data is pseudonymous; no personal information as defined under PPIP is stored on ExamLock servers
NSW DoE data hosting requirementsAll data hosted in AWS Sydney (ap-southeast-2) — meets Australian data sovereignty requirements
HRIP Act 2004 (Health Records)No health records collected or stored
Children's Online Privacy Code (OAIC, due Dec 2026)Architecture already exceeds expected requirements — no student PII stored, pseudonymous by default, minimal data collection

12. Contact & Further Information

Document version 1.0 · February 2026 · ExamLock