Você está na página 1de 3

1 Definição de Cifra Computacional

Uma cifra computacional é definida como uma tupla (E, D) definida sobre con-
juntos (M, E), onde E é um algoritmo de encriptação e D é um algoritmo de
decriptação. M é o espaço de mensagens e C é o espaço de mensagens cifradas.
Os algoritmos E e D são definidos comos:

• E(1λ ; k, m) → c
Dado um parâmetro de segurança 1λ , uma chave k ∈ Kλ e uma mensagem
m ∈ M , o algoritmo retorna c ∈ C.

• D(1λ ; k, c) → m
Dado o parâmetro de segurança 1λ , uma chave k ∈ Kλ e uma mensagem
c ∈ C, o algoritmo retorna m ∈ M .

Temos que Kλ = {0, 1}p(λ) , onde p é algum polinômio.


Além disso, para todo m ∈ M e λ ∈ N, temos que D(1λ , k, E(1λ , k, m)) = m.
Dada uma cifra computacional, podemos definir os seguintes experimentos
usando ela:

2 Definição de Experimentos
Os experimentos desta seção contém um Adversário e um Desafiante. Os algorit-
mos do Desafiante são todos conhecidos e públicos. Os algoritmos do Adversario
podem ser qualquer um que atenda aso requisitos de entrada e saı́da e executem
em tempo limitado polinomialmente em relação à entrada.

2.1 Experimento 0
• Inicialização: O Adversário e o Desafiante sendo inicializados com o
parâmetro de segurança 1λ .
• Encriptação: O Adversário produz duas mensagens (m0 , m1 ). Ambas
são passadas pelo desafiante. Este, sempre escolhe a primeira mensagem,
$
gera k ←− Kl ambda e computa c = E(1λ , k, m0 ). O resultado c é pasado
para o Adversário.
• Consulta de Decriptação: O adversário pode fazer q consultas de de-
criptação (q é limitado polinomialmente em relação à λ). Em cada uma
delas, ele escolhe um ci que seja diferente do c produzido na etapa anterior.
Este valor é passado para o Desafiante que computa mi = D(1λ , k, ci ). O
resultado mi é passado para o Adversário.
• Finalização: Ao fim, o Adversário retorna um bit b ∈ {0, 1}.

Definimos como W0 o evento no qual um Adversário retorna 1 no Experi-


mento 0.

1
2.2 Experimento 1
O Experimento 1 é idêntico ao Experimento 0, exceto pela parte de Encriptação,
que é definida como:

• Encriptação: O Adversário produz duas mensagens (m0 , m1 ). Ambas


são passadas pelo desafiante. Este, sempre escolhe a segunda mensagem,
$
gera k ←− Kl ambda e computa c = E(1λ , k, m1 ). O resultado c é pasado
para o Adversário.

Definimos como W1 o evento no qual um Adversário retorna 1 no Experi-


mento 1.
Definição de Segurança: Dizemos que uma cifra computacional de uso
único tem segurança semântica contra ataques de mensagem cifrada escolhida
(“Chosen-Ciphertext Attack” – CCA) se para todo adversário A, o valor adv =
|P r[W0 ] − P r[W1 ]| (calculado em função de λ) é negligı́vel. Chamamos tal valor
de vantagem de um Adversário A.
(Uma função f : Z≥1 → R é negligı́vel se, e somente se limn→∞ f (n)nc = 0
para todo valor real positivo de c).

3 Dividir a chave em duas partes


Tendo uma cifra computacional segura, ela continua segura se ao invés de arma-
zenarmos e usarmos uma única chave, gerarmos duas chaves (k1 , k2 ) e usarmos
nos algoritmos de encriptação e decriptação como chave o valor k1 ⊕ k2 .
Prova: Não há diferença estatı́stica entre calcular uma chave gerando ela
$ $
de maneira eleatória e uniforme k ←− Kλ e gerando duas chaves k1 ←− Kλ ,
$
k2 ←− Kλ e combinando-as em k ← k1 ⊕ k2 . Ambos os resultados tem a mesma
distribuição uniforme. Portanto, um mesmo adversário A teria exatamente a
mesma vantagem tanto no primeiro caso como no segundo. ■
Neste cenário em que usamos como chave k1 ⊕ k2 , se temos uma cifra com-
putacional segura, ela continua segura, mesmo que uma das chaves do par acabe
sendo revelada para o Adversário.
Prova: Podemos gerar novos Experimentos 0a e 1a representando este
cenário. Tais experimentos funcionariam de maneira idêntica aos Experimen-
tos 0 e 1, com a diferença que durante a Inicialização, o Adversário recebe do
Desafiante um valor k1 pertencente à chave.
Podemos também gerar Experimentos 0b e 1b, que são idênticos aos Expe-
rimentos 0a e 1a, com a diferença que ao invés de revelar o valor k1 da chave,
é retornado um novo valor k ′ ∈ Kλ amostrado de maneira independente e sem
relação com a chave. Note que nos Experimentos 0b e 1b, nenhuma informação
relacionada à chave é dada ao Adversário. Então, qualquer adversário que se saia
melhos nestes experimentos, poderia se sair igualmente bem nos experimentos
0 e 1, já que ele próprio poderia amostrar um valor de Kλ naqueles experi-
mentos se assim precisasse. Assim, para todo adversário que interage com os
Experimentos 0b e 01 e obtém uma dada vantagem, existe outro adversário que

2
interage com os Experimentos 0 e 1 e obtém a mesma vantagem. Se nenhum
adversário consegue uma vantagem não-negligı́vel nos Experimentos 0 e 1, isso
também será verdade em 0b e 1b.
Com relação aos Experimentos 0a e 1a, note que nenhum Adversário A pode
ser capaz de diferenciar o Experimento 0a do 0b e tampouco o Experimento 1a
do 1b. Em ambos os casos, o Adversário recebe um valor k ′ ou k1 aleatório e uni-
forme na Inicialização. Valores que, graças à segurança estatı́stica da operação
⊕, não revelam qualquer informação sobre a chave k1 ⊕ k2 . Desta forma, ne-
nhum adversário que interage com os Experimentos 0b e 1b teria uma vantagem
diferente se interagisse com os Experimentos 0a e 0b. E vice-versa. Ambos os
pares de experimentos são equivalentes. Portanto, se existisse um Adversário
A que tivesse uma vantagem não-negligı́vel nos Experimentos 0a e 1a, então
também haveria um Adversário que teria uma vantagem não-negligı́velnos Ex-
perimentos 0b e 1b; e portanto, também nos Experimentos 0 e 1. O que seria
uma contradição com o pressuposto de que temos uma cifra segura, e portanto,
tal adversário não existe. ■

Você também pode gostar