# Criptossistema Rabin

O criptossistema Rabin é uma técnica de criptografia assimétrica, cuja segurança, como a do RSA, está relacionado com a dificuldade de fatoração. No entanto, o criptossistema Rabin tem a vantagem de que o problema em que assenta, tem provado ser tão duro como a de fatoração de inteiros, o que não é atualmente conhecido como verdadeiro do problema RSA. Ele tem a desvantagem de que cada saída da função Rabin pode ser gerada por qualquer uma das quatro entradas possíveis; se cada saída é um texto cifrado, uma complexidade extra é necessária na descodificação para identificar qual das quatro possíveis entradas foi o verdadeiro texto em claro.

## História

O algoritmo foi publicado em janeiro de 1979 por Michael O. Rabin. O criptossistema Rabin foi o primeiro criptossistema assimétrico onde a recuperação de todo o texto sem formatação da mensagem cifrada pode ser provado ser tão duro como factoring.

## Algoritmo
### Geração da chave

Como em todos os criptossistemas assimétricos, o sistema Rabin utiliza uma chave pública e uma chave privada. A chave pública é necessária para criptografar e pode ser publicado, enquanto a chave privada deve ser possuído só por o destinatário da mensagem.
O processo preciso de geração de chave, e do seguinte modo:
* Escolha um pare de números primos distintos p e q. Cada um pode escolher $p\equiv q\equiv 3{\bmod {4}}$ para simplificar o cálculo de raízes quadradas módulo p e q (veja abaixo). Mas o esquema funciona com qualquer primos.
* Deixe $n=p\cdot q$. Então n é a chave pública. Os primos p e q são a chave privada.
Para criptografar uma mensagem, mas apenas a chave pública n é necessário. Para descriptografar o texto cifrado os fatores p e q de n são necessárias.
Como (não no mundo real), exemplo, se $p=7$ e $q=11$, e em seguida $n=77$. A chave pública, 77, seria lançado, e a mensagem codificada usava esta chave. E, a fim de descodificar a mensagem, as chaves privadas, 7 e 11, teriam de ser conhecidas (claro, isso seria uma má escolha de chaves, como a fatoração de 77 é trivial; na realidade, números muito maiores serão usados).

### Criptografia

Para a criptografia, somente a chave pública n é utilizado, produzindo assim um texto cifrado fora do texto sem formatação. O processo segue:
Deixe $P=\{0,\dots ,n-1\}$ ser o espaço de texto simples (compostos por números) e $m\in P$ ser o texto não encriptado. Agora, o texto cifrado $m\in P$ é determinado pelo
    $c=m^{2}{\bmod {n}}$.
Isto é, c é a quadrática restante da raiz quadrada do texto sem formatação, o modulo-chave número n.
Em nosso exemplo simples, :$c=m^{2}{\bmod {n}}$. é o nosso espaço de texto simples. Vamos tomar $m=20$ como nosso texto simples. O texto cifrado é assim $c=m^{2}{\bmod {n}}=400{\bmod {77}}=15$.
Exatamente para quatro diferentes valores de m, o texto cifrado 15 é produzida, i.e. para $m\in \{13,20,57,64\}$. Isso é verdadeiro para a maioria dos textos cifrados produzidos pelo algoritmo de Rabin, por exemplo, é uma função quatro-para-uma.

### A descriptografia

Para descodificar a mensagem cifrada, as chaves privadas são necessárias. O processo segue:
Se c e n são conhecidos, o texto simples é, em seguida, $m\in \{0,\dots ,n-1\}$ com $m^{2}\equiv c{\bmod {n}}$. Para um composto de n (que é, como o do algoritmo de Rabin $n=p\cdot q$) não há nenhum método eficiente conhecido para encontrar m. Se, no entanto $n$ é primo (ou p e q são, como no algoritmo de Rabin), o teorema chinês do resto pode ser aplicado para resolver para m.
Assim, as raízes quadradas
    $m_{p}={\sqrt {c}}{\bmod {p}}$
