Homo (Similar) Morphic (Form)
A mechanism by which we can perform mathematical operations on data without giving access to that data.
Introduced in this paper — On Data Banks and Privacy Homomorphisms” — 1978 (Rivest, Adleman and Dertouzos, 1978)
The simplified version of how this works is represented in the diagram below —
Essentially, we have the cipherspace that is a space we consider to be encrypted. Now lets say there is a function for encryption that just multiplies the number by 2. Then an operation in the cipherspace on encrypted data can take place which when decrypted gives us the same result as if that had happened in the plainspace. That is the unencrypted space.
Partial & Full Homomorphic — Why ops matter
Homomorphic Encryption Functions can be —
Or Both — FHE or Full Homomorphic encryption — Introduced by Craig Gentry in 2009
However, FHE tends to be slow and expensive. Recently there has been more research into a HE systems that are sort of an in between, that is consisting of two levels, these systems tend to be faster but with certain tradeoffs in security.
The use cases for Homomorphic Encryption are numerous especially in a world where data is the new oil and multiple large industrial complexes that do not trust each other. Some generic cases are —
- Voting — The result of the election can be computed without knowing the actual vote, hence protecting the voter
- Collision Detection for satellites between various nations — Predict collisions without sharing satellite coordinates
- KYC — Enable Screening, IDV and Unwrapping of entities and individuals without compromising on identity
In traceto.io we are using the model where data of the user is shared in IPFS encrypted at client side, we are exploring how we can do IDV and screening without actually decrypting the information. That means your identity is always encrypted and never shared, but we can help the regulator and ensure that there are no criminal elements hiding in the network.
Example of a Homomorphic function.
RSA (Rivest–Shamir–Adleman) is one of the first public-key cryptosystems and is widely used for secure data transmission. Below is a representation of how RSA works
The details of how the numbers are derived can be found here.
Fundamentally, RSA involves a public key and a private key. The public key can be known by everyone, and it is used for encrypting messages. The intention is that messages encrypted with the public key can only be decrypted in a reasonable amount of time by using the private key. Now the deal is that RSA is homomorphic by nature and its Homomorphic Property can be expressed by —
The Homomorphic Property here is multiplicative in nature. An example of how this is used can be found here.