# Oráculo randômico

Em criptografia, um oráculo randômico é um oráculo (uma caixa-preta teórica) que responde para cada consulta única com uma resposta (verdadeiramente) randômica, escolhida uniformemente do seu domínio de respostas. Se uma consulta é repetida, a mesma resposta será dada para cada consulta submetida.
Dizendo em outras palavras, um oráculo randômico é uma função matemática que mapeia cada possível consulta a uma reposta (fixa) randômica do seu domínio de saída.
Oráculos randômicos como abstrações matemáticas foram primeiramente usados em provas criptográticas rigorosas no trabalho de Mihir Bellare e Phillip Rogaway (1993). Desde então, eles são usados tipicamente quando as funções criptográficas de hash não podem ser provadas possuir as propriedades matemáticas necessárias na prova. Um sistema que é provado seguro quando todas as funções de hash são substituidas por um oráculo randômico é descrito como sendo seguro no modelo de oráculo randômico, em oposição a seguridade no modelo padrão [en] de criptografia.

## Aplicações

Na prática, oráculos randômicos são usados como um substituto ideal para funções criptográficas de hash em esquemas onde fortes premissas sobre aleatoriedade são necessárias para a saída da função de hash. Tal prova geralmente mostra que um sistema ou protocolo é seguro mostrando que um atacante precisa ter um comportamento impossível do oráculo ou resolver algum problema matemático acreditamento difícil, para quebrar o protocolo. Nem todas as funções de hash criptográfico requerem oráculos randômicos: Esquemas que requerem apenas algumas propriedades que tem uma definição no modelo padrão (como resistência a colisões, resistência de imagem reversa, resistência de segunda imagem reversa, etc) podem, geralmente, ser provados seguros dentro do modelo padrão (como o Cripto-Sistema de Cramer-Shoup).
Oráculos randômicos foram considerados há muito tempo em estudos de complexidade computacional (como, por exemplo, Bennett & Gill), e muitos esquemas foram provados seguros usando o modelo de oráculo randômico, por exemplo, OAEP, RSA-FDH e PSS. Fiat e Shamir (1986) mostraram uma grande aplicação de oráculos randômicos - a remoção de interação dos protocolos para criação de assinaturas digitais. Impagliazzo e Rudich (1989) mostraram a limitação de oráculos randômicos - que sua existência, por si, não é suficiente para troca de chaves secretas. Bellare e Rogaway em 1993 advogaram seu uso em construções criptográficas. Nesta definição, o oráculo randômico produz uma string de bits de tamanho infinito que pode ser truncada para o tamanho desejado.
Quando um oráculo randômico é usado em uma prova de segurança, ele é oferecido a todos os participantes, inclusive os adversários. Um único oráculo pode ser tratado como vários oráculos, adicionando uma string de bits fixa no início da consulta (por exemplo, consultas formatadas como "1|x" ou "0|x" pode ser consideradas como chamadas para dois oráculos separados, similarmente, "00|x", "01|x", "10|x" e "11|x" podem ser usadas para representar chamadas a quatro oráculos separados).

## Limitações

Nenhuma função computável por um algoritmo finito pode implementar um oráculos verdadeiramente randômico (que, por definição, requer uma descrição infinita).
De fato, certas assinaturas artificiais e esquemas de encriptação são conhecidos por provarem segurança no modelo de oráculo randômico, mas são trivialmente inseguros quando qualquer função real é usada no lugar no oráculo randômico. No entanto, para qualquer protocolo natural, uma prova de segurança no modelo de oráculo randômico é uma forte evidência de segurança prática do protocolo.
Em geral, se um protocolo é provado seguro, ataques ao protocolo precisam desconsiderar o que foi provado ou quebrar uma das premissas da prova; por exemplo, se uma prova é baseada na dificuldade de fatoração de inteiros, para quebrar essa premissa, o atacante precisa descobrir uma algoritmo de fatorização rápido. Em vez disso, para quebrar a premissa do oráculo randômico, o atacante precisa descobrir alguma propriedade desconhecida ou indesejada na função de hash; para boas funções de hash, para as quais tais propriedades são acreditadas inexistentes, o protocolo pode ser considerado seguro.

## Cifra ideal

Uma cifra ideal é um oráculo de permutação aleatória que é usado no modelo do cifrador de blocos idealizado. Uma permutação randômica decifra para texto cifrado em um, e apenas um, texto e vice-versa, de modo que haja uma correspondência um-para-um. Algumas provas criptográficas permitem não só a permutação "direta" para todos os participantes, mas também a permutação "inversa".
É possível construir um cifrador ideal a partir de um oráculo randômico usando uma Cifra Fiestel de 14 rodadas.