• Nenhum resultado encontrado

Oráculos H e StrongRevealSessionKey

No documento Criptogra a de chave pública sem certi cado (páginas 113-120)

5.11 Síntese e Conclusões Parciais

6.1.2 Oráculos H e StrongRevealSessionKey

6.1 SEGURANÇA DO GNT3 NO MODELO LBG SOB BDH 91 H(IDi, IDj, Ei, Ej, Z, K, L, M, N) Prossegue com os passos descritos na seção6.1.2.

Test(Πsi,j) Se Πsi,j não é a sessão de Teste, aborta. Senão,S joga uma moedab∈ {0,1}. Se b= 0, devolve a chave de sessão; caso contrário sorteia e devolve um número aleatório r ∈ {0,1}k para o adversário.

Finalização do Jogo

Assim que A naliza o jogo, S devolve answerBDH. Se a probabilidade de sucesso de A é P r[A], então a probabilidade de sucesso de S é P r[S]≥ P r[A]/(9q0q21). Se A tem vantagem não negligenciável em diferenciar um número aleatório da chave de sessão é porqueAconsultouH com valores corretos de Z, K, L, M, N. Nesse caso, answerBDH contém o valor e(cP, abP), conforme cálculos apresentados na seção6.1.2. Então S resolve o problema Gap-BDH em tempo polinomial

emk, o que contradiz a hipótese de diculdade do Gap-BDH.

Tabela 6.2: Casos possíveis e inserção do desao BDH

1 2 3 4 5 6 7 8 9

Chave A B A B A B A B A B A B A B A B A B

ID:Q1 bP bP bP bP bP cP

PK:xP aP bP x x aP x x bP x cP cP x x x x x x x

Eph:rP x aP bP bP aP x x x cP cP x x

Desao mpk=aP

em: Z1 Z3 Z2 Z4 M1 M2 K1 K2 K3

(aP, bP, cP)desao BDH (x)simulador desconhece componente secreto

• Asubstitui a chave pública de IDi e, portanto,S não conhecexi

• Asubstitui a chave pública de IDj e, portanto, S não conhecexj

• Aescolhe ativamente o valor temporário de IDj e, portanto, S não conhecerj

Podemos supor queS conhece ri, pois, se A ativamente alterarriP e entregar outro valor a IDj, não haverá sessão com matching (a não ser com probabilidade negligenciável).

Sejam os componentes de Z nomeados como segue:

Z = (xixjP

| {z }

Z1

, xirjP

| {z }

Z2

, rirjP

| {z }

Z3

, rixjP

| {z }

Z4

)

No pior dos casos, A consulta StrongRevealSessionKey antes de consultar H e S é inca-paz de calcular os valores Z1, Z2. Porém S pode ainda responder de forma consistente, numa eventual consulta posterior deA a H(IDi, IDj, Ei, Ej,(Z1, Z2, Z3, Z4), K, L, M, N), vericando se e(xiP, xjP) =? e(Z1, P) e see(xiP, rjP)=? e(Z2, P). Se ambas igualdades valem e demais entradas deHcorrespondem aos valores queS consegue calcular, entãoS responde a mesma chaveSK, pois se trata de sessões com matching.

Sessões que Envolvem A ou B Alvos do Teste

O simulador embute os valores do desao BDH em pontos estratégicos do protocolo, de modo a induzir o adversário a realizar cálculos com esses valores. Para cada uma das nove possibilidades queApossui para tentar quebrar a segurança do protocolo,S insere os componentes do desao em parâmetros especícos dos participantes A e B da sessão de Teste, ou em parâmetros do sistema.

Na Tabela 6.2, são relacionadas as possíveis estratégias que A pode empregar e que chaves são associadas aos valores do desao.

A última linha da Tabela 6.2 indica as variáveis que ocorrem no protocolo e que capturam o cálculo dee(cP, abP), ou seja, a resposta do desao. ObviamenteS não sabe calcular essa resposta, mas mostraremos que se A apresenta vantagem não negligenciável, é porque conhece elementos sucientes para que a solução seja calculada. Tais elementos são entregues por A ao simulador, sempre que ele realiza consultas ao oráculoH. Observe que as variáveisK eLdo protocolo podem ser reescritas como indicado na Tabela 6.3. O fatores de M e N e os componentes de Z também são nomeados para facilitar a leitura dos cálculos.

QuandoS embute uma das entradas do desao BDH em uma chave, automaticamente torna-se desconhecido o respectivo valor secreto. Por exemplo, quando aP é atribuído como valor de chave pública de A, isto é, xAP = aP, S desconhece xA por desconhecer a. Nos casos 5 a 9, a chave

