Based on the techniques mentioned by IBM's Craig Gentry