EPOC was developed in 1999 by T. Okamoto, S. Uchiyama and E. Fujisaki of NTT Labs in Japan. It is based on the random oracle model, in which a primitive public-key encryption function is converted to a secure encryption scheme by use of a truly random hash function; the resulting scheme is designed to be semantically secure against a chosen ciphertext attack.
EPOC's primitive encryption function is the OU (Okamoto-Uchiyama) function, in which to invert the OU function is proven to be as hard as factoring a composite integer public-key. There are three versions of EPOC:
- EPOC-1 uses a one-way trapdoor function and a random function (hash function);
- EPOC-2 uses a one-way trapdoor function, two random functions (hash functions) and a symmetric-key encryption (e.g., one-time padding and block-ciphers);
- EPOC-3 uses the Okamoto-Uchiyama one-way trapdoor function and two random functions (hash functions) as well as any symmetric encryption scheme such as the one-time pad, or any classical block-cipher.
EPOC-1 is designed for key-distribution; EPOC-2 and EPOC-3 are designed for both key-distribution and encrypted data transfer.
- T. Okamoto, S. Uchiyama and E. Fujisaki (1999). "EPOC: Efficient Probabilistic Public-Key Encryption", Contribution to IEEE - describes EPOC-1 and EPOC-2.
- T. Okamoto and D. Pointcheval (2000). "EPOC-3: Efficient Probabilistic Public-Key Encryption (Version 2)", Contribution to IEEE - describes EPOC-3.
- Template:Cite journal