This page uses content from Wikipedia and is licensed under CC BY-SA.

In cryptography, a **random oracle** is an oracle (a theoretical black box) that responds to every *unique query* with a (truly) random response chosen uniformly from its output domain. If a query is repeated it responds the same way every time that query is submitted.

Stated differently, a random oracle is a mathematical function chosen uniformly at random, that is, a function mapping each possible query to a (fixed) random response from its output domain.

Random oracles as a mathematical abstraction were firstly used in rigorous cryptographic proofs in the 1993 publication by Mihir Bellare and Phillip Rogaway (1993).^{[1]} They are typically used when the proof cannot be carried out using weaker assumptions on the cryptographic hash function. A system that is proven secure when every hash function is replaced by a random oracle is described as being secure in the **random oracle model**, as opposed to secure in the standard model of cryptography.

Random oracles are typically used as an ideal replacement for cryptographic hash functions in schemes where strong randomness assumptions are needed of the hash function's output. Such a proof generally shows^{[example needed]} that a system or a protocol is secure by showing that an attacker must require impossible behavior from the oracle, or solve some mathematical problem believed hard in order to break it.

Not all uses of cryptographic hash functions require random oracles: schemes that require only one or more properties having a definition in the standard model (such as collision resistance, preimage resistance, second preimage resistance, etc.) can often be proven secure in the standard model (e.g., the Cramer–Shoup cryptosystem).

Random oracles have long been considered in computational complexity theory,^{[2]} and many schemes have been proven secure in the random oracle model, for example Optimal Asymmetric Encryption Padding, RSA-FDH and Probabilistic Signature Scheme. In 1986, Amos Fiat and Adi Shamir^{[3]} showed a major application of random oracles – the removal of interaction from protocols for the creation of signatures.

In 1989, Russell Impagliazzo and Steven Rudich^{[4]} showed the limitation of random oracles – namely that their existence alone is not sufficient for secret-key exchange.

In 1993, Mihir Bellare and Phillip Rogaway^{[1]} were the first to advocate their use in cryptographic constructions. In their definition, the random oracle produces a bit-string of infinite length which can be truncated to the length desired.

When a random oracle is used within a security proof, it is made available to all players, including the adversary or adversaries. A single oracle may be treated as multiple oracles by pre-pending a fixed bit-string to the beginning of each query (e.g., queries formatted as "1|x" or "0|x" can be considered as calls to two separate random oracles, similarly "00|x", "01|x", "10|x" and "11|x" can be used to represent calls to four separate random oracles).

According to the Church–Turing thesis, no function computable by a finite algorithm can implement a true random oracle (which by definition requires an infinite description).^{[why?]}

In fact, certain artificial signature and encryption schemes are known which are proven secure in the random oracle model, but which are trivially insecure when any real function is substituted for the random oracle.^{[5]}^{[6]} Nonetheless, for any more natural protocol a proof of security in the random oracle model gives very strong evidence of the *practical* security of the protocol.^{[7]}

In general, if a protocol is proven secure, attacks to that protocol must either be outside what was proven, or break one of the assumptions in the proof; for instance if the proof relies on the hardness of integer factorization, to break this assumption one must discover a fast integer factorization algorithm. Instead, to break the random oracle assumption, one must discover some unknown and undesirable property of the actual hash function; for good hash functions where such properties are believed unlikely, the considered protocol can be considered secure.

Although the Baker–Gill–Solovay theorem^{[8]} showed that there exists an oracle A such that P^{A} = NP^{A}, subsequent work by Bennett and Gill,^{[9]} showed that for a *random oracle* B (a function from {0,1}^{n} to {0,1} such that each input element maps to each of 0 or 1 with probability 1/2, independently of the mapping of all other inputs), P^{B} ⊊ NP^{B} with probability 1. Similar separations, as well as the fact that random oracles separate classes with probability 0 or 1 (as a consequence of the Kolmogorov's zero–one law), led to the creation of the **Random Oracle Hypothesis**, that two "acceptable" complexity classes C_{1} and C_{2} are equal if and only if they are equal (with probability 1) under a random oracle (the acceptability of a complexity class is defined in BG81^{[9]}). This hypothesis was later shown to be false, as the two acceptable complexity classes IP and PSPACE were shown to be equal^{[10]} despite IP^{A} ⊊ PSPACE^{A} for a random oracle A with probability 1.^{[11]}

An *ideal* cipher is a random permutation oracle that is used to model an idealized block cipher.
A random permutation decrypts each ciphertext block into one and only one plaintext block and vice versa, so there is a one-to-one correspondence.
Some cryptographic proofs make not only the "forward" permutation available to all players, but also the "reverse" permutation.

Recent works showed that an ideal cipher can be constructed from a random oracle using 10-round^{[12]} or even 8-round^{[13]} Feistel networks.

- ^
^{a}^{b}Bellare, Mihir; Rogaway, Phillip (1993). "Random Oracles are Practical: A Paradigm for Designing Efficient Protocols".*ACM Conference on Computer and Communications Security*: 62–73. **^**Bennett, Charles H.; Gill, John (1981), "Relative to a Random Oracle A, P^A != NP^A != co-NP^A with Probability 1",*SIAM Journal on Computing*,**10**(1): 96–113, doi:10.1137/0210008, ISSN 1095-7111**^**Fiat, Amos; Shamir, Adi (1986). "How to Prove Yourself: Practical Solutions to Identification and Signature Problems".*CRYPTO*. pp. 186–194.**^**Impagliazzo, Russell; Rudich, Steven (1989). "Limits on the Provable Consequences of One-Way Permutations".*STOC*: 44–61.**^**Ran Canetti, Oded Goldreich and Shai Halevi, The Random Oracle Methodology Revisited, STOC 1998, pp. 209–218 (PS and PDF).**^**Craig Gentry and Zulfikar Ramzan. "Eliminating Random Permutation Oracles in the Even-Mansour Cipher". 2004.**^**Koblitz, Neal; Menezes, Alfred J. (2015). "The Random Oracle Model: A Twenty-Year Retrospective" (PDF).*Another Look*. Retrieved 6 March 2015.**^**Baker, Theodore; Gill, John; Solovay, Robert (1975). "Relativizations of the P =? NP Question".*SIAM J. Comput*.**4**(4). SIAM. pp. 431–442. doi:10.1137/0204037.- ^
^{a}^{b}Bennett, Charles; Gill, John (1981). "Relative to a Random Oracle A, P != NP != co-NP with Probability 1".*SIAM J. Comput*.**10**(1). SIAM. pp. 96–113. **^**Shamir, Adi (October 1992). "IP = PSPACE".*Journal of the ACM*.**39**(4). pp. 869–877.**^**Chang, Richard; Oded Goldreich, Benny Chor; Hartmanis, Juris; Hastad, Johan; Ranjan, Desh; Rohatgi, Pankaj (August 1994). "The Random Oracle Hypothesis is False".*Journal of Computer and System Sciences*.**49**(1). pp. 24–39. ISSN 0022-0000.**^**Dachman-Soled, Dana; Katz, Jonathan; Thiruvengadam, Aishwarya (2016). "10-Round Feistel is Indifferentiable from an Ideal Cipher".*EUROCRYPT 2016*. Springer. pp. 649–678. doi:10.1007/978-3-662-49896-5_23.**^**Dai, Yuanxi; Steinberger, John (2016). "Indifferentiability of 8-Round Feistel Networks".*CRYPTO 2016*. Springer.