6.1 SEGURANÇA DO GNT3 NO MODELO LBG SOB BDH 93 pública mestra recebe o valor aP e, por isso, S não tem acesso ao valor da chave mestra secreta.

Quando QA1 = bP, nos casos 5, 7 e 9, S desconhece a chave parcial secreta dA1 =abP, pois não sabe calcularab. Na Tabela6.2, são indicados com x outros componentes secretos aos quaisS não tem acesso. São os casos em queAé permitido substituir a chave pública ou escolher ativamente o valor temporário de sessão, preservando ainda a característica de sessão fresh e com matching.

Tabela 6.3: Nomenclatura das Variáveis K =e(rBP, dA1)

| {z }

K1

·e(QB1, rAsP)

| {z }

K2

·e(QB1, dA1)

| {z }

K3

·e(rBP, rAsP)

| {z }

K4

L=e(rBP, dA2)

| {z }

L1

·e(QB2, rAsP)

| {z }

L2

·e(QB2, dA2)

| {z }

L3

·e(rBP, rAsP)

| {z }

L4(=K4)

M =e(xBP, dA1)

| {z }

M1

·e(QB1, xAsP)

| {z }

M2

N =e(xBP, dA2)

| {z }

N1

·e(QB2, xAsP)

| {z }

N2

Z = (xAxBP

| {z }

Z1

, xArBP

| {z }

Z2

, rArBP

| {z }

Z3

, rAxBP

| {z }

Z4

)

De acordo com a denição de sessão fresh, se não houver sessão matching, o participante que responde ao iniciador não pode ser totalmente corrompido. O simulador precisa tratar corretamente as situações em queBse envolve em sessões integralmente corrompidas, isto é, com um participante C desonesto. Esse cenário é tratado como subcaso dos casos 1, 4, 5, 6, 8 e 9. Analogamente,S deve lidar corretamente com as sessões em queAinterage com o participanteCdesonesto; essa situação é tratada como subcaso de todos os nove casos. Na Tabela 6.4, esses cenários são detalhados para os casos 5 a 9, que são os mais críticos para S.

Na sequência, vamos analisar separadamente cada um dos nove casos sobre sessões que envolvem A e/ouB, participantes do Teste. Para o caso 1, descrevemos em detalhes os passos deS; os casos 2, 3 e 4 são análogos ao 1. Os casos 5 a 9 são similares entre si, pois neles fazemos uso dos teoremas Trapdoor Test para contornar as diculdades do simulador em calcular valores que são dependentes de dados que desconhece, garantindo respostas sempre consistentes.

Caso 1

Se S adivinhar que A usará como estratégia o caso 1, o desao BDH é embutido em Z1. Para tanto, antes do início do jogo,S denexAP =aP exBP =bP, isto é, as chaves públicas dos alvos do Teste recebem as entradas do desao.

(a) Se AconsultaH(A, B, EA, EB, Z, K, L, M, N)

S verica seZ1 fornecido em Z contém abP, testando see(aP, bP)=? e(P, Z1) caso sim, answerBDH←e(cP, Z1)

S procura(A, B, EA, EB, Z, K, L, M, N,∗) na listaHlst se encontrar, responde o valorSK armazenado

caso contrário, procura(A, B, EA, EB,(∗,∗, Z3, Z4), K, L, M, N,∗)

se encontrar, atualiza os valores Z1, Z2 e responde o valor SK armazenado caso contrário, sorteia SK∈ {0,1}k, cria novo registro emHlst e respondeSK.

Se AconsultaH(A, C, EA, EC, Z, K, L, M, N),S realiza operações similares.

Tabela 6.4: Casos na redução: cenário para o simulador

Desao BDH=(aP, bP, cP) Simulador desconhece (além de msk=a), Caso embutido eme(cP, abP), nas sessões envolvendo:

com(mpk=aP)e: A e B (alvos de Teste) A eC (C6=B) C e B (C6=A) QA1 =bP dA1, dA2 dA1, dA2 xC, xB

5 QA2 =yP −zbP xA, xB, rB xA, xC, rA, rC rC, rB

xBP =cP xAxBP, xArBP Z, K4 Z, K4

M1=e(xBP, dA1) K1, L1, M1, N1 K1, L1, M1, N1

QB1 =bP dB1, dB2 xA, xC dB1, dB2 6 QB2 =yP −zbP xA, xB, rB rA, rC xC, xB, rC, rB

xAP =cP xArBP Z, K4 Z, K4

