# Distribuição de dados

Na teoria da complexidade computacional [en], uma suposição de dificuldade computacional é a hipótese de que um problema específico não pode ser resolvido de forma eficiente (onde eficiência normalmente significa "em tempo polinomial"). Não se sabe como provar a dificuldade (incondicional) para essencialmente qualquer problema útil. Em vez disso, os cientistas da computação contam com reduções para relacionar formalmente a dificuldade de um problema novo ou complicado à uma suposição de dificuldade computacional sobre um problema que é mais bem compreendido.
As suposições de dificuldade computacional são de particular importância na criptografia. Um dos principais objetivos da criptografia é criar primitivas criptográficas [en] com segurança comprovada [en]. Em alguns casos, os protocolos criptográficos apresentam segurança teórica da informação; a chave (ou cifra) de uso único é um exemplo comum. No entanto, a segurança teórica da informação nem sempre pode ser alcançada; nesses casos, os criptógrafos recorrem à segurança computacional. Em termos gerais, isso significa que esses sistemas são seguros assumindo que quaisquer adversários são limitados computacionalmente, como todos os adversários são na prática.
As suposições de dificuldade computacional também são úteis para orientar projetistas de algoritmos: um algoritmo simples provavelmente não refutará uma suposição de dificuldade computacional bem estudada, como P ≠ NP.

## Comparando suposições de dificuldade

Os cientistas da computação têm diferentes maneiras de avaliar quais suposições de dificuldade são mais confiáveis.

### Força das suposições de dificuldade

Dizemos que a suposição $A$ é mais forte do que a suposição $B$ quando $A$ implica $B$ (e o inverso é falso ou desconhecido). Em outras palavras, mesmo que a suposição $A$ fosse falsa, a suposição $B$ ainda poderia ser verdadeira, e os protocolos criptográficos baseados na suposição $B$ ainda podem ser seguros para uso. Assim, ao desenvolver protocolos criptográficos, se espera poder provar a segurança usando as suposições mais fracas possíveis.

### Suposições de caso médio versus de pior caso

Uma suposição de caso médio diz que um problema específico é difícil na maioria das instâncias de alguma distribuição explícita, enquanto uma suposição de pior caso apenas diz que o problema é difícil em algumas instâncias. Para um determinado problema, a dificuldade de caso médio implica a dificuldade de pior caso, portanto, uma suposição de dificuldade de caso médio é mais forte do que uma suposição de dificuldade de pior caso para o mesmo problema. Além disso, mesmo para problemas incomparáveis, uma suposição como a hipótese de tempo exponencial é frequentemente considerada preferível a uma suposição de caso médio como a conjectura de clique oculto [en]. Observe, no entanto, que na maioria das aplicações criptográficas, saber que um problema tem alguma instância difícil (ou seja, um problema é difícil no pior caso) é inútil porque não nos fornece uma maneira de gerar instâncias difíceis. Felizmente, muitas suposições de caso médio usadas em criptografia (incluindo RSA, logaritmo discreto e alguns problemas de rede) podem ser baseadas em suposições de pior caso por meio de reduções de pior caso a caso médio.

### Falseabilidade

Uma característica desejada de uma suposição de dificuldade computacional é a falseabilidade, ou seja, se a suposição fosse falsa, então seria possível a provar. Em particular, Naor (2003) introduziu uma noção formal de falseabilidade criptográfica. Grosso modo, uma suposição de dificuldade computacional é considerada falseável se puder ser formulada em termos de um desafio: um protocolo interativo entre um adversário e um verificador eficiente, onde um adversário eficiente pode convencer o verificador a aceitar se e somente se a suposição for falsa.

## Suposições comuns de dificuldade criptográfica

Existem muitas suposições de dificuldade criptográfica em uso. Esta é uma lista de algumas das mais comuns e de alguns protocolos criptográficos que os utilizam.

### Fatoração de inteiros

