6.4 Segurança do GNT2 no Modelo Mal-SJ
+sob Gap-BDH
Para mostrar a segurança do protocolo GNT2, apresentamos uma redução do problema Die-Hellman Bilinear Lacunar (Gap-BDH) para o problema de se construir um algoritmo que diferencie um número aleatório de uma chave secreta calculada pelo protocolo. A redução indica que se houver um adversário com vantagem não negligenciável contra o protocolo, sob o modelo de adversário estendido da Seção4.6.4 (pág.60), então existe algoritmo de tempo polinomial que resolve o Gap-BDH, no modelo de oráculos aleatórios. Dividimos a prova em dois casos: o da autoridade mal intencionada e o caso geral (de adversário externo e interno que corrompeu a chave mestra). Seguem o enunciado do teorema e respectiva prova.
Teorema 6.4 Sob a hipótese de diculdade do problema Gap-BDH, se as funções H, H1 e H2
são modeladas como oráculos aleatórios, então GNT2 é um protocolo CL-AKA seguro no modelo Mal-SJ+.
6.4.1 Demonstração do Teorema 6.4
Suponha, por absurdo, que existe um algoritmo A de tempo polinomial probabilístico com vantagem não negligenciável em quebrar o protocolo. Vamos mostrar como construir um algoritmo S que recebe como entrada uma quádrupla (P, aP, bP, cP) referente a um desao BDH e gera como resposta o valor e(cP, abP) com a ajuda de um oráculo de decisão DBDH. S simula uma execução real do protocolo e interage com o adversário A, nos moldes do jogo descrito no modelo de segurança deSwanson e Jao(2009) com as melhorias descritas nas seções4.6.1e4.6.4. Se o jogo não for abortado,Aprossegue até o nal e obtém vantagem contra o protocolo. O simulador usa os passos do adversário para calcular, então, a resposta ao desao BDH, que é armazenada na variável answer.
Suponha que q0 denota o número máximo de sessões nas quais um usuário pode participar e q1 denota o máximo de consultas que A pode fazer a H1, comq0 e q1 relacionados polinomialmente com o parâmetro de segurançak que gerou os parâmetros do sistema.
Fase de Preparo
Antes do início do jogo entre o simuladorSe o adversárioA,Stenta adivinhar qual será a sessão sobre a qual Arealizará a consulta de Teste e quem serão os participantes dessa sessão. Considere um conjunto de usuários honestos previamente estabelecidosU ={U1, . . . , Un}, comn≤q1, e uma lista correspondente com valores (IDi, xi, xiP). O simulador escolheI, J ∈ {1, . . . , n}, com I 6=J, e a sessão ΠtI,J, onde t ∈ {1, . . . , q0}. A probabilidade de S fazer escolhas corretas é maior que 1/(q0q12).
Considere que A= (M0,M1,M2) e o atacante executaM0 com a entrada1k.M0 gera como saída a chave mestra públicampk e demais parâmetros que são entregues aS.Aconhece as chaves parciais secretas de todos usuários e pode corromper no máximo mais um componente secreto (o valor secreto gerado pelo usuário e o segredo temporário de sessão) de cada um dos participantes da sessão de Teste para obter vantagem. Na Tabela6.8, listamos quatro possibilidades para Arevelar ou modicar chaves relacionadas com a sessão de Teste ou seus participantes (denotados por A e B), preservando ainda a característica de sessão fresh. Sem perda de generalidade, considere que A
Tabela 6.8: Casos válidos para uma autoridade mal intencionada corromper os participantes da sessão de Teste
1 2 3 4
Consultas ou ações válidas A B A B A B A B
RevealSecretValue ou ReplacePublicKey r/m r/m r/m r/m
RevealEphemeral or KGC é ativo r/m r/m r/m r/m
KGC é ativo, mas a sessão de Teste possui matching r m r m
KGC calcula todas as chaves secretas parciais m m m m m m m m
(r)revela um segredo (m)modica/escolhe um segredo
é quem inicia a sessão eB é quem responde e que A equivale aIDI e B a IDJ. Quando a sessão de Teste tem uma sessão com matching, sem perda de generalidade considere queAnão modica o temporário secreto deA.S trata o caso em que não há sessão com matching como um subcaso em queB não é totalmente corrompido, mas se envolve com um participante integralmente corrompido C.
O simulador tenta adivinhar qual desses quatro casos o adversário explorará para quebrar o protocolo. Se S errar na escolha, o jogo será abortado em algum momento. Se acertar, então a probabilidade de S completar o jogo será maior que 1/(4q0q12).
Respostas aos Oráculos
O adversário, por meio de M1 e M2, interage com S consultando os oráculos descritos abaixo.
Para ser consistente com suas respostas, S as armazena em listas.
RequestPublicKey(IDi). S mantém uma lista com valores (IDi, xi, xiP,xˆiP), onde xˆiP =⊥no começo do jogo. Nos casos 1 e 3, S dene xAP =aP e xA=⊥; nos casos 1 e 4,xBP =bP e xB =⊥. Para denir os pares dos demais participantes, S escolhe ao acasoxi e calcula xiP.
S responde xiP.
Send(Πsi,j, m). Se a sessão Πsi,j ainda não existe,S cria uma sessão para dono IDi e parceiro IDj, com estado indenido e com o papel de emissor (se m=λ) ou receptor (em caso contrário).
Se m=λe Πsi,j é sessão de Teste, então deneriP =aP (nos casos 2 e 4). Sem6=λ,Πsi,j é sessão de Teste com papel de receptor, então deneriP =bP (nos casos 2 e 3). Nos demais casos, S usa m para denir o temporário de sessão ou escolhe ri ao acaso (se m = λ). S atualiza o estado da sessão (aceito ou rejeitado, de acordo com o protocolo) e entregariP ao adversário quando necessário.
RevealEphemeral(Πsi,j). S aborta se IDi =A (nos casos 2 e 4), ou IDi =B (nos casos 2 e 3), ou se o estado da sessão for indenido. Caso contrário devolve o valor temporário secreto ri. RevealSecretValue(IDi). S aborta se xi =⊥ ou IDi = A (nos casos 1 e 3) ou IDi = B (nos
casos 1 e 4). Caso contrário devolve o valor secretoxi.
ReplacePublicKey(IDi, xP). S aborta seIDi =A (nos casos 1 e 3) ouIDi =B (nos casos 1 e 4). Caso contrário, registra a nova chave públicaxˆiP =xP.
PPK-RevealSessionKey(Πsi,j, di). Se Πsi,j é a sessão de Teste ou se o estado da sessão não é aceito, S aborta. Caso contrário S segue os passos descritos na Seção 6.4.2. Para enfatizar
6.4 SEGURANÇA DO GNT2 NO MODELO MAL-SJ+ SOB GAP-BDH 107 quandoA consulta este oráculo sobre sessões envolvendo os participantesA e/ouB, usamos a notação simplicada como PPK-RevealSessionKey(A, B, t, dA).
H(IDi, IDj, Ei, Ej, Z, K, M, N). S prossegue com os passos descritos na Seção 6.4.2.
Test(Πsi,j). Se Πsi,j não é a sessão de Teste, aborta. Caso contrário,S joga uma moeda b∈ {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 queAnaliza o jogo,Sdevolveanswer. Se a probabilidade de sucesso deAéP r[A], então a probabilidade de sucesso de S é P r[S]≥P r[A]/(4q0q12). Se A tem vantagem não negligenciável em diferenciar um número aleatório da chave de sessão é porqueAconsultouHcom valores corretos deZ. Nesse caso,answercontém o valore(cP, abP), conforme cálculos apresentados na seção6.4.2.
Então S resolve o problema Gap-BDH em tempo polinomial em k, o que contradiz a hipótese de
diculdade do Gap-BDH.
6.4.2 Oráculos H e PPK-RevealSessionKey
Quando A consulta PPK-RevealSessionKey sobre uma sessão que não é a de Teste, S deve fornecer respostas consistentes sempre que houver uma sessão com matching. O simulador mantém uma lista Hlst, inicialmente vazia, com entradas na forma (IDi, IDj, Ei, Ej, Z, K, M, N, SK) que é atualizada sempre que A consulta H ou PPK-RevealSessionKey. Há dois grandes casos a serem tratados por S:
1) Sessões que não envolvem os participantes A e B da sessão de Teste
Suponhas que A consulta H ou RevealSessionKey sobre os participantes IDi e IDj, ambos diferentes dos participantes da sessão de Teste e, sem perda de generalidade, considere que IDi é quem inicia. S pode não conhecer xˆi ou xˆj (se A tiver substituído a chave pública de IDi ou de IDj) nemrj (seA tiver escolhido o valor temporário paraIDj).
Podemos supor que S conhece ri, se houver sessão com matching, e xi é usado em todos os cálculos mesmo quexˆiP 6=⊥. Assim, S pode calcular Z. E uma vez que A entrega di a S quando consulta o oráculo PPK-RevealSessionKey,S sempre pode calcularK, M, N e é capaz de responder consistentemente.
2) Sessões que envolvem os participantes A ou B da sessão de Teste
O simulador embute os valores do desao em pontos estratégicos do protocolo, de modo a induzir o adversário a realizar cálculos com esses valores. Na Tabela6.9, são relacionadas as possíveis estratégias queApode empregar para quebrar a segurança do protocolo e que chaves são associadas aos valores do desao. Nessa tabela, 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. Observe que as variáveis K e M do protocolo podem ser reescritas como indicado na Tabela 6.10. Os componentes de Z recebem os nomes dados na última linha da
Tabela 6.9: Casos para a autoridade mal intencionada e onde o desao BDH é embutido
1 2 3 4
Componente de chave A B A B A B A B
Chave pública gerada pelo usuário:xP aP bP x x aP x x bP
Temporário de sessão:rP x aP bP bP aP x
aP, bP do desao BDH embutido em: Z1= Z3= Z2= Z4= xAxBP rArBP xArBP rAxBP Tabela 6.10: Nomes das variáveis
K =e(rBP +QB, rA·mpk)
| {z }
K1
·e(rBP+QB, dA)
| {z }
K2
M =e(xBP+QB, xA·mpk)
| {z }
M1
·e(xBP +QB, dA)
| {z }
M2
Tabela6.9, que são as variáveis que ajudam na captura do cálculo dee(cP, abP), ou seja, a resposta do desao. Vamos analisar cada caso:
Caso 1.
O desao BDH é embutido em Z1, isto é, as chaves públicas deA eB são denidas para serem respectivamente aP e bP. Se A consulta H(A, B, EA, EB, Z, K, M, N), S verica se e(aP, bP) =? e(Z1, P); caso sim, deneanswer ← e(cP, Z1). Se a chave de sessão já estiver denida, então S a devolve para A, caso contrárioS escolhe uma nova e atualizaHlst.
Se Aconsulta PPK-RevealSessionKey(A, B, t, dA),S não sabe calcularZ1,Z2 e M.S pode de-tectar consistência ao calcular Z3, Z4, K, N, e buscando(A, B, EA, EB,(∗,∗, Z3, Z4), K,∗, N,∗) em Hlst. Para registros na forma(A, B, EA, EB,(Z1, Z2, Z3, Z4), K, M , N, SK),S testa see(aP, bP)=? e(Z1, P), e see(aP, rBP)=? e(Z2, P). Se ambos testes são satisfeitos, S calculaM2 (como indicado na Tabela6.10) e submete hQB+bP, aP, mpk, M /M2i ao oráculo de decisão DBDH. Se o oráculo responder positivamente, então S devolve SK, caso contrário S sorteia novo SK e atualiza Hlst conforme necessário.
Se A consulta PPK-RevealSessionKey sobre as entradas (A, C, t, dA) ou (C, B, t, dC), onde C é um participante totalmente corrompido, S pode não saber calcular K, M ou Z, mas S detecta consistência testando, por exemplo, see(xAP,xˆCP)=? e(Z1, P), para umZ1 =xAxˆCP armazenado emHlst, e submetendohQB+rBP, rCP, mpk, K/K2ie hQB+bP,xˆCP, mpk, M /M2i ao oráculo de decisão DBDH.
Caso 2.
É similar ao caso 1, mas o desao BDH é embutido em Z3 e S dene answer ← e(cP, Z3) sempre que e(aP, bP) =e(Z3, P) para algum valor de Z3 fornecido pelo adversário numa consulta a H.
Se A consulta PPK-RevealSessionKey (A, B, t, dA), S calcula M, N e usa xˆBP, se xˆBP 6=⊥, ou usa o xBP original nos cálculos a seguir. Como A é o dono da sessão, S usa o valor secreto xA
original, mesmo se xˆAP 6=⊥ (isto é, a chave pública deA foi substituída).
6.4 SEGURANÇA DO GNT2 NO MODELO MAL-SJ+ SOB GAP-BDH 109 Tabela 6.11: Casos válidos para um adversário externo corromper os participantes da sessão de Teste
5 6 7 8 9
Adversário consulta A B A B A B A B A B
RevealPartialKey r r r r
RevealSecretValue ou r r r r r r r r
ReplacePublicKey m m m m m m m m
RevealEphemeral ou adversário é ativo r m r m r m r m (r)revela um segredo (m)modica/escolhe um segredo
Para registros na forma(A, B, EA, EB,(Z1, Z2, Z3, Z4), K, M, N, SK),Stesta see(xAP,xˆBP)=? e(Z1, P), e(xAP, bP) =? e(Z2, P), e(aP, bP) =? e(Z3, P), e se e(aP,xˆBP) =? e(Z4, P). Se todos os testes forem satisfeitos,S calculaK2 (como na Tabela6.10) e submete hQB+bP, aP, mpk, K/K2i ao oráculo de decisão DBDH. Caso o oráculo responda positivamente,S devolveSK, caso contrário S sorteia novoSK e atualizaHlst.
Casos 3 e 4.
Esses casos são similares aos casos 1 e 2, mas o desao BDH é embutido em Z2 eZ4, respecti-vamente.
6.4.3 Caso Geral
No caso geral, consideramos adversários externos, que não têm acesso à chave mestra secreta, e aqueles internos que corromperam o segredo principal do sistema. Esse segundo tipo pode ser tratado como um caso particular da autoridade mal intencionada e, na análise dos casos 1 a 4 da seção anterior, os procedimentos se repetem, mas são desnecessárias as consultas ao oráculo de decisão DBDH.
Os casos em que um adversário externo pode corromper os participantes da sessão de Teste são listados na Tabela 6.11 e numerados de 5 a 9. Antes de iniciar o jogo, o simulador escolhe os parâmetros do sistema e dene a chave mestra pública como sendompk =aP. Para tratar os casos 5 a 9, as respostas aos oráculos são ligeiramente adaptadas como segue:
H1(IDi) S dene:
• nos casos 5, 7 e 9:H1(A) =bP, isto é,QA=bP
• nos casos 6 e 8:H1(B) =bP, isto é,QB =bP
• no caso 9:H1(B) =cP, isto é,QB =cP
Para os demais participantes, nos casos 5 a 9, S sorteia li ∈ Z∗q e devolve liP. Todas as respostas a H1 e os valoresli são armazenados em uma lista.
RequestPublicKey(IDi). Nos casos 5 e 6, xBP = cP e xAP = cP, respectivamente, e xA = xB =⊥.
Send(Πsi,j, m) Se m = λ e Πsi,j é a sessão de Teste, então S dene riP = cP no caso 8; se além disso a sessão tiver papel de receptor, no caso 7 se dene riP =cP.
Tabela 6.12: Casos para um adversário externo e onde o desao BDH é embutido
5 6 7 8 9
Componente de chave A B A B A B A B A B
Identidade:Q1 bP bP bP bP bP cP
Chave pública:xP x cP cP x x x x x x x
Temporário:rP x x cP cP x x
Desao BDH mpk=aP
embutido em: M1 M2 K1 K2 N
(aP, bP, cP)desao BDH (x)S desconhece componente secreto
RevealPartialKey(IDi) S aborta se IDi =A (nos casos 5, 7 ou 9), ou IDi =B (nos casos 6, 8 ou 9). Caso contrário devolve (di1 =liaP, di2 =piaP).
RevealSecretValue(IDi) S aborta se xi =⊥ ou IDi = A (no caso 6) ou IDi = B (no caso 5).
Caso contrárioS devolve o valor secretoxi.
ReplacePublicKey(IDi, xiP) S aborta se IDi = A (no caso 6) ou IDi = B (no caso 5). Caso contrárioS substitui a chave pública porxiP e denexi=⊥.
RevealEphemeral(Πsi,j) S aborta seIDi =A(no caso 8) ouIDi =B (no caso 7) ou o estado da sessão é não indenido. Caso contrário devolve o valor secreto temporário ri.
RevealSessionKey(Πsi,j) Prossegue com os passos da Seção6.4.4.
H(IDi, IDj, Ei, Ej, Z, K, M) Prossegue com os passos da Seção6.4.4.
Analogamente aos casos 1 a 4,S captura a resposta ao desao na variávelanswer, com proba-bilidade de sucessoP r[S]≥P r[A]/(5q0q12).
6.4.4 H e PPK-RevealSessionKey quando A ou B é Envolvido
Analogamente aos casos 1 a 4, na Tabela 6.12 são listadas as variáveis onde o desao BDH é embutido, nos casos 5 a 9. Vamos analisar cada um desses casos:
Caso 5.
O desao BDH é embutido em M1. Se A consulta H(A, B, EA, EB, Z, K, M, N), S verica se M1 contém a resposta ao desao calculando M2, M3, M4 (com os valores que conhece), e M1 =
M
M2·M3·M4. S submete haP, bP, cP, M1i ao oráculo DBDH; se o oráculo responder positivamente, então answer←M1.
SeAconsulta RevealSessionKey(A, B, t),S pode detectar consistência calculandoZ eN e bus-cando(A, B, EA, EB, Z,∗,∗, N,∗)naHlst. Com registros na forma(A, B, EA, EB, Z, K, M , N, SK), S calculaK1 = K K
2·K3·K4 e M1 = M M
2·M3·M4, onde os valoresKi, Mi,i∈ {2,3,4}, são computados por S com o valorxA original.S submete hrBP, aP, bP, K1i e haP, bP, cP, M1i ao oráculo DBDH;
se a resposta for positiva em ambos testes, entãoS devolve SK. Caso contrário (nenhum registro passou nos testes)S sorteiaSK e atualizaHlst.
SeAconsulta RevealSessionKey(A, C, t)or RevealSessionKey(C, B, t),S procede de forma aná-loga, já que conhecedC.
6.5 SEGURANÇA DO GNT4 NO MODELO SJ+SOB BDH 111