M2=e(xAP, dB1) M2, N2 K2, L2, M2, N2

QA1 =bP não se aplica:

7 QA2 =yP −zbP idem caso 5 idem caso 5 B não pode

rBP =cP ser totalmente

K1 =e(rBP, dA1) revelado

QB1 =bP dB1, dB2

8 QB2 =yP −zbP xA, xB, rA, rB idem caso 6 idem caso 6

rAP =cP Z, K4

K2 =e(rAP, dB1) K2, L2, M2, N2

QA1 =bP dA1, dA2

9 QA2 =yAP −zbP dB1, dB2 idem caso 5 idem caso 6 QB1 =cP xA, xB, rB

QB2 =yBP −zcP xAxBP, xArBP K3 =e(QB1, dA1) K1, K3, L1, L3, M, N

Se AconsultaH(C, B, EC, EB, Z, K, L, M, N) e S não encontrar essas entradas na lista, procura(C, B, EC, EB,∗,∗, L, M, N,∗)

se encontrar, atualiza os valores Z, K e responde o valor SK armazenado caso contrário, sorteiaSK ∈ {0,1}k, cria novo registro emHlst e respondeSK. (b) Se Aconsulta StrongRevealSessionKey(A, B, s)

S calculaZ3, Z4, K, L, M, N, usando dados que conhece procura(A, B, EA, EB,(∗,∗, Z3, Z4), K, L, M, N,∗) emHlst

se encontrar registros na forma(A, B, EA, EB,(Z1, Z2, Z3, Z4), K, L, M, N, SK), testa see(xAP, xBP)=? e(Z1, P) e se e(xAP, rBP)=? e(Z2, P)

se ambas igualdades valem, respondeSK

caso contrário, sorteiaSK, cria novo registro com valores nulos paraZ1, Z2, e respondeSK. Se Aconsulta StrongRevealSessionKey(A, C, s),S realiza operações similares.

Se Aconsulta StrongRevealSessionKey(C, B, s) eS não encontrar as entradas emHlst,

6.1 SEGURANÇA DO GNT3 NO MODELO LBG SOB BDH 95 S calculaK1, K2, K3, L, M, N, usando dados que conhece

procura(C, B, EC, EB,(∗,∗,∗,∗),∗, L, M, N,∗)

se encontrar registros na forma(C, B, EC, EB,(Z1, Z2, Z3, Z4), K, L, M, N, SK) , testa see(xCP, xBP)=? e(Z1, P), see(xCP, rBP)=? e(Z2, P),

see(rCP, rBP)=? e(Z3, P), e se e(rCP, xBP)=? e(Z4, P) calculaK =K1·K2·K3·e(Z3, aP)e testa se K =? K calculaL=L1·L2·L3·e(Z3, aP) e testa se L=? L se todas igualdades valem, respondeSK

caso contrário, sorteia SK, cria novo registro com valores nulos paraZ, K, e respondeSK.

Caso 2

Similar ao caso 1, porém o desao BDH é embutido em Z3. S não sabe calcular Z3, K4 (além deZ4 nos subcasos) mas é capaz responder de forma consistente, usando os dados conhecidos para calcular os demais valores e realizar os testes necessários.

Caso 3

Similar ao caso 1, porém o desao BDH é embutido em Z2. S não sabe calcular Z2 (além de Z1, Z3, Z4, K4 nos subcasos), mas é capaz responder de forma consistente, usando as mesmas estratégias do caso 1.

Caso 4

Similar ao caso 1, porém o desao BDH é embutido emZ4.Snão sabe calcularZ3, Z4, K4(além deZ1, Z2nos subcasos), mas é capaz responder de forma consistente, usando as mesmas estratégias do caso 1.

Caso 5

Se S adivinhar queA usará como estratégia o caso 5, o desao BDH é embutido em M1. Para tanto, antes do início do jogo,S denempk=aP,QA1 =bP e xBP =cP, isto é, a chave pública de B guarda uma das entradas do desao e a chave secreta parcial dA1 guarda abP. Para se tirar proveito do teorema Trapdoor Test, o oráculo H2 é denido para que QA2 = yP −zQA1, o que implica que a chave secreta parcialdA2 =yP−zdA1. Os valoreszeysão escolhidos e armazenados por S. Por meio do Trapdoor Test, mesmo sem conhecer os valores de dA1 e dA2, S é capaz de detectar quando Afornece M1=e(cP, dA1) eN1 = (cP, dA2).

(a) Se AconsultaH(A, B, EA, EB, Z, K, L, M, N)

