• Nenhum resultado encontrado

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

p

Exemplo 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 ¸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.