Lattice-based cryptography