Dado um número composto $n$, e em particular aquele que é o produto de dois primos grandes $n=p\cdot q$, o problema de fatoração de inteiros é encontrar $p$ e $q$ (mais geralmente, encontrar primos $p_{1},\dots ,p_{k}$ de modo que $n=\prod _{i}p_{i}$). É um grande problema em aberto encontrar um algoritmo para fatoração de inteiros que execute em tempo polinomial no tamanho da representação ($\log(n)$). A segurança de muitos protocolos criptográficos se baseia na suposição de que a fatoração de inteiros é difícil (ou seja, não pode ser resolvida em tempo polinomial). Os criptosistemas cuja segurança é equivalente a esta suposição incluem o criptosistema Rabin e o criptosistema Okamoto-Uchiyama [en]. Muitos outros criptosistemas dependem de suposições mais fortes, como RSA, problemas de residuosidade e ocultação de Phi.

#### Problema RSA

Dado um número composto $n$, expoente $e$ e número$c:=m^{e}(\mathrm {mod} \;n)$, o problema RSA é encontrar $m$. O problema é considerado difícil, mas se torna fácil devido à fatoração de $n$. No criptosistema RSA, $(n,e)$ é a chave pública, $c$ é a criptografia da mensagem $m$ e a fatoração de $n$ é a chave secreta usada para descriptografia.

#### Problemas de residuosidade

Dado um número composto $n$ e inteiros $y,d$, o problema de residuosidade é determinar se existe (alternativamente, encontre um) $x$ tal que
    $x^{d}\equiv y{\pmod {n}}.$
Casos especiais importantes incluem o problema de residuosidade quadrática [en] e o problema de residuosidade composta de decisão [en]. Como no caso do RSA, este problema (e seus casos especiais) são considerados difíceis, mas se tornam fáceis devido à fatoração de$n$. Alguns criptosistemas que dependem da dificuldade dos problemas de residuidade incluem:
* Criptosistema Goldwasser–Micali [en] (problema de residuosidade quadrática)
* Gerador Blum Blum Shub (problema de residuosidade quadrática)
* Criptosistema Paillier [en] (problema de residuosidade composta de decisão)
* Criptosistema Benaloh [en] (problema de maior residuosidade)
* Criptosistema Naccache-Stern [en] (problema de maior residuosidade)

#### Suposição de ocultamento de Phi

Para um número composto $m$, não se sabe como calcular eficientemente sua função totiente de Euler $\phi (m)$. A suposição de ocultação de Phi postula que é difícil calcular $\phi (m)$ e, além disso, mesmo computar quaisquer fatores primos de $\phi (m)$ é difícil. Essa suposição é usada no protocolo PIR Cachin–Micali–Stadler.

### Problema de logaritmo discreto (P.L.D.)

Dados os elementos $a$ e $b$ de um grupo $G$, o problema de logaritmo discreto pede um inteiro $k$ tal que $a=b^{k}$. O problema de logaritmo discreto não é conhecido por ser comparável à fatoração de inteiros, mas suas complexidades computacionais estão intimamente relacionadas.
A maioria dos protocolos criptográficos relacionados ao problema de log discreto, na verdade, dependem da suposição de Diffie–Hellman [en] mais forte: determinados elementos de grupo $g,g^{a},g^{b}$, onde $g$ é um gerador e $a,b$ são inteiros aleatórios, é difícil encontrar $g^{a\cdot b}$. Exemplos de protocolos que usam essa suposição incluem a troca de chaves de Diffie–Hellman original, bem como a criptografia ElGamal (que depende da variante decisória de Diffie–Hellman [en] (D.D.H.) ainda mais forte).

#### Mapas multilineares

Um mapa multilinear é uma função $e:G_{1},\dots ,G_{n}\rightarrow G_{T}$ (onde $G_{1},\dots ,G_{n},G_{T}$ são grupos) tais que para qualquer $g_{1},\dots ,g_{n}\in G_{1},\dots G_{n}$ e $a_{1},\dots ,a_{n}$,
    $e(g_{1}^{a_{1}},\dots ,g_{n}^{a_{n}})=e(g_{1},\dots ,g_{n})^{a_{1}\cdots a_{n}}$
