Lattice Based Cryptography