Security and data protection

How Joripo protects the people in your data.

Survey data holds names, phone numbers, locations and answers people gave in confidence. This page describes how Joripo is built to protect it, what each safeguard does, and, just as plainly, what Joripo does not do yet.

Privacy settings: identifying questions replaced by a pseudonym or a location rounded to about 1 km for anyone without identity access

Joripo's console, showing a demo workspace with synthetic data.

Principles

Four rules we design to.

Security in a survey platform is mostly about who can see what, and about making mistakes recoverable. These rules shape every screen that touches respondent data.

  • Access follows the role

    People see the workspaces and actions their role allows, checked on the server for every request, never only hidden in the interface.

  • Identity stays apart

    Identifying answers can be masked for anyone without identity access, while the stored record stays exactly as it was collected.

  • Mistakes are recoverable

    Deleted forms and workspaces can be restored. Permanent deletion is a separate, deliberate step with a backup and a typed confirmation.

  • Say what is not covered

    Every safeguard on this page has limits, and we list them. If your study needs something Joripo does not do, you should know before fieldwork.

Safeguards

How Joripo protects data.

The safeguards built into the server, Joripo Collect and Joripo Desktop, with the numbers they use.

Joripo's security safeguards and what each one does
Encryption at restCollected data is encrypted with AES-256-GCM, in 64 KiB authenticated chunks: submissions and their attachments (photos, audio, signatures, text audits), server datasets and case lists, saved test sessions, and the answers stored in the database. It is switched on for Joripo's hosted service. Downloads, exports and Joripo Desktop decrypt as they stream, so authorised people see normal data. Form definitions, form media and other records (people, quality findings, cases, settings) are not covered.
In transitOn the hosted service every request is served over HTTPS: plain http is redirected, and every https response sets HSTS for one year. Cookies are marked Secure. Pages for signed-in people, API answers and phone answers are sent with no-store caching, so browsers and proxies do not keep copies of respondent data.
PasswordsHashed with scrypt (N = 217, r = 8, p = 1, about 128 MiB of memory per check). A sign-in for an account that does not exist takes the same time, so timing does not reveal who has an account. Owners, managers and reviewers need at least 12 characters; data collectors, who have no console access, at least 4.
SessionsA signed, HttpOnly session cookie that ends after 2 hours without use or 7 days after sign-in. "Keep me signed in on this computer" is unticked by default. Signing out, a new password, a lower role or deactivation ends that person's sessions in every browser.
Request forgeryEvery change made in a signed-in browser carries a per-session CSRF token. An automated test walks every route the server offers and fails if any route that changes data is unprotected.
Sign-in lockouts8 failed sign-ins per account and 30 per network address in 15 minutes, on the web, in Joripo Collect, for ODK Collect and on password-reset requests. The counts are kept in the database, so a restart does not reset them.
Organisation isolationEvery query is filtered by organisation, and each organisation has its own storage folder. A request for another organisation's workspace, form, submission, file or token answers "not found", so its existence is not even confirmed. An automated sweep tries every route with every role using another organisation's IDs.
Roles and workspacesOwner, manager, reviewer and data collector, enforced on the server for each workspace. Data collectors have no console. With Restricted workspaces on, managers and reviewers see only the workspaces they are assigned to.
Respondent de-identificationIdentifying questions can be pseudonymised, redacted or coarsened for anyone without identity access, in every export, the Data Explorer, attachments, the data API and Joripo Desktop. More below.
Garbling vaultFor garbled sensitive questions, the seed, roster and key rows are encrypted with AES-256-GCM under a key derived from both a server secret and the workspace's own key. Only named key custodians can open the vault, and every key action is recorded. How garbling works.
PhonesYour organisation decides whether a new Joripo Collect phone is approved at once or waits for approval. A phone's keys lapse 30 days after it last checked in, and owners and managers can revoke any phone at once. On the phone, sign-in credentials are sealed with the Android Keystore, interviews are kept in the app's private storage and excluded from Android cloud backup, and the server can require the account password whenever the app opens. Device keys for ODK Collect do not lapse on their own: they work until revoked.
API and Desktop tokensShown once, then stored only as a SHA-256 hash. They can only read, and only through the same masked data the person sees in the console. Joripo Desktop keeps its sign-in in Windows Credential Manager, never in its settings or logs.
Incoming submissionsSubmission XML is parsed with defusedxml, so malformed or entity-laden XML is refused before anything is stored. A re-sent submission with different content never overwrites the first copy. Upload sizes are limited while the data arrives.
Audit trailThe server records sign-ins, people and role changes, passwords, phones and device keys, tokens, sharing, privacy rules, identity-map downloads, garbling key actions and case-list changes, each with who acted, the outcome, the address and the browser. The application only ever adds to it. Today the server's maintainer can review it; organisation owners cannot yet see it in their console.

Access control

Give each person exactly the access their work needs.

Access is set in two places: roles for your own team, and external access for partners who need one workspace and nothing else.

