Lição
A teoria — Diffie–Hellman: um segredo combinado em público
Numa troca de chaves de Diffie–Hellman, duas partes combinam um número secreto através de um canal aberto a qualquer observador. Fixam publicamente um primo p e uma base g. Cada interveniente escolhe um expoente privado, publica g elevado a essa potência mod p e eleva depois o número público do outro ao seu próprio expoente privado: (gᵇ)ᵃ = (gᵃ)ᵇ = gᵃᵇ mod p. Desfazer este processo exige resolver um logaritmo discreto: dado A = gᵃ mod p, encontrar x tal que gˣ ≡ A (mod p). Diffie e Hellman observaram em 1976 que não viam forma de extrair o segredo partilhado dos números públicos sem resolver este problema, embora não tivessem prova formal de que tal atalho não existisse. A ordem de g é o menor n ≥ 1 com gⁿ ≡ 1 (mod p); e g diz-se um gerador quando a sua ordem é p − 1.
O que significa cada símbolo
p- o módulo primo, público
g- a base, pública
a, b- os expoentes privados de Alice e de Bob
A, B- os seus números públicos, gᵃ mod p e gᵇ mod p
x- o expoente descoberto por Eve; qualquer x com gˣ ≡ A serve, pelo que ela encontra a mod a ordem de g
ord(g)- a ordem de g: quantos valores distintos o segredo partilhado pode assumir
- Pressupõe
- p é um número primo entre 5 e 1.999; g é qualquer base entre 2 e p − 2; e a e b variam de 1 a p − 2. Uma tentativa corresponde a comparar uma potência calculada com o alvo, incluindo-se em ambas as contagens a tentativa bem-sucedida. Cada dígito em Pohlig–Hellman é determinado testando os candidatos por ordem, exatamente como os autores propõem para fatores pequenos; para fatores grandes, descrevem também uma busca que troca memória por tempo, não implementada nesta página. O exemplo original de Diffie e Hellman usava um primo com cerca de 200 bits, estimando o cálculo do logaritmo em cerca de 2¹⁰⁰ operações.
Problema resolvido na íntegra
-
Recuperar o segredo de Alice para p = 101 5 passos
Alice e Bob utilizam p = 101 e g = 2. Eve observa A = 12 e B = 53. Encontre um x com 2ˣ ≡ 12 (mod 101) através de Pohlig–Hellman, conte as tentativas e use x para obter o segredo partilhado. Diga depois quanto custaria o mesmo ataque com p = 65.537.
Abrir este problema na ferramenta
-
Como 100 = 2² · 5², x fica determinado por x mod 4 e x mod 25. A ordem de 2 tem de dividir 100; sendo 2⁵⁰ = 100 e 2²⁰ = 95 ambos diferentes de 1, a ordem só pode ser o próprio 100, o que faz de 2 um gerador.
-
Mod 4, temos γ = 2⁵⁰ = 100, equivalente a −1. Para o primeiro dígito binário: 12⁵⁰ = 100, logo d = 1, à segunda tentativa. Descontando esse contributo: 12 · 2⁻¹ = 12 · 51 = 612 ≡ 6. Como 6²⁵ = 100, o dígito seguinte também é 1, outra vez à segunda tentativa. Daqui resulta x ≡ 1 + 1 · 2 = 3 (mod 4).
-
Mod 25, γ = 2²⁰ = 95, com potências 1, 95, 36, 87, 84. Primeiro dígito na base 5: 12²⁰ = 95, dando d = 1 à segunda tentativa. Eliminando-o: 6⁴ = 1.296 ≡ 84, pelo que o dígito seguinte é 4, à quinta tentativa. Logo, x ≡ 1 + 4 · 5 = 21 (mod 25).
-
Os números inferiores a 100 congruentes com 21 mod 25 são 21, 46, 71 e 96; destes, apenas 71 é congruente com 3 mod 4. Conclui-se que x = 71, ao fim de 2 + 2 + 2 + 5 = 11 tentativas (no pior caso seriam 2·2 + 2·5 = 14). A força bruta teria percorrido de 0 a 71, totalizando 72 tentativas. O segredo partilhado é 53⁷¹ mod 101 = 35.
-
65.537 = 2¹⁶ + 1 é primo e p − 1 = 2¹⁶. Pohlig–Hellman resolve os seus dezasseis dígitos binários um a um, com dois candidatos cada: no pior cenário são 32 tentativas, enquanto a força bruta poderia exigir 65.536. Pohlig e Hellman analisaram especificamente este caso, p = 2ⁿ + 1, antes de passarem ao método geral.
Resposta
x = 71, ao fim de 11 tentativas (no pior caso 14), sendo o segredo partilhado 35. Para p = 65.537, o ataque exige no máximo 32 tentativas. A página termina em 1.999, pelo que esse valor resulta da aritmética e não de uma execução.
-
Percurso de aprendizagem
Como se quebram os códigos
Referências (2)
- The exchange itself, the definition's sentence that its authors could see no way round a logarithm and had no proof, and the 200-bit example in `assumes`: Whitfield Diffie and Martin E. Hellman, "New Directions in Cryptography," IEEE Transactions on Information Theory 22(6), 644–654, November 1976. §III, p. 649.
- The second insight's quotation, the digit-by-digit search the page runs, and the worked problem's p = 2ⁿ + 1: Stephen C. Pohlig and Martin E. Hellman, "An Improved Algorithm for Computing Logarithms over GF(p) and Its Cryptographic Significance," IEEE Transactions on Information Theory 24(1), 106–110, January 1978. §III–IV, pp. 107–110.