Para aplicações criptográficas, gostaríamos de construir grupos $G_{1},\dots ,G_{n},G_{T}$ e um mapa $e$ de modo que o mapa e as operações de grupo em $G_{1},\dots ,G_{n},G_{T}$ possam ser calculados de forma eficiente, mas o problema de logaritmo discreto em $G_{1},\dots ,G_{n}$ ainda é difícil. Algumas aplicações requerem suposições mais fortes, por exemplo, análogos multilineares das suposições de Diffie-Hellman.
Para o caso especial de $n=2$, mapas bilineares [en] com segurança confiável foram construídos usando emparelhamento Weil Weil pairing e emparelhamento Tate [en]. Para $n>2$ muitas construções foram propostas nos últimos anos, mas muitas delas também foram quebradas e, atualmente, não há consenso sobre um candidato seguro. Alguns criptosistemas que dependem de suposições de dificuldade multilinear incluem:
* Esquema Boneh–Franklin [en] (bilinear Diffie–Hellman)
* Boneh–Lynn–Shacham [en] (bilinear Diffie-Hellman)
* Garg-Gentry-Halevi-Raykova-Sahai-Waters candidato para ofuscação indistinguível [en] e criptografia funcional [en] (quebra cabeças multilinear)

### Problemas de redes diagonais

O problema computacional mais fundamental nas redes diagonais é o problema de vetor mais curto [en] (P.V.M.C.): dada uma rede $L$, encontrar o menor vetor $v\in L$ diferente de zero. A maioria dos criptosistemas requer suposições mais fortes sobre as variantes do problema de vetor mais curto (P.V.M.C.), como o problema de vetores independentes mais curtos [en] (P.V.I.M.C.), o GapSVP [en] ou o Unique-SVP.
A suposição de dificuldade de rede mais útil em criptografia é para o problema de aprendizado com erros (A.C.E.): amostras fornecidas para $(x,y)$, onde $y=f(x)$ para alguma função linear $f(\cdot )$, é fácil aprender $f(\cdot )$ usando álgebra linear. No problema de aprendizado com erros (A.C.E.), a entrada para o algoritmo tem erros, ou seja, para cada par $y\neq f(x)$ com alguma pequena probabilidade. Se acredita que os erros tornam o problema intratável (para parâmetros apropriados); em particular, existem reduções conhecidas de pior caso a caso médio de variantes do problema de vetor mais curto.
​​​Para computadores quânticos, os problemas de fatoração e logaritimo discreto são fáceis, mas os problemas de rede são considerados difíceis. Isso torna alguns criptosistemas baseados em rede candidatos para criptografia pós-quântica.
Alguns criptosistemas que dependem da dificuldade dos problemas de rede incluem:
* NTRU (NTRUEncrypt [en] e NTRUSign [en])
* A maioria dos candidatos para criptografia totalmente homomórfica

## Suposições de dificuldade que não é criptográfica

Assim como suas aplicações criptográficas, as suposições de dificuldade são usadas na teoria da complexidade computacional [en] para fornecer evidências para afirmações matemáticas que são difíceis de provar incondicionalmente. Nessas aplicações, prova-se que a suposição de dificuldade implica alguma afirmação teórica da complexidade desejada, em vez de provar que a afirmação em si é verdadeira. A suposição mais conhecida desse tipo é a suposição de que P ≠ NP, mas outras incluem a hipótese de tempo exponencial, a conjectura clique plantado [en] e a conjectura de jogos únicos.

### Problemas difíceis de C

Muitos problemas computacionais de pior caso são conhecidos por serem difíceis ou mesmo completos para alguma classe de complexidade $C$, em particular difícil de NP (mas frequentemente também difícil de PSPACE [en], difícil de PPAD [en], etc.). Isso significa que eles são pelo menos tão difíceis quanto qualquer problema na classe $C$. Se um problema é $C$-difícil (com respeito às reduções de tempo polinomial), então não pode ser resolvido por um algoritmo de tempo polinomial, a menos que a suposição de dificuldade computacional $P\neq C$ seja falsa.

### Hipótese de tempo exponencial (H.T.E.) e variantes

