The article mentions homomorphic encryption, which is a way to perform computation on encrypted text, yielding encrypted results _without_ revealing the plaintext. Instead of f(x) → y, you do f(encrypted(x)) → encrypted(y).
So if you think of a function 'f' that can take text content and produce a relevant ad for it, and an encryption algorithm that converts plaintext 'x' into an encrypted 'X', then instead of running f(x) and getting an ad 'y', you'd instead run homomorphic_apply(f, X) – on the encrypted text – and you'd get an encrypted ad 'Y' without revealing 'x'. The device can keep the keys and do the decryption of 'Y', but running 'f' using homomorphic_apply can happen on the server side.
In principle homomorphic encryption is very cool and the "trick" involved to get fully homomorphic encryption described in Craig Gentry's dissertation in 2009 is pretty amazing. When it finally clicked for me I thought this was one of the most clever papers I'd ever read and truly a "mind: blown" moment.
That said, this is Facebook. As others have pointed out here, there's no need for such fancy processing and it makes much more sense to run the targeting algorithm on-device with access to the plaintext.
So if you think of a function 'f' that can take text content and produce a relevant ad for it, and an encryption algorithm that converts plaintext 'x' into an encrypted 'X', then instead of running f(x) and getting an ad 'y', you'd instead run homomorphic_apply(f, X) – on the encrypted text – and you'd get an encrypted ad 'Y' without revealing 'x'. The device can keep the keys and do the decryption of 'Y', but running 'f' using homomorphic_apply can happen on the server side.
In principle homomorphic encryption is very cool and the "trick" involved to get fully homomorphic encryption described in Craig Gentry's dissertation in 2009 is pretty amazing. When it finally clicked for me I thought this was one of the most clever papers I'd ever read and truly a "mind: blown" moment.
That said, this is Facebook. As others have pointed out here, there's no need for such fancy processing and it makes much more sense to run the targeting algorithm on-device with access to the plaintext.