Security

End-to-end encryption

New accounts encrypt student names in the browser (end-to-end, AES-256) once you open a subject and enter your login password. Until then the server stores the names with AES-256 and can still read them, and the table shows them. After that the server cannot read the names. The 12-word recovery phrase is required if you lose the password. There is no second class password and no checkbox on the class.

What is E2EE?

After you open a subject and enter your login password, student names are encrypted in your browser. Until that first open, the server stores the names with AES-256 and can still read them, and the table shows them. The key comes from the login password and a random salt. There is no second class password.

After that first open:
  • A database copy of the names is ciphertext.
  • We can hand over only those encrypted names. Before the first open, the server can still read them.
  • The ClassCheck team cannot read the student names. Before the first open, the server can.

Difference: standard vs. E2EE

AspectStandard (AES-256 on the server)E2EE
Encryption On our servers (AES-256-GCM) In your browser (before transfer)
Who has the key? ClassCheck Only you (derived from your password)
Privacy High (GDPR-compliant) Maximum (the provider is blind too)
Convenience “Forgot password” is possible If the password is lost, only the recovery key can save it
Performance Normal Slightly slower (browser cryptography)
Sharing with colleagues Possible directly Only with colleagues who have also turned E2EE on
Password: The prompt in the table is your login password. “Forgot password?” and the recovery phrase are the way back. Names can still be visible before you enter it, because the class is not encrypted in the browser yet.

How it starts

Every new account gets a key. You do not turn it on per class.

  1. At registration ClassCheck shows a 12-word recovery phrase. Write it down. It is the only way back if you lose the login password. ClassCheck cannot restore it.
  2. Create a class and open a subject.
  3. Enter your login password (the same one as sign-in, not a class password). The browser encrypts the student names. Until you do that, the names are still readable.
  4. An existing class is migrated the first time you open it. You do not create a second class for that.

Recovery key

At registration you receive a 12-word recovery phrase — for example:

papier sonne wolke baum lampe kreis stein wasser feder rad ente buch
IMPORTANT: This phrase is the only way to restore your E2EE data if you forget your password. We cannot rescue you — we do not have it ourselves.

How to store it safely

  • Print it and lock it in a safe or a filing cabinet (old-fashioned, and safe).
  • In a password manager (Bitwarden, 1Password, KeePass), stored as a secure note.
  • On an encrypted USB stick.

How not to store it

  • Not as an unencrypted photo on your phone.
  • Not in an email to yourself (a mailbox break-in means the data is gone).
  • Not in a cloud note without 2FA.

Limitations

E2EE does not make ClassCheck less safe, but it costs some convenience:

  • Full-text search over student names runs in the browser — a little slower with very large classes.
  • Printouts and PDFs are built in the browser (not on the server). Very old browsers can stutter.
  • Bulk actions such as a bulk CSV export run in the browser.
  • When you close the browser tab, the unlocked key is gone — next time you enter the same login password again.

Sharing E2EE classes

Encrypted classes can be shared too — with one condition:

The invited person needs a key on their account. New accounts get one at registration. Otherwise there is no public key with which the class key can be wrapped for them.

Technically, sharing works like this:

  1. You click “Share” and enter the email address.
  2. Your browser fetches the invited person’s public key.
  3. Your browser wraps the class key with that public key and sends it to our server.
  4. On the next login, the invited person’s browser unwraps the class key with their private key.
  5. From then on they can read the class — we never saw the class key in plain text.

More detail: Sharing with E2EE.

What if the password is lost?

You still have the recovery key

  1. Sign in with your normal account password.
  2. When you try to open an E2EE class, you see “Forgot password?”.
  3. Enter the 12-word phrase.
  4. Set a new login password. It unlocks the same key.
  5. Every class is accessible again.

You have lost the recovery key

If the class was already encrypted in the browser, those names cannot be restored. We cannot reconstruct the key. Names that were not encrypted in the browser yet are still stored with AES-256 on the server.

One last chance: if the class was shared with colleagues, one of those people can export the data and give it to you.

Read next