• Nenhum resultado encontrado

Figura 7: Comparac¸˜ao entre os circuitos de Bristol e oCDGpara diferentes algoritmos

Tal como na comparac¸˜ao anterior ´e vis´ıvel que para os dois algoritmos existem ganhos em relac¸˜ao `a reduc¸˜ao do n ´umero de gates.

No exemplo doAESexiste um ganho na reduc¸˜ao de gates and, em que apesar de ser uma ligeiramente melhor traduz um

Esta comparac¸˜ao de resultados entre estes dois algoritmos ser´a alvo de estudo na secc¸˜ao seguinte, onde ser´a dado uma explicac¸˜ao mais detalhada da obtenc¸˜ao dos resultados.

5.2 c a s o d e e s t u d o

Nesta secc¸˜ao ser´a realizada uma an´alise cr´ıtica sobre os resultados obtidos pela ferramenta CDG. Esta an´alise ir´a recair sobre os resultados alcanc¸ados no algoritmo AES e suas va- riantes, bem como, na func¸˜ao criptogr´afica Secure Hash Algorithm - 256 (SHA256). A comparac¸˜ao destes resultados ser´a confrontada com os resultados fornecidos pela Universi- dade de Bristol. Durante esta an´alise ser˜ao estudadas diversas implementac¸ ˜oes dos algorit- mos utilizados de forma a perceber a melhor forma de tirar partido das caracter´ısticas do CDG.

O objeto de estudo desta an´alise ´e a comparac¸˜ao dos diferentes resultados obtidos nos casos do AES e SHA256. Como vamos poder observar ir´a ocorrer um diferenc¸a entre os resultados obtidos entre

An´alise do AES

Para a an´alise sobre o algoritmo AES foram utilizadas duas implementac¸ ˜oes distintas, de modo a avaliar o impacto que diferentes estrat´egias de implementac¸˜ao podem afetar a qualidade dos circuitos obtidos. Cada uma destas vers ˜oes ´e apresentada de seguida, sendo ambas open-source:

• AES-tab32 - implementac¸˜ao baseada no vers˜ao inicial do AES onde nas transformac¸ ˜oes entre cada ronda s˜ao utilizadas tabelas de lookup distintas para a cifragem e decifra- gem;

5.2. Caso de estudo 45 • AES-sbox - vers˜ao mais simplificada onde ´e utilizado uma substitution box - s-box - no

passo SubBytes, sendo, portanto, as tabelas de lookup substitu´ıdas por c´alculos ’on the fly’.

Com estas duas variantes foram obtidos os seus resultados relativamente ao n ´umero de cada tipo de gate, e estes, foram comparados com as estat´ısticas dos circuitos fornecidos pelo grupo de investigac¸˜ao da Universidade de Bristol. A tabela 8 relaciona o n ´umero de gates and e xor para essas vers ˜oes, e tamb´em ´e calculado o ganho ou perda percentual relativamente `a primeira vers˜ao.

Figura 8: Comparac¸˜ao do n ´umero dos v´arios tipos gate para os diversos resultados doAES

Face aos resultados da tabela8, a primeira grande conclus˜ao que podemos retirar ´e que os resultados obtidos pelo CDG, para ambas as vers ˜oes, s˜ao significativamente inferiores relativamente aos de Bristol. A enorme diferenc¸a, mais de 85 por cento, de gates and revela a fraca performance que as descric¸ ˜oes geradas obter˜ao. Apesar de existir uma diminuic¸˜ao do n ´umero de gates da vers˜ao tabulada para a vers˜ao com s-box e da eliminac¸˜ao das m ´ultiplas tabelas existentes na primeira vers˜ao, n˜ao existe uma diminuic¸˜ao do n ´umero de gates and na segunda vers˜ao.

Identificac¸˜ao e minimizac¸˜ao do bottleneck do algoritmo

Para percebemos a raz˜ao pela qual existe um n ´umero elevado de gates and em ambas as vers ˜oes testadas ´e necess´ario identificar os fatores que est˜ao a provocar estes n ´umeros. As- sim, dada a an´alise anterior, podemos concluir que o n ´umero elevado de gates and ´e provo- cado essencialmente pelo acesso `a s-box, assim ´e necess´ario compreender como ´e realizado a selec¸˜ao em arrays pelo compilador.

Atualmente no compilador existem duas formas gen´ericas de realizar consultas em posic¸ ˜oes de arrays. A forma mais simples de se realizar essa consulta ´e com o recurso `a gate selk. Esta recebe como parˆametros a largura do elemento (w), o tamanho total em bits do array (s) e a posic¸˜ao pretendida (p). O circuito que representa esta gate recebe apenas um input que corresponde aos bits que representam a informac¸˜ao do array, n˜ao sendo necess´ario o recurso a outro tipo de gates para representar a l ´ogica da operac¸˜ao, visto que basta o circuito ter como output o conjunto de fios, com tamanho w, a partir da posic¸˜ao w∗p do conjunto