S verica seM1 contém a resposta ao desao, calculando M2, N2 e M1 = MM

2 eN1= NN

2 e testando se (M1)z·N1 =? e(aP, cP)y (Trapdoor Test) caso sim, answerBDH←M1

S verica se já foi calculada chave para a sessão em questão ou uma matching

caso sim, atualiza entradas incompletas no registro de Hlst se for preciso e devolve a chave caso contrário, sorteia SK, cria novo registro emHlst e respondeSK.

Se AconsultaH(A, C, EA, EC, Z, K, L, M, N)ou H(C, B, EC, EB, Z, K, L, M, N)

S realiza operações similares às do caso 1.

(b) Se Aconsulta StrongRevealSessionKey(A, B, s)

S calcula as variáveis de que é capaz e procura(A, B, EA, EB,(∗,∗, Z3, Z4),∗,∗,∗,∗,∗) emHlst se encontrar registros na forma(A, B, EA, EB, Z1, Z2, Z3, Z4, K, L, M , N , SK),

calculaK1 = K K

2·K3·K4 L1 = L L

2·L3·L4 M1 = MM

2 e N1 = NN

2

testa se(K1)z·L1=? e(aP, rBP)y e se (M1)z·N1 =? e(aP, cP)y (Trapdoor Test) e(xAP, xBP)=? e(Z1, P) e se e(xAP, rBP)=? e(Z2, P)

se todas igualdades valem, respondeSK

caso contrário, sorteiaSK, cria novo registro com valores nulos para as variáveis que S desconhece e respondeSK.

Se Aconsulta StrongRevealSessionKey(A, C, s), analogamente, S calculaK1, L1, M1, N1 da mesma forma e

testa se(K1)z·L1=? e(aP, rcP)y e se (M1)z·N1=? e(aP, xcP)y (Trapdoor Test) e prossegue igualmente.

Se Aconsulta StrongRevealSessionKey(C, B, s) eS não encontrar as entradas emHlst, S calcula as variáveis de que é capaz e procura(A, B, EA, EB,∗,∗,∗, M, N,∗)em Hlst se encontrar registros na forma(A, B, EA, EB, Z, K, L, M, N, SK),

testa a consistência dos componentes de Z da mesma forma que no caso 1 calculaK =K1·K2·K3·e(Z3, aP)e testa se K =? K

calculaL=L1·L2·L3·e(Z3, aP) e testa se L=? L se todas igualdades valem, respondeSK

caso contrário, sorteiaSK, cria novo registro com valores nulos para as variáveis que S desconhece e respondeSK.

Caso 6

Similar ao caso 5, porém o desao BDH é embutido em M2, isto é, S dene mpk = aP, QB1 = bP, xAP = cP e QB2 = yP −zQB1. Vamos detalhar apenas o caso em que A solicita a chave de uma sessão que envolveB e um participanteC desonesto.

(b) Se Aconsulta StrongRevealSessionKey(C, B, s)e S não encontrar as entradas emHlst, S calcula as variáveis de que é capaz e procura(C, B, EC, EB,∗,∗,∗,∗,∗,∗) emHlst se encontrar registros na forma(C, B, EC, EB, Z, K, L, M , N , SK),

testa a consistência dos componentes deZ da mesma forma que no caso 1 calculaK2 = K

K1·K3·e(Z3,aP) L2= L

L1·L3·e(Z3,aP) M2 = MM

1 e N2 = NN

1

testa se(K2)z·L2 ?

=e(aP, rcP)y e se (M2)z·N2 ?

=e(aP, xcP)y (Trapdoor Test) se todas igualdades valem, respondeSK

caso contrário, sorteiaSK, cria novo registro com valores nulos para as variáveis que S desconhece e responde SK.

6.1 SEGURANÇA DO GNT3 NO MODELO LBG SOB BDH 97 Caso 7

Similar ao caso 5, porém o desao BDH é embutido emK1, isto é,Sdenempk=aP,QA1 =bP, rBP =cP e QA2 =yP −zQA1.

Caso 8

Similar ao caso 5, porém o desao BDH é embutido emK2, isto é,Sdenempk=aP,QB1 =bP, rAP =cP e QB2 =yP −zQB1. Os cálculos que testam a consistência dos dados fornecidos por A e que permitem S responder de forma coerente são similares aos apresentados no caso 6 (b).

Caso 9

Similar ao caso 5, porém o desao BDH é embutido em K3, isto é, S dene mpk = aP, QA1 =bP e QB1 =cP. Para poder realizar os testes de consistência, dene QA2 =yAP −zQA1 e QB2 =yBP −zQB1.

