Multi-Client Inner Product Encryption: Function-Hiding Instantiations Without Random Oracles