Each party has a pair (K, K-1) of keys: K is the public key, and used for encryption, K-1 is the private key, and used for decryption, satisfies DK-1[EK[M]] = M, knowing the public-key K, it is computationally infeasible to compute the private key K-1