4.3 Contagem de Opera¸c˜ oes
4.3.1 La¸co de Miller
Esta se¸c˜ao apresentar´a a contagem do n´umero total de opera¸c˜oes no la¸co de Miller dos emparelhamentos: Optimal Ate (Algoritmo 3.5), R-Ate (Algoritmo 3.4) e Ate (Algoritmo 3.2) configurados de acordo com as descri¸c˜oes da Se¸c˜ao 4.2.1.
A nota¸c˜ao “Pr´e-comp.” representa a pr´e computa¸c˜ao de dados utilizados para simplificar a aritm´etica sobre as curvas, como descrito na Se¸c˜ao 4.2.2.
Tabela 4.2: Custo das opera¸c˜oes b´asicas utilizadas no c´alculo dos emparelhamentos bilineares.
E0(Fp2)
Opera¸c˜oes Custo
Duplica¸c˜ao (Afins) 3 ˜mu+ 2 ˜su+ 7˜a + ˜i + 5˜r + 4m
Soma (Afins) 3 ˜mu+ ˜su+ 6˜a + ˜i + 4˜r + 4m
Duplica¸c˜ao (Proj.) 3 ˜mu+ 6 ˜su+ 16˜a + 8˜r + 4m Soma (Proj.) 11 ˜mu+ 2 ˜su+ 8˜a + 11˜r + 4m Nega¸c˜ao a˜ p-potˆencia 2 ˜mu+ 2a p2-potˆencia 2m u+ ˜a Pr´e-comp. (Afins) i + m + a Pr´e-comp. (Proj.) 4a Fp12 Opera¸c˜ao Custo Adi¸c˜ao 6˜a Multiplica¸c˜ao 18 ˜mu + 103˜a + 6˜r Quadrado 12 ˜mu + 6 ˜su+ 65˜a + 6˜r
Mult. 1-esparsa (Afins) 10 ˜mu+ 29˜a + 6˜r
Mult. 2-esparsa (Afins) (Opt. Ate) 3 ˜mu + 10˜a + 5˜r
Mult. 1-esparsa (Proj.) 16 ˜mu+ 31˜a + 6˜r
Mult. 2-esparsa (Proj.) (Opt. Ate) 6 ˜mu + 21˜a + 5˜r
Conjuga¸c˜ao 3˜a
p-potˆencia 5 ˜m + 6a p2-potˆencia 10m + 2˜a
p3-potˆencia 5 ˜m + 2˜a + 6a
Invers˜ao 28 ˜mu+ 9 ˜su+ 102˜a + 16˜r + ˜i
Emparelhamento Optimal Ate
N◦ de opera¸c˜oes = (pr´e-comp.) + 64(duplica¸c˜oes de pontos) + 6(somas de pontos) + 2(mult. 2-esparsa) + 63(quadrados em Fp12) + 66(mult. 1-esparsa) + 1(p−potˆencia em E0(Fp2)) +
1(p2−potˆencia em E0
(Fp2)) + 2(nega¸c˜oes em E0(Fp2)) + 1(conjuga¸c˜ao em Fp12) + 1(multipli-
ca¸c˜ao em Fp12).
Coordenadas Afins:
Custo = (i + mu+ a) + 64(3 ˜mu+ 2 ˜su+ 7˜a + ˜i + 5˜r + 4mu) + 6(3 ˜mu+ ˜su+ 6˜a + ˜i + 4˜r + 4mu) +
2(3 ˜mu+ 10˜a + 5˜r) + 63(12 ˜mu+ 6 ˜su+ 65˜a + 6˜r) + 66(10 ˜mu+ 29˜a + 6˜r) + (2 ˜mu+ 2a) + (2mu+ ˜ a) + (2˜a) + (3˜a) + (18 ˜mu+ 103˜a + 6˜r) Custo = 1652 ˜mu+ 512 ˜su+ 6622˜a + 70˜i + 1134˜r + 283mu+ 3a + i = 5891mu+ 1164su+ 28721a + 6736r + 71i Coordenadas Projetivas: Custo = (4a) + 64(3 ˜mu+ 6 ˜su+ 16˜a + 8˜r + 4mu) + 6(11 ˜mu+ 2 ˜su+ 8˜a + 11˜r + 4mu) + 2(6 ˜mu+ 21˜a + 5˜r) + 63(12 ˜mu+ 6 ˜su+ 65˜a + 6˜r) + 66(16 ˜mu+ 31˜a + 6˜r) + (2 ˜mu+ 2a) + (2mu+ ˜a) + (2˜a) + (3˜a) + (18 ˜mu+ 103˜a + 6˜r) Custo = 2102 ˜mu+ 774 ˜su+ 7364˜a + 1368˜r + 282m + 6a = 7362mu+ 1548su+ 34646a + 8488r Emparelhamento R-Ate
N◦ de opera¸c˜oes = (pr´e-comp.) + 63(duplica¸c˜oes de pontos) + 6(somas de pontos) + 62(quadra- dos em Fp12) + 68(mult. 1-esparsa) + 1(p−potˆencia em E0(Fp2)) + 1(p−potˆencia em Fp12) +
1(multiplica¸c˜ao em Fp12).
Coordenadas Afins:
62(12 ˜mu+ 6 ˜su+ 65˜a + 6˜r) + 68(10 ˜mu+ 29˜a + 6˜r) + (2 ˜mu+ 2a) + (5 ˜mu+ 6a) + (18 ˜mu+ 103˜a + 6˜r) Custo = 1656 ˜mu+ 504 ˜su+ 6582˜a + 1125˜r + 69˜i + 277m + 9a + i = 5887mu+ 1146su+ 28644a + 6708r + 70i Coordenadas Projetivas: Custo = (4a) + 63(3 ˜mu+ 6 ˜su+ 16˜a + 8˜r + 4mu) + 6(11 ˜mu+ 2 ˜su+ 8˜a + 11˜r + 4mu) + 62(12 ˜mu+ 6 ˜su+ 65˜a + 6˜r) + 68(16 ˜mu + 31˜a + 6˜r) + (2 ˜mu+ 2a) + (5 ˜mu+ 6a) + (18 ˜mu+ 103˜a + 6˜r) Custo = 2112 ˜mu+ 762 ˜su+ 7297˜a + 1356˜r + 276m + 12a = 7374mu+ 1524su+ 34550a + 8460r Emparelhamento Ate
N◦ de opera¸c˜oes = (pr´e-comp.) + 124(quadrados em Fp12) + 125(duplica¸c˜oes de pontos) +
134(mult. 1-esparsa) + 10(somas de pontos).
Coordenadas Afins:
Custo = (i + mu+ a) + 125(3 ˜mu + 2 ˜su+ 7˜a + ˜i + 5˜r + 4mu) + 10(3 ˜mu + ˜su + 6˜a + ˜i + 4˜r +
4mu) + 124(12 ˜mu+ 6 ˜su+ 65˜a + 6˜r) + 134(10 ˜mu+ 29˜a + 6˜r)
Custo = 3233 ˜mu+ 1004 ˜su+ 12881˜a + 135˜i + 2213˜r + 541mu+ i + a
Tabela 4.3: Custo de c´alculo dos emparelhamentos bilineares para coordenadas afins. Optimal Ate
Loop de Miller 5891mu+ 1164su+ 28721a + 6736r + 71i
Exp. Final 2365mu+ 2348su+ 23782a + 4988r + 4i
Custo total 8256mu+ 3512su+ 52503a + 11714r + 75i
R-Ate
Loop de Miller 5887mu+ 1146su+ 28644a + 6708r + 70i
Exp. Final 2365mu+ 2348su+ 23782a + 4988r + 4i
Custo total 8252mu+ 3494su+ 52426a + 11696r + 74i
Ate
Loop de Miller 11514mu+ 2278su+ 56048a + 13170r + 136i
Exp. Final 2365mu+ 2348su+ 23782a + 4988r + 4i
Custo total 13879mu+ 4626su+ 79830a + 18158r + 140i
Coordenadas Projetivas:
Custo = (4a) + 125(3 ˜mu+ 6 ˜su+ 16˜a + 8˜r + 4m) + 10(11 ˜mu+ 2 ˜su+ 8˜a + 11˜r + 4m) + 124(12 ˜mu+
6 ˜su+ 65˜a + 6˜r) + 134(16 ˜mu+ 31˜a + 6˜r)
Custo = 4117 ˜mu+ 1514 ˜su+ 14294˜a + 2658˜r + 540m + 4a
= 14404mu+ 3028su+ 67584a + 16578r
As Tabelas 4.3 e 4.4 sintetizam as informa¸c˜oes apresentadas at´e este ponto sobre o custo de execu¸c˜ao de cada emparelhamento para coordenadas afins e projetivas.
Tanto em coordenadas afins como projetivas o emparelhamento R-Ate apresentou um custo total ligeiramente inferior ao custo do emparelhamento Optimal Ate, principalmente nas oper- a¸c˜oes de maior impacto, que s˜ao multiplica¸c˜oes, quadrados, redu¸c˜oes e invers˜oes. Em coorde- nadas projetivas homogˆeneas, o emparelhamento Optimal Ate apresentou custo inferior ao do emparelhamento R-Ate apenas no n´umero de multiplica¸c˜oes sobre Fp. Por´em, em rela¸c˜ao `as
demais opera¸c˜oes o Optimal Ate demonstrou custo superior ao do R-Ate. O emparelhamento Ate n˜ao foi considerado nas compara¸c˜oes anteriores, devido ao seu custo superior aos demais em ambos os tipos de coordenadas.
Pelas an´alises do n´umero de opera¸c˜oes sobre Fp dos emparelhamentos Ate, R-Ate e Optimal
Tabela 4.4: Custo de c´alculo dos emparelhamentos bilineares para coordenadas projetivas. Optimal Ate
Loop de Miller 7362mu+ 1548su+ 34646a + 8488r
Exp. Final 2365mu+ 2348su+ 23782a + 4988r + 4i
Custo total 9727mu+ 3896su+ 58428a + 13476r + 4i
R-Ate
Loop de Miller 7374mu+ 1524su+ 34550a + 8460r
Exp. Final 2365mu+ 2348su+ 23782a + 4988r + 4i
Custo total 9739mu+ 3872su+ 58332a + 13448r + 4i
Ate
Loop de Miller 14404mu+ 3028su+ 67584a + 16578r
Exp. Final 2365mu+ 2348su+ 23782a + 4988r + 4i
Custo total 16769mu+ 5376su+ 91366a + 21566r + 4i
Fp quando comparado aos demais tipos de emparelhamentos. At´e este ponto ´e dif´ıcil efetuar
uma compara¸c˜ao mais detalhada destes emparelhamentos, pois, ´e necess´ario descrever o custo computacional dos mesmos em fun¸c˜ao de uma determinada implementa¸c˜ao, o que ser´a feito no cap´ıtulo seguinte. Novamente, vale a pena frisar que estes resultados se restringem `a escolha de parˆametros pr´e-determinados para esta an´alise, podendo ser diferentes em outras condi¸c˜oes.
4.3.2
Conclus˜oes
Este cap´ıtulo descreveu o esquema de representa¸c˜ao de extens˜oes de corpos finitos via uti- liza¸c˜ao de extens˜oes em torre, que ´e uma forma eficiente de realizar opera¸c˜oes aritm´eticas sobre corpos finitos com grau de extens˜ao alto. Apresentou a t´ecnica de lazy reduction, uma forma de postergar redu¸c˜oes modulares aumentando a eficiˆencia das opera¸c˜oes aritm´eticas sobre os corpos finitos. Descreveu como executar opera¸c˜oes de adi¸c˜ao e soma de pontos em curvas el´ıp- ticas utilizando fun¸c˜oes de linha, que diminui o custo do la¸co de Miller. Descreveu uma forma eficiente de realizar a opera¸c˜ao de exponencia¸c˜ao final, utilizando aritm´etica sobre subcorpos ciclotˆomicos. Finalizando, descreveu todas as opera¸c˜oes presentes no c´alculo dos emparelhamen- tos Optimal Ate, R-Ate e Ate, utilizando coordenadas afins e projetivas, para que fosse poss´ıvel executar uma compara¸c˜ao destes emparelhamentos em determinada condi¸c˜ao. Como resultado desta compara¸c˜ao constatou-se que h´a condi¸c˜oes nas quais o emparelhamento R-Ate se mostra mais eficiente que os demais. No pr´oximo cap´ıtulo ser´a dada continua¸c˜ao a esta compara¸c˜ao, por´em no n´ıvel zero da Figura 2.1 com base em uma arquitetura gen´erica.
Cap´ıtulo
5
An´alise de Custo de Emparelhamentos
Bilineares no N´ıvel de Opera¸c˜oes de Processador
No cap´ıtulo anterior, foi estimado o custo de c´alculo dos emparelhamentos Optimal Ate, R-Ate e Ate no n´ıvel de opera¸c˜oes de adi¸c˜ao, multiplica¸c˜ao, quadrado, inverso multiplicativo e redu¸c˜oes modulares sobre Fp.
Neste cap´ıtulo ser´a estimado o custo de cada uma destas opera¸c˜oes no n´ıvel de processador, o n´ıvel mais baixo de implementa¸c˜ao (n´ıvel zero da Fig. 2.1). Com esta an´alise, ser´a poss´ıvel estimar o impacto causado por diferentes arquiteturas de processadores gen´ericos no c´alculo dos emparelhamentos bilineares.
Os custos das opera¸c˜oes de adi¸c˜ao, multiplica¸c˜ao, quadrado, redu¸c˜oes modulares e inverso multiplicativo sobre Fp ser˜ao descritos em fun¸c˜ao do n´umero de opera¸c˜oes de adi¸c˜ao e mul-
tiplica¸c˜ao nativas do processador. Nestas an´alises, ser˜ao adotadas as nota¸c˜oes a0 e m0 para representar tais opera¸c˜oes de adi¸c˜ao e multiplica¸c˜ao de inteiros de tamanho w, respectivamente, onde w representa o tamanho da palavra do processador.
Nas an´alises das opera¸c˜oes de adi¸c˜ao, multiplica¸c˜ao, quadrado, redu¸c˜ao modular e invers˜ao sobre Fp que ser˜ao apresentadas no decorrer deste cap´ıtulo s˜ao considerados os custos de trans-
ferˆencia de operandos entre a mem´oria e o processador, de opera¸c˜oes aritm´eticas nativas do processador (adi¸c˜ao e multiplica¸c˜ao de operandos do tamanho da palavra do processador) e de opera¸c˜oes l´ogicas.
5.1
Algoritmo de Adi¸c˜ao em F
pExemplo 5.1 Considere o m´etodo de adi¸c˜ao l´apis-e-papel (a forma mais simples de efetuar adi¸c˜oes) para efetuar a soma de dois n´umeros bin´arios, X = 11101 e Y = 11011. A adi¸c˜ao bin´aria ´e efetuada como ilustrado na Fig. 5.1. Observe que cada bit xi de X ´e somado com o
bit yi de posi¸c˜ao correspondente em Y e com o bit excedente da soma anterior (carry).
Figura 5.1: Adi¸c˜ao bin´aria.
O m´etodo apresentado no Exemplo 5.1 pode ser generalizado para soma de inteiros que ocupam v´arias palavras. Considere a soma de dois inteiros X, Y ∈ Fp em um processador
com palavra de tamanho w bits. O tamanho destes inteiros ´e de n = dlog2pe bits. Logo, independente do valor de X e Y , ser˜ao reservadas W palavras para armazenar cada um, onde W = wn. De forma similar ao m´etodo l´apis-e-papel (Exemplo 5.1), cada palavra Xi ser´a
somada com uma palavra Yi da posi¸c˜ao correspondente. O inteiro Z = X + Y ´e representado
por W palavras mais um poss´ıvel bit de carry.
Para melhor exemplificar, considere um caso particular onde X e Y sejam representados com 4 palavras de w bits e o resultado da soma de X e Y tamb´em seja representado dessa mesma forma. A Fig. 5.2 mostra como a adi¸c˜ao de X e Y ´e executada.
Figura 5.2: Adi¸c˜ao de inteiros com 4 palavras.
Z0 = X0+ Y0
Z1 = X1+ Y1+ CZ0
Z2 = X2+ Y2+ CZ1
Z3 = X3+ Y3+ CZ2
Para efetuar as somas e obter os valores Z0, Z1, Z2 e Z3 ser´a considerado que o processador
em quest˜ao possua dois tipos de instru¸c˜ao de adi¸c˜ao: ADD e ADDC. A instru¸c˜ao ADD efetua a soma de dois operandos de w bits (ex: X0 + Y0). A instru¸c˜ao ADDC efetua a soma de
dois operandos de w bits e soma o resultado com o carry gerado pela opera¸c˜ao anterior (ex: X1+ Y1+ CZ0). As sintaxes de todas as instru¸c˜oes dos processadores considerados neste cap´ıtulo
est˜ao documentadas no Apˆendice A.1. Tamb´em ser´a considerado que o custo de execu¸c˜ao da instru¸c˜ao ADDC ´e equivalente ao custo de execu¸c˜ao da instru¸c˜ao ADD.
A partir do c´alculo de Z1 deve ser utilizado a instru¸c˜ao de soma ADDC ao inv´es da instru¸c˜ao
ADD, pelo fato existir um poss´ıvel carry resultante da soma dos blocos X0 e Y0, Ap´os obter
Z = X + Y , deve ser verificado se Z ∈ Fp. Caso Z 6∈ Fp deve ser executada uma redu¸c˜ao m´odulo
p (Z mod p), a qual pode ser efetuada com uma opera¸c˜ao de subtra¸c˜ao Z − p envolvendo dois operandos de W palavras. Considere que, para efetuar esta subtra¸c˜ao o processador em quest˜ao possua dois tipos de instru¸c˜oes de subtra¸c˜ao: SUB e SUBC. A instru¸c˜ao SUB efetua a subtra¸c˜ao de dois operandos de w bits. A instru¸c˜ao SUBC efetua a subtra¸c˜ao de dois operandos de w bits e em seguida subtrai o carry gerado pela opera¸c˜ao anterior. As sintaxes dessas instru¸c˜oes tamb´em est˜ao detalhadas no Apˆendice A.1.
Considerando os parˆametros adotados neste trabalho o tamanho m´aximo dos elementos de Fp ´e 254 bits. Logo a soma dos dois blocos da ´ultima posi¸c˜ao n˜ao gerar´a carry. Ou seja,
a soma de dois elementos representados com W palavras resultar´a em um elemento tamb´em representado com W palavras.
O Algoritmo 5.1 apresenta um pseudoc´odigo que mostra como pode ser implementada a adi¸c˜ao em Fp de dois inteiros X, Y ambos de W palavras.
Na an´alise do custo computacional do Algoritmo 5.1 foram desconsiderados os custos de checagem de flags (ex: verificar o valor de flags de sinal, SF, ou de Zero, ZF), de parˆametros e de controle de itera¸c˜oes de la¸cos. Ser´a considerado que o custo de todas as instru¸c˜oes tais como LOAD, STO, ADD, ADDC, SUB e SUBC, entre outras, ´e igual a a0. Sob estas condi¸c˜oes,
Algoritmo 5.1 Adi¸c˜ao de inteiros de W palavras em Fp
1: function ADI ¸C˜aO(X,Y) 2: Entrada: X, Y ∈ Fp.
3: Sa´ıda: Z = Z (mod p).
4: //zera flag de carry
5: CLR(CF)
6: Para i = 0 at´e W-1
7: //lˆe conte´udo da posi¸c˜ao de mem´oria Xi para o registrador Ra
8: LOAD(Ra, Xi)
9: //lˆe conte´udo da posi¸c˜ao de mem´oria Yi para o registrador Rb
10: LOAD(Rb, Yi)
11: //soma o conte´udo do registrador Ra com o de Rb e com o carry
12: ADDC(Ra, Ra, Rb)
13: //armazena o conte´udo do registrador Ra na posi¸c˜ao de mem´oria Zi
14: STO(Ra, Zi)
15: //fim do la¸co i
16: //Verificar se p ≥ q
17: Para i = W-1 at´e 1
18: //lˆe conte´udo da posi¸c˜ao de mem´oria Zi para o registrador Ra
19: LOAD(Ra, Zi)
20: //lˆe conte´udo da posi¸c˜ao de mem´oria pi para o registrador Rb
21: LOAD(Rb, pi)
22: //subtrai o conte´udo do registrador Rb do conte´udo do registrador Ra
23: SUB(Ra, Ra, Rb)
24: //verifica a flag de sinal (negativo ou positivo)
25: Se SF = 1
26: //p´ara o la¸co i, pois Z < p
27: RETURN(Z)
28: //se SF = 0, o resultado ´e positivo (Z > p) ou (Z = p)
29: Sen˜ao
30: //se ZF = 0 o resultado ´e diferente de zero
31: Se ZF = 0
32: //zera flag de carry
33: CLR(CF)
34: Para k = 0 at´e W-1
35: //lˆe conte´udo da posi¸c˜ao de mem´oria Zk para o registrador Ra
36: LOAD(Ra, Zk)
37: //lˆe conte´udo da posi¸c˜ao de mem´oria pk para o registrador Rb
38: LOAD(Rb, pk)
39: //subtrai o conte´udo de Rb do conte´udo Ra e subtrai o carry desse resultado
Algoritmo 5.1 Adi¸c˜ao de inteiros de W palavras em Fp (continua¸c˜ao)
41: //armazena o conte´udo do registrador Ra na posi¸c˜ao de mem´oria Zi
42: STO(Ra, Zk)
43: //fim do la¸co k
44: //p´ara o la¸co i, pois Z < p
45: RETURN(Z)
46: //Sen˜ao continue o la¸co i
47: //fim do la¸co i
48: //lˆe conte´udo da posi¸c˜ao de mem´oria Z0 para o registrador Ra
49: LOAD(Ra, Z0)
50: //lˆe conte´udo da posi¸c˜ao de mem´oria p0 para o registrador Rb
51: LOAD(Rb, p0)
52: //subtrai o conte´udo de Rb do conte´udo de Ra
53: SUB(Ra, Ra, Rb)
54: //verifica a flag de sinal (negativo ou positivo)
55: Se SF = 1
56: RETURN(Z)
57: //se SF = 0, o resultado ´e positivo (Z > p) ou (Z = p)
58: Sen˜ao
59: //se ZF = 0 o resultado ´e diferente de zero
60: Se ZF = 0
61: //zera flag de carry
62: CLR(CF)
63: Para k = 0 at´e W-1
64: //lˆe conte´udo da posi¸c˜ao de mem´oria Zk para o registrador Ra
65: LOAD(Ra, Zk)
66: //lˆe conte´udo da posi¸c˜ao de mem´oria pk para o registrador Rb
67: LOAD(Rb, pk)
68: //subtrai o conte´udo de Rb do conte´udo Ra e subtrai o carry desse resultado
69: SUBC(Ra, Ra, Rb)
70: //armazena o conte´udo do registrador Ra na posi¸c˜ao de mem´oria Zi
71: STO(Ra, Zk)
72: //fim do la¸co k
73: RETURN(Z)
74: //se ZF = 1, o valor do conte´udo de Ra ´e zero, ou seja, Z = p
75: Sen˜ao
76: Para k = 0 at´e W-1
77: //armazena 0 = 0...0 (w bits zero) em todos as posi¸c˜oes de mem´oria de Zk
78: STO(0, Zk)
79: //fim do la¸co k 80: RETURN(Z)
pode-se fazer duas an´alises: a do melhor caso, onde o custo computacional ´e 4W a0 + 4a0, pois a verifica¸c˜ao da palavra ZW −1 j´a permite concluir que Z < p, n˜ao sendo necess´ario verificar
outras palavras e nem efetuar redu¸c˜oes m´odulo p. E a do pior caso, onde o custo computacional desse algoritmo ´e 11W a0 + 2a0, pois, para concluir que Z > p todas as palavras de Z precisam ser verificadas e ainda h´a a necessidade de efetuar uma redu¸c˜ao m´odulo p (subtraindo p de Z). Demais informa¸c˜oes sobre instru¸c˜oes utilizadas no Algoritmo 5.1 que n˜ao foram citadas nesta se¸c˜ao podem ser encontradas no Apˆendice A.1.