A hipótese de tempo exponencial (eth) é um reforço da suposição de dificuldade $P\neq NP$, que conjectura que não apenas o problema de satisfatibilidade booleana não tem um algoritmo de tempo polinomial, mas também requer tempo exponencial ($2^{\Omega (n)}$). Uma suposição ainda mais forte, conhecida como hipótese de tempo exponencial forte (H.T.E.F.) conjectura que SAT de $k$ requer tempo $2^{(1-\varepsilon _{k})n}$, onde $\lim _{k\rightarrow \infty }\varepsilon _{k}=0$. Hipótese de tempo exponencial (H.T.E.), hipótese de tempo exponencial forte (H.T.E.F.) e pressupostos de dificuldade computacional relacionados permitem a dedução de resultados de complexidade refinados, por exemplo, resultados que distinguem o tempo polinomial e o tempo quase polinomial [en], ou mesmo $n^{1.99}$ versus $n^{2}$. Essas suposições também são úteis na complexidade parametrizada.

### Suposições de dificuldade de caso médio

Alguns problemas computacionais são considerados difíceis em média em uma distribuição particular de instâncias. Por exemplo, no problema do clique plantado [en], a entrada é um grafo aleatório amostrado, amostrando um grafo aleatório Erdős–Rényi e então "plantando" um clique $k$ aleatório, ou seja, conectando nós $k$ uniformemente aleatórios (onde $2\log _{2}n\ll k\ll {\sqrt {n}}$), e o objetivo é encontrar o clique $k$ plantado (que é, com alta probabilidade, único). Outro exemplo importante é a hipótese de Feige, que é uma suposição de dificuldade computacional sobre instâncias aleatórias de SAT de 3 (amostradas para manter uma proporção específica de cláusulas para variáveis). As suposições de dificuldade computacional de caso médio são úteis para provar a dificuldade de caso médio em aplicações como estatísticas, onde há uma distribuição natural sobre as entradas. Além disso, a suposição de dificuldade do clique plantado também foi usada para distinguir entre a complexidade de tempo de pior caso polinomial e quase polinomial de outros problemas, de forma semelhante à hipótese de tempo exponencial.

### Jogos únicos

O problema de cobertura de rótulo exclusivo é um problema de satisfação de restrição, onde cada restrição $C$ envolve duas variáveis $x,y$, e para cada valor de $x$ há um valor único de $y$ que satisfaz $C$. Determinar se todas as restrições podem ser satisfeitas é fácil, mas a conjectura de jogos únicos (C.J.U.) postula que determinar se quase todas as restrições (fração $(1-\varepsilon )$, para qualquer constante $\varepsilon >0$) podem ser satisfeitas ou quase nenhuma delas (fração $\varepsilon$) podem ser satisfeitas é difícil de NP'. Os problemas de aproximação são frequentemente conhecidos como difíceis de NP assumindo conjectura de jogos únicos (C.J.U.); tais problemas são chamados de difícil de jogos únicos (J.U.). Em particular, assumindo conjectura de jogos únicos (C.J.U.), há um algoritmo de programação semidefinida [en] que atinge garantias de aproximação ótimas para muitos problemas importantes.

#### Expansão de conjunto pequeno

Intimamente relacionado ao problema de cobertura de rótulo único está o problema de expansão de conjunto pequeno (E.C.P.): Dado um gráfico $G=(V,E)$, encontrar um conjunto pequeno de vértices (de tamanho $n/\log(n)$) cuja expansão de borda [en] é mínima. Se sabe que, se a expansão de conjunto pequeno é difícil de estimar, o mesmo ocorre com a cobertura de rótulo único. Consequentemente, a hipótese de expansão de conjunto pequeno, que postula que a expansão de conjunto pequeno é difícil de se aproximar, é uma suposição mais forte (mas intimamente relacionada) do que a conjectura de jogo único. Alguns problemas de aproximação são conhecidos por serem difíceis de expansão de conjunto pequeno (E.C.P.) (ou seja, pelo menos tão difíceis quanto aproximar a expansão de conjunto pequeno).

### A conjectura 3SUM

Dado um conjunto de $n$ números, o problema 3SUM pergunta se existe um trio de números cuja soma é zero. Há um algoritmo de tempo quadrático para 3SUM, e foi conjecturado que nenhum algoritmo pode resolver 3SUM em "tempo verdadeiramente subquadrático": a conjectura 3SUM é a suposição de dificuldade computacional de que não há algoritmos de tempo $O(n^{2-\varepsilon })$ para 3SUM (para qualquer constante $\varepsilon >0$). Esta conjectura é útil para provar limites inferiores quase quadráticos para vários problemas, principalmente de geometria computacional.