Skip to content
This repository has been archived by the owner on May 16, 2023. It is now read-only.

Latest commit

 

History

History
20 lines (17 loc) · 1.61 KB

longterm-archive.md

File metadata and controls

20 lines (17 loc) · 1.61 KB

Longterm-Archive

The Longterm-Archive is a stand-alone database. QuickTestArchives are moved to the Longterm-Archive using a cronjob (ArchiveService) and encrypted. Depending on the setting, a point in time in the past is set and all entries affected before that are moved. During the move, the QuickTestArchive is first converted to a DTO and then to a JSON. The JSON is encrypted and stored in the Longterm-Archive database.

The object in the long-term archive contains the following fields and information:

name description
hashed_guid Hashed GUID, is taken from QuickTestArchive. Field serves as ID and must be unique.
identifier The identifier is the shortened date of birth (ddMM) and the first 2 letters from the last name. The identifier is used to quickly find an encrypted entry. In the DB the identifier is stored as a hash. The hash is enriched with Pepper.
key The password to decrypt the "ciphertext", encrypted in the DB with RSA.
ciphertext DTO encrypted with AES as JSON with the content from QuickTestArchive. The generated password is stored in the "key" field.
public_key The RSA PublicKey used to encrypt the password "key", as a Base64 string.
algorithm The AES algorithm used for encryption, this must also be used for decryption.
created_at Timestamp creation time
updated_at Last modification time
version Field managed by Hibernate

The PublicKey is queried by a hardware module (HSM) and used for encryption by the AES Password. The AES password is generated and stored in the key field after encryption of the content.