pattern matching evaluations with functional encryption

This project develops an example of pattern matching with functional encryption. A finite automata is employed as algorithm for pattern searching. A client encrypts pattern and text and sends them out to the decryptor. Then it ouputs the matches and send them back to the client.

The adopted schema is FHIPE (Function Hiding Inner Product Encryption), since it permits of encrpypting both text and pattern. The functional encryption library is Gofe.

Diagram

Files

  • PatternMatching.py: it is a workaround file for creating matrices of text and pattern that are used by the functional encryption application.
  • PatternMatching.go: it contains the FHIPE schema, retrieves pattern and text matrices for the encryption and decryption task.

ISSUES

  • With the current inner product encrption schema the encryption and decryption time is too slow for long texts: for texts long 1000 chars, decrpytion time is about 7 and half minutes, but time increases lineary. Possible Solutions are:
    • Check if other solutions exist in letterature in searchable encryption field, (See https://opensse.github.io/docs/home/).
    • Optimize/replace the current pattern searching algorithm, like with a suffix tree.
    • Try with another inner product schema.