5.2. Caso de estudo 46

de bits s. Assim podemos verificar que esta gate executa em tempo constante, n˜ao sendo necess´ario um conjunto de gates complexas para a representar.

Um outra forma de realizar selec¸ ˜oes ´e atrav´es de uma gate parametrizada: sel W N, onde os parˆametros s˜ao a largura do elemento e o tamanho total em bits do array. Na representac¸˜ao deste circuito ´e utilizado como input, para al´em do tamanho em bits do arrays, um conjunto de bits que representa a posic¸˜ao desejada. A diferenc¸a para a gate anterior ´e que esta n˜ao recebe como parˆametro a posic¸˜ao, pois n˜ao ´e poss´ıvel determinar no momento da compilac¸˜ao esse valor. O valor desta posic¸˜ao ´e adicionado como input do circuito o que obriga a que seja necess´ario realizar uma descodificac¸˜ao da posic¸˜ao, bem como, a traduc¸˜ao do valor correspondente dessa posic¸˜ao no array. Estas operac¸˜ao imp ˜oem a utilizac¸˜ao de um conjunto de gates and que degrada a performance geral do circuito.

Uma vez identificado o bottleneck da gerac¸˜ao deste tipo de implementac¸ ˜oes do AES, ´e poss´ıvel tentar evitar as consequˆencias que esta acarreta. Assim, foi utilizado uma nova vers˜ao deste algoritmo que emula o acesso `a S-box num circuito Booleano. Atrav´es desta otimizac¸˜ao ´e poss´ıvel um menor recurso a gates and para exprimir a l ´ogica da operac¸˜ao. Nesta nova descric¸˜ao n˜ao existe a l ´ogica de selec¸˜ao de arrays das implementac¸ ˜oes referidas anteriormente, logo n˜ao existe esse tipo de gates que provocam o aumento de gates and.

selk sel W N

AES-tab32 36 200

AES-sbox 36 200

AES-opt-sbox 32 0

Tabela 3: N ´umero de cada tipo de gate de selec¸˜ao nas trˆes implementac¸ ˜oes doAES

Para a elaborac¸˜ao da tabela3foram geradas descric¸ ˜oes no formato3.3.2e retirado dessas descric¸ ˜oes o n ´umero de cada tipo de gate enunciado na figura. Como ´e percet´ıvel pela tabela com a emulac¸˜ao da s-box num circuito Booleano foi poss´ıvel a n˜ao utilizac¸˜ao das gates sel W N, que ir´a provocar uma melhoria da descric¸˜ao gerada. Assim, na tabela 9 ´e realizada a comparac¸˜ao entre os resultados obtidos nesta vers˜ao com os dados de Bristol.

Figura 9: Comparac¸˜ao do n ´umero dos v´arios tipos gate entre os dois resultados doAES

Pela tabela exposta podemos verificar que existe uma melhoria tanto no n ´umero de gates and como de xor, que apesar de traduzir um ganho percentual reduzido traz melhorias no momento da avaliac¸˜ao do circuito. Para al´em desta melhoria em relac¸˜ao ao circuito de Bristol, de notar a enorme diferenc¸a, como expect´avel, que esta nova vers˜ao trouxe em

5.2. Caso de estudo 47

relac¸˜ao `as duas vers ˜oes anteriores doAESque continham um n ´umero de gates de ambos os tipos bastante elevado.

An´alise do SHA256

Um outro algoritmo alvo da an´alise nesta secc¸˜ao ´e o SHA256. A implementac¸˜ao usada ´e uma vers˜ao open-source do mesmo, sendo que apresenta as principais caracter´ısticas desta func¸˜ao criptogr´afica. Analisando o algoritmo tendo em conta os tipos de selec¸ ˜oes que pro- vocaram a an´alise do algoritmo anterior, apenas existem selec¸ ˜oes em estrutura de dados em tempo constante - gates selk. Os resultados da compilac¸˜ao deste programa s˜ao apresentados na tabela10, bem como os dados correspondentes ao formato de Bristol.

Figura 10: Comparac¸˜ao do n ´umero dos v´arios tipos gate para os diversos resultados doSHA256

