Corpos Binários
Transcrição
Corpos Binários
Algoritmos Criptográficos Corpos Binários Corpos Binários: Implementação em Software Julio César López Hernández [email protected] Instituto de Computación Universidad de Campinas (UNICAMP) Brasil Julio López 2007 Algoritmos Criptográficos Corpos Binários Parte I Aritmética em F2m Julio López 2007 Algoritmos Criptográficos Corpos Binários Roteiro 1. Motivação 2. Definição de F2m 3. Bases Normais 4. Bases Polinomiais 5. Aritmética em F2m (software) • Soma • Quadrado • Multiplicação • Divisão (cálculo de inversos) Julio López 2007 Algoritmos Criptográficos Corpos Binários Roteiro... 6. Técnicas avançadas • Os parâmetros NIST (FIPS 186-2) • Métodos otimizados para multiplicar • Métodos otimizados para calcular inversos • Métodos para calcular a trace de um elemento finito • Métodos para calcular raı́zes quadradas em F2m • Métodos para resolver equações da forma x2 + x = a Julio López 2007 Algoritmos Criptográficos Corpos Binários Motivação • Os corpos binários F2m têm aplicações em muitas áreas, tais como a teoria dos códigos e criptografia. • Criptografia de curvas elı́pticas baseada em corpos binários: 10 curvas NIST. • Criptografia de curvas hiperelı́pticas baseada em corpos binários. • Emparelhamentos bilineares sobre curvas elı́pticas binárias. • O algoritmo AES é baseado no corpo binário F28 Julio López 2007 Algoritmos Criptográficos Corpos Binários O corpo finito GF (2) = F2 GF (2) = F2 = {0, 1} • (F2 , +) é um grupo abeliano (0) • (F2∗ , ·) é um grupo abeliano (1) • Para todo a, b, c ∈ F2 , a · (b + c) = a · b + a · c • a + b = a xor b = a + b mod 2 0 + 0 = 0 Julio López 1 + 0 = 1 0 + 1 = 1 1 + 1 = 0 2007 Algoritmos Criptográficos Corpos Binários O corpo finito GF (2m ) = F2m • O corpo finito F2m é um espaço vetorial de dimensão m sobre GF (2) = {0, 1} chamado corpo binário ou corpo finito de caracterı́stica dois. • Seja o conjunto {α0 , α1 , α2 , . . . , αm−1 } uma base de F2m sobre F2 . Então qualquer elemento a ∈ F2m pode ser representado Pm−1 como a = i=0 ai αi , onde ai ∈ GF (2). • O vetor binário associado ao elemento a é (a0 a1 a2 . . . am−1 ). • Portanto, o corpo binário F2m pode ser visualizado como 2m cadeias binárias de comprimento m. F2m = {(a0 a1 . . . am−1 ) : ai ∈ {0, 1}} Julio López 2007 Algoritmos Criptográficos Corpos Binários O corpo finito F2m ... • Para todo a ∈ F2m , a + a = 0 ( 2a = 0) (caracterı́stica dois) • Para todo a, b ∈ F2m , (a + b)2 = a2 + b2 F2m é um corpo finito onde: -=+ 2a = 0 √ √ √ a+b= a+ b Julio López 2007 Algoritmos Criptográficos Corpos Binários Bases para F2m • Base Polinomial: {xm−1 , xm−2 , · · · , x, 1}, xi = (0, · · · , 0, 1, 0, · · · , 0) A multiplicação pode ser implementada de forma eficiente (hardware/software) 21 22 2m−1 • Base Normal: {β, β , β , . . . , β }, β ∈ F2m . O quadrado é eficiente. A multiplicação e uma operação complexa para alguns valores de m. (hardware/software) 1 2 m−1 • Base Normal Gaussiana: {β, β 2 , β 2 , . . . , β 2 }, β ∈ F2m . A multiplicação é baseada em permutações (bom para hardware). Julio López 2007 Algoritmos Criptográficos Corpos Binários Base normal • Teorema: Para todo corpo binário F2m , exite um elemento β ∈ F2m tal que o conjunto : 21 22 {β, β , β , . . . , β 2m−1 } forma uma base, chamada base normal. • O pequeno teorema de Fermat: m 2 Para todo a ∈ F2m , a = a. −1 – método para calcular inversos: a 2 2m −1 =a – método para calcular quadrados a = am−1 + Julio López Pm−1 i=1 ai 2007 Algoritmos Criptográficos Corpos Binários Base normal... • Seja a = (a0 a1 . . . am−2 am−1 ) um elemento em F2m . Então, 2 a = (a0 β + a1 β = a0 β 21 21 + a1 β + . . . + am−1 β 22 = am−1 β + a0 β 2m−1 2 + . . . + am−1 β 21 ) 2m + . . . + am−2 β (β 2m = β) 2m−2 = (am−1 a0 a1 . . . am−2 ) O quadrado de um elemento finito é uma simples rotação (à direita) da representação vetorial do elemento. (Operação rápida em hardware) • A multiplicação em bases normais é em geral uma operação complexa. NIST recomenda bases normais Gaussianas, isto é, bases normais onde a multiplição é mais eficiente que o caso geral. Em particular, para m = 163, 233, 283, 409 e 571. Julio López 2007 Algoritmos Criptográficos Corpos Binários Bases normais: implementação em software Software Multiplication using Gaussian Normal Bases R. Dahab, D.Hankerson, F. Hu, M. Long, J. López and A. Menezes. IEEE Transactions on Computers, vol 55, No. 8, August 2006. Julio López 2007 Algoritmos Criptográficos Corpos Binários Base polinomial • Seja f (x) um polinômio binário irredutı́vel de grau m, então: F2m = F2 [x]/ < f (x) > Base : {xm−1 , xm−2 , · · · , x, 1} • Seja a ∈ F2m . Então, a = m−1 X ai xi i=0 = am−1 xm−1 + am−2 xm−2 + · · · + ai x + a0 = (am−1 am−2 · · · a1 a0 ) Julio López 2007 Algoritmos Criptográficos Corpos Binários Exemplo: F28 • f (x) = x8 + x4 + x3 + x + 1 um polinômio irredutı́vel de grau 8 • F28 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, . . . . . . 0x19, . . . . . . 0x1A, . . . . . . 0x1B, . . . . . . 0x1C, . . . . . . 0x1D, ... 0x1E, . . . . . . 0x1F, . . . . . . 0xF 0, 0xF 1, 0xF 2, 0xF 3, 0xF 4, 0xF 5, 0xF 6, 0xF 7, 0xF 8, 0xF 9, 0xF A, 0xF B, 0xF C, 0xF D, 0xF E, 0xF F, ... } Julio López 2007 Algoritmos Criptográficos Corpos Binários Exemplo: F28 ... • f (x) = x8 + x4 + x3 + x + 1 = (1 0001 1011) • A = x7 + x3 + 1 = (1000 1001) = 0x89 • B = x6 + x5 + x2 = (0110 0100) = 0x64 • Soma: A + B = ? = x7 + x6 + x5 + x3 + x2 + 1 = (11101101) = 0xED • Multiplicação: A × B = ? = x13 + x12 + x8 + x6 + x2 mod f (x) = x7 + x5 + x4 + x3 + x2 + 1 = 0xBD • Multiplicação: x · A = ? Julio López 2007 Algoritmos Criptográficos Corpos Binários Corpos binários recomendados por SECG SECG (Standards for Efficient Cryptography Group), 2000. • • • • • • • • • Julio López F2113 , F2131 , F2163 , F2193 , F2233 , F2239 , F2283 , F2409 , F2571 , f (x) = x113 + x9 + 1 f (x) = x131 + x8 + x3 + x2 + 1 f (x) = x163 + x7 + x6 + x3 + 1 f (x) = x193 + x15 + 1 f (x) = x233 + x74 + 1 f (x) = x239 + x158 + 1 f (x) = x283 + x12 + x7 + x5 + 1 f (x) = x409 + x87 + 1 f (x) = x571 + x10 + x5 + x2 + 1 2007 Algoritmos Criptográficos Corpos Binários Operações em F2163 • a, b ∈ F2163 , w = 32 bits • a = 0x6 645F3CAC F1638E13 9C6CD13E F61734FB C9E3D9FB • b = 0x7 BC4F3CAC B4338E1C AC6CD13D 00135498 B56C7280 • f (x) = x163 + x7 + x6 + x3 + 1 a+b = ? a×b = ? Julio López 2007 Algoritmos Criptográficos Corpos Binários Base polinomial: implementação em software p= m−1 X i=0 ai xi , p(x) = At−1 · · · A1 A0 • Ai : w-bits; W = 8, 16, 32, 64, 128, t = ⌈m/W ⌉. • p= • Ai << j , word<< j • Ai >> j , word>> j ∧ • Ai ⊕ Bj , word1 • Ai ⊙ Bj , word1 & word2 (AND) • Ai ∨ Bj , word1 || word2 (OR) Julio López word2 (XOR) 2007 Algoritmos Criptográficos Corpos Binários Soma em F2m a = (am−1 , am−2 , · · · , a1 , a0 ) b = (bm−1 , bm−2 , · · · , b1 , b0 ) a+b = ai xi + m−1 X (ai xor bi ) xi m−1 X ci xi bi xi i=0 i=0 = m−1 X m−1 X i=0 = i=0 = (cm−1 cm−2 · · · c1 c0 ) Julio López 2007 Algoritmos Criptográficos Corpos Binários Soma em F2m Entrada: a = (At−1 · · · A0 ), b = (Bt−1 · · · B0 ) ∈ F2m Saı́da: c = a ⊕ b 1. for i = 0 to t − 1 do 1.1 Ci = Ai ⊕ Bi 2. return (c) Julio López 2007 Algoritmos Criptográficos Corpos Binários Quadrados em F2m • a= Pm−1 • a2 = i=0 ai xi Pm−1 i=0 ai x2i • a = x7 + x5 + x3 + 1 = (10101001) • a2 = x14 + x10 + x6 + 1 = ( 0100010001000001) • Para cada b = (b7 b6 · · · b0 ) calcule T [b] = (0b7 0b6 · · · 0b1 0b0 ) Julio López 2007 Algoritmos Criptográficos Corpos Binários Quadrados em F2m ... Entrada: a ∈ GF (2m ), a = (At−1 · · · A0 ), t = ⌈m/32⌉. Saı́da: a2 mod f (x). 1. Precomputação: para cada b = (b7 b6 · · · b0 ) calcule T [b] = (0b7 0b6 · · · 0b1 0b0 ) 2. for i = 0 to t − 1 do 2.1 Ai = (b3 |b2 |b1 |b0 ), bj um byte 2.2 C2i ← (T [b1 ]T [b0 ]), C2i+1 ← (T [b3 ]T [b2 ]) 3. Calcule c(x) = (C2t−1 · · · C1 C0 ) mod f (x) 4. return (c(x)) Julio López 2007 Algoritmos Criptográficos Corpos Binários Quadrados em F2m sem tabela Algoritmo em C para inserir zeros em uma palavra (32 bits): Entrada: x = [000...0x15 x14 ...x1 x0 ] Saı́da: x = [0x15 0x14 0...0x1 0x0 ] x x x x = = = = ((x ((x ((x ((x & 0xFF00)<<8 << 4) | x) & << 2) | x) & << 1) | x) & | (x & 0x00FF); 0xF0F0F0F0; 0x33333333; 0x55555555; ver: Hacker’s Delight, Henry S. Warren, Jr., Addison-Wesley, 2003. Julio López 2007 Algoritmos Criptográficos Corpos Binários Redução modular • F2163 , f (x) = x163 + x7 + x6 + x3 + 1, w = 32 bits • f (x) = 0x 8 • 0 0 0 0 c9 c(x) = a(x) · b(x) mod f (x) • c = c324 x324 + · · · + c1 x + c0 • c = C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 • C10 = c351 x351 + c350 x350 + · · · + c320 x320 • m10 := c351 x188 + c350 x187 + · · · + c320 x157 ′ • c = c + m10 · f (x) ≡ c mod f (x) ′ ′ ′ ′′ ′′ ′′ ′ ′ ′ ′ ′ ′ ′ • c ≡ 0 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 mod f (x) ′′ ′′ ′′ • · · · c ≡ C5 C4 C3 C2 C1 C0 mod f (x) Julio López 2007 Algoritmos Criptográficos Corpos Binários Redução modulo f (x) = x163 + x7 + x6 + x3 + 1 Entrada: Um polinômio binário de grau ≤ 324, f (x). Saı́da: c(x) mod f (x). 1. for i from 10 downto 6 do 1.1 T ← C[i] 1.2 C[i − 6] ← C[i − 6] ⊕ (T ≪ 29) 1.3 C[i − 5] ← C[i − 5] ⊕ (T ≪ 4) ⊕ (T ≪ 3) ⊕ T ⊕ (T ≫ 3) 1.4 C[i − 4] ← C[i − 4] ⊕ (T ≫ 28) ⊕ (T ≫ 29) Julio López 2007 Algoritmos Criptográficos Corpos Binários Redução modulo f (x) = x163 + x7 + x6 + x3 + 1 ... C[5] = 0xr7 r6 r5 r4 r3 r2 r1 r0 −→ 0x00000007 2. T ← C[5] ≫ 3 3. C[0] ← C[0] ⊕ (T ≪ 7) ⊕ (T ≪ 6) ⊕ (T ≪ 3) ⊕ T 4. C[1] ← C[1] ⊕ (T ≫ 25) ⊕ (T ≫ 26) 5. C[5] ← C[5]& 0x7 6. Return (C[5], C[4], C[3], C[2], C[1], C[0]) Julio López 2007 Algoritmos Criptográficos Corpos Binários Métodos para multiplicação em F2m • Método binário • Método de Karatsuba • Método de Montgomery (c = a · b · r −1 ) • Método de López-Dahab Julio López 2007 Algoritmos Criptográficos Corpos Binários Multiplicação em F2m a = (am−1 am−2 · · · a1 a0 ) b = (bm−1 bm−2 · · · b1 b0 ) a∗b = = m−1 X i=0 ai xi ∗ 2m−2 X m−1 X bi xi (mod f (x)) i=0 ri xi (mod f (x)) i=0 = (r2m−2 r2m−1 · · · r1 r0 ) (mod f (x)) = (cm−1 cm−2 · · · c1 c0 ) Pi a b , 0 ≤ i ≤ m − 1, j=0 j i−j ri = Pm−1 j=i−m+1 aj bi−j , m ≤ i ≤ 2m − 2. Julio López 2007 Algoritmos Criptográficos Corpos Binários Exemplo: multiplicação em F24 Julio López r0 = a0 b0 r1 = a0 b1 + a1 b0 r2 = a0 b2 + a1 b1 + a2 b0 r3 = a0 b3 + a1 b2 + a2 b1 + a3 b0 r4 = a1 b3 + a2 b2 + a3 b1 r5 = a2 b3 + a3 b2 r6 = a3 b3 2007 Algoritmos Criptográficos Corpos Binários Método binário para multiplicar em F2m a·b = m−1 X ai xi b(x) mod f (x) i=0 = x · [· · · x · [x · am−1 b(x)]f + am−2 b(x) ]f + · · · ]f + a0 b(x) a = am−1 am−2 am−3 ··· ··· a1 a0 c←0 for i from m − 1 to 0 do c ← x · c mod f (x) if ai = 1 then c ← c + b endfor Julio López 2007 Algoritmos Criptográficos Corpos Binários Método binário para multiplicar em F2m ... x · c mod f (x) c= 0 cm−1 cm−2 ··· c1 c0 x·c= cm−1 cm−2 cm−3 ··· c0 0 f (x) = 1 fm−1 fm−2 ··· f1 f0 x · c mod f (x) = 0 cm−1 ··· c1 ′ c0 ′ ′ cm−2 ′ c←x·c if cm = 1 then c ← c + f Julio López 2007 Algoritmos Criptográficos Corpos Binários Método binário para multiplicar em F2m a·b = m−1 X ai xi b(x) mod f (x) i=0 = a0 b(x) + a1 [x · b(x)] + . . . + am−1 [x · xm−2 b(x)] a = am−1 am−2 am−3 ··· ··· a1 a0 if a0 = 1 then c ← b; else c ← 0 for i from 1 to m − 1 do b ← x · b mod f (x) if ai = 1 then c ← c + b endfor Julio López 2007 Algoritmos Criptográficos Corpos Binários Algoritmo López-Dahab (LR) Indocrypt 2000 c(x) = a(x) · b(x) a = A5 A4 A3 A2 A1 A0 Ai = a32i+31 pcj (x) = ··· 5 X a32i+j ··· a32i+0 a32i+j x32i b(x) i=0 a(x) · b(x) = Julio López 31 X xj pcj (x) j=0 2007 Algoritmos Criptográficos Corpos Binários Algoritmo LD ... c(x) = (A5 A4 A3 A2 A1 A0 ) ∗ b(x) A5 A4 A3 A2 A1 A0 j A j0 b(x) A j4 b(x) A j3 b(x) A j1 b(x) A j2 b(x) A j5 b(x) LShift Julio López 2007 Algoritmos Criptográficos Corpos Binários Algoritmo LD ... c(x) = a(x) · b(x) a = A5 A4 A3 A2 A1 A0 Ai = a32i+31 pcj (x) = ··· 5 X i=0 ··· a32i+0 a32i+j x32i (xj · b(x)) a(x) · b(x) = Julio López a32i+j 31 X pcj (x) j=0 2007 Algoritmos Criptográficos Corpos Binários Algoritmo LD com precomputação(w = 4) a(x)b(x) = (A5 A4 A3 A2 A1 A0 ) · b(x) 0 ≤ u ≤ 15 pu (x) := (u3 x3 + u2 x2 + u1 x + u0 )b(x) a(x)b(x) = 7 X j=0 Julio López 5 X x32i pAj (x)} x4j { i=0 i 2007 Algoritmos Criptográficos Corpos Binários Algoritmo LD com precomputação(w = 4)... u b(x) A5 A4 A3 A2 A1 A0 u LShift Julio López 2007 Algoritmos Criptográficos Corpos Binários O método de Karatsuba • A0 , A1 , B0 , B1 polinômios de grau (m − 1)/2 − 1 • a(x) = A1 (x)xm/2 + A0 (x), b(x) = B1 (x)xm/2 + B0 (x) a(x)b(x) = Julio López A1 B1 xm + [(A1 + A0 )(B1 + B0 ) + A1 B1 + A0 B0 ]xm/2 + A0 B0 2007 Algoritmos Criptográficos Corpos Binários Tempos de execução para multiplicar em F2163 Métodos µsec. LD (lr) (w = 4) 3.00 LD (lr) 8.40 LD (rl) 6.87 Karatsuba + LD (w = 4) 3.92 Binário 12.36 Pentium II 400 MHz Julio López 2007 Algoritmos Criptográficos Corpos Binários Métodos para calcular inversos em F2m • Algoritmo de Euclides Estendido • Algoritmo Binário I : (Schroeppel, 1995) • Algoritmo Binário II: (Chang, 2001) • Algoritmo Binário III: (Chien-Hsing Wu, 2004) • Algoritmo de Itoh-Tsujii, 1988 Julio López 2007 Algoritmos Criptográficos Corpos Binários Algoritmo de Euclides estendido • a g1 + h1 f = 1; mcd(a, f ) = 1 • a g1 ≡ 1 mod f (x) ⇔ a−1 = g1 mod f (x) 1. u ← a, v ← f, g1 ← 1, g2 ← 0 2. while (u 6= 1) 2.1 j ← grau(u) - grau(v) 2.2 if j < 0 then u ↔ v, g1 ↔ g2 , j ← −j. 2.3 u ← u + xj v 2.4 g1 ← g1 + xj g2 3. Julio López return (g1 = a−1 ) 2007 Algoritmos Criptográficos Corpos Binários Algoritmo de Euclides estendido com duplicação de código • a gi + hi f = 1; mcd(a, f ) = 1 • a gi ≡ 1 mod f (x) ⇔ a−1 = gi mod f (x) 1. u ← a, v ← f, g1 ← 1, g2 ← 0, gt ← grau(u). 2. while (gt 6= 0) 2.1 j ← grau(u) - grau(v) 2.2 if j ≥ 0 then u ← u + xj v, tg ← grau(u) g1 ← g1 + xj g2 , r1 ← 1 else v ← v + x−j u, tg ← grau(v) g2 ← g2 + x−j g1 , r1 ← 0 3. Julio López if (r1 = 1) then return (g1 = a−1 ) else return (g2 = a−1 ) 2007 Algoritmos Criptográficos Corpos Binários Algoritmo binário I almost inverse algorithm 1. u ← a, g1 ← 1, v ← f, g2 ← 0 2. while (u0 = 0) u ← u/x, g2 ← xg2 , k ←k+1 3. if (u = 1) then return (g1 , k) 4. if grau(u) < grau(v) then u ↔ v, 5. u ← u + v, 6. goto 2. g 1 ↔ g2 g 1 ← g1 + g2 Saı́da: k ∈ [0, 2m − 1], g1 · a ≡ xk ( mod f (x)) Julio López 2007 Algoritmos Criptográficos Corpos Binários Algoritmo binário II 1. u ← a, v ← f, g1 ← 1, g2 ← 0 2. while (u 6= 1 and v 6= 1) do 2.1 while (u0 = 0) u ← u/x, g1 ← (g1 + g1 (0) · f )/x 2.2 while (v0 = 0) v ← v/x, g2 ← (g2 + g2 (0) · f )/x 2.3 if grau(u) ≥ grau(v) then u←u+v g1 ← g1 + g2 else v ←v+u g2 ← g2 + g1 3. Julio López if (u = 1) then return (g1 = a−1 ) else return (g2 = a−1 ) 2007 Algoritmos Criptográficos Corpos Binários Algoritmo binário III 1. (r, s, u, v, δ) ← (a, f, 1, 0, −1) 2. for k = 1 to 2m − 1 do if (r0 = 0) if (δ < 0) (r, s, u, v) ← (r + s, r, u + v, u), δ ← −δ else (r, u) ← (r + s, u + v) (r, u) ← (r/x, (u/x)f ), δ ← δ − 1 3. Julio López return (v = a−1 ) 2007 Algoritmos Criptográficos Corpos Binários O método de Itoh-Tsujii • a ∈ F2m , a 6= 0 • a · b = 1, b = a−1 ∈ GF (2m ) m a2 = a −1 a 2m −2 =a 2m−1 −1 2 = (a ) m ı́mpar: 2m−1 − 1 = (2(m−1)/2 − 1)(2(m−1)/2 + 1). m par: 2m−1 − 1 = 2(2m−2 − 1) + 1 = 2(2(m−2)/2 − 1)(2(m−2)/2 + 1) + 1. Julio López 2007 Algoritmos Criptográficos Corpos Binários O Método de Itoh-Tsujii... 2m−1 −1 a = 2(m−1)/2 −1 2(m−1)/2 +1 ) , (a a2(2 (m−2)/2 −1)(2(m−2)/2 +1)+1 m ı́mpar , m par • Número de multiplicações = número de uns na representação binária de m − 1. • Número de quadrados = m − 1 Julio López 2007 Algoritmos Criptográficos Corpos Binários O método de Itoh-Tsujii Entrada: a ∈ F2m , a 6= 0, m odd. Saı́da: c = a−1 . 1. A ← a2 , B ← 1, x ← (m − 1)/2. 2. While x 6= 0 do x 2.1 A ← A · A2 . 2.2 If x is even then x ← x/2 else B ← B · A, A ← A2 , x ← (x − 1)/2 3. Return (B) Julio López 2007 Algoritmos Criptográficos Corpos Binários Exemplo: inverso em F2163 2163 − 2 = 281 − 1 = 240 − 1 = 220 − 1 = 210 − 1 = 25 − 1 = 22 − 1 = 2163 − 2 = 2(2162 − 1) = 2(281 − 1)(281 + 1) 2(240 − 1)(240 + 1) + 1 (220 − 1)(220 + 1) (210 − 1)(210 + 1) (25 − 1)(25 + 1) 2(22 − 1)(22 + 1) + 1 2+1 2(281 + 1)[2(240 + 1)(220 + 1)(210 + 1)(210 + 1) (25 + 1)(2(2 + 1)(22 + 1) + 1) + 1] a−1 requer 9 multiplicações e 162 quadrados. Julio López 2007 Algoritmos Criptográficos Corpos Binários Tempos de execução para F2m Operações m = 163 m = 233 m = 283 Soma 0.04 0.04 0.05 Redução Modular 0.11 0.13 0.19 Quadrados 0.20 0.23 0.32 Mult-LD (w = 4) 1.30 2.27 2.92 Inverso-AEE 10.5 18.6 28.2 Inverso-AIA 15.2 20.1 - Inverso-BIN 16.0 28.9 - Tempos em microsegundos, Pentium III 800 Mhz (icc Intel 6.0) Julio López 2007 Algoritmos Criptográficos Corpos Binários Roteiro 6. Técnicas avançadas • Os parâmetros NIST (FIPS 186-2) • Métodos otimizados para multiplicar • Métodos otimizados para calcular inversos • Métodos para calcular a trace de um elemento finito • Métodos para calcular raı́zes quadradas em F2m • Métodos para resolver equações da forma x2 + x = a Julio López 2007 Algoritmos Criptográficos Corpos Binários A função trace A função trace sobre F2m é a função T r : F2m → F2m definida por: 2 T r(c) = c + c + c 22 +c 23 + ···+ c 2m−1 Propriedades: 1. T r(c) = T r(c2 ) = T r(c)2 , e T r(c) ∈ {0, 1} 2. T r(c + d) = T r(c) + T r(d) 3. Se (x, y) ∈ Ea,b (F2m ) então T r(x) = T r(a) Julio López 2007 Algoritmos Criptográficos Corpos Binários A função trace... Bases polinomias: T r(c) = T r( Pm−1 i=0 i ci x ) = Pm−1 i=0 ci T r(xi ) For m = 163, T r(xi ) = 1 se e somente se i ∈ {0, 157} Por tanto, T r(c) = c0 + c157 . Bases normais: T r(β) = Pm−1 i=0 T r(c) = T r( Julio López β 2i Pm−1 i=0 =1 2i ci β ) = Pm−1 i=0 ci T r(β) 2i = Pm−1 i=0 ci 2007 Algoritmos Criptográficos Corpos Binários Raı́z quadrada √ c v um−1 m−1 uX X √ ci xi ci xi ≡ ≡ t i=0 i=0 (m−1)/2 ≡ X i=0 i=0 (m−1)/2 ≡ X i=0 ≡ cpar + Julio López (m−3)/2 X √ √ 2i c2i+1 x2i+1 c2i x + √ i c2i x + x · √ (m−3)/2 X c2i+1 xi i=0 x · cimpar 2007 Algoritmos Criptográficos Corpos Binários Raı́z quadrada ... Método rápido para trinômios: f (x) = xm + xk + 1 Quando m ı́mpar e k ı́mpar: 1 x √ x ≡ xm + xk (mod f (x) ≡ xm+1 + xk+1 (mod f (x) ≡ x m+1 2 +x k+1 2 (mod f (x) Exemplo: f (x) = x409 + x87 + 1 √ c = cpar + x205 · cimpar + x44 · cimpar (mod f (x)) Julio López 2007 Algoritmos Criptográficos Corpos Binários Raı́z quadrada... Método rápido para trinômios: f (x) = xm + xk + 1 Quando m ı́mpar e k par: xm x √ x ≡ xk + 1 (mod f (x)) ≡ xk−(m−1) + x−(m−1) (mod f (x)) − m−1 2 ≡ x k 2 (x + 1) (mod f (x) Exemplo: f (x) = x233 + x74 + 1 √ x ≡ x−116 (x37 + 1) (mod f (x)) ≡ x−42 · x−74 (x37 + 1) (mod f (x)) √ Julio López ≡ (x32 + x191 )(1 + x159 )(x37 + 1) (mod f (x)) c = cpar + (x32 + x117 + x119 )(x37 + 1) · cimpar (mod f (x)) 2007 Algoritmos Criptográficos Corpos Binários Solução de x2 + x = c Definição: A função Half-trace H sobre F2m (m ı́mpar) é definida por: H(c) = c + c 22 +c 24 + ···+ c 2m−1 Propriedades: • H(c + d) = H(c) + H(d) para todo c, d ∈ F2m • H(c) é uma solução da equação x2 + x = c + T r(c) • A equação x2 + x = c tem solução se e somente se T r(c) = 0 • Se T r(c) = 0, H(c) e H(c) + 1 são soluções de x2 + x = c • H(c) = H(c2 ) + c + T r(c) para todo c ∈ F2m Julio López 2007 Algoritmos Criptográficos Corpos Binários Métodos para resolver x2 + x = c Assuma T r(c) = 0 P(m−1)/2 22i • x = i=0 c (half-trace) Pm−1 Pm−1 • x = H( i=0 xi ) = i=0 ci H(xi ) Para reduzir o armazenamento, pode-se aplicar a fórmula H(xi ) = H(xi/2 ) + xi/2 + T r(xi ) para i par. • Para reduzir ainda mais o armazenamento, pode-se utilizar a forma do polinômio irredutı́vel f (x) (especialmente trinômios). Julio López 2007 Algoritmos Criptográficos Corpos Binários Algoritmo (FHLM, 2004) Entrada: c ∈ F2m , T r(c) = 0, m ı́mpar. Saı́da: Uma solução de x2 + x = c. 1. Precalcule H(xi ) para todo ı́mpar i, 1 ≤ i ≤ m − 2 2. s ← 0 3. for i from (m − 1)/2 downto 1 do 3.1 If c2i = 1 then c ← c + xi , s ← s + xi P(m−1)/2 4. s ← s + i=1 c2i−1 H(x2i−1 ) Para m = 163, o Algoritmo FHLM utiliza 81 elementos finitos de precomputação. A versão mais otimizada utiliza 21 elementos de precomputação. (Menos que 21 elementos?) Julio López 2007 Algoritmos Criptográficos Corpos Binários Tempos de execução para F2m Operações F2163 F2233 Raı́z Quadrada 0.69 0.26 Soluçaõ x2 + x = c 0.89 1.17 Multiplicação 1.32 2.28 Tempos em microsegundos, Pentium III 800 Mhz (icc Intel 6.0) Julio López 2007 Algoritmos Criptográficos Corpos Binários Bibliografia • Software Multiplication using Gaussian Normal Bases, R. Dahab, D.Hankerson, F. Hu, M. Long, J. López y A. Menezes. IEEE Transactions on Computers, vol 56, N0. 8, August 2006. • A Custom Instruction Approach for Hardware and Software Implementations of Finite Field Arithmetic over F2163 using Gaussian Normal Bases, Marcio Juliato, Guido Araujo, Ricardo Dahab e Julio López, FPT-2005. • Field Inversion and Point Halving Revisited, Kenny Fong, Darrel Hankerson, Julio López y Alfred Menezes, IEEE Transactions on Computers, vol 53, No. 8, August 2004. Julio López 2007 Algoritmos Criptográficos Corpos Binários Bibliografia... • Software Implementation of Elliptic Curve Cryptography over Binary Fields, D. Hankerson, J. López y A. Menezes, Cryptographic Hardware and Embedded Systems-CHES 2000, LNCS 1965, pp. 1-24, 2000. • High-Speed, Low-Complexity Systolic Designs of Novel Iterative Division Algorithm in GF (2m )., Chien-Hsing Wu, Chien-Ming Wu, Ming-Der Shieh y Yin-Tsung Hwang, IEEE Transactions on Computers, Vol. 53, No. 3, 2004. • Guide to Elliptic Curves Cryptography, Darrel Hankerson, Alfred Menezes y Scott Vasntone, Springer Verlag, 2004. • Optimal Irreducible Polynomials for GF (2m ) Arithmetic, Michael Scott, e-print 192, 2007. Julio López 2007
Documentos relacionados
Untitled
N+10.>.Y9OP812+1V9.c9312+1*96+>P81''''''''''''''''''''''''''''''''GF V8>+091<+>+0.R91''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''I: 43E8>91M17.E.69>1S.28/5./91^8/D+31'''''''''''''...
Leia maisopgp`afgafh`af`acgr`amph`segta ugba`apilloppihsegafiavilolnaoba
1̀d``{%̀'%̀1ẁ,̀b̀1`_(d*1g̀²³´µ¶¶·³¸·¹º»¹³¸µ¹³¼½¶µ½¸¾¿ ,/__/1&y)/1_`(1,1&/%&1_` _+`(1&'/&d%),1_`(1,1%̀'%̀od/0̀ }0̀&j1),%)`1`,%/_`od+`cdb+),1_g̀ +d)1c+d_g̀+_'%)+,1_`c)+_+&'+_`&1`¡/1g̀ n%)%+̀...
Leia mais