The context is described in another of my question, and is as follow : i've got to securely store identifiers, called TIP. We need (1) a method to derive always the same UID from a TIP, so that no one can do the reverse operation, except (2) our Data Protection Officer that would be entitled, in some cases, to access the TIP behind an anonymized UID.

The current idea is to use a hash, like argon2, but that would force us to maintain an evergrowing table linking each TIP with its hashed version.

the idea

Instead of storing a table, just generate a couple of gpg keys. When receiving a password to hash, encrypt it with one of the key (the public one), and the other, the «private key», is in possession of the DPO only, so only she can decipher the TIPs she's entitled to, without having to rely on a database we would have to feed and therefore, access.

I initially feared that the low-entropy input would allow for a rainbow hash table to break the encryption. But to increase entropy, we could simply append the argon2 hash of the TIP to the to-be-encrypted text. Hence, we got high entropy encrypted message, with for example a ED25519 key, that once deciphered with the key owned only by our DPO, would also give her the initial TIP.

Do that method has a name ? Is it standard practice ? If so, should i consider this solution as safe as a GPG key ?


You must log in to answer this question.

Browse other questions tagged .