Recently, I came across Nillion‘s whitepaper. Nillion at its core is trying to be a new decentralized encrypted data-processing layer. Here’s how it works.
Performing computation on encrypted data is an interesting challenge. Fully-homomorphic encryption has been one approach to it. It is both computationally expensive and slow. Nillion takes an interesting approach. It uses one-time pads, something that a cryptography student learns and immediately forgets about. So, rather than storing the plain-text information, Nillion stores data encrypted (XORed) with one-time pads. And these pads are generated via multi-party computation with some minimum number of shares for decryption, say T
.
What this leads to is something interesting. Rather than storing plain-text data D
, Nillion’s decentralized nodes are stored D⊕P
where P
is a one-time pad that’s generated from multi-party computation where minimum T
nodes have to collude to get that. Can all computations be performed on D⊕P
, well, no, But quite a bit. The bigger advantage, I believe, is that D⊕P
has no dispersion. A typical encryption algorithm is expected to produce high dispersion, so, when you change a single bit in the plain-text data D
, the output will look radically different in several bits all over. In the case of a one-time pad, there is no such dispersion. And that makes them a great candidate for being able to perform distributed computation on encrypted data.