De forma bem denotada podemos concluir que, pelos resultados obtidos, existe uma melhor potencial avaliac¸˜ao da descric¸˜ao gerada comparativamente ao circuito no formato de Bristol. Apesar de existir um aumento de mais de cinquenta por cento no n ´umero de gates xor na nossa vers˜ao, o n ´umero de gates and, que ´e o fator que traduz a complexidade de avaliac¸˜ao da descric¸˜ao, sofre uma diminuic¸˜ao de setenta e dois por cento, traduzindo-se assim num ganho assinal´avel na performance da avaliac¸˜ao da descric¸˜ao gerada.

Conclus˜oes

Uma vez estudados estes dois algoritmos e comparados os resultados produzidos pelo CDG em relac¸˜ao aos resultados dos circuitos de Bristol, podemos retirar algumas ilac¸ ˜oes deste caso de estudo.

Enquanto que na vers˜ao doSHA256com recurso a uma implementac¸˜ao trivial do func¸˜ao criptogr´afica foi poss´ıvel obter resultados competitivos em relac¸˜ao aos de Bristol, no caso do AES n˜ao se verificou o mesmo. Neste caso foi necess´ario o recurso a uma implementac¸˜ao bastante espec´ıfica de forma a tirar proveito das capacidades do compilador.

Esta dificuldade em representar oAESde forma eficiente, nas primeiras vers ˜oes apresen- tadas, prende-se no fato das implementac¸ ˜oes usadas n˜ao utilizarem a pol´ıtica do SHA256. A implementac¸˜ao deste assenta sob uma pol´ıtica de tempo constante, contudo o mesmo n˜ao se aplica no caso do AES. Ao inv´es, este faz uso de m ´ultiplas tabelas de lookup que

5.2. Caso de estudo 48

implicam que o programa n˜ao execute em tempo constante, obrigando a que as descric¸ ˜oes contenham um tipo de gates que prejudicam a avaliac¸˜ao do circuito.

De modo a finalizar, podemos concluir que, dado estes dois exemplos, para se poder atingir uma boa ou melhor descric¸˜ao final gerada pelo compilador, ´e necess´ario ter em atenc¸˜ao detalhes na implementac¸˜ao do algoritmo, pois esta ir´a ser fator preponderante na eficiˆencia da avaliac¸˜ao do circuito gerado. ´E por isso miss˜ao do programador que utilize este compilador estud´a-lo de forma a tirar partir das suas principais caracter´ısticas.

6

C O N C L U S ˜O E S E T R A B A L H O F U T U R O

6.1 c o n c l u s˜oes

Nesta dissertac¸˜ao de mestrado foi estudado e apresentado um compilador que ´e capaz de produzir circuitos Booleanos de forma certificada. N˜ao ´e f´acil a elaborac¸˜ao de descric¸ ˜oes de circuitos que necessitam de se encontrar num formato muito especifico, logo foi colocada a hip ´otese de realizar um compilador que execute essa transformac¸˜ao. A necessidade de exe- cutar este processo corretamente e de forma confi´avel foi um dos aspetos mais desafiantes que foram encontrados.

A utilizac¸˜ao de alguns passos do compilador CompCert para a transformac¸˜ao inicial do programa C revelou-se ´util para alcanc¸ar um estado do programa em que a passagem para descric¸ ˜oes de circuitos Booleanos fosse mais facilitada.

Um fator que foi tido em conta no contexto da dissertac¸˜ao, foi a realizac¸˜ao de um compi- lador capaz de produzir as descric¸ ˜oes com as melhores medidas de eficiˆencia poss´ıveis. A principal medida ´e a produc¸˜ao de um circuito com menor n ´umero de gates and poss´ıvel. Re- lativamente a esta medida podemos concluir que, dado o esforc¸o por exprimir as operac¸ ˜oes desejadas com menor n ´umero de gates deste tipo, as descric¸ ˜oes geradas para diversos algo- ritmos s˜ao computacionalmente mais eficientes quando comparadas com outras soluc¸ ˜oes. As soluc¸ ˜oes alternativas, como o CBMC-CG e as descric¸ ˜oes de Bristol, revelaram-se com uma performance pior do que a nossa soluc¸˜ao apresentada, o CDG. Outro fato importante a reter ´e que, de forma a retirar o m´aximo das capacidades do compilador, ´e importante para o programador que utilizar o compilador perceber como ´e realizado a instanciac¸˜ao de gates de modo a retirar a melhor forma de reduzir o n ´umero de gates n˜ao desejadas.

Nesta dissertac¸˜ao ´e demonstrado que este compilador certificado de circuito ´e confi´avel para a gerac¸˜ao de descric¸ ˜oes de circuitos Booleanos com medidas de eficiˆencia bastante aceit´aveis para a realizac¸˜ao de futuras avaliac¸ ˜oes desse circuito.

Documentos relacionados