PrivaSearch

Security & trust

What we secure, and where you can check it.

Your client files remain yours; looking after them is our responsibility. Here you find per theme which measures are in PrivaSearch, and per framework how they relate to it. Our approach is aligned with the frameworks below. That is not a quality mark: for each requirement you see where to find the proof.

Measures per theme

Six themes, in the application itself.

This is the overview. The formal list of measures, in the form of the data processing agreement, is on the security page.

Access

  • Password plus compulsory two-step verification (TOTP) for every user, without exception.
  • You confirm a new device with a code by email; after that it stays trusted for thirty days.
  • Signing in is limited to five attempts per minute per account. The authenticator code and the device code also have a limit.
  • Passwords are stored only as a hash (bcrypt), never as readable text.

Separation per organisation

  • Every organisation has its own database and its own address.
  • The databases are on the same database server: it is a separation per database, not a separate server per client.
  • A session or a connection of one organisation does not exist at the address of another.
  • A session cookie applies only to its own address and cannot be read by scripts.
  • We manage the platform from a separate admin environment with its own accounts. An account of an organisation cannot sign in there, and an account of the admin environment cannot sign in to a workspace.
  • Signing in to the admin environment requires a password and an authenticator, or a passkey; on a new device, a code by email is added.
  • From the admin environment we can create an organisation, temporarily block it and delete it. During a block, nobody can sign in to its workspace; its data remains.
  • Of what an organisation has in PrivaSearch, the admin environment shows only counts, statuses and timestamps, such as the number of documents and accounts and the size of the storage. It shows no names of projects, folders or documents, no text from a document, no pseudonyms and no entries from the activity log of the organisation.
  • The one exception is the accounts: we can see the name, the email address, the role and the status of each account of an organisation, block or unblock an account and resend an open invitation. Every time that list is opened and each of those actions is recorded in a log of the platform administration; the actions also appear in the activity log of the organisation, under the name Platform administration.
  • From the admin environment we can view along in the workspace of an organisation, as the support account Platform administration. Each time, this requires the password of the platform administrator and a reason from a fixed list; the start, the reason and the end are recorded in a log of the platform administration.
  • Viewing along is read-only and lasts at most one hour: every change is refused, and after sixty minutes the session ends by itself. While it runs, a bar at the top of every screen of the workspace says that Platform administration is viewing along.
  • The support account sees what an administrator of the organisation sees who is not a member of any project, such as the accounts, the activity log and the settings. It cannot open a document, an original or extracted text, cannot search and cannot reveal a pseudonym.
  • An attempt by the support account that is refused appears in the activity log of the organisation, under the name Platform administration. The start and the end of viewing along do not appear there; they appear in the log of the platform administration.
  • The support account is not an account of the organisation: it is not in its list of users, does not count anywhere and cannot sign in with a password, an authenticator or a passkey. We cannot sign in as a user of an organisation.

Data and encryption

  • Personal data is replaced by pseudonyms before indexing. Nothing is searchable until a staff member has released the text.
  • The link between pseudonym and person is stored encrypted in a separate vault.
  • The keys for the vault and for the encrypted fields are derived per organisation from a master key; the master keys are the same for all organisations.
  • Originals are kept in private object storage without public access, with a separate path prefix per organisation.
  • Encryption of stored files is a property of the storage the application runs on. The application does not encrypt originals itself; its configuration check checks the setting of the storage.

Permissions and oversight

  • Project membership determines who sees what, with the roles reader, editor and manager. Administrators get no automatic access to documents.
  • Any member of a project can open the original of a document, also with the reader role. That role limits what someone may change. Every download is logged.
  • Any member of a project can read the extracted text of a document that is waiting for the privacy review, also with the reader role. That is the text of the original, before pseudonymisation. Every view is logged.
  • Revealing one pseudonym in the pseudonymised text requires write access to the project. Every reveal is logged.
  • If a membership or a permission is missing, there is no access. Refused access is recorded in the activity log.
  • Every entry in the activity log is chained to the previous entry with a hash; a periodic check recalculates the chain.
  • The activity log contains no document content and no search queries.

Connections and browser

  • The connection with SharePoint is read-only.
  • An AI assistant connects via OAuth 2.1 with PKCE and receives only released, pseudonymised passages. Access tokens expire after eight hours.
  • Every page runs under a strict security policy for scripts and styles (Content Security Policy) and cannot be loaded in a frame of another site.
  • The browser does not keep a response and sends no referrer to another site.

Development

  • There is one quality gate for the source code: formatting, static analysis at level 9 without a list of exceptions, and a check on dependencies.
  • The automated tests run on the same kind of database as the service itself. Separate tests guard the separation between organisations.
  • Keys and passwords are not in the source code; the application reads them from the environment.
  • Every sentence about technology on this page is guarded by an automated test: if the sentence no longer holds, the test fails.

Incidents

Reporting a vulnerability or incident.

If you see something that is not right, report it. We ask two things: test only with your own account and not with data of others, and do not make a vulnerability public before it has been fixed.

  1. Report Email security@privasearch.ai with a description and the steps to reproduce it.
  2. Confirmation We confirm receipt and keep you informed about the fix.
  3. A data breach in your environment If you are a client and suspect a data breach, we provide the information you need for your own assessment and any notification within 72 hours (Article 33 GDPR).

Sub-processors

Which parties are involved.

We engage as few parties as possible. Which ones they are, what for and where they process is set out in the overview of sub-processors; it follows the set-up that actually runs. The processing takes place on European infrastructure.

What is not a sub-processor of ours: an AI assistant that you connect to PrivaSearch yourself. Its provider is a separate processor of your organisation.
Contact

A question about security, or need a document?

Email security@privasearch.ai with a question about security, a supplier questionnaire or a security report. We send the full data processing agreement and the overview of sub-processors on request.

Email security@privasearch.ai

This page was translated from Dutch with the help of AI. In case of differences, the Dutch version applies. Read the Dutch version