e
    $m_{q}={\sqrt {c}}{\bmod {q}}$
devem ser calculados (ver seção abaixo).
No nosso exemplo temos $m_{p}=6$ e $m_{q}=9$.
Aplicando o algoritmo Euclidiano, desejamos encontrar $y_{p}$ e $y_{q}$ de tal forma que $y_{p}\cdot p+y_{q}\cdot q=1$. No nosso exemplo, temos $y_{p}=-3$ and $y_{q}=2$.
Agora, por convocação do teorema chinês do resto, as quatro raízes quadradas $+r$, $-r$, $+s$ e $-s$ de $c+n\mathbb {Z} \in \mathbb {Z} /n\mathbb {Z}$ são calculados ($\mathbb {Z} /n\mathbb {Z}$ aqui destaca-se para o anel de classes de congruência módulo n). As quatro raízes quadradas estão no conjunto $\{0,\dots ,n-1\}$:
    ${\begin{aligned}r&=(y_{p}\cdot p\cdot m_{q}+y_{q}\cdot q\cdot m_{p}){\bmod {n}}\\-r&=n-r\\s&=(y_{p}\cdot p\cdot m_{q}-y_{q}\cdot q\cdot m_{p}){\bmod {n}}\\-s&=n-s\end{aligned}}$
Uma dessas raízes quadradas ${\bmod {n}}$ é o texto simples original m. No nosso exemplo, $m\in \{64,\mathbf {20} ,13,57\}$.
É possível encontrar a fatorização de $n$, como Rabin indicou no seu paper, se ambos, $r$ e $s$ podem ser calculados, como $\gcd(|r-s|,n)$ é ambos $p$ ou $q$ (onde $\gcd$ quer dizer divisor comum máximo). Desde que o maior divisor comum possa ser calculado eficientemente, a fatorização de $n$ pode ser encontrada eficientemente se $r$ e $s$ são conhecidos. No nosso exemplo (escolhendo $57$ e $13$ como $r$ e $s$):
    $\gcd(57-13,77)=\gcd(44,77)=11=q$

### Computação raízes quadradas

A descodificação requer para calcular raízes quadradas de o texto cifrado c módulo os primos p e q. Escolher $p\equiv q\equiv 3{\bmod {4}}$ permite calcular raízes quadradas mais facilmente
    $m_{p}=c^{{\frac {1}{4}}(p+1)}{\bmod {p}}$
e
    $m_{q}=c^{{\frac {1}{4}}(q+1)}{\bmod {q}}$.
Podemos mostrar que este método funciona para p como segue. Primeira $p\equiv 3{\bmod {4}}$ implica que (p+1)/4 é um número inteiro. A suposição é trivial, c ≡ 0 mod p. Assim, podemos assumir que p não divide c. Em seguida,
    $m_{p}^{2}\equiv c^{{\frac {1}{2}}(p+1)}\equiv c\cdot c^{{\frac {1}{2}}(p-1)}\equiv c\cdot \left({c \over p}\right){\bmod {p}},$
onde $\left({c \over p}\right)$ é um símbolo de Legendre.
A partir de $c\equiv m^{2}{\bmod {porque}}$ segue-se que $c\equiv m^{2}{\bmod {p}}$. Assim, c é um resíduo quadrático módulo p. Portanto, $\left({c \over p}\right)=1$ e, portanto,
    $m_{p}^{2}\equiv c{\bmod {p}}.$
A relação $p\equiv 3{\bmod {4}}$ não é uma exigência, porque as raízes quadradas módulo outros primos pode ser calculado também. E. g., Rabin propõe para encontrar as raízes quadradas módulo primos usando um caso especial do algoritmo de Berlekamp.

## Avaliação do algoritmo
### Eficácia

