In the previous article I described redundancy in more depth than I did earlier. In that article we started using linear transformations applied to identity vectors which projected them onto storage nodes. In one of the even earlier articles I also mentioned pairing. Let’s have a look at what I meant with pairing and how we can add this to our linear transformation matrix.
Discrete Value Attributes
Like we mentioned before, IA’s will be stored in an encrypted hash on the network nodes. Most hashes like MD5, SHA-1, SHA-256 etc. require a so-called ‘salt’ or some randomly added values added to the value to be encrypted. This salt adds entropy to the value to be encrypted. For example, let’s say we have an IA called ‘eyecolor’. The possible values for this attribute could contain “blue”, “brown”, “green” (and then some, but let’s stick to these). In this example the IAE (identity attribute entropy) is 3 (as there are only 3 possible values). It is fairly easy to encrypt 3 values, compare the encrypted results to the value stored in the database and our encryption would be rendered useless.
However, let’s say we add a unique 10 digit user ID to the values so they look, for user ID 999 like “0000000999blue”, “0000000999brown” and “0000000999green” before we encrypt them. This would change the IAE to , no small number indeed. However, the user ID is quite predictable and once we’ve found one we’re interested in the IAE would immediately degrade to 3 again, making it simple to decrypt our values. Traditionally in this situation some random numbers are added to the value which is called the salt like mentioned before. We will use a few random salt characters but we’ll also use ‘pairing’ of a less predictable kind (as the unique user ID is not so great an example).
As we saw with the example, the IAE has a multiplicative character; while the IAE was 3 at first, by adding a value with in itself an entropy of
to the attribute we suddenly could multiply the 3 with the
. So what if we pair IA’s with a high IAE with attributes with a low IAE? This would increase the entropy of the result quite a lot! Besides this, we would then not only store one attribute per storage node, which is a good thing in itself as there will potentially be far more IA’s in total than there will be storage nodes!
Transformation Matrix with Pairing
The pairing of IA’s is also not very hard to model mathematically. If we look at our previous identity again:
Using the following transformation matrix on would already implement pairing:
As the result of this transformation would be:
So we see that on node 2 IA[1] and IA[2] are now paired.