(a) Se AconsultaH(A, B, EA, EB, Z, K, L, M, N)

S verica seK3 contém a resposta ao desao, calculando as variáveis que conhece e K0 = KK

2·K4 L0 = LL

2·L4 U2= [L0]−1z V2= [K0]−z U1 =

e(aP, yAcP +yBbP−yzA(rBP +yBP))1+z1 V1=e(QB2, yAaP)1+z1 he(bP,y

BaP) e(rBP,yAP)

i1+zz

W1 = U1

1 ·h

K0 U2

i 1

1+z W2 =V1·h

L0 V2

i z

1+z

e testando se W2

W1z2

=? [e(aP,cPe(aP,P)yA·e(aP,bP)yAyB )yB]z (teste do trapdoor BDH variante 1, pág. 42) e se MzN =? e(aP, xAP)yB ·e(aP, xBP)yA (teste do trapdoor BDH variante 2, pág. 43) caso passe em todos os testes,answerBDH←W1

S verica se já foi calculada chave para a sessão em questão ou uma matching

caso sim, atualiza entradas incompletas no registro de Hlst se for preciso e devolve a chave caso contrário, sorteia SK, cria novo registro emHlst e respondeSK.

Se AconsultaH(A, C, EA, EC, Z, K, L, M, N)ou H(C, B, EC, EB, Z, K, L, M, N) S realiza operações similares às do caso 1.

(b) Se Aconsulta StrongRevealSessionKey(A, B, s)

S calcula as variáveis de que é capaz e procura(A, B, EA, EB,(∗,∗, Z3, Z4),∗,∗,∗,∗,∗) se encontrar registros na forma(A, B, EA, EB, Z1, Z2, Z3, Z4, K, L, M , N , SK),

verica a consistência deZ1 eZ2 da mesma forma que no caso 5 (b) e

testa a consistência de K, L, M , N efetuando os mesmos cálculos e testes do caso 9 (a) caso passe em todos os testes, respondeSK

caso contrário, sorteia SK, cria novo registro com valores nulos para as variáveis que S desconhece e respondeSK.

Se Aconsulta StrongRevealSessionKey(A, C, s) S realiza operações similares às do caso 5 (b).

Se Aconsulta StrongRevealSessionKey(C, B, s) S realiza operações similares às do caso 6 (b).

Cálculos Usados no Caso 9

Para tratar o caso 9, usamos os seguintes cálculos, de forma a viabilizar a aplicação do teste do trapdoor:

K0 = KK

2·K4 =e(rBP, dA1)·e(QB1, dA1) =e(rBP, abP)·e(cP, abP) L0 = LL

2·L4 =e(rBP, dA2)·e(QB2, dA2) =e(rBP, abP)−z·e(rBP, yAaP)·e(QB2, dA2) U2 = [L0]−1z =e(rBP, abP)·[e(rBP, yAaP)·e(QB2, dA2)]−1z

W1 = U1· K0

U2 1+z1

= U1·h

e(cP, abP)·[e(rBP, yAaP)·e(QB2, dA2)]1z i1+z1

= U1·h

e(cP, abP)(1+z)·[e(rBP, yAaP)·e(yAyBP−yAzcP −yBzbP, aP)]1z i 1

1+z

= U1·h e(yA

z (rBP+yBP)−yAcP −yBbP, aP)i1+z1

·e(cP, abP)

= e(cP, abP)

V2 = [K0]−z = [e(rBP, abP)·e(QB1, dA1)]−z

W2 = V1· L0

V2

1+zz

= V1·

e(rBP, yAaP)·e(QB2, dA2) e(QB1, dA1)−z

1+zz

= V1·h

e(rBP, yAaP)·e(QB2, dA2)·e(yBP−QB2, yAaP −dA2)1/zi1+zz

= V1·h

e(rBP, yAaP)·[e(zcP, yAaP)·e(yBP, zabP−yAaP)]1zi1+zz

·e(QB2, dA2)

= V1·h

e(rBP, yAaP)·[e(zcP, yAaP)·e(yBbP, zaP)·e(yBP,−yAaP)]1z i z

1+z ·e(QB2, dA2)

= V1·[e(zrBP, yAaP)·e(zcP, yAaP)·e(yBbP, zaP)·e(yBP,−yAaP)]1+z1 ·e(QB2, dA2)

= V1·[e(zrBP−QB2, yAaP)·e(yBbP, zaP)]1+z1 ·e(QB2, dA2)

= e(QB2, dA2)

No documento Criptogra a de chave pública sem certi cado (páginas 113-120)