A descodificação produz três resultados falsos, além de correto, para que o resultado correto, deve ser adivinhada. Esta é a grande desvantagem do criptossistema Rabin, e um dos fatores que têm impedido de se generalizar o seu uso prático.
Se o texto simples é a intenção de representar uma mensagem de texto, a adivinhação não é difícil; no entanto, se o texto simples destina-se a representar um valor numérico, este problema torna-se um problema que deve ser resolvido por algum tipo de esquema de desambiguação. É possível escolher textos normais com estruturas especiais, ou para adicionar preenchimento, para eliminar esse problema. Uma maneira de remover a ambiguidade da inversão foi sugerido por Blum e Williams: os dois primos utilizados são restritos aos primos congruentes a 3 módulo 4 e o domínio do quadrado é restrito ao conjunto dos resíduos quadráticos. Estas restrições fazem a função quadrática em um alçapão permutação, eliminando a ambiguidade.

### Eficiência

Para criptografia, um módulo quadrado n deve ser calculado. Isso é mais eficiente do que o RSA, o que requer o cálculo de, pelo menos, um cubo.
Para a descodificação, o teorema chinês do resto é aplicado, juntamente com duas exponenciações modulares. Aqui, a eficiência é comparável ao RSA.
A desambiguação introduz custos adicionais de computação, e é o que tem impedido o criptossistema Rabin de encontrar generalizada o uso prático.

### Segurança

A grande vantagem do criptossistema Rabin é que um acaso de texto simples pode ser recuperado totalmente a partir do texto cifrado apenas se o codebreaker é capaz de eficiência de factoring da chave pública n. Note que este é um nível de segurança muito fraco. Extensões do criptossistema Rabin podem alcançar noções de segurança mais fortes.
Tem sido demonstrado que a descodificação do criptossistema Rabin é equivalente a fatoração do problema de inteiros, algo que não foi comprovada para RSA. Assim, o sistema Rabin é 'mais seguro', neste sentido, que é o RSA, e permanecerá assim até que uma solução geral para o problema de fatoração seja descoberto, ou até que o problema RSA é descoberto ser equivalente a fatoração. (Isso pressupõe que o texto simples não foi criado com uma estrutura específica para facilidade de descodificação.)
Já que a solução para o problema da fatoração está sendo procurado em diversas frentes, qualquer solução (organizações externas classificadas de pesquisa como a NSA) iria rapidamente tornar-se disponível para toda a comunidade científica. No entanto, uma solução tem demorado, e o problmea de fatoração tem sido, até agora, praticamente insolúvel. Sem um avanço, um invasor não teria chance hoje de quebrar a criptografia de mensagens aleatórias.
No entanto, este criptossistema de não fornecer indistinguibilidade contra ataques escolhidos de texto simples desde o processo de criptografia é determinista. Um adversário, dado o texto cifrado e um candidato a mensagem, pode facilmente determinar se ou não o texto cifrado codifica o candidato (mensagem de simplesmente verificar se o sistema de encriptação de mensagem de candidatos produz o dado texto cifrado).
Além disso, foi comprovado que um invasor ativo pode quebrar o sistema através de um ataque de cifrotexto escolhido (mesmo quando o mensagens de desafio são escolhidas uniformemente ao acaso a partir do espaço de mensagens). Adicionando redundâncias, por exemplo, a repetição da última versão de 64 bits, o sistema pode ser feito para produzir uma única raiz. Isso frustra ataque específico escolhido de texto cifrado, uma vez que o algoritmo de descodificação, em seguida, produz apenas a raiz que o atacante já sabe. Se esta técnica é aplicada, a comprovação da equivalência com a fatoração de problema de falha, por isso é incerta, a partir de 2004 se esta variante é seguro. O Handbook of applied Cryptography de Menezes, Oorschot e Vanstone considera essa equivalência provável, no entanto, desde que a descoberta das raízes continua a ser um processo de duas partes (1. raízes ${\bmod {p}}$ and ${\bmod {q}}$ e 2. aplicação do teorema chinês do resto).
Uma vez que, no processo de codificação, apenas o módulo de restos de quadrados perfeitos são usados (em nosso exemplo com $n=77$, isto é, apenas 23 de 76 valores possíveis), outros ataques no processo são possíveis.