Four roles, applied workspace by workspace.

Owners can do everything, including managing people, deleting workspaces and choosing how new phones are approved. Managers run workspaces: forms, datasets, phones, quality checks and exports. Reviewers read submissions, review quality findings and export data, but change nothing else. Data collectors only collect, in Joripo Collect and web forms, with a username if you prefer, and never open the console.

  • Restricted workspaces limit managers and reviewers to the studies they work on, and a manager can be narrowed to "Reviewer only" or "Data collector only" in one workspace.
  • A password an owner sets is temporary: the person must choose their own before anything else opens.
  • Deactivating a person signs them out everywhere and revokes their phones.
People: each team member's role, workspaces, last sign-in and status

Share one workspace, not your whole organisation.

Owners and managers can give a funder, a principal investigator's team or a partner firm access to a single workspace. Each share has one of four roles, its own password shown once, an optional end date and a note.

  • Viewer sees forms and browses data; Data downloader also downloads exports and media. Either can be allowed to see quality results.
  • Data manager also manages datasets and the case list, reviews findings and can purge submissions; Form and data manager also manages forms. Choose these with care: they are not read-only.
  • External clients never get identity access, API tokens or Joripo Desktop, and never reach people, phones, privacy or garbling settings.
  • "New password" replaces a share's password and ends its sessions; "Revoke" ends access at once.
External access: sharing one workspace with someone outside the organisation in one of four roles, with an optional end date

Respondent de-identification

Analysts can work with the data without seeing who said what.

For each form, owners and managers mark the questions that identify a respondent and choose what people without identity access see instead. Identity access is given person by person.

  • Pseudonymise

    A name or ID becomes a stable pseudonym, "P" followed by 10 characters, made with HMAC-SHA-256 under the workspace's own key. The same person gets the same pseudonym across the dataset, so records still link.

  • Redact

    The answer is left blank, or the file (a photo or a recording) is withheld.

  • Coarsen

    GPS readings are rounded to two decimal places, about 1 km, so the area is kept but the household is not.

Where masking applies

  • Every export file and the Data Explorer, including its search
  • Submission pages, attachments and archives
  • The data API and Joripo Desktop
  • The text of quality findings

What stays the same

  • The stored record is never changed, so people with identity access, and your final dataset, keep the original answers.
  • Downloads of the identity map are recorded in the audit trail.
  • A server dataset can be marked "Identifying data": downloading or previewing it then needs identity access, and every attempt is recorded.

Deleting data

Deletes you can undo, purges you have to mean.

Most deletion in a survey is a tidying mistake waiting to happen, so ordinary deletes keep everything. Removing data for good is a separate action with its own checks.

Deleted forms and workspaces

Deleting a form moves it, with its versions, attachments, submissions and review history, to Deleted forms, where a manager can restore it. Deleting a workspace, which an owner confirms by typing its name, blocks all access to it but erases nothing, and an owner can restore it. Both are kept until restored, and they still count towards storage.

Purging submissions for good

  1. Choose what goes.Owners and managers pick one form's submissions received before a date, or specific submissions by KEY.
  2. See the exact list.Joripo shows every submission that will be removed, and the confirmation is tied to that list.
  3. Type the form ID.Nothing is deleted until the form's ID is typed in full.
  4. Keep a checked backup.By default a backup zip is written and checked first, and encrypted like the rest of the collected data.
  5. Delete and log.Files and database rows are removed together, and the purge is written to the form's purge log.
A purge removes data from the server only. Backup copies kept on phones by Joripo Collect, and study folders on Joripo Desktop computers, are not touched.

Said plainly

What we do not claim.

Ethics boards and data protection officers ask hard questions, and they deserve straight answers. These are the limits of Joripo's security today.

  • No certifications or audits

    Joripo holds no security certification or compliance attestation, and has not had a third-party penetration test or audit.

  • No 2FA or SSO for your team yet

    Organisation accounts sign in with a password. Two-step sign-in exists only for the server's maintainer, and there is no single sign-on.

  • No form-level encryption

    Forms that use XLSForm public-key encryption are refused at deploy, so nothing is ever collected looking encrypted when it is not.

  • Phones rely on Android

    Joripo Collect does not encrypt interviews with its own key; unsent answers rely on Android's storage encryption. Revoking a lost phone cuts its access but cannot wipe it.

  • Desktop folders are plain files

    Joripo Desktop's study folders apply the same masking as the server but are not encrypted by Joripo. Protect those computers as you would any data drive.

  • Hosting on Railway

    The hosted service runs on Railway, in one shared database and storage volume with logical separation. Ask us about hosting region, backups or running Joripo on your own infrastructure.

Questionnaires from your ethics board or IT team are welcome. Tell us what you need answered and we will reply in writing, including where the answer is "not yet".

Bring your data protection questions to a demo.

We will show you roles, external access and de-identification on a form like yours, and answer what your ethics board will ask.

Already using Joripo? Log in to your server.