Escolar Documentos
Profissional Documentos
Cultura Documentos
Catalão - 2012
Ariane Alves Almeida
Catalão - 2012
Almeida, Ariane Alves
Número de paginas: 61
descrição de hardware
Ariane Alves Almeida
Quero agradecer primeiramente a Deus, por ter me dado forças para aqui estar, pois
Segundo, um muito obrigada para minha família, especialmente meus pais, Tânia
e Evaldo, que mesmo se privando da minha presença para que eu pudesse estudar em
outra cidade, sempre me deram o apoio, força e coragem necessários, principalmente nos
Também ca registrada minha gratidão ao meu marido, José Rafael, que sempre foi
do caminho me abalaram.
lecionaram para mim, desde aqueles do Ensino Fundamental àqueles com quem convivi
nos últimos quatro anos aqui na Graduação, e que de uma forma ou outra deram sua con-
que participa da banca de avaliação deste trabalho e inuenciou a escolha deste curso de
Centro Federal de Educação Tecnológica de Urutaí, hoje com nome de Instituto Federal
Aqui também ca um agradecimento especial ao meu orientador, Prof. Vaston, que
me apresentou o tema de que trata este trabalho e na medida do possível me deu sua
assistência para a conclusão deste. E também ao Prof. Roberto, que forneceu o material
E por último, mas não menos importante, gostaria também de deixar meu muito
obrigada a todos os meus colegas e amigos que percorreram esse caminho comigo, aqueles
com quem compartilhei aulas, trabalhos, noites sem dormir para fazer algum trabalho
a companhia que alivia a saudade da família e nos faz sentir queridos. A todos esses
que me auxiliaram de alguma maneira, ca minha gratidão. Entre esses, sem desmérito
dos demais que aqui se encaixam, cito em especial a amiga Amanda, que participou de
Elias, que mesmo não estando mais na mesma universidade, me ajudou e direcionou nesse
trabalho de forma que não seria possível ter alcançado os resultados aqui obtidos sem sua
colaboração.
O sucesso nasce do querer, da determinação e persistência em se chegar a
Com os avanços na área de segurança da informação, diversas técnicas têm sido desen-
volvidas e/ou aprimoradas para garantir que apenas agentes autorizados tenham acesso às
informações. Dentre estas técnicas se destaca a criptograa, que pode ser implementada
bem como os passos percorridos para isso. Através da análise dos resultados obtidos, é
vir a desenrolar a partir deste trabalho inicial no campo da criptograa e dos sistemas
embarcados.
de hardware
ABSTRACT
With advances in information security, several techniques have been developed and/or
enhanced to ensure that only authorized agents have access to information. Among these,
stands out the encryption techniques that can be implemented in both software and hard-
ware. This work discusses the use of reprogrammable circuits for implementing embedded
cryptographic systems by using hardware description languages, since these languages and
equipments allow the designer relative ease and exibility in building his project. It is
presented the cryptographic algorithm used in the construction of the proposed system,
as well as the steps traversed to it. By analyzing the results, it is possible to verify the
correct operation of the proposed project and also that the improvements over other en-
coding proposed in the literature, reaching a signicant gain in the use of internal system
components. This work is then concluded by presenting the results achieved and di-
culties encountered, and also the researchs that may unfold from this initial work in the
guage
Sumário
1 Introdução 14
2 Revisão Bibliográca 15
2.1 Segurança da informação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Criptograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.2 Classicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.1 VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 O Algoritmo DES 27
3.1 O Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 O DES em VHDL 36
4.1 Estrutura do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 Compilação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Conclusão 58
6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Referências 60
Lista de Figuras
5.1 Cyclone
R II EP2C20F484C7. Fonte: [ALTERA, 2006b]. . . . . . . . . . . 45
3.6 S-Box 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.7 S-Box 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.8 S-Box 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.9 S-Box 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.10 S-Box 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.11 S-Box 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.12 S-Box 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.13 S-Box 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
14
Lista de Siglas
Introdução
Com o surgimento e aumento do uso de meios digitais para os mais diversos objetivos,
que há tempos atrás eram mantidos em armários e grafados em papel, agora pertencem
ou outros tipos de mídia digital, e trafegam para diversas partes do mundo através de os
de cobre, bra ótica, e até mesmo pelo ar, através de ondas de rádio.
Assim, se faz necessário o uso de mecanismos que prezem pela segurança dos dados
digitais, tanto para impedir que aqueles que não estejam autorizados a acessá-los o façam,
quanto para assegurar que seu conteúdo original permaneça dedigno quando transmitido
dados apenas por pessoas autorizadas, este trabalho trata da criptograa, que objetiva
ocultar o conteúdo de uma informação daqueles que não deveriam ter acesso a ela.
Além de garantir a segurança, é necessário que tal processo seja executado cada vez
mais rapidamente e que o custo computacional para isso se mantenha baixo. Com a
geral presente na maioria dos sistemas computadorizados, essas aspirações são possíveis.
que atenda tais necessidades, para isso, são descritos no Capítulo 2 os conceitos necessários
sistema criptográco proposto, que tem sua estrutura apresentada no Capítulo 4 e sua
efetiva implantação exposta no Capítulo 5. Por m, são apresentadas as conclusões aqui
obtidas no Capítulo 6, bem como os trabalhos futuros que este trabalho pode nortear.
14
Capítulo 2
Revisão Bibliográca
proposto, discorre brevemente sobre criptograa, seu histórico resumido e seus tipos, bem
como é apresentado um algoritmo clássico que será implementado. Também neste capítulo
deste trabalho.
necessidade aumenta, já que meios físicos como armários e cadeados já não são sucientes
Um sistema, por exemplo, pode exigir que um usuário insira alguma prova de que
autenticação do usuário e pode ocorrer apenas por uso de algo que o usuário sabe, e/ou
pelo que o usuário é, ou seja, por alguma característica que ele possua [Tanenbaum, 2003].
No caso descrito acima, pode-se utilizar um login e senha para que cada pessoa possa
2
acessar o sistema. Num segundo caso pode-se fazer uso da biometria , pedindo ao usuário
que efetue por meio de algum dispositivo a leitura de alguma característica sua, como a
impressão digital, que é única em cada pessoa, para vericar sua autenticidade.
15
Caso haja alguma falha de segurança e as informações sejam acessadas por agentes não
autorizados, ainda é possível utilizar a criptograa para que esses não consigam entender
seu conteúdo. Junção das palavras em latim kryptós, que signica "secreto", "oculto", e
gráphein, que signica "escrita", a criptograa permite que um texto seja escrito, porém
com signicado oculto, já que quem não souber a forma correta de extrair o signicado
dele, não o entenderá. Esse assunto será melhor explanado mais adiante na Seção 2.2.
mais detalhes sobre este e outros tópicos sobre segurança da informação podem ser obtidos
2.2 Criptograa
A criptograa tem por objetivo a transformação de um texto claro (nome dado à
do uso de uma chave, que pode ser considerada análoga às chaves do mundo físico, já que
cifra. Uma cifra é a implementação de um algoritmo que recebe a chave e o texto claro e
dá como resposta o texto cifrado no caso da cifragem, e recebe o texto cifrado juntamente
transmitir dados de forma segura, impedindo o acesso de agentes não autorizados, eles
também podem garantir a autenticidade de algum documento digital, por meio de assi-
naturas digitais por exemplo, além de sua integridade [NIST, 1995]. E também há outras
2.2.1 Histórico
O uso da criptograa, mesmo que não aquela conhecida atualmente, feita por meio
daqueles que não devem acessá-lo, é feito há muito tempo. Seus primeiros relatos datam
3 Funções que dada uma entrada qualquer, é fácil calcular o resultado, porém, dado o resultado nal,
é difícil chegar ao dado que o originou.
4 Função matemática que dado um valor retorna um código que o representa, comumente utilizada
quando se deseja obter identicadores únicos para dados que possuem identicadores numéricos idênticos.
16
de cerca de 1.900 anos antes da era Cristã, no Egito antigo, com o uso de hieróglifos
para escrita, bem como com a substituição de alguns destes em textos que levavam, por
exemplo, a túmulos e catacumbas que continham tesouros encerrados junto aos faraós.
cifradas e provavelmente se perderia nas câmaras das pirâmides, podendo não mais achar
Na Grécia antiga, por volta do ano 400 antes de Cristo, também foram observadas
foram utilizadas com propósito militar em Esparta. Conhecida pelo nome de scylate,
então era escrita horizontalmente no couro enrolado, cada letra ocupando uma tira de
largura em volta do bastão. Ao nal obtinha-se uma tira de couro com letras enleira-
nhecida nos dias atuais. Querendo mandar em segredo mensagens e planos de guerra aos
seus generais nos campos de batalha, o imperador romano Caio Júlio César (100 a.C. -
44 a.C.) engenhou o que hoje se conhece por Cifra de César ou Troca de César. A cifra
em questão era feita substituindo cada letra do alfabeto pela terceira letra subsequente a
ela, as três últimas assumiam como as três primeiras, como se o alfabeto fosse circular.
Assim sendo, caso as mensagens fossem interceptadas pelo exército inimigo, eles teriam
de letras. A Cifra de César foi a precursora da chamada cifra por substituição, que será
Além de sua conhecida cifra, Júlio César também fez uso de métodos criptográcos
mais complexos, como a Caixa de César, onde suas mensagens eram escritas de forma que
5
a quantidade de letras fosse um número quadrado perfeito , assim, ele distribuía as letras
em uma tabela cujo número de linhas e de colunas era a raiz quadrada da quantidade de
baixo e da esquerda para a direita. A mensagem cifrada era obtida copiando as letras da
tabela seguindo pelas linhas, da esquerda para a direita e de cima para baixo. Realocando
produção criptográca, foi nesse período que surgiram as cifras polialfabéticas. Nesse tipo
5 Número inteiro positivo que pode ser expresso como o quadrado de outro número inteiro.
17
de cifra, dois ou mais alfabetos são utilizados para as substituições, podendo um mesmo
na Europa do século XV, com as escritas espelhadas de Leonardo Da Vinci, onde ele
escrevia de modo que somente era possível a leitura de seus manuscritos mediante um
espelho. E também no século XVI, em que Maria, a Rainha da Escócia (1542 - 1587),
de sua prima, a Rainha Elizabeth (1533 - 1603), a m de tomar para si a coroa inglesa.
trono a Rainha Elizabeth, que era protestante, para a ascensão de Maria, que era católica,
Foi com o advento dos meios de comunicação e de transmissão de dados, que permi-
tiam que mensagens fossem transmitidas para distâncias muito grandes e de certa forma
texto, a criptograa teve um grande avanço, sendo criados diversos métodos de cifragem e
decifragem mecanizados culminando com a invenção da máquina Enigma, que era elétrica
e baseada em um sistema com discos rotativos, e foi utilizada para cifrar informações
militares alemãs durante a Segunda Guerra Mundial (1939 - 1945). Desde então, muito
se tem avançado no meio da criptologia, já que a difusão de meios digitais para armaze-
processos é crucial.
2.2.2 Classicação
Existem três classicações que podem ser aplicadas à criptograa, cada uma delas
substituídos por outros, e a ordem dos símbolos presentes no texto permanece inalterada.
Em oposição a esse método, também pode ser aplicada a criptograa por transposição,
onde os símbolos do texto claro se mantêm inalterados, porém a ordem deles no texto
18
Quanto à inserção de dados
O texto claro pode ser inserido em um sistema criptográco de duas maneiras, a
primeira é realizada por bloco, onde o texto é dividido em blocos de determinado tamanho
conjunto de blocos cifrados que colocados juntos formam o texto cifrado total.
O segundo modo de inserção de texto para cifragem é por meio de bit a bit, a chamada
cifra por uxo, onde o texto total é desmembrado em bits e cada um deles é inserido
Quanto à chave
A última classicação se dá de acordo com o tipo de chave utilizada para o a cifragem.
Geralmente os algoritmos que utilizam esse tipo de chave são mais simples e rápidos,
Em contraste, existe a criptograa assimétrica, que utiliza a premissa das chaves pú-
blicas, onde esta chave é disponibilizada a qualquer indivíduo que queira cifrar e mandar
informações e apenas o destinatário tem acesso a uma chave privada que permite a deci-
fragem para obtenção do texto claro. Embora mais lentos e complexos que os algoritmos
que utilizam apenas chaves privadas, os sistemas criptográcos assimétricos provêm uma
maior segurança e conabilidade contra criptoanálise, já que suas chaves geralmente são
baseadas em operações com números primos grandes, o que torna extremamente laborosa
sua descoberta.
de um programa que objetiva realizar alguma tarefa. Porém, essa não é a única forma
de alcançar esse objetivo, já que um sistema pode ser implementado diretamente via
seja diretamente com uso de circuitos digitais interligados ou pela utilização de circuitos
hardware, que serão vistas na Seção 2.4, de forma que é possível indicar ao circuito qual
deve ser seu comportamento e organização, fazendo com que este atue efetivamente como
19
A implementação concebida em hardware pode ser feita com o uso de dispositivos
Quando utilizada uma arquitetura xa, uma vez que um projeto de sistema embarcado
seja implementado, a arquitetura não mais pode ser alterada, o que faz os circuitos re-
programáveis mais atrativos, já que uma mesma pastilha (circuito) pode receber diversos
projetos, desde que não concomitantemente. Porém estes últimos, na maioria das vezes,
não possuem características que podem ser úteis e que estão presentes nos primeiros, como
Com o uso de circuitos reconguráveis, o projetista pode criar novas funções que façam
com que operações sejam realizadas com muito menos ciclos do que seria necessário usando
mesmos. Deste modo, podem ser criados programas para execução direta no processador
da placa de um circuito reprogramável, o que alivia o GPP de uma máquina que tenha
tal placa acoplada. Assim, é possível utilizar esse equipamento de diversas maneiras,
seja para criar efetivamente um sistema embarcado, usando Very High Speed Integrated
A implementação tratada neste trabalho foi projetada para sua inserção em um FPGA,
que oferece entre outras vantagens, o fato de não possuir necessariamente uma execução
clo [Humire et al., 2010], através da linguagem VHDL, uma linguagem de descrição de
2.3.1 FPGA
FPGA's são dispositivos lógicos constituídos de um array bidimensional de células
modo a executarem uma função simples e os comutadores podem ser customizados para
fornecerem as interconexões entre as células [Chu, 2008]. Esses circuitos são atualmente o
cerne de diversos dispositivos que realizam performances críticas, desde pontos de acesso
wireless até sistemas comerciais de reconhecimento facial. E por não serem sequenci-
7 Memória que guarda todas as informações nela armazenadas mesmo quando não estiver recebendo
alimentação de energia.
20
multiplicações ou milhares de adições por ciclo [Humire et al., 2010].
uma rede de camadas de metal, já a conexão física entre os blocos lógicos é realizada por
desde uma reconguração total do mesmo, ou apenas parte dele, que pode ser feita sem a
necessidade de remover ou reiniciar o circuito, o que se apresenta como uma grande vanta-
que foi a primeira empresa a fornecer circuitos programáveis e é uma das maiores fornece-
doras, possuindo diversas famílias de circuitos, entre estas tem-se como mais populares as
como a Cyclone
R e a Stratix
R.
(HDL), podem ser vistas como análogas às linguagens de programação de software, pois
ambas denem como uma determinada tarefa deve ser realizada, as primeiras através da
pela descrição detalhada de passos a serem seguidos para realização de uma tarefa.
Existem atualmente no mercado diversas HDL's, dentre as quais podem ser citadas
como mais populares: VHDL e Verilog [Chu, 2008], e ambas, bem como as demais exis-
programação, pois permitem que seja feito um sistema com vantagens de hardware e
tudo em um mesmo circuito caso algum erro seja cometido no processo de criação. A maior
21
entendimento por parte do projetista da linguagem para poder executar satisfatoriamente
o proposto.
A linguagem utilizada para o projeto executado neste trabalho foi a VHDL. A se-
guir são abordados brevemente os principais pontos desta linguagem e alguns conceitos
2.4.1 VHDL
Essa linguagem foi desenvolvida pelo Departamento de Defesa Norte Americano (DoD)
na década de 1980 e foi a primeira linguagem do gênero a ser padronizada pelo Institute
of Electrical and Electronics Engineers (IEEE), assim sendo, é uma das mais conhecidas
Um sistema descrito em VHDL pode ser assim feito ou de forma comportamental, onde
when e else, que indicam a presença do comportamento do sistema (tais linhas representam
por meio da passagem dos sinais que essas devem mapear para realizar o processamento.
1 entity comp i s
2 port ( e1 , e 2 : in b i t ;
3 s : out b i t ) ;
4 end comp ;
5 architecture comp_fluxo_dados of comp is
6 begin
7 s<= e 1 when e2>e 1
8 else e 2 ;
9 end comp_fluxo_dados ;
22
Algoritmo 2.2 Descrição Estrutural de Comparador de 1 bit por [Moreno et al., 2005].
1 ...
7 end comp_fluxo_dados ;
mente, criando uma descrição híbrida, o que pode ser bastante desejável quando não se
ser criado, ou mesmo quando algum módulo pode ser mais facilmente implementado com
De qualquer uma das formas descritas acima, a implementação é feita de forma hi-
erárquica, onde são implementados blocos ou módulos, que são pequenas estruturas do
sistema, que podem ser então interligadas e utilizadas para a formação de blocos maiores
Em VHDL são utilizadas entidades para denir uma estrutura e arquiteturas para a
implementação do proposto por elas, são essas últimas que realizam as funcionalidades de
um projeto e podem ser executadas de forma concorrente, como processos, fazendo com
que uma mesma entidade possa ter diversas arquiteturas. A estrutura da utilização de
o sistema será executado por uma determinada quantidade de tempo e a cada ciclo de
relógio do processador os processos são realizados até ndar o tempo previsto para a
execução.
O IEEE, ao padronizar a linguagem, criou para esta uma biblioteca que é utilizada na
maioria dos projetos em VHDL. Isto porque tal biblioteca fornece de antemão elementos
úteis para a construção de qualquer projeto. Seus dois principais pacotes, o standard e
o textio fornecem, por exemplo, os tipos de constantes, variáveis e sinais que podem ser
Essa linguagem oferece os tipos primitivos de dados para manipulação, como os bits
23
8
e dados booleanos . Também são fornecidos tipos que permitem a declaração de objetos,
como as constantes, que possuem valor xo, e as variáveis e os sinais, que podem ser
enquanto os sinais são atualizados ao nal do ciclo de execução. Além desses tipos mais
no Capítulo 4.
projeto criado. Assim sendo, pode-se utilizar funções quando se tem apenas um retorno
Existem outas características inerentes ao VHDL, porém fogem ao escopo deste tra-
hardware, embora para aplicações grandes pode se tornar mais cara, porém menos segura
hardware sobre uma executada com software, como por exemplo as apresentadas em
[Moreno et al., 2005], onde são feitas implementações em software usando a linguagem C
24
arquivo de 10MB o DES implementado em linguagem C, no melhor cenário, consome um
Figura 2.1: Desempenho do algoritmo RSA em software. Fonte: [Moreno et al., 2005].
Figura 2.2: Desempenho do algoritmo RSA em hardware. Fonte: [Moreno et al., 2005].
25
2.6 Trabalhos Correlatos
Muitos trabalhos tem sido desenvolvidos a respeito do desenvolvimento de sistemas
que utilizam o algoritmo DES, que será apresentado no Capítulo 3, e da linguagem VHDL
ser utilizadas para desenvolvimento do DES são estudadas em [Arich e Eleuldj, 2002], que
Uma variação do DES, o 3-DES, que também será apresentado no Capítulo 3, recebe
visto o uso de descrição em alto nível para criação de um sistema DES, bem como é
gráca utilizada na cifragem do DES, bem como das tabelas de substituição que este
de pipeline
9 de múltiplos estágios, foi possivel conseguir um uso eciente do hardware em
Outro trabalho que trata do uso de pipeline para aceleração do hardware é proposto
máquinas de estados nitos para implementações sem pipeline, neste trabalho é utilizada
a arquitetura da Xilinx
R e também a linguagem VHDL para apresentação das abordagens
realizadas.
Cada trabalho apresenta suas peculiaridades, porém é possível observar que todos tem
9 Técnica de hardware que permite que a CPU realize a busca de uma ou mais instruções além da
próxima a ser executada.
26
Capítulo 3
O Algoritmo DES
Este trabalho tem por objetivo criar um hardware criptográco através do algoritmo
DES. A escolha por essa cifra foi feita devido à sua ampla aplicação em dispositivos
inuenciou a escolha dessa cifra em detrimento das demais, adiciona-se também o fato
interno relativamente simples. Neste capítulo o DES será explanado, apresentando suas
peculiaridades e funcionalidades.
3.1 O Algoritmo
Anunciado pelo NIST com sua descrição algorítmica e matemática em 1993, porém, já
adotado desde 1977 pelo Nacional Bureau of Standards (NBS) e em 1981 pelo American
National Standards Institute (ANSI) com o nome de Data Encryption Algorithm (DEA), o
DES é talvez o mais conhecido e utilizado algoritmo de criptograa [Moreno et al., 2005].
Sendo um algoritmo criptográco de chave privada que realiza a cifragem por blocos
com ambos os processos de substituição e transposição, o DES cifra blocos de 64 bits com
uma chave de 64 bits, onde apenas 56 são utilizados e os outros 8 desprezados, podendo
ser utilizados posteriormente para detecção de erros, para geração de blocos de 64 bits
criptografados.
último fornece as chaves parciais para cada rodada de processamento do primeiro. A ci-
fragem e decifragem utilizam o mesmo processo, assim sendo, a cifragem dupla, utilizando
27
3.2 Módulo Gerador de Chaves
A cada iteração do processamento principal do algoritmo é utilizada uma subchave
das demais subchaves. A Figura 3.1 ilustra o modo como as subchaves são geradas para
Figura 3.1: Módulo Gerador de Subchaves do DES. Fonte: [Brown et al., 1993].
Para a criação das subchaves (K1 , ..., K16 ), a chave inicial de 64 bits passa pela pri-
meira operação, uma permutação de compressão (PC-1), que a transforma em uma chave
comprimida de 56 bits permutados de acordo com a tabela Tabela 3.1 , para a obtenção
1
da chave que dará origem às subchaves subsequentes.
1A Tabela 3.1 e as demais que representam as tabelas de compressão, expansão e permutação (exceto
as S-Boxes) de chaves e textos tem como elementos os números que indicam a posição dos bits na chave
ou texto original que passará pelo processo, assim sendo, ao reagrupar os bits após sua inserção na tabela
de ordem da esquerda para a direita e de cima para baixo, é obtida a chave ou texto transformados pela
operação em questão.
28
Tabela 3.1: Permutação de Compressão Inicial. Fonte: [Brown et al., 1993]
PC-1
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
A chave comprimida é dividida em duas partes de 28 bits cada, na Figura 3.1 é possível
observar essa divisão, onde C0 representa os 28 bits mais signicativos da chave compri-
mida e D0 os 28 bits restantes. Cada parte sofre rotações à esquerda cuja quantidade
varia de acordo com o número da iteração de que faz parte de acordo com a Tabela 3.2.
Tabela 3.2: Número da Iteração e Quantidade de Rotaçãoes. Fonte: [Brown et al., 1993]
Número da Iteração 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Rotações à Esquerda 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1
As partes da chave são então reunidas e passam por mais uma operação de permutação
de compressão (PC-2) conforme a Tabela 3.3 para a formação de uma subchave nal de
48 bits.
PC-2
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
29
3.3 Processamento Principal
O processamento principal recebe o texto claro e as chaves produzidas pelo módulo
gerador de chaves para realizar as operações que ao nal fornecem o texto cifrado. Seu
O texto claro de 64 bits é recebido pelo algoritmo e sofre uma permutação inicial (IP)
30
Tabela 3.4: Permutação Inicial. Fonte: [Brown et al., 1993]
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
O texto resultante do passo anterior é dividido em duas partes de 32 bits cada uma,
R0 (ou Ri , dependendo da iteração) que passa então a ter 48 bits e não mais 32, de acordo
com a Tabela 3.5 .
E BIT-SELECTION
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Depois, o vetor resultante da operação acima passa por uma operação ou-exclusivo
são agrupados sequencialmente em 8 grupos de 6 bits. Cada grupo passa por uma operação
de compressão através de uma substitution box (S-Box) , que é uma tabela de substituição
31
de 4 linhas e 16 colunas. Ao total são 8 S-Boxes, cada uma referente a um grupo de 6 bits,
para o segundo e assim por diante. Pode-se vericar abaixo as 8 S-Boxes denidas pelo
S1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
32
Tabela 3.10: S-Box 5.
S5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 7 5 0 15 14 2 3 12
S8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
bits, como ocorre com a compressão das chaves. Tendo a S-Box 4 linhas, pode-se numerá-
las de 0 a 3, assim sendo, o primeiro e o sexto bit do grupo se combinam para formar
33
o número binário correspondente ao número da linha a ser analisada para a substituição
que numerada de 0 a 15, será analisada. Assim sendo, o valor binário correspondente
ao número posicionado nas coordenadas indicadas pela linha e pela coluna obtidas pelo
método descrito anteriormente substitui os 6 bits originais. Assim, como cada valor nal
de cada grupo terá 4 bits, serão um total de 32 bits, voltando o texto ao tamanho de Ri
para dar sequência ao processo.
Por m, é feita uma permutação comum (P-Box) com o vetor de 32 bits obtido no
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Findados os passos da função f (Ri−1 , Ki ), seu vetor resultante passa por uma operação
XOR com Li , o resultado dessa operação passa então a ser armazenado em Ri e o valor
subchave distinta fornecida pelo módulo gerador de chaves. Os valores de L16 e R16
são então unidos, formando novamente um vetor de 64 bits, que sofre a permutação nal
34
Tabela 3.15: Permutação Final. Fonte: [Brown et al., 1993]
IP-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Existe também outra versão do DES chamada de 3DES ou Triple -DES, que realiza
do DES somente se utilizadas chaves diferentes em cada vez da sua execução, pois para
o processo de decifragem basta inserir o texto cifrado e a chave para obtenção do texto
claro, fazendo o 3DES equivalente ao DES caso a mesma chave seja utilizada nas três fases
do processo. Estes dois foram por muito tempo utilizados como padrões de criptograa,
atualmente foram substituídos pelo NIST por um novo algoritmo, o Advances Encryption
Pode ser observado que a estrutura desse algoritmo possui funcionalidades distintas
bem denidas, isso possibilita uma implementação modular, que facilita o entendimento
35
Capítulo 4
O DES em VHDL
Este capítulo apresenta como foi implementado o algoritmo DES, descrito no capítulo
aqui criado. Ainda em VHDL, foram construídos arquivos de testes que foram utilizados
para a simulação do sistema, que será vista no Capítulo 5 juntamente com a efetiva
primeiro, dentre as diversas referências na literatura, uma que se destacou por apresentar
uma implementação simples do algoritmo pretendido foi a de Moreno [Moreno et al., 2005],
então foi reproduzido o código presente nesta e correções foram realizadas a m de obter
alterações com objetivo de torná-la mais completa e eciente. Tais alterações serão apre-
tamentais quanto estruturais e até mesmo híbridas para criação de sistemas em VHDL.
Neste trabalho optou-se por uma abordagem híbrida, já que ora foram descritos compor-
tamentos para criação dos componentes, como pode ser observado nas linhas de 1 a 4 no
Algoritmo 4.1, ora foi necessária a descrição da estrutura a ser criada, como por exemplo,
para a criação e chamada dos subcomponentes que criam a estrutura hierárquica presente
36
Algoritmo 4.1 Exemplo de Descrição Híbrida Criada.
1 Lout <= PI ( 3 2 to 6 3 ) when i t e r a c a o = " 0000 " e l s e R;
2 Aux <= PI ( 0 to 3 1 ) when i t e r a c a o = " 0000 " e l s e L ;
3 Rout <= Aux xor Pout ;
4 PF <= Rout&Lout ;
5 itera : rounds port map ( Lout , SubChave , Pout ) ;
6 c h a v e s : k e y s port map (K, i t e r a c a o , SubChave ) ; ;
A codicação foi realizada de forma modular, ou seja, cada funcionalidade foi im-
texto a ser cifrado (64 bits), a chave criptográca (64 bits), o sinal de relógio do hardware
(clock ) e o sinal de reset do sistema para a produção de um texto cifrado (64 bits) como
sinal de saída (descrição dada pela entidade criada nas linhas de 1 a 7 do Algoritmo 4.2).
des.vhd (linhas 2 a 8 do Algoritmo 4.3), que recebe a chave permutada previamente pelo
para geração e retorno do texto cifrado. O subcomponente descrito por des.vhd é então
37
Algoritmo 4.3 Arquitetura do Módulo sistema.vhd.
1 architecture si st em a_a rc h of s i s t e m a i s
2 component d e s
3 port ( c l k : in s t d _ l o g i c ;
4 i t e r a c a o : s t d _ l o g i c _ v e c t o r ( 3 downto 0 ) ;
5 K : s t d _ l o g i c _ v e c t o r ( 5 5 downto 0 ) ;
6 din : s t d _ l o g i c _ v e c t o r ( 6 3 downto 0 ) ;
7 saida : out s t d _ l o g i c _ v e c t o r ( 6 3 downto 0 ) ) ;
8 end component ;
9 ...
10 U1 : DES port map ( Clk , Rodada , chave , din , s a i d a ) ;
11 end si st em a_a rc h ;
zam parte do processamento e delegam parte para outros componentes. O módulo des.vhd
realiza a permutação inicial do texto claro e utiliza um componente para a criação de sub-
com excessão à permutação nal, que é realizada por este com o resultado nal retornado
por rounds.vhd.
na Seção 3.3 e tem suas funções delegadas pelo módulo rounds.vhd, os arquivos das S-
Boxes realizam as permutações que lhes cabem e retornam o resultado ao módulo a que
Juntos, todos os componentes formam o sistema nal, que após sua implementação
deve ser compilado para a vericação de erros e criação nal do sistema. Esse processo
dos resultados parciais e nais, bem como do funcionamento do projeto. Embora existam
softwares que permitam a construção de simulações por meio de interfaces grácas, co-
nhecidos como Application Programming Interfaces (API's), através deles não é possível
a fácil alteração dos dados de entrada utilizados, já que cada bit de entrada deve ser
38
É possível realizar simulações também através do uso de arquivos auxiliares, que
mesmo sendo mais complexos quando da sua criação do que as simulações via API's,
permitem uma maior exibilidade e controle na sua criação e na alteração dos dados de
entrada, o que é desejável quando se quer testar um projeto com diversas entradas a m
de vericar seu funcionamento. Por esse motivo, neste trabalho optou-se pela criação de
primeiros são arquivos que criam um ambiente virtual a m de vericar o correto funcio-
do sistema são inseridos com intuito de testar seu funcionamento através dos dados de
saída obtidos. Todo o ambiente criado é assim feito com base no arquivo VHDL principal
especíco para um projeto em VHDL, o arquivo de testbench também deve ser criado
nessa linguagem, logo, apresenta estrutura semelhante ao arquivo principal ao qual remete
e o utiliza como componente, o que pode ser visto no Algoritmo 4.4, podendo assim passar
O arquivo de macro apresentado no Algoritmo 4.5 foi feito para encapsular todas as
39
Algoritmo 4.5 Arquivo Auxiliar Macro.
1 v l i b work
2 vcom sbox1 . vhd
3 ...
4 vcom d e s . vhd
5 vcom s i s t e m a . vhd sistema_tb . vhd
6 vsim − t ns work . sistema_tb
7 view wave
8 add wave − r a d i x hex / d i n _ s i s
9 add wave − r a d i x hex / K_sis
10 add wave − r a d i x hex / sis_cmp /U1/k
11 add wave − r a d i x hex / sis_cmp /U1/PF
12 add wave − r a d i x hex / s a i d a _ s i s
13
14 run 3 ns
ser adicionados ao arquivo, a começar por aquele mais interno (ou subordinado) e a
terminar pelo mais externo, precedidos do comando vcom, e então deve-se acrescentar as
variáveis cujas ondas devem ser visualizadas no simulador com sua respectiva conguração
de visualização e seu caminho de acordo com a hierarquia dos arquivos, ao nal, deve-se
deseja avaliar com suas devidas congurações de formato de onda a ser exibida, além do
A macro criada no Algoritmo 4.5 apresenta as ondas de saída das variáveis que repre-
sentam o texto claro inserido, a chave original inserida, a chave permutada, o texto cifrado
antes da permutação nal, e o texto cifrado nal em formato de valor hexadecimal, com
efeito de facilitar o entendimento das saídas geradas e executa por um total de tempo de
3 nanossegundos.
ção deste trabalho, porém, algumas alterações que serão aqui exploradas foram necessárias
40
do DES (Algoritmo 4.6), tal código tratava o vetor de rodadas como uma variável in-
teira, logo, quando da simulação, que será apresentada no Capítulo 5, são criados erros
apropriada do vetor em questão foi alterada para uma adequada execução do projeto, fa-
(Algorimto 4.7).
proposto em [Moreno et al., 2005] apresenta uma entrada a mais que a proposta neste
trabalho para o módulo de cifragem/decifragem. Tal entrada tem por objetivo denir se
está sendo realizada a cifragem ou a decifragem para a obtenção dos textos ou chaves
parciais utilizadas no processo em questão. Como este trabalho tem por objetivo sim-
plesmente a obtenção do texto cifrado/decifrado nal, tal entrada se torna obsoleta e foi
41
Algoritmo 4.8 Módulo Principal por [Moreno et al., 2005].
1 entity s i s t e m a i s
2 port ( c l k : in std_logic ;
3 r e s e t : in s t d _ l o g i c ;
4 modo : std_logic ;
5 key : s t d _ l o g i c _ v e c t o r ( 5 5 downto 0 ) ;
6 din : s t d _ l o g i c _ v e c t o r ( 6 3 downto 0 ) ;
7 saida : out s t d _ l o g i c _ v e c t o r ( 6 3 downto 0 ) ) ;
8 end s i s t e m a ;
Outra alteração realizada que também é perceptível entre o Algoritmo 4.8 e o Al-
suprime a etapa de compressão inicial da chave descrita na Seção 3.2, passando então a
atuar desde o início com uma chave previamente permutada de 56 bits. O código criado
neste trabalho permite a efetiva inserção de uma chave de 64 bits e realiza internamente
42
Algoritmo 4.10 Implementação da Compressão Inicial da Chave.
1 ...
2 signal chave : s t d _ l o g i c _ v e c t o r ( 5 5 downto 0 ) ;
3 ...
4 chave<= key ( 5 6 ) & key ( 4 8 ) & key ( 4 0 ) & key ( 3 2 ) &
5 key ( 2 4 ) & key ( 1 6 ) & key ( 0 8 ) & key ( 0 0 ) &
6 key ( 5 7 ) & key ( 4 9 ) & key ( 4 1 ) & key ( 3 3 ) &
7 key ( 2 5 ) & key ( 1 7 ) & key ( 0 9 ) & key ( 0 1 ) &
8 key ( 5 8 ) & key ( 5 0 ) & key ( 4 2 ) & key ( 3 4 ) &
9 key ( 2 6 ) & key ( 1 8 ) & key ( 1 0 ) & key ( 0 2 ) &
10 key ( 5 9 ) & key ( 5 1 ) & key ( 4 3 ) & key ( 3 5 ) &
11 key ( 6 2 ) & key ( 5 4 ) & key ( 4 6 ) & key ( 3 8 ) &
12 key ( 3 0 ) & key ( 2 2 ) & key ( 1 4 ) & key ( 0 6 ) &
13 key ( 6 1 ) & key ( 5 3 ) & key ( 4 5 ) & key ( 3 7 ) &
14 key ( 2 9 ) & key ( 2 1 ) & key ( 1 3 ) & key ( 0 5 ) &
15 key ( 6 0 ) & key ( 5 2 ) & key ( 4 4 ) & key ( 3 6 ) &
16 key ( 2 8 ) & key ( 2 0 ) & key ( 1 2 ) & key ( 0 4 ) &
17 key ( 2 7 ) & key ( 1 9 ) & key ( 1 1 ) & key ( 0 3 ) ;
em que o sistema será implantado e serão apresentadas na Seção 5.2 do Capítulo 5, capítulo
aqui apresentada, bem como a transcrição do sistema para um FPGA, obtendo então o
43
Capítulo 5
ritmo DES em uma placa FPGA, bem como todos os materiais e processos intermediários
utilizados para tal, como a compilação e a simulação do código produzido que procedem
a criação do hardware.
desejado.
Para a criação do hardware criptográco proposto por este trabalho, foi utilizada uma
placa cedida para a concepção deste projeto pelo Departamento de Engenharia Mecânica
para obtenção de um melhor resultado. A primeira coisa a ser feita é a criação do código
a ser introduzido no sistema, código esse que teve sua estrutura explicada no Capítulo 4 e
pode ser vericado na íntegra no CD que acompanha esta monograa. Os demais passos
aqui realizados incluem a compilação de tal código, sua simulação, a atribuição de pinos
placa FPGA desejada. Com exceção à primeira etapa já concluída, as demais necessitam
ALDEC
R
Active-HDL Simulator e os programas fornecidos pela Alera
R
, a fabricante da
44
gama de programas, documentações, tutoriais e vídeo-aulas, optou-se pela utilização de
programas de licença gratuita dessa empresa neste trabalho, já que também existem ou-
tros programas por ela fornecidos que são mais robustos e possuem mais funcionalidades,
porém, como o projeto aqui proposto é relativamente simples, a versão gratuita dos pro-
por diferentes fabricantes. Como dito anteriormente, este trabalho foi projetado com um
sistemas embarcados, memória ash, Random Access Memory (RAM) e Static Random
Access Memory (SRAM) integradas, um circuito Universal Serial Bus (USB) Blaster para
diodos emissores de luz (LED's), extensores duais de 40 pinos, portas seriais para cone-
xão de diversos periféricos e diversos outros recursos já estão inclusos, (c.f. Figura 5.1)
45
É importante colocar que o processador presente no FPGA é o dispositivo que receberá
o projeto criado, as demais funcionalidades são apenas artifícios extras que vem a facilitar
a integração do hardware concebido. Assim sendo, por se tratar de um chip, sua pinagem
1
deve ser especicada de acordo com a aplicação obtida para a utilização dos recursos
em HDL's, dois em especial foram utilizados para concretizar este trabalho. O primeiro,
intitulado Quartus II, será aqui apresentado e o segundo, intitulado ModelSim, será visto
em seguida.
sistemas embarcados, e uma versão gratuita (versão web ) que é mais simplicada quanto
às facilidades e recursos que apresenta aos seus usuários. Por suprir as necessidades deste
trabalho, foi utilizada a distribuição gratuita do software em sua versão Quartus II 9.1sp2
Web Edition.
Esse software, que pode ter sua tela inicial visualizada na Figura 5.2, disponibiliza
desde um ambiente para edição do código criado em HDL's até uma API para simulação
da aplicação desenvolvida e uma ferramenta que faz a transcrição do sistema criado para
o FPGA desejado.
46
O Quartus II será utilizado neste trabalho para os processos de compilação, que será
descrito na Seção 5.2, de atribuição de pinos, que será apresentado na Seção 5.4 e de
migração do sistema para a Cyclone II, que será visto na seção 5.5. Para tais, serão
e a ferramenta Programmer, ambas inclusas nesse software. Cada utilização será melhor
manter a utilização dos softwares dessa empresa, foi utilizado o programa ModelSim para
a simulação do sistema criado neste trabalho e vericação dos dados de saída obtidos.
Também disponível nas duas vertentes, paga e gratuita, aqui também foi possível
então neste trabalho a versão ModelSim ALTERA STARTER EDITION 6.5b, cuja tela
por API quanto a execução de arquivos auxiliares de testbench e macro criados para
automação das simulações. Mais detalhes sobre o processo de simulação através dos
arquivos auxiliares com o ModelSim serão apresentados na Seção 5.3, onde é mostrada a
47
5.2 Compilação
A compilação de um projeto tem por objetivo a vericação do código criado e sua
com sua utilização, possibilitando que o designer averigue a viabilidade de seu projeto. No
caso da compilação feita no software Quartus II, apresentado na Seção 5.1.2, todas essas
informações são fornecidas quando a compilação é completada com êxito, como pode ser
observado na gura 5.4. Caso haja algum erro no código produzido, a tela apresentada não
Além disso, é possível perceber que o FPGA (nome do dispositivo e a família a que per-
só é possível de ser analisada quando indicada a placa a ser utilizada, já que há diferen-
48
fornecimento maior e mais preciso de informações acerca do dispositivo a ser criado.
do software utilizado para tal, o nome do projeto criado, o nome do componente de maior
e se tal modelo foi atendido (Timing Models e Met timing requirements ), a quantidade
uma redução dos componentes internos do hardware criado. Tal melhoria pode ser conr-
Figura 5.5.
Através da análise das duas compilações, é possível perceber que passa de 914 (5%) da
2 Circuito eletrônico composto por um oscilador de frequência variável e um detector de fase que gera
sinais de saída dependentes da fase do sinal de entrada.
49
codicação de [Moreno et al., 2005] para 631 (3%) a utilização de elementos lógicos, de
um total de 18.752 disponíveis para uso na Cyclone II. Assim sendo, a codicação deste
trabalho produz uma redução de 44,84% na utilização interna dos elementos do chip da
5.3 Simulação
Vericada a codicação realizada, o sistema está pronto para ser simulado, a m de
averiguar seu correto funcionamento através da análise dos valores de entrada fornecidos
sistema quando fornecida determinada entrada. Para essa etapa, foi utilizado o software
ModelSim da Altera.
Poderia ter sido utilizada a API do programa para criação da simulação, mas como
já dito na Seção 4.2, optou-se pela escrita de um código que dene todo um ambiente
processo de simulação (macro ), ambos descritos na Seção 4.2, e a chamada desse último
visto na Figura 5.6. Isso permite a rápida execução da simulação e também a alteração
tempo de execução gasto. O sistema criado realiza a execução de todas as suas funções
em menos de 1 nanossegundo.
50
Figura 5.6. Seguindo a descrição do algoritmo DES utilizado neste trabalho feita no
Capítulo 3, o correto funcionamento do sistema deve então retornar como saída o texto
claro da primeira simulação, o que pode ser comprovado pela Figura 5.7.
Para dar continuidade às comparações com o código fornecido em [Moreno et al., 2005],
foi executada uma simulação do código por ele proposto após as devidas correções apre-
sentadas na Seção 4.3. O resultado de tal simulação pode ser apreciado na Figura 5.8 e
apresenta algumas discrepâncias em relação à Figura 5.6 justamente pelo fato de utilizar
Para a simulação acima, foi utilizado o mesmo arquivo de macro e de testbench que
possível observar que a implementação de [Moreno et al., 2005] consome o mesmo tempo
de execução que o sistema criado neste trabalho, assim, ca claro que a melhoria aqui
FPGA.
51
5.4 Atribuição da Pinagem
Como já dito na seção 5.1.1, o sistema criado e implantado em um FPGA se compor-
ao nal como um pino acoplado a um chip, podendo receber ou retornar dados em forma
4
de alta ou baixa voltagem , dependendo de sua funcionalidade.
O circuito criado (chip) por si só não é capaz de realizar nenhum processamento sem
que dados sejam inseridos, e também se torna inútil caso nenhum resultado possa ser
obtido dele. Para tanto, no desenvolvimento de uma placa FPGA se faz necessário o uso
dos artifícios nela presentes para que possam ser atribuídos os pinos do circuito criado
aos pinos
5 presentes nas diversas funcionalidades presentes na placa.
realizar tais atribuições, o Pin Planner, que pode ser visto na Figura 5.9, onde é possível
obter uma visão geral de como o chip do FPGA está organizado eletronicamente e de
sua pinagem interna, que é dividida em bancos de entrada e saída (I/O), bem como os
dados resultantes do projeto criado, possibilitando a atribuição dos dados do projeto aos
pinos presentes na placa. A descrição completa de todos os bancos de I/O pode ser
[ALTERA, 2006a].
3 Cada bit nesse caso é considerado um dado, um vetor de bits é visto como um conjunto de dados e
cada bit é atribuído a um pino.
4 A alta voltagem representará o bit 1 e a baixa voltagem o bit 0
5 Por se tratar de uma placa eletrônica, todas as comunicações internas do FPGA, incluindo as diversas
interfaces que esta fornece, são feitas por meio de circuitos eletrônicos interligados por meio de pinos.
52
Atribuir pinos e fazer o interfaceamento entre as funcionalidades presentes em FPGA
e o circuito criado em seu chip não é uma tarefa fácil, pois requer um estudo aprofundado
de cada componente extra presente na placa, desde seu funcionamento interno até como
integrá-lo ao circuito.
O projeto criado neste trabalho possui uma quantidade de dados de entrada e saída
muito grande para interligar aos dispositivos presentes na Cyclone II, utilizando um total
de 194 pinos (c.f. Figura 5.4) para entrada e saída de dados, o que diculta ainda mais o
interfaceamento. Neste trabalho foram utilizados alguns artifícios para facilitar a atribui-
ção da pinagem para inserção dos dados e visualização dos resultados, a m de validar o
(texto claro e chave) foram inseridos por meio dos interruptores presentes na Cyclone II,
que apresentam os valores lógicos 0 ou 1 quando posicionadas para baixo ou para cima,
interruptores, e são um total de 130 bits de entrada no sistema. A solução encontrada foi
a atribuição dos 2 bits de controle e de apenas 8 bits de dados, 4 para a chave e 4 para o
6
texto claro, esses 4 bits são então replicados dentro do código do sistema , formando um
texto claro e uma chave criptográca de 64 bits replicados a partir dos 4 bits originais
cada uma.
Para visualização do texto cifrado foram utilizados os LED's do FPGA, que represen-
Cyclone II, sendo produzidos 64 bits de texto cifrado para apenas 18 LED's na placa.
possibilitando sua conferência com a simulação, já que não foi possível a visualização de
todo o resultado.
realizar mais uma compilação para que o Quartus II possa incorporar ao projeto criado
6O código foi alterado apenas para a implantação do código no FPGA de forma a permitir a entrada
e saída de dados, seu funcionamento não foi prejudicado.
7 A escolha por representar apenas 16 bits, e não os 18 que poderiam ser atribuídos, se deu devido
ao fato de o número 16 poder ser escrito como 24 , o que facilita a visualização quando se trata da
representação de números binários.
53
arquivo de extensão sof, que pode ser então transcrito para a placa. Após esse passo,
outra ferramenta do Quartus II, especíca para implantar um projeto criado em uma
HDL em um FPGA, chamada Programmer (c.f. Figura 5.10), é utilizada para esse m.
O FPGA a receber o projeto criado deve ser conectado ao computador que possui essa
ferramenta instalada, nela então é possível indicar em qual hardware conectado ao com-
putador o projeto criado deve ser carregado, bem como qual arquivo .sof carregar. Uma
vez colocado na placa, o chip nela presente passa a agir como o hardware criptográco
projetado e o FPGA pode então ser desconectado do computador. A partir disso, os inter-
ruptores da placa podem ser organizados de modo a inserir os dados a serem processados
arquivo de testbench
8 utilizado na simulação da Seção 5.3. Os dados são então inseridos
54
Figura 5.11: Dados de Entrada e Saída da Execução do Hardware Criado.
Para obtenção dos resultados acima, o clock do sistema foi iniciado com valor ló-
gico 0 e está representado pelo interruptor SW 9, o sinal de reset que inicia o proces-
número binário 1010, que quando replicado dentro do sistema produzirá a chave cripto-
9
gráca AAAAAAAAAAAAAAAAh , por m, os interruptores SW 3, SW 2, SW 1 e SW 0
apresentaram a conguração equivalente ao valor binário 0101, que ao serem replicados
Todos esses valores podem ser conferidos na simulação apresentada na Seção 5.3,
bem como a conguração apresentada pelos LED's, que representam os 16 primeiros bits
LEDR3 desligado, LEDR2 ligado, LEDR1 desligado, LEDR0 ligado, LEDG7 desli-
gado, LEDG6 desligado, LEDG5 desligado, LEDG4 ligado, LEDG3 desligado e LEDG2
desligado, os LED's LEDG1 e LEDG0 se encontram desligados mas não fazem parte da
momento para resultar em novos dados de saída sem a necessidade de se reiniciar o sistema,
como já citado na Seção 2.3.1, assim, se modicada a conguração dos interruptores para
inserção dos dados de entrada apresentados na simulação da Figura 5.12 (1101 para a
processamento (c.f. Figura 5.13), e os dados podem ser conferidos de acordo com a
simulação.
55
Figura 5.12: Simulação do Sistema Criado com Outros Dados de Entrada.
Desse modo, o hardware criptográco objetivado neste trabalho através do uso da lin-
guagem VHDL e da placa FPGA disponível foi alcançado com sucesso, podendo vericar
que norteou a construção do circuito aqui criado quanto ao uso de componentes internos.
ser possível a utilização de tal abordagem, foi escolhida a linguagem VHDL, que é
56
• Obtenção/criação do código do DES em VHDL: Mesmo se tratando de um
algoritmo relativamente simples, a implementação do DES em uma linguagem de
descrição de hardware é bastante complexa, por esse motivo, optou-se pela utilização
correções para que seu funcionamento se desse corretamente, que foram apresentadas
ções, o que trouxe a diculdade da utilização dos programas para esse m disponíveis
uma solução completa para o desenvolvimento (c.f Seção 5.1) , interfaces amigáveis
esta foi a fase que mais apresentou diculdades, que podem ser divididas em:
Instalação da placa : Para poder ser utilizada de modo a receber qualquer sis-
tema, o FPGA deve ser conectado a um computador que o contenha para que esse
ao qual está acoplada, necessitando então, da instalação manual de seu driver que
FPGA.
deseja utilizar tais documentos como guia para criação de sistemas que tirem má-
ximo proveito das funcionalidades desse FPGA. Assim, não foi possível, por falta de
tempo hábil para exploração da placa, a criação de interfaces de I/O mais amigáveis.
às descritas acima, que por meio de muita pesquisa e tempo dedicado foram sanadas.
57
Capítulo 6
Conclusão
Este trabalho teve como objetivo a criação um sistema criptográco embarcado, atra-
vés do qual dados podem ser cifrados diretamente pelo hardware criado em um tempo
de execução bem inferior ao que seria alcançado com o uso de um software equivalente,
o que é bastante desejável quando se trabalha em um ambiente que exige cada vez mais
tornaram possível a realização deste projeto. Foi possível perceber que a segurança de
calhar nesse contexto. Também foram vericadas as vantagens de se utilizar HDL's, que
produzem sistemas com vantagens de hardware e software, e das placas FPGA's, que
dispositivo.
Diversos passos foram executados para alcançar o circuito desejado, desde a criação
circuito FPGA para delegação das operações de entrada e saída de dados do hardware,
rápido e funcional.
do algoritmo DES para sua implementação e das funcionalidades da placa para transcrição
do sistema criado.
possível observar que este apresenta melhorias quanto à utilização de componentes inter-
nos do FPGA utilizado para sua criação. Tal ganho foi possível com melhoramento da
58
6.1 Trabalhos Futuros
Este trabalho apresentou uma introdução a um vasto campo de pesquisa, já que en-
volve os tanto a criptograa quanto sistemas embarcados. Deste modo, é possível dar
neste trabalho foi híbrida, pode-se futuramente fazer uso separadamente das abor-
dos.
de I/O, ca a cargo de trabalhos futuros o estudo das diversas formas de interface-
criado.
desse tipo de circuito. Suas funcionalidades podem ser melhor investigadas para a
criptográcos passem por processos de vericação formal que garantam sua cor-
59
Referências
Ali, L., Yunus, N., Jaafar, H., Wagiran, R., e Low, E. (2004). Implementation of triple data
ALTERA (2005). Cyclone II Device Handbook. ALTERA, San Jose, CA - Estados Unidos.
ALTERA (2006b). Cyclone II FPGA Starter Development Kit - User Guide. ALTERA,
103.
Ashenden, P. J. (1995). The Designer's Guide to VHDL. Morgan Kaufmann, New York,
NY - Estados Unidos.
Badrignans, B., Danger, J. L., Fischer, V., Gogniat, G., e Torres, L., editors (2011).
Security Trends for FPGAs From Secured to Secure Recongurable Systems. Springer,
Brown, R. H., Good, M. L., e Prabhakar, A. (1993). Data Encryption Standard. Technical
Report FIPS 46-2, National Institute of Standards and Technology. disponível em http:
//www.itl.nist.gov/fipspubs/fip46-2.htm#FORE_SEC, acessado em dezembro de
2011.
Chu, P. P. (2008). FPGA Prototyping by VHDL Examples Xilinx Spartan-3 Version. John
Churchhouse, R. F. (2004). Codes and ciphers Julius Caesar, the Enigma and the internet.
Cambridge University Press, 40 West 20th Street, New York, NY 10011-4211, USA.
60
Gaj, K. e Chodowiec, P. (2009). FPGA and ASIC Implementations of AES. In Çe-
tin Kaya Koç, editor, Cryptographic Engeneering. Springer, New York, NY - Estados
Unidos.
Humire, T., Irvine, C., Nguyen, T. D., Levin, T., Kastner, R., e Sherwood, T. (2010).
Singh, S. (2000). The Code Book: The Science of Secrecy from Ancient Egypt to Quantum
and Pipelined Data Encryption Standard (DES) Using Xilinx Virtex-6 FPGA Techno-
Tocci, R. J., Widmer, N. S., e Moss, G. L. (2007). Sistemas Digitais princípios e aplicações.
Wilson, P. e Brown, A. (2005). DES in four days using behavioural modeling synthesis.
61