Sei sulla pagina 1di 85

Centro de Ensino Universitrio de Braslia - UniCEUB Faculdade de Cincias Exatas e Tecnologia - FAET Departamento de Engenharia da Computao Projeto Final

Segurana de dados aplicada urna eletrnica com foco na autenticao

Srgio Tsugumiti Kobayashi RA 2031804-5

Orientador: Prof. Marco Antnio de O. Arajo Braslia/DF - Julho/2006

-1-

SRGIO TSUGUMITI KOBAYASHI

SEGURANA DE DADOS APLICADA URNA ELETRNICA COM FOCO NA AUTENTICAO

Trabalho apresentado banca examinadora da Faculdade de Cincias Exatas e Tecnolgicas, para a concluso do curso de Engenharia de Computao. Prof. Orientador: Marco Antnio de O. arajo

Braslia - DF Julho/2006

-2-

SRGIO TSUGUMITI KOBAYAHSI

SEGURANA DE DADOS APLICADA URNA ELETRNICA COM FOCO NA AUTENTICAO

COMISSO EXAMINADORA

_______________________________ Prof. Orientador

_______________________________ [Nome do Examinador]

_______________________________ [Nome do Examinador]

Braslia, 04 de julho de 2006.

-3-

AGRADECIMENTOS

A minha me, Maria de Lourdes Silva, por me ensinar a sonhar, meu pai, Tsugumito Kobayashi e todos os meus irmos, Marcelo Hissakiti Kobayashi, Ricardo Takao Kobayashi, Ceclia Akemi Kobayashi, Paulo Sadao Kobayashi, Ronaldo Massaaki Kobayashi, Karla Sanae Kobayashi, Flvia Satiko Kobayashi e Felipe Yukio Kobayashi, por sempre me apontar o norte. Ao meu primo-irmo Srgio Alberto de Figueiredo (Srgio Lorran), por nunca me deixar desistir. Ao meu filho Thiago Kobayashi, por ser a realizao de um sonho e ter me ensinado a ser pai. Aos grandes amigos que sempre acreditaram e em especial ao Srgio Malta Massuda, por ter me trazido de volta e mostrado o caminho. Ao meu professor orientador Marco Antnio de O. Arajo, pelo direcionamento, clareza e comprometimento. Ao coordenador do curso de Engenharia de Computao, prof. Abiezer Amarlia Fernandes, por ter compreendido e dado suporte nos meus momentos de turbulncia. E a todo o corpo docente da Faculdade de Cincias Exatas e Tecnologia FAET, pelo alimento intelectual, meu muito obrigado.

-4-

A vida muito curta para ser pequena. (desconhecido)

-5-

Resumo
Este um trabalho de natureza acadmica que tem por objetivo oferecer outra possibilidade de segurana da informao no uso de urnas eletrnicas para votao. Baseando-se nos 3 (trs) mdulos distintos no procedimento de votao eletrnica, conforme fluxo descritivo do Tribunal Superior Eleitoral TSE [1], possvel dividir em trs momentos a votao eletrnica:

1. Autenticao e/ou identificao do eleitor; 2. Votao; 3. Apurao / Totalizao.

Este trabalho ficar restrito ao item nmero 1. Autenticao e/ou identificao do eleitor, sendo que o mesmo poder vir a servir como referncia a trabalhos posteriores que tenham interesse em desenvolver as demais relaes do fluxo descritivo do TSE [1]. Atravs do estudo de viabilidade da insero de autenticao do eleitor atravs de um carto de identificao e que contenha dados codificados de validao do eleitor em sua zona eleitoral, cria-se uma nova formatao para um dos pilares da segurana da informao, a confidencialidade, o eleitor no ser mais identificado no momento da votao, mas autenticado e atravs do carto, o eleitor passa a ter acesso ao mdulo de votao, propriamente dito, sem que seus dados tenham sido gravados ou identificados, diminuindo-se a possibilidade de quebra de sigilo ou confidencialidade da informao, disponvel na eleio eletrnica e da possibilidade de cruzamento de informaes para se descobrir a escolha do eleitor na eleio. Palavras chave: Autenticao, segurana, votao eletrnica, urna eletrnica.

-6-

Abstract
This is a research of academic bias that seeks to offer another possibility in information security at the use of electronic ballots. Using the three distinct modules as a reference according to the description by Tribunal Superior Eleitoral (Supreme Election Court) [1], it is possible to separeta in three phases the electronic voting process: 1. Authentication and/or identification of the voter; 2. Voting; 3. Summing. This research will be restrict to point 1. Authentication and/or identification of the voter, and this could serve as a reference to subsequent research that have interest in exploring others relations in the description. Through the study of viablity of inserting the voter authentication using a identification card and that it contains encrypted data the voter validation on his voting zone, a new structure changes one of the information security pillars, confidentiality, the voter will not be identified anymore at the voting moment, but he will be authenticated and through the identification card the voter will have access to the voting module without recording or identifying your personnal data, reducing the possibility of openning secret data or confidentility of the information available at the electronic ballot and the possiblity of cross reference of information to find out which was the voter choice in the election. Keywords: Authentication, security, electronic voting, electronic ballot.

-7-

Sumrio
Sumrio .............................................................................................................. 8 Lista de tabelas .................................................................................................. 9 Lista de figuras ................................................................................................. 10 1. Introduo ................................................................................................. 11 2. A votao eletrnica.................................................................................. 14 2.1. Urna eletrnica ......................................................................... 14 2.1.1. Histrico e Evoluo................................................................. 14 2.1.2. Legislao Brasileira ................................................................ 19 2.1.3. Prs e contras .......................................................................... 20 2.1.4. Perspectiva mundial ................................................................. 22 2.2. Segurana da informao ........................................................ 22 2.2.1. Conceito ................................................................................... 22 2.2.2. Objetivo - confidencialidade ..................................................... 23 2.2.3. Norma ISO/IEC 17799/2000 .................................................... 23 2.2.4. Anlise de riscos aplicada urna eletrnica ............................ 25 2.2.4.1 Ativos fsicos e ativos lgicos................................................... 26 2.2.4.2 Vulnerabilidades e ameaas .................................................... 27 2.2.5. Criptografia............................................................................... 28 2.2.5.1. Conceito ................................................................................... 29 2.2.5.2. Caractersticas ......................................................................... 30 2.2.5.3. Keeloq e AES........................................................................... 30 3. Modelo proposto ...................................................................... 43 3.1. Hardware e Software................................................................ 45 4. Implementao......................................................................... 46 4.1. Hardware e Software................................................................ 46 5. Concluso ................................................................................ 53 6. Referncias Bibliogrficas........................................................ 55 Anexo A - Hardware da urna eletrnica ........................................................... 56 Anexo B - Extrato da Lei no. 9.504 do TSE ..................................................... 58 Anexo C - Extrato da ISO/IEC 17799:2000 ...................................................... 64 Anexo D - Cdigo fonte .................................................................................... 66 Anexo E - Extrato do Manual do microcontrolador PIC16F636 ........................ 83 Anexo F - Manual do transcoder HCS410........................................................ 84

-8-

NDICE DE TABELAS

Tabela 1 - Histrico e evoluo da votao eletrnica no Brasil ...................... 15 Tabela 2 - Blocos de dados (dx,x) e bloco de chaves (cx,x) ............................... 39 Tabela 3 - Nmero de rodadas por tamanho de chave e de blocos................. 40 Tabela 4 Tabela-S em hexadecimal.............................................................. 41 Tabela 5 Shift Row para uma configurao de 3 linhas (C1 a C3) e Nb=4 ... 41

-9-

NDICE DE FIGURAS Figura 1 Fluxo de votao manual ................................................................ 11 Figura 2 Fluxo de votao eletrnica............................................................. 12 Figura 3 Ligao da UE2000. ........................................................................ 16 Figura 4 Microterminal do eleitor. .................................................................. 16 Figura 5 Criptografia simtrica....................................................................... 31 Figura 6 Criptografia assimtrica................................................................... 34 Figura 7 Ataque utilizando-se de chave pblica falsa.................................... 35 Figura 8 Identify Friend or Foe (IFF).............................................................. 37 Figura 9 KeeLoq - IFF ................................................................................... 38 Figura 10 AES simplificado............................................................................ 39 Figura 11 Engenharia de computao........................................................... 43 Figura 12 Fluxo da votao eletrnica (modelo proposto) ................................... 43 Figura 13 Fluxo da votao eletrnica especfico.......................................... 44 Figura 14 Diagrama do modelo proposto ...................................................... 45 Figura 15 Modelo de conexo 2 fios (Token) ................................................ 47 Figura 16 Fluxo de programao principal .................................................... 48 Figura 17 Fluxo de criptografia AES.............................................................. 49 Figura 18 Display de sada ............................................................................ 50 Figura 19 Esquema eletrnico do modelo proposto ...................................... 53

- 10

1. Introduo

Ao se falar sobre eleies, tem-se em mente o demasiado tempo despendido pelo antigo sistema de votao manual onde o eleitor era identificado, recebia a cdula de votao, se encaminhava para a rea restrita de voto, marcava a escolha (candidato, branco ou nulo), inseria o voto na urna e recebia o comprovante conforme o seguinte fluxo (figura 1):

Identificao do eleitor

Votao secreta e manual

Depsito do voto na urna

Recebe o comprovante

Fim
Figura 1 Fluxo de votao manual

Alm do tempo gasto em todo o processo da votao propriamente dita, diversas eram as vulnerabilidades e ameaas, com por exemplo a falsificao da cdula de votao, substituio da urna, alterao de voto nulo em voto vlido durante a apurao/totalizao, dentre outras possibilidades. Com a mudana de votao manual para votao eletrnica, houve um ganho de tempo extremamente considervel, simplificando-se o fluxo como segue (figura 2):

- 11

Identificao do eleitor na Urna eletrnica

Votao secreta e eletrnica

Recebe o comprovante

Fim
Figura 2 Fluxo de votao eletrnica

O ganho mais expressivo pode ser constatado na apurao/totalizao dos votos, que basicamente a consolidao dos dados registrados nas unidades regionais (TRE Tribunais Regionais Eleitorais), pela unidade central ou nacional (TSE Tribunal Superior Eleitoral), tendo sido o ganho operacional da votao regional tambm substancial e expressivo, mas como todo sistema que necessite segurana e principalmente, segurana da informao, a urna eletrnica tambm est sujeita a vulnerabilidades e ameaas, no seu processo como um todo. A partir do momento que o eleitor se apresenta para votar, o processo de uma eleio pode ser dividido nas seguintes etapas:

Identificao do Eleitor Votao Secreta Apurao de cada urna e totalizao dos votos

A proposta deste trabalho aumentar a segurana das informaes do eleitor, substituindo-se o ttulo de eleitor em papel impresso, por um carto do tipo smart card, com as informaes referentes ao eleitor codificadas, diminuindo-se a possibilidade de uso indevido do documento por terceiros.

- 12

Baseado nos trs pilares de segurana, definidos nas literaturas sobre segurana da informao em TI [2][3] Integridade, confidencialidade e disponibilidade, este trabalho se prope a minimizar as vulnerabilidades e ameaas da urna eletrnica com o foco especfico no item confidencialidade do voto do eleitor, dividindo a urna em mdulos, sendo o primeiro mdulo referente autenticao do eleitor para a votao. A interdependncia dos mdulos visa a garantir critrios de segurana individualizados e definidos de acordo com a identificao e definio das vulnerabilidades e ameaas em cada momento da votao. Com a singularizao do eleitor atravs do carto do eleitor, modularizao da urna eletrnica e autenticao do eleitor antes da votao, as vulnerabilidades e ameaas podero ser restringidas e tratadas em instantes determinados e assistidos/auditados. Nos captulos seguintes deste trabalho, iremos demonstrar as formas de tratamento da informao para que se possa fazer o controle e a manuteno da segurana da informao, partindo-se de uma introduo sobre o sistema de votao no primeiro captulo, de um breve histrico da atual urna eletrnica, histrico e normas referentes a segurana da informao em tecnologia da informao TI, breve discurso sobre criptografia e os modelos criptogrficos adotados na soluo no segundo captulo, as questes referentes ao hardware e software propostos no terceiro captulo, a implementao no quarto captulo e a concluso no quinto captulo.

- 13

2. A urna eletrnica

Este captulo a base histrica e conceitual para um melhor entendimento, desenvolvimento lgico e subsdio para a implementao do prottipo a que se prope este trabalho.

2.1

Urna eletrnica

Como base histrica e evolutiva, esse captulo ir discorrer sobre o sistema de votao eletrnica utilizado no Brasil, considerando-se os aspectos numricos dos volumes considerados em uma votao eletrnica, bem como sobre a urna eletrnica propriamente dita e suas posteriores atualizaes. Esse captulo visa tambm, trazer informaes sobre a legislao atual brasileira com relao ao processo eleitoral eletrnico, avaliaes do sistema com relao aos prs e contras e a perspectiva mundial sobre a votao eletrnica, divergncias e sugestes de modelos mais seguros.

2.1.1 Histrico / Evoluo

O sistema de votao eletrnica no Brasil teve seu incio no ano de 1996, quando por questes de segurana e viabilizao do sistema, no foi coberto todo o territrio nacional, tendo atingido aproximadamente 1,04% do nmero total de municpios que na poca era de 5.507 municpios (tabela 1), o que representou aproximadamente 32,07% do eleitorado nacional ou 32.478.153 de eleitores efetivos, no ano de 1998 ocorreu um salto do montante atingido pela votao eletrnica, chegando-se aos 9,74% do nmero total de municpios ou 537 municpios, que representou 57,62% do eleitorado nacional que na poca j era de 61.111.992 de eleitores efetivos, nas eleies do ano 2000 esses nmeros saltaram para 100% do nmero total de municpios com votao eletrnica, sendo de 5.559 municpios e 100% do eleitorado nacional ou 109.780.071 de eleitores efetivos, tendo esses valores sido seguidos nas eleies subseqentes, 2002 e 2004, com as variaes na quantidade de municpios e eleitorado efetivo nos seguintes valores, 5.561 para 5.563 e 115.254.113 para 119.782.000, respectivamente. - 14

Tabela 1 Histrico e evoluo da votao eletrnica no Brasil

VOTAO ELETRNICA NO BRASIL


Eleies N Total de Municpios N de Municpios com Votao Eletrnica % de Municpios com Votao Eletrnica Eleitorado com Votao Eletrnica % do eleitorado atingido Total de Votantes Populao Total Sees eleitorais com urnas eletrnicas 1996 5.507 1998 5.513 2000 5.559 2002 5.561 2004 5.563

57

537

5.559

5.561

5.563

1,04%

9,74%

100%

100%

100%

32.478.153

61.111.922

109.780.071

115.254.113

119.782.000

32,07% 101.284.121 157.070.163 72.311

57,62% 106.101.067 158.232.252 145.213

100% 109.780.071 169.872.856 322.500

100% 115.254.113 173.900.000 367.300

100% 119.782.000 182.000.000 408.810

Fonte: TSE

Pode-se perceber tambm que a quantidade de urnas eletrnicas nos anos eleitorais acompanhou a evoluo numrica dos demais itens, tendo sido de 72.311 urnas eletrnicas no ano de 1996, 145.213 no ano de 1998, 322.500 no ano 2000, 367.300 no ano 2002 e 408.810 no ano 2004. A prpria urna eletrnica sofreu, tambm, alteraes ao longo do perodo descrito acima, tanto em hardware quanto em software, com o intuito de se melhorar o desempenho utilizando-se de novas tecnologias disponveis e dificultar quaisquer intervenes ou quebra de segurana da urna. H trs verses de hardware para a urna eletrnica, os modelos UE 96, UE 98 e UE 2000, que foram adquiridos nos anos de 1996, 1998 e 2000, respectivamente. Todos os modelos apresentam a mesma arquitetura bsica, embora diferenas, decorrentes da evoluo tecnolgica, possam ser observadas no seu hardware [1]. As caractersticas tecnolgicas da urna em questo, bem como as modificaes, esto descritas no anexo A Hardware da urna eletrnica. A UE 2000 permite a ligao de at dois terminais funcionando paralelamente, estando ligados nessa configurao, um terminal ir atuar como mestre e os outros dois como escravos, ou seja, todos os dados da votao ficaro armazenados no terminal - 15

mestre, que tambm ser o responsvel pela totalizao da seo eleitoral, cabe aos terminais escravos somente a funo de entrada e sada de dados (figura 3).

Figura 3 Ligao da UE2000

A urna eletrnica possui ainda um microterminal, composto de um teclado numrico e um display de cristal lquido com 2/4 linhas por 20 caracteres (figura 2), ligado ao terminal do eleitor (UE), para uso exclusivo do mesrio e tem as seguintes atribuies:

o identificao do eleitor e se est apto a votar na Seo; o localizao do comprovante na folha de votao; o liberar a UE para votao; o suspenso do voto; o finalizao da votao

Figura 4 Microterminal do eleitor

Os dispositivos de entrada e sada encontrados na urna eletrnica e no-visveis pelo eleitor, tem funes especficas, sendo estes:

- 16

o Impressora utilizada para impresso dos boletins de urna, dos relatrios de teste e carga do software; o Acionador de disquete 3 para gravao dos boletins de urna; o Dois slots para a insero de cartes de memria removvel tipo flash, denominados flash interno e flash externo, utilizados como backup; o Um conector para teclado, utilizado para manuteno e testes; o Dois conectores USB (universal serial bus); o Um conector para fone de ouvido, utilizado para eleitores com deficincia visual; o Um conector para conexo com outros terminais do eleitor, somente no microterminal; o Uma sada para impressora, no microterminal.

Todos os dispositivos que tem acesso externo so lacrados aps a carga do software e dos dados da eleio e assim ficam at a concluso da eleio. O microterminal conectado ao terminal do eleitor atravs de cabo serial diretamente na placa do terminal. A urna possui uma arquitetura similar a de um computador pessoal IBM/PC, com algumas alteraes para uma melhoria do controle e da segurana, mudanas no firmware tambm so encontradas na urna, seja para autenticao e criptografia como para segurana. A segurana da urna, segundo o TSE, consiste na integrao de Hardware, Software bsico, Softwares da eleio, Sistema de Criptografia e procedimentos, tornando a urna singular, como segue:

o Preparao do Hardware: Procomp o Software bsico especfico: Microbase o Sistema Operacional comum de mercado - VirtuOS o Gerenciadores especfico da Urna o Sistema de Criptografia: CEPESC o Validao: TSE o Integrao de hardware, software e procedimentos: TSE

- 17

Gerao das informaes para a UE.

Os aplicativos das eleies so apresentados aos Partidos Polticos antes das eleies, conforme determina o art. 66 da Lei n 9.504. A convocao dos partidos para essa apresentao realizada segundo Resoluo do TSE.

Preparao no TSE

o Gerao dos cdigos executveis dos aplicativos da eleio; o Integrao com o sistema de segurana; o Autenticao dos cdigos executveis, empacotamento e envio aos TRE's; o Envio de cadastro de eleitores, organizados por Zonas Eleitorais, aos TREs.

Preparao nos TREs

o Arquivos de candidatos, fotografias e coligaes.

Preparao das matrizes para carga das Urnas

o Carrega o programa gerador de mdia (GM) a matriz para inseminar as urnas com: todos os softwares da urna, tabela de eleitores, candidatos, coligaes, Zonas, Sees; o O programa gera o FC (flash de carga) com softwares oficiais das Eleies, tabela de candidatos e eleitores, controlados e autenticados; o O programa pra de funcionar se detectar aplicativos no oficiais; o Ao inserir o FC na urna ligada, o sistema faz a limpeza e a inseminao nas Urnas.

Aps a Carga (inseminao) executa-se o aplicativo da eleio para:

o Carregar a tabela de candidatos e eleitores no aplicativo oficial; o Associar os candidatos aos registradores (contadores) na seqncia de Cargo, Partido e Candidato (nmero e nome). - 18

2.1.2 Legislao brasileira

A lei que regulamenta a votao eletrnica no Brasil a Lei 9.504 de 30 de setembro de 1997, com as devidas alteraes, sendo especfico para o contedo desse trabalho o artigo nmero 59 que segue em seu teor original ou parte relacionada ao trabalho em questo no anexo B Extrato da Lei no. 9.504 do TSE.

Do Sistema Eletrnico de Votao e da Totalizao dos Votos

Art. 59. A votao e a totalizao dos votos sero feitas por sistema eletrnico, podendo o Tribunal Superior Eleitoral autorizar, em carter excepcional, a aplicao das regras fixadas nos arts. 83 a 89. 1 A votao eletrnica ser feita no nmero do candidato ou da legenda partidria, devendo o nome e fotografia do candidato e o nome do partido ou a legenda partidria aparecer no painel da urna eletrnica, com a expresso designadora do cargo disputado no masculino ou feminino, conforme o caso. 2 Na votao para as eleies proporcionais, sero computados para a legenda partidria os votos em que no seja possvel a identificao do candidato, desde que o nmero identificador do partido seja digitado de forma correta. 3 A urna eletrnica exibir para o eleitor, primeiramente, os painis referentes s eleies proporcionais e, em seguida, os referentes s eleies majoritrias. 4o A urna eletrnica dispor de mecanismo que permita a impresso do voto, sua conferncia visual e depsito automtico, sem contato manual, em local previamente lacrado, aps conferncia pelo eleitor. (Pargrafo includo pela Lei n 10.408, de 10.1.2002). 5o Se, ao conferir o voto impresso, o eleitor no concordar com os dados nele registrados, poder cancel-lo e repetir a votao pelo sistema eletrnico. Caso reitere a discordncia entre os dados da tela da urna eletrnica e o voto impresso, seu voto ser colhido em separado e apurado na forma que for regulamentada pelo Tribunal Superior Eleitoral, observado, no que couber, o disposto no art. 82 desta Lei.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 6o Na vspera do dia da votao, o juiz eleitoral, em audincia pblica, sortear trs por cento das urnas de cada zona eleitoral, respeitado o limite mnimo de trs urnas por - 19

Municpio, que devero ter seus votos impressos contados e conferidos com os resultados apresentados pelo respectivo boletim de urna.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 7o A diferena entre o resultado apresentado no boletim de urna e o da contagem dos votos impressos ser resolvida pelo juiz eleitoral, que tambm decidir sobre a conferncia de outras urnas.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 4o A urna eletrnica dispor de recursos que, mediante assinatura digital, permitam o registro digital de cada voto e a identificao da urna em que foi registrado, resguardado o anonimato do eleitor. (Redao dada pela Lei n 10.740, de 1.10.2003) 5o Caber Justia Eleitoral definir a chave de segurana e a identificao da urna eletrnica de que trata o 4o. (Redao dada pela Lei n 10.740, de 1.10.2003) 6o Ao final da eleio, a urna eletrnica proceder assinatura digital do arquivo de votos, com aplicao do registro de horrio e do arquivo do boletim de urna, de maneira a impedir a substituio de votos e a alterao dos registros dos termos de incio e trmino da votao. (Redao dada pela Lei n 10.740, de 1.10.2003) 7o O Tribunal Superior Eleitoral colocar disposio dos eleitores urnas eletrnicas destinadas a treinamento. (Redao dada pela Lei n 10.740, de 1.10.2003) 8o O Tribunal Superior Eleitoral colocar disposio dos eleitores urnas eletrnicas destinadas a treinamento.(Pargrafo includo pela Lei n 10.408, de 10.1.2002). [2]

2.1.3 Prs e contras

A implementao da votao eletrnica no Brasil trouxe uma agilidade ao processo de eleio, considerando-se os vrios dias de contagem e apurao despendidos nas antigas eleies manuais, a quantidade de pessoal envolvido e os gastos com todo o modelo antigo, a consolidao dos dados pelos diversos tribunais regionais eleitorais espalhados na grandiosidade territorial brasileira, sem se falar das vulnerabilidades e ameaas a que o sistema se acometia. Quando da implantao da votao eletrnica no Brasil os critrios relevantes na poca foram segurana e a velocidade da eleio, mesmo lembrando-se das enormes filas que se formaram nas zonas eleitorais, devido ao desconhecimento ou mesmo da fobia eletrnica que se fazia e faz presente em todo processo de automatizao, o processo como um todo pode ser considerado satisfatrio - 20

uma vez que nas eleies seguintes houve a consolidao definitiva desse processo eletrnico de votao atingindo-se a totalidade ou 100% do eleitorado nacional. Como todo sistema informatizado, a votao eletrnica e mais especificamente a urna eletrnica, tem lados opostos com relao confiabilidade, de um lado pode-se considerar o prprio Tribunal Superior Eleitoral TSE e do outro um grupo de parlamentares e intelectuais de diversas universidades, com se pode perceber na citao que segue: No dia 29 de maio de 2002 ocorreram dois fatos simultneos no Congresso em Braslia relativos questo da confiabilidade do voto eletrnico no Brasil. No Centro Cultural da Cmara dos Deputados, aconteceu o Seminrio do Voto Eletrnico (SVE), promovido pelo Partido Democrtico Trabalhista (PDT). E j quase no final dos trabalhos do SVE, o Ministro Nelson Jobim, presidente do Tribunal Superior Eleitoral (TSE) compareceu ao Congresso Nacional para apresentar ao presidente da Cmara, Acio Neves e ao presidente do Senado, Rames Tebet, o Relatrio Unicamp produzido pela Fundao de Desenvolvimento da Universidade Estadual de Campinas (FUNCAMP) sobre o Sistema Informatizado de Eleies (SIE) [5]. O relatrio apresentado pela FUNCAMP referente ao contrato TSE no. 54/2001 de prestao de servios tcnicos especializados, tendo sido contratado para efetuar uma avaliao sobre o Sistema Informatizado de Eleies (SIE), que no se restringe votao eletrnica, mas trata do processo inteiro, desde a urna eletrnica at os sistemas desenvolvidos para a contagem e apurao dos votos, e teve como resultado final um parecer positivo com relao confiabilidade do sistema como um todo, mesmo trazendo algumas ressalvas e algumas sugestes para a melhoria da segurana e da prpria confiabilidade do sistema. Por outro lado, tem-se uma mobilizao com diversos questionamentos sobre a segurana do sistema como um todo e mais especificamente, sobre a urna eletrnica e a confiabilidade de todos os sistemas que a compe (hardware e software), so feitas duras crticas com relao confidencialidade, integridade e a disponibilidade das informaes constantes da eleio e ao mesmo tempo apresentam-se vulnerabilidades e possveis ameaas a essas informaes [6], como estes dois fatos ocorreram quase que simultaneamente, serviram como suporte para as anlises a serem feitas no captulo de segurana, tanto pelo lado positivo quanto pelo lado negativo.

- 21

2.1.4 Perspectiva mundial

O Sistema Eletrnico de Votao adotado no Brasil j foi oferecido a diversos pases, tendo sido testado e mesmo utilizado em alguns pases da Amrica do Sul (Venezuela e Paraguai), mas em pases considerados do primeiro mundo a votao eletrnica um tpico extremamente discutido nos meios acadmicos, Massachusetts Institute of technology MIT, Harvard, Oxford, University of New Castle, dentre outros, e nessas discusses diversos so os questionamentos sobre a segurana e a garantia das informaes, por exemplo, um estudo da MIT [7] questiona a utilizao de impressora para a conferncia do voto na urna, e o questionamento referente divergncia, se houver, entre o voto impresso e o voto eletrnico, destes qual ser o verdadeiro e porque? Como ter sido a adulterao, que meios devero existir para garantir que tal situao no venha a ocorrer ou que seja minimizada a possibilidade de que venha a acontecer? Diante desses questionamentos e diversos outros, a implementao de um sistema eletrnico de votao ainda hoje vetada. Algumas propostas para a conferncia do voto eletrnico com o voto impresso j esto bastante difundidas e sedimentadas, dentre essas pode-se citar o algoritmo de criptografia impressa de David Chaum [8][9], que por estar fora do escopo desse trabalho no ser aqui discutido.

2.2

Segurana da informao

O nico sistema verdadeiramente seguro aquele que est desligado, desplugado, trancado num cofre de titanium, lacrado, enterrado em um bunker de concreto, envolto por gs nervoso e vigiado por guardas armados muito bem pagos. Mesmo assim, eu no apostaria minha vida nisso [10]

2.2.1 Conceito

A segurana da informao tem deixado de ser tratada como um assunto puramente tcnico da rea de Tecnologia de Informao TI e vem sendo utilizada como uma ferramenta fundamental em todas as reas - 22 que tenham a necessidade de

confidencialidade (sigilo), integridade e disponibilidade da informao. Sabe-se que a garantia total de segurana um fato praticamente utpico, o que se procura a utilizao de ferramentas ou mtodos que possibilitem reduzir os impactos sobre os ativos, ou seja, tudo o que tenha valor e necessite de proteo, sejam ativos fsicos ou ativos lgicos.

2.2.2 Objetivo - Confidencialidade

Sendo objetivo principal desse trabalho aumentar a segurana na urna eletrnica, tem-se como objetivo de suporte a confidencialidade, especificamente o sigilo do voto eletrnico. Entenda-se como sigilo no voto eletrnico o momento em que o eleitor se dirige urna e l efetua o seu voto, sendo que nesse momento no pode ocorrer o relacionamento entre o eleitor e a escolha do mesmo.

Do Voto Secreto Legislao Complementar: Lei n 9.504/97, arts. 59 a 62: sistema eletrnico

de votao e totalizao dos votos. Arts. 82 a 89: aplicveis, juntamente com as regras dos arts. 103 e 104 deste Cdigo, ao sistema convencional.

Art. 103. O sigilo do voto assegurado mediante as seguintes providncias: I - uso de cdulas oficiais em todas as eleies, de acordo com modelo aprovado pelo Tribunal Superior; II - isolamento do eleitor em cabina indevassvel para o s efeito de assinalar na cdula o candidato de sua escolha e, em seguida, fech-la; III - verificao da autenticidade da cdula oficial vista das rubricas; IV - emprego de urna que assegure a inviolabilidade do sufrgio e seja suficientemente ampla para que no se acumulem as cdulas na ordem em que forem introduzidas [4].

2.2.3 Norma ISO/IEC 17799/2000

Em 1987 o departamento de comrcio e indstria do Reino Unido (DTI) criou um centro de segurana de informaes, o CCSC (Commercial Computer Security Centre) - 23

que dentre suas atribuies tinha a tarefa de criar uma norma de segurana das informaes para o Reino Unido. Desde 1989 vrios documentos preliminares foram publicados por esse centro, at que, em 1995, surgiu a BS7799 (British Standard 7799). Esse documento foi disponibilizado em duas partes para consulta pblica, a primeira em 1995 e a segunda em 1998. Em 1o de dezembro de 2000, aps incorporar diversas sugestes e alteraes, a BS7799 ganhou status internacional com sua publicao na forma da ISO/IEC 17799:2000. Por fim, em setembro de 2001, a ABNT homologou a verso brasileira da norma, denominada NBR ISO/IEC 17799. A norma nacional de segurana de informao dividida em 10 (dez) macro controles:

o Poltica de Segurana; o Segurana Organizacional; o Classificao e Controle dos Ativos da Informao; o Segurana em Pessoas; o Segurana Fsica e do Ambiente; o Gerenciamento de Operaes e Comunicaes; o Controle de Acesso; o Desenvolvimento da Segurana de Sistemas; o Gesto da Continuidade do Negcio; o Conformidade.

No intuito desse trabalho, criar uma poltica de segurana, mas to somente identificar as necessidades de segurana em um sistema de votao eletrnica. A norma esta sendo utilizada como norteadora, e subsdio o macro controle Classificao e Controle dos ativos da informao, que utilizado para delinear os ativos e possibilitar assim que se faa uma avaliao dos riscos aplicada urna eletrnica. Ativos so todos os possveis alvos que venham a prejudicar ou derrubar um dos pilares da segurana [3].

- 24

2.2.4 Anlise de riscos aplicada urna eletrnica

Como dito anteriormente, os ativos so elementos fundamentais quando pensamos em Segurana da Informao e tambm so as peas principais quando iniciamos uma anlise para verificarmos os possveis riscos que o sistema possa apresentar. A abrangncia na identificao dos elementos importantes que devam ser protegidos contra as ameaas, melhora a visualizao das reas de vulnerabilidades, e aumenta cada vez mais a probabilidade de sucesso e conseqentemente a segurana, numa avaliao de riscos, a identificao das vulnerabilidades e ameaas a que est sujeita a informao e a probabilidade de que um ataque identificado possa ocorrer a referncia para uma boa anlise de riscos. O macro controle da norma ISO/IEC 17799:2000 que trata da Classificao e Controle dos ativos da informao tem por objetivo prover diretrizes para a gesto de segurana dos ativos, classificao, registro e controle, sendo o controle efetivado atravs de um inventrio dos ativos da empresa e pode ser assim definido:

o Contabilizao dos ativos Inventrio cada urna eletrnica tem um nmero de srie e este nmero registrado no TSE e consta do banco de dados das urnas, para o caso em que seja necessrio algum tipo de rastreabilidade, alm disso, o modelo sugerido nesse trabalho prope que seja includo no banco de dados os dados referentes aos mdulos do sistema e uma vez que alguns desses dados sero utilizados para a comunicao entre os mdulos e tambm para o processo de criptografia, existe uma necessidade de cuidados especiais para a guarda dessas informaes;

o Classificao da informao A classificao da informao em um sistema eleitoral pode ser dividida em trs tipos: 1) Informaes Confidenciais: informaes de carter exclusivo e sigiloso; 2) Informaes Corporativas: informaes pertinentes somente ao TSE; 3) Informaes Pblicas: informaes a serem distribudas e veiculadas.

- 25

A informao a ser tratada nesse trabalho se restringir informao confidencial, ou seja, extremamente sigilosa e inviolvel referente escolha do eleitor no voto secreto;

o Rtulos e tratamento da informao. Cada informao de voto deve ter o rtulo de confidencialidade, integridade e disponibilidade e deve ser tratado como definido por esses rtulos, sendo que esse trabalho se restringe confidencialidade e urna eletrnica, tratando portanto das informaes que circularo nesse dispositivo e no critrio de confidencialidade.

2.2.4.1 Ativos fsicos e ativos lgicos

Dentro da definio dada aos ativos anteriormente, podemos dividi-los em duas categorias distintas: Ativos fsicos todo elemento fsico que possa ser manipulado, movido, remanejado, por exemplo, a urna eletrnica; Ativos lgicos todo elemento lgico que possa ser manipulado, alterado, apagado, por exemplo, programas de computador. Dentro do foco a que se destina esse trabalho pode-se identificar os seguintes ativos classificados conforme a definio anterior.

Ativos fsicos: Urna eletrnica; Mdulo de autenticao; Mdulo de TRE zonal; Mdulo de votao.

Ativos lgicos: Fluxograma de programao; Programa assembler dos mdulos; Esquema eletrnico dos mdulos; Nmero de srie dos microcontroladores; - 26

Nmero de srie dos transcoders; Nmero seed do TSE; Nmero de srie do TSE (ou fabricante da urna).

2.2.4.2 Vulnerabilidades e ameaas

A vulnerabilidade pode ser considerada como o ponto fraco de um ativo ou grupo de ativos, onde uma ameaa direcionada e que j conhea essa vulnerabilidade possa se aproveitar deste ponto fraco para causar danos ao ativo. Cabe ressaltar que no a vulnerabilidade a responsvel pelos danos causados, sendo apenas uma condio que permite a ao da ameaa [3]. As ameaas so mecanismos ou ferramentas que atuam nas vulnerabilidades do ativo causando perdas, danos ou alteraes ao mesmo. Estes ataques realizados pelas ameaas sobre as informaes podem ser diretos ou indiretos e podem ser acidentais ou propositais, no trabalho em questo considerar-se- somente ataques propositais. Para esse trabalho consideram-se ameaas no momento de transporte da urna eletrnica para a distribuio e do local de votao para o local de contagem e apurao, e esse tipo de ameaa seria aos ativos fsicos descritos acima, para tanto o modelo sugere controles para esses tipos de ameaas e/ou ataques, alm disso, considera-se a possibilidade de ataques internos sobre os ativos lgicos, programas e dados contidos na urna eletrnica disponibilizada para cada seo de votao, ou os Tribunais Regionais Eleitorais TREs. Para se evitar a troca ou o manuseio da urna eletrnica quando no percurso entre o TRE e a seo de votao, bem como, da seo de votao para a rea de contagem e apurao, a mesma dever ser autenticada tanto pelo TSE quanto pelo TRE, com uma chave de identificao nica, utilizando-se para isso dos nmeros de srie dos componentes e de informaes de criptografia que se faam necessrias para esse procedimento, como essa fase de autenticao foge ao escopo deste trabalho, serve como uma introduo para a autenticao do eleitor que o foco a ser questionado e implementado. Partindo-se da premissa de que a urna possui mecanismos de controle para o envio e recebimento na seo, quais seriam as vulnerabilidades e ameaas a serem tratadas? A troca do sistema que foi gravado na urna pode ser considerada como - 27

uma ameaa lgica ao sistema, mas a vulnerabilidade para esse tipo de ataque pode ser controlada com algumas ferramentas disponveis no microcontrolador como por exemplo o checksum, as urnas eletrnicas ao serem programadas recebem um checksum, um clculo de checagem utilizando-se de informaes contidas no microcontrolador, como por exemplo o nmero de srie, etc, e esse nmero pode ser verificado a qualquer momento, mesmo porque ao se instalar o programa da urna eletrnica, automaticamente, o microcontrolador ir se comunicar com os demais mdulos informando seus dados de configurao, ID, no. de srie, etc., e estes passam a trabalhar em conjunto e qualquer alterao no cdigo do microcontrolador ir gerar uma no autenticao do mesmo com os demais mdulos o que desabilitar a urna, o que funcionaria inclusive para a segurana contra ameaas ao ativo fsico pela troca de algum componente dos mdulos, como por exemplo a memria que contenha os dados dos candidatos ou dos eleitores. Como o conjunto no possui um sistema operacional que esteja sendo executado em um nvel mais baixo, a seqncia do programa segue mesma seqncia do fluxograma, sem que hajam chamadas para um sistema controlador que possa conter funes maliciosas com alteraes de funcionalidade, ou que se possa identificar determinado dado direcionandose a escolha do eleitor para determinado candidato, uma vez que o programa utiliza de ponteiros com endereo de memria, a funo maliciosa deveria conhecer esse endereo para poder se utilizar de tal artifcio, e esses endereos podem ser misturados para cada seo,o que dificultaria ainda mais qualquer interveno externa ao sistema.

2.2.5 Criptografia

A palavra criptografia composta dos termos gregos krypts (secreto, oculto) e grphein (escrita, escrever). E considerada a cincia de comunicar-se secretamente. O mais antigo problema na criptografia se refere comunicao segura em um canal inseguro, o objetivo principal tornar a mensagem indecifrvel para terceiros, que possam vir a interceptar a comunicao. A criptografia to antiga quanto a escrita, porm, somente nas ltimas dcadas tornou-se alvo de estudos cientficos mais extensos e aprofundados, com o surgimento de novas reas como a criptoanlise e a criptologia. A segurana da informao tem sentido desde a poca em que no existiam meios eletrnicos de envio e armazenamento da informao, onde na maioria dos casos o contedo da informao era armazenado em meio fsico como o papel, por exemplo, e - 28

para que houvesse a garantia da segurana dessa informao, foram criados protocolos e mecanismos de segurana fundamentados na aplicao de leis, quando enviamos uma carta pelo correio, a segurana o lacre de fechamento do envelope e o mecanismo de proteo a lei de sigilo da correspondncia, que me garante a pena ao fraudador por ter acesso ao contedo da correspondncia de outra pessoa, ou em outro caso o papel moeda que tem um tipo de tinta e uma gramatura diferente de outros papis encontrados no mercado dificultando a reproduo do mesmo. A forma de troca de informaes mudou com certeza, mas a filosofia da troca de informaes no sofreu tanta alterao, afinal o que se pretende to simplesmente movimentar a informao, seja em meio fsico (papel) ou em meio lgico (bits e bytes), mas talvez a maior alterao se perceba na facilidade de se alterar ou de se copiar (multiplicar) a informao seja ela falsa ou verdadeira, portanto a dificuldade reside na criao de mecanismos para que a informao seja autntica e que esta possa ser verificada, voltando-se para o meio fsico, uma soluo largamente difundida o uso de assinaturas, a assinatura passa representar uma parte da prpria identidade da pessoa e por ela ser reconhecido e autenticado. A assinatura digital j no um fato to simples, uma vez que criar uma informao e anexar uma assinatura a esse documento digital uma tarefa at certo ponto fcil, o estudo da criptografia entra nesse mrito, criando mecanismos e ferramentas, para dificultar a alterao, cpia ou outra forma de interveno na informao.

2.2.5.1 Conceito

A criptografia pode ser considerada como sendo o estudo de tcnicas matemticas relacionadas aos aspectos de segurana para que se escreva atravs de cdigos permitindo que somente o remetente e o destinatrio possam identificar e decifrar o contedo da informao e por isso vem subsidiar a segurana da informao nas questes de confidencialidade, integridade e autenticidade da informao.

- 29

2.2.5.2 Caractersticas

A criptografia tem como caracterstica a troca de informao com a cifragem da mesma utilizando-se de chaves para a composio do par emissor/receptor, com relao caracterstica dessa chave, podemos definir dois modelos, modelo simtrico, que utiliza uma chave nica e secreta e o modelo assimtrico, que utiliza uma chave pblica.

Modelo simtrico

Considere um sistema de criptografia composto pela transformao de encriptao e decriptao, {Ee: e

C} e {Dd: d C}, respectivamente, onde C a chave. O sistema de

criptografia chamado de simtrico, se para cada par de chaves (e,d), fcil se determinar d conhecendo-se somente e e pode-se determinar e conhecendo-se d. Na maioria dos modelos de chave simtrica e=d. Tendo como exemplo: Supondo-se que a chave de encriptao e definida pelo deslocamento das letras do alfabeto em trs posies, conforme mostrado abaixo: E Original Cifrado ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC

Uma mensagem dividida em pedaos de tamanho 2 m = ES TA ME NS AG EM NA OE SE GU RA encriptada como c = Ee(m)= HV WD PH QV DJ HP QD RH VH JX UD O modelo de criptografia simtrico pode ser descrito conforme o diagrama de blocos da figura 5.

- 30

Chave e

Canal seguro

Encriptao Ee(m) = c

Canal inseguro

Decriptao Dd(c) = m

Texto original Ameaa Emissor

Texto original

Receptor

Figura 5 Comunicao utilizando criptografia com o envio da chave por um canal seguro e a mensagem cifrada por um canal inseguro (simtrico). A chave de criptografia/decriptografia nica.

O grande problema enfrentado pelo mtodo simtrico a garantia de um canal seguro, ou ento que os dois lados, emissor/receptor, conheam o mecanismo de formao da chave simtrica. O mtodo simtrico pode ser quebrado atravs de criptoanlise, utilizando-se de estatstica da lngua da mensagem, uma vez que o alfabeto possui caractersticas probabilsticas com relao utilizao de letras em percentuais, pode-se atravs de manipulaes e projees computacionais, prever a ocorrncia de determinada letra, necessitando-se conhecer somente o tamanho de palavra escolhido para a cifragem, alguns mecanismos foram criados para tentar minimizar essa ocorrncia e conseqentemente, diminuir a probabilidade de ocorrncia das letras e so conhecidos como: Substituio e transposio.

Substituio cifragem por substituio uma cifragem por blocos de tamanho previamente definidos e que sofrero a substituio de smbolos ou grupo de smbolos, por outros smbolos ou grupo de smbolos, adiciona confuso mensagem e pode ser subdividida em substituio simples, homofnica e polialfabtica. A cifragem por substituio simples pode ser entendida como no exemplo anterior, onde o bloco era de tamanho 2 e os conjuntos podem ser definidos da seguinte forma:

Encriptao - 31

Ee(m) = (e(m1) e(m2)... e(mt)) = (c1c2...ct) = c Decriptao Dd(c) = (d(c1) d(c2)... d(ct)) = (m1m2...mt) = m Onde t o tamanho do bloco.

A cifragem por substituio homofnica realizada pela troca de smbolos por valores escolhidos aleatoriamente dentro de um conjunto de combinaes pr-definidas, por exemplo:

m = {a,b} e o conjunto de combinaes H(a) = {00,10} e H(b) = {01,11}, a mensagem m ser transmitida por uma das seguintes formas,

m = {a,b} = {0001, 0011, 1001, 1011} = c

A cifragem por substituio polialfabtica a troca de smbolos dentro de blocos de tamanho definido, mas com a troca individual dos smbolos dentro do bloco, atravs de permutaes definidas pela chave e os conjuntos so definidos da seguinte forma:

Encriptao Ee(m) = (p1(m1) p2(m2)... pt(mt)) Decriptao d = (p1-1 p2-1... pt-1)

Original e p1 p2

ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC GHIJKLMNOPQRSTUVWXYZABCDEF

Do exemplo anterior temos: m = ES TA ME NS AG EM NA OE SE GU RA

- 32

encriptada como c = Ee(m)= HY WG PK QY DM HS QG RK VK JA UG A vantagem de cifragem polialfabtica sobre a cifragem simples, que com a mudana individual dos smbolos, a estatstica da linguagem se perde uma vez que se usa de critrios de substituio diferentes para cada posio de smbolo dentro do bloco, mas uma criptoanlise pode determinar quais critrios foram utilizados, desde que se conhea o tamanho do bloco.

Transposio cifragem por transposio uma cifragem por blocos de tamanho previamente definidos e que sofrero uma permutao de smbolos, mantendo-se os smbolos originais, a mensagem dividida em blocos e esses blocos sofrem a permutao depois e so enviados para o receptor, adiciona difuso mensagem e os conjuntos so definidos da seguinte forma:

Encriptao Ee(m) = (me(1) me(2)... me(t)) Decriptao Dd(c) = (cd(1) cd(2)... cd(t)) A adio de confuso a uma mensagem est ligada necessidade de tornar a relao entre a chave e o texto o mais complexo possvel e a adio de difuso est ligada a necessidade de se diminuir as redundncias dentro da mensagem, num sistema de criptografia pode-se utilizar a adio em separado de confuso e difuso, como fazer uma combinao com a adio dos dois.

Modelo assimtrico

Considere um sistema de criptografia composto pela transformao de encriptao e decriptao, {Ee: e

C} e {Dd: d C}, respectivamente, onde C a chave. O sistema de

criptografia chamado de assimtrico, se para cada par de chaves (e,d), uma chave e (chave pblica) tornada pblica, ou seja, est disponvel para qualquer pessoa, - 33

enquanto a outra chave d (chave privada) mantida secreta, de forma que tendo-se a chave pblica, no existe como se descobrir a chave privada, como se analogamente a mensagem fosse colocada dentro de uma maleta com um cdigo de fechamento e que somente o receptor conhecesse esse cdigo, qualquer pessoa que colocasse uma mensagem dentro da maleta, aps fech-la, seria incapaz de abri-la por desconhecer o segredo de abertura (chave privada). O modelo de criptografia assimtrico pode ser descrito conforme o diagrama de blocos da figura 6.

Chave (pblica) e

Canal inseguro

Decriptao
(chave privada)

Canal inseguro

Encriptao Ee(m) = c

Dd(c) = m

Texto original Ameaa Receptor

Texto original

Emissor

Figura 6 Comunicao utilizando criptografia com o envio da chave pblica por um canal inseguro e a mensagem cifrada por um canal inseguro, mantendo-se a chave privada somente no receptor (assimtrico). A chave pblica e utilizada para a criptografia do texto original pelo emissor, mantendo-se em segredo a chave privada d no receptor, formado o par (d,e) de criptografia, a mensagem enviada e o receptor utiliza a chave privada para abrir a mensagem.

O modelo de criptografia assimtrica apesar de parecer slido e seguro pode ser alvo de uma interveno externa, por intermdio da interceptao do envio da chave pblica e a modificao para uma chave falsa que enviada ao emissor para que no momento de envio da mensagem cifrada, o interventor ou a ameaa, possa alterar o contedo da informao utilizando a chave falsa, e re-criptografar utilizando a chave pblica interceptada e enviar a informao alterada para o receptor, como pode ser visto no diagrama de blocos da figura 7. - 34

(2)

Encriptao Ee(m) = c

Chave (Pblica) e'


(1)

Decriptao Dd(c) = m

Ameaa

Chave e

(2)

Decriptao Dd(c) = m

(1)

Encriptao Ee(m) = c

Texto original

Texto original

Receptor

Emissor

Figura 7 Ataque utilizando-se de chave pblica falsa. A ameaa envia uma chave pblica (falsa) e para o emissor, que interpreta como sendo a chave pblica (verdadeira) do receptor e envia o texto cifrado para a ameaa
(1)

em seguida a ameaa criptografa a mensagem utilizando a chave pblica e (verdadeira) enviada

pelo receptor e envia para o receptor a mensagem alterada (2).

Resumidamente a comparao entre os dois modelos, simtrico e assimtrico, feita com relao forma de troca das chaves, enquanto no modelo simtrico a chave nica e mantida em segredo, no modelo assimtrico o par de chaves mantm uma chave privada e a outra pblica, e o modelo simtrico requer a utilizao de um canal seguro para a troca das chaves que bem poderia ser utilizado para a troca da informao uma vez que o canal seguro, enquanto que no modelo assimtrico no h a necessidade de um - 35

canal seguro, utilizando da citao popular um segredo s segredo enquanto somente uma pessoa o sabe!, o mesmo se aplicaria chave privada, mas fica vulnervel pela presena de uma chave falsa dentro do sistema, o que ir determinar que modelo utilizar exatamente a aplicao.

2.2.5.3 Keeloq e AES

O sistema de criptografia utilizado no modelo proposto definido em duas etapas, a primeira referente autenticao propriamente dita e a segunda referente a comunicao entre os mdulos (a ser implementada como uma continuao deste trabalho), para tanto segue um descritivo sobre cada um dos mtodos criptogrficos a serem utilizados.

KeeLoq - IFF

Para entendermos o mtodo de criptografia de propriedade da empresa Microchip, fabricante do microcontrolador e transcoder utilizados no projeto, necessrio um entendimento sobre o sistema chamado de IFF Identify Friend or Foe (Identificao de amigo ou inimigo), que foi utilizado durante as guerras como um mtodo de identificao dos avies que se aproximavam como amigos ou inimigos e o conceito principal baseado no uso de frmulas ao invs de valores fixos no processo de autenticao. Nesse processo simples, o mdulo central envia para o mdulo de autenticao um nmero grande escolhido randomicamente, tambm conhecido como desafio. O mdulo de autenticao utiliza uma frmula convenientemente definida para calcular uma resposta que ento enviada de volta para o mdulo central. O mdulo central compara a resposta recebida com o valor calculado localmente, se a frmula utilizada pelo mdulo de autenticao for a correta, a comparao ser exata sendo o mdulo considerado autntico ou compatvel (figura 8).

- 36

Produz o desafio x f1

desafio

f2

= Mdulo Central f1(x) y Autntico

resposta

y = f2(x) Mdulo Autenticao

Figura 8 Identify Friend or Foe

Pode-se perceber que nesse tipo de transmisso, no h o envio da frmula ou de chaves criptogrficas e o sistema pode ser repetido diversas vezes para que se possa ter uma maior consistncia, uma vez que a cada nova transmisso um novo desafio gerado randomicamente, qualquer interveno externa resultaria em diferentes desafios. O sistema KeeLoq IFF parte da base do IFF com o acrscimo de criptografia simtrica (patenteada) no mdulo central e no mdulo de autenticao. O KeeLoq uma ferramenta de criptografia robusta, com chave criptogrfica de 64 bits (cifragem por bloco) operando sobre blocos de dados com 32 bits (desafio/resposta). O mtodo pode ser ilustrado atravs da seqncia: 1. Um desafio (x) de 32 bits gerado pelo mdulo central, randomicamente; 2. O desafio enviado para o mdulo de autenticao; 3. O mdulo de autenticao, que tambm possui o algoritmo de criptografia KeeLoq, efetua a criptografia do desafio e retorna a resposta de 32bits; 4. O mdulo central decriptografa a resposta e gera um novo valor de 32bits (x); 5. O novo valor (x) comparado ao valor inicial do desafio (x); 6. Se os dois valores forem iguais, o mdulo ento autenticado e pode dar seguimento aos processamentos.

- 37

Produz o desafio x
Chave cript.

desafio

Chave cript. 64-bit Keeloq Criptog.

32-bit

64-bit Keeloq Decrip resposta

y = f2(x) x Mdulo Central Autntico = Mdulo Autenticao

Figura 9 KeeLoq - IFF

Se o mdulo de autenticao no for compatvel, a probabilidade de se descobrir a resposta (y) do desafio (x) de 1/232 ou em outras palavras uma em quatro bilhes. O processo pode ser repetido para que se tenha uma maior segurana e consistncia.

Advanced Encryption Standard - AES

Em 12 de setembro de 1997, o NIST National Institute of Standards and Technology (Instituto Nacional de Padres e Tecnologia), publicou um concurso com o intuito de selecionar um algoritmo para cifradores de bloco simtrico para as trs primeiras dcadas do sculo 21 e que seria o substituto do ento DES Data Encryption Standard. De todos os trabalho apresentados, restaram para a segunda fase somente 5: MARS, RC6, Rijndael, twofish e Serpent. [5] Os algoritmos foram testados com relao segurana e velocidade de execuo, de abril a maio de 2000 o NIST fez uma ampla pesquisa com os conferencistas participantes das rodadas AES e dentre todos os candidatos, o preferido foi o Rijndael. Em outubro de 2000 o cifrador Rijndael passou a ser chamado de AES. Os criadores do Rijndael so Vincent Rijmen e Joan Daemen da Universidade Catlica de Leuven na - 38

Blgica. O fato do Rijndael ser pequeno e rpido, mesmo com uma chave com o tamanho de 128 bits, permite o seu uso em aplicaes aonde a segurana podia ser a comparada ao desejado pelo DES, mas aonde os recursos computacionais so muito limitados como celulares, smartcards e microcontroladores. O AES um cifrador de bloco com tamanho de bloco e chave variveis entre 128, 192 e 256 bits. Isto significa que pode-se ter tamanho de blocos com tamanhos de chaves diferentes. A quantidade de rodadas necessrias para cifrar/decifrar funo do tamanho de bloco e chaves. O processo para cifrar e decifrar pode ser visualizado de uma maneira genrica na figura 10.

Criptografar

128/192/256 bits chave

128/192/256 bits Texto original

AES

128/192/256 bits Texto cifrado

Decriptografar

128/192/256 bits chave

128/192/256 bits Texto cifrado

AES-1

128/192/256 bits Texto original

Figura 10 AES simplificado

O AES opera com um determinado nmero de blocos de 32 bits que so ordenados em colunas de 4 bytes, as quais so chamadas de nmeros de blocos Nb. Os valores de Nb possveis so de 4, 6 e 8 equivalentes a blocos de 128, 192 e 256 bits (Nb x 32). A chave agrupada da mesma forma em colunas que o bloco de dados, e chamada de nmeros de chaves, com a sigla Nc. Na tabela 2 tem-se um exemplo para Nb=4 e Nc=4.
Tabela 2 Blocos de dados (dx,x) e bloco de chaves (cx,x). Dado [0] Dado [1] Dado [2] Dado [3] dado [4] dado [5] dado [6] dado [7] Dado [8] Dado [9] Dado [10] Dado [11] dado [12] dado [13] dado [14] dado [15] chave[0] chave[1] chave[2] chave[3] chave[4] chave[5] chave[6] chave[7] chave[8] chave[9] chave[10] chave[11] chave[12] chave[13] chave[14] chave[15]

- 39

Com base nos valores que Nb e Nc podem assumir que ser determinada a quantidade de rodadas a serem executadas, identificadas pela sigla Nr nmero de rodadas (tabela 3).
Tabela 3 Nmero de rodadas por tamanho de chave e de blocos.

No de rodadas (Nr) Chave de 16bytes Chave de 24bytes Chave de 32bytes

Bloco de 16bytes 10 12 14

Bloco de 24bytes 12 12 14

Bloco de 32bytes 14 14 14

Em cada rodada o bloco de dados sofre as seguintes alteraes:

1. Byte Sub Os bytes de cada bloco de dados so substitudos por seu equivalente em uma tabela de substituio (tabela-s) que no linear; 2. Shift row (deslocamento de linha) Os bytes so rotacionados em grupos de quatro bytes; 3. Mix Column O grupo de quatro bytes sofre uma multiplicao modular; 4. Add round Key (Adio da chave da rodada) Aplica-se a subchave da rodada ao grupo de dados atravs de uma operao de XOR (OU exclusivo), a chave deve possuir o mesmo tamanho do bloco.

Transformao byte-sub

A transformao byte-sub utiliza a substituio de bytes atravs de uma tabela-S (tabela de substituio) guardada na memria do microcontrolador, obtendo-se o novo valor atravs do endereo do valor a ser alterado, um exemplo de tabela-S pode ser visualizado na tabela 4, a volta pode ser obtida atravs da mesma tabela-S em sentido contrrio, ou seja, para um determinado endereo inicial o seu equivalente seria igual a 255-D (onde D seria o valor em Hexadecimal do caracter).

- 40

Tabela 4 Tabela-S em hexadecimal

Transformao Deslocamento de linha (Shift row)

A transformao shift row utiliza o rotacionamento do bloco de dados de acordo com uma tabela de rotao. A primeira linha do bloco de dados no sofre alterao e as linhas seguintes so rotacionadas esquerda com a alterao dos bytes, um exemplo de tabela de rotao pode ser visto na tabela 5.
Tabela 5 Shift row para uma configurao de 3 linhas (C1 a C3) e Nb=4

Nb 4 6 8
Dado [0] Dado [1] Dado [2] Dado [3]

C1 1 1 1

C2 2 2 3

C3 3 3 4
dado [8] dado [9] dado [10] dado [11] dado [12] dado [13] dado [14] dado [15] dado [0] dado [13] dado [10] dado [7] dado [4] dado [1] dado [14] dado [11] dado [8] dado [5] dado [2] dado [15] dado [12] dado [9] dado [6] dado [3]

dado [4] dado [5] dado [6] dado [7]

A operao inversa efetuada da mesma forma com a utilizao de rotao direita.

- 41

Transformao MixColumn

Na transformao de MixColumn as colunas dos bytes so consideradas como polinmios de grau 8 (1byte = 8bits) e feita uma multiplicao modular (x4 + 1) com um polinmio fixo e reversvel dado por: p(x) = 03hx3 + 01hx2 + 01hx + 02h; A multiplicao equivalente a uma rotao cclica dentro do vetor multiplicado (coluna) e pode ser definida como uma matriz de multiplicao do tipo:

O polinmio escolhido reversvel o que torna a operao inversa simples, bastando para tanto multiplicar as colunas pelo polinmio: p(x) = 0Bhx3 + 0Dhx2 + 09hx + 0Eh O que pode ser efetuado atravs da matriz de multiplicao inversa que segue:

Adio da chave da rodada (Add round Key)

A transformao de adio da chave da rodada, nada mais do que a operao de OU exclusivo (XOR) byte a bytes com a sub-chave da rodada, para isso o tamanho da chave da rodada deve ser o mesmo do tamanho definido para o bloco de dados.

- 42

3. Modelo Proposto
Como o objetivo principal deste trabalho aumentar a segurana na urna eletrnica com a utilizao de carto, necessrio integrar as disciplinas aprendidas no curso de engenharia de computao, sendo divididas entre a engenharia eltrica/eletrnica e a cincia da computao (figura 11), com nfase em engenharia eletrnica e programao com a utilizao de linguagem de baixo nvel, utilizando-se de contedo adquirido em disciplinas como microcontroladores, linguagem tcnica de programao e banco de dados.

Eletrnica Teoria e Prtica

Computao Teoria e Prtica

Figura 11 Engenharia de computao

Como este trabalho se limita a confidencialidade da informao na urna eletrnica, ou seja, autenticao do eleitor sem a correspondncia do voto, o mesmo ficou restrito seo eleitoral, sendo determinado o fluxo da informao conforme consta da figura 12. Autenticao do eleitor

Votao secreta e eletrnica

Recebe o comprovante

Fim
Figura 12 Fluxo da votao eletrnica

- 43

O eleitor ao entrar na seo de votao, se identifica junto ao mesrio utilizando o carto do eleitor com foto, aps a identificao visual pelo mesrio, o eleitor se encaminha para a urna e insere o carto do eleitor no leitor indicado na urna, o mdulo de autenticao da urna confere os dados do carto do eleitor com os dados contidos no mdulo banco de dados da urna e valida o carto para a votao, liberando o mdulo de votao (figura 13).

Identificao visual do eleitor

Autentica o carto na UE

BD da seo

Libera a votao
Figura 13 Fluxo da votao eletrnica especfico

A autenticao do carto na urna feita atravs do modelo criptogrfico KeeLoq, patenteado pelo fabricante dos microcontroladores PIC - Microchip, a serem utilizados nesse projeto e aps a autenticao, as informaes constantes do carto so acessadas e o nmero da inscrio, juntamente com a zona eleitoral, so criptografados com o modelo AES e a chave pr-definida e ento pesquisados no banco de dados criptografado da seo. A escolha do nmero de inscrio com a zona eleitoral se deve ao fato de ser do formato numrico e de tamanhos 12bytes e 4 bytes, respectivamente, o que gera um campo de 16bytes, que no por coincidncia o tamanho de bloco a ser utilizado para a criptografia AES. A tabela-S e a chave criptogrfica ficaro escondidas no cdigo da aplicao, para uma maior segurana e dificuldade de acesso, uma vez que os microcontroladores da Microchip possuem uma segurana contra a leitura do cdigo fonte, aps ter sido gravado no microcontrolador. O carto do eleitor contm os dados do eleitor de forma aberta (pblica), uma vez que o modelo criptogrfico KeeLoq utiliza-se de dados como o nmero de srie do transcoder e do microcontrolador, e outras informaes que podem ser introduzidas em - 44

tempo de programao, as informaes referentes ao eleitor podem ficar expostas, desde que no se conheam as demais informaes.

3.1

Hardware e Software

A utilizao do microcontrolador, alm de atingir o objetivo desse trabalho (aumentar a segurana na urna eletrnica), tambm simplifica o modelo. Se considerarmos o processo de votao como um acumulador de informaes pr-definidas, a funo da urna fica restrita acumulao dessas informaes, sem referncia a hora, eleitor ou outro dado alm do nmero escolhido e que deve ser guardado para uma posterior totalizao. Partindo-se deste princpio ocorre uma minimizao das funcionalidades excedentes, aumentando a segurana, com a diminuio de portas de possveis ataques e/ou vulnerabilidades, para tanto o sistema modular com dupla criptografia visa dificultar a ao de agentes externos ao processo e durante o processo. Utilizando-se de

microcontroladores de baixo custo e segurana criptogrfica o projeto pode ser facilmente ampliado ou remodelado, a programao segue a linha de execuo com desvios devido a interrupes ou mesmo por desvios de espera, utilizando-se ferramentas de programao na linguagem de mquina Assembler, com a possibilidade de utilizao de rotinas externas em C++. O modelo proposto pode ser descrito pela figura 14, que segue:

Leitora de carto

KEELOQr

Mdulo TRE zonal (BD)

Mdulo de autenticao

Mdulo de votao

AES

AES

Figura 14 diagrama do modelo proposto

- 45

4. Implementao
Dentro da filosofia adotada neste trabalho, a implementao tem como objetivo a integrao das disciplinas engenharia eltrica/eletrnica e a cincia da computao, utilizando microcontroladores e elementos ativos e passivos de eletrnica, bem como a programao em linguagem de mquina Assembler

4.1

Hardware e Software

Para o hardware foi escolhido o microcontrolador PIC16F636 do fabricante Microchip, por ter uma relao custo/benefcio muito boa, um microcontrolador de 8 bits, com clock de 20Mhz, arquitetura RISC com um set de 35 instrues, memria flash de programa com 2048 palavras, memria de dados SRAM com 128 bytes e EEPROM com 256 bytes, 12 portas de entrada e sada e 2 comparadores, possui um mdulo, em hardware, de criptografia, compatvel com a criptografia KeeLoq utilizada no carto do eleitor, transcoder HCS410. Os microcontroladores PIC possuem uma estrutura de mquina interna do tipo Harvard, o que o diferencia da maioria dos microcontroladores de mercado, que utilizam uma arquitetura do tipo Von-Neumann. A diferena entre estas duas arquiteturas est na forma de processamento dos dados e do programa pelo microcontrolador. Na arquitetura tradicional, Von-Neumann, o barramento interno (bus) de dados e instrues nico e geralmente de 8 bits. A arquitetura Harvard, possui dois barramentos internos, um para os dados e o outro para as instrues. Nos microcontroladores PIC, o barramento de dados sempre de 8 bits, enquanto que o barramento de instrues varia de 12, 14 ou 16 bits dependendo do microcontrolador (neste projeto o PIC16F636 possui barramento de instruo de 14 bits). Este tipo de arquitetura permite que enquanto uma instruo esteja sendo executada, outra instruo possa ser buscada da memria, melhorando o desempenho do processamento, alm disso como o barramento de instrues maior que o barramento de dados, 14 e 8 bits, respectivamente, o operador da instruo j inclui o dado e o local onde a instruo ir operar (se for necessrio), o que significa que apenas uma posio de memria utilizada por instruo, economizando-se endereos de memria de programa. - 46

Como o operador da instruo no reserva muito espao para o cdigo da instruo propriamente dito, os microcontroladores utilizam a tecnologia RISC (Reduced Instruction Set Computer computador com set de instrues reduzido), que possui apenas 35 instrues, ao contrrio dos microcontroladores com a tecnologia CISC (Complex Instruction Set Computer computador com set de instrues complexo) que possuem mais de cem instrues. Para o carto do eleitor, este projeto utiliza o transcoder HCS410, que um codificador/decodificador com a tecnologia Keeloq de criptografia, na configurao de Token com a conexo de 2 fios, dados e alimentao, conforme figura 15.

Figura 15 modelo de conexo 2 fios (Token)

A funo do HCS410 de guardar os dados do eleitor e comunicar com o mdulo de autenticao (PIC16F636) utilizando a autenticao com criptografia KeeLoq. Para o desenvolvimento da implementao, utilizado um protoboard para a montagem do Hardware e a programao feita de forma serial com um programador compatvel com o PICStart Plus. A conexo com o protoboard feita atravs de um cabo serial conectado ao computador de desenvolvimento que executa o programa MPLAB IDE v6.60 do fabricante Microchip, disponibilizado no site do fabricante (www.microchip.com). Como o microcontrolador PIC16F636, permite a gravao in-circuit, ou seja, permitido gravar o programa diretamente no microcontrolador, com este montado no circuito, bastando para isso tomar alguns cuidados com os elementos do circuito que estejam em contato com as portas utilizadas na gravao. A gravao feita de forma serial com a utilizao de 5 (cinco) pinos a seguir: Vdd Alimentao de 5Vcc; Vss Ground (GND); MCLR Tenso de programao, o microcontrolador necessita de uma tenso de 13Vcc neste pino para entrar em modo de programao, por isso a necessidade - 47

de se proteger os demais elementos do circuito que estejam em contato com este pino, contra possveis sobre-tenses e queimas; RB6 Clock da comunicao serial, controlado pelo gravador; RB7 Dados na comunicao serial, que podem ser pelo gravador (escrita) ou pelo PIC (leitura).

Como o modelo proposto referente a autenticao do eleitor, a seqncia lgica descrita a seguir:

PIC16F636 Recebe os dados do HCS410; Criptografa a informao; Busca na memria (criptografada) os dados do eleitor; Autentica ou no o eleitor na seo.

Baseado na seqncia lgica descrita acima se pode determinar o seguinte fluxo de programao:
Incio

Loop principal

Recebe os dados do HCS410

Dados?

(1) Criptografa a informao

Busca no BD da seo

Libera votao

OK?

Figura 16 - Fluxo de programao principal

- 48

(1) Criptografia

Informao HCS410

Inicializa o contador de rodadas = 10

Adiciona a chave

Byte Sub

Shift-row

Rodada = 1? N Mix Column

Adiciona a chave

Decrementa a rodada

Rodada = 0? S Fim

Figura 17 - Fluxo de criptografia AES

- 49

A programao feita em linguagem de mquina (Assembler) e compilada pelo programa MPLAB IDE v6.60 do fabricante Microchip, sendo depois enviado para o microcontrolador atravs do gravador serial. Para facilitar a visualizao do resultado, foi includo um display de cristal lquido para a comunicao entre o programa e o eleitor, sendo mostrado o dado coletado no HCS410 em formato original e o dado criptografado, seguido da informao de liberao ou no para a votao (figura 18).

1 G

0 D

0 M

8 H

4 A

7 E

2 J

3 Y

5 W

5 X

0 H

6 M

1 Q

4 L

2 K

9 B

Figura 18 Display de sada

Algumas

consideraes

so

efetivadas

com

relao

programao

do

microcontrolador, ao detectar os sinais de ACK de acordo do mdulo HCS410, o microcontrolador inicia a comunicao com o mdulo utilizando-se dos registradores de criptografia KeeLoq CRDAT 1 e recebe as informaes para serem guardadas em um vetor que ser criptografado em modo AES e ento buscado no BD contido na memria EEPROM de dados. Por ser uma linguagem de baixo nvel o controle sobre essas informaes tem de ser feito bit a bit, como por exemplo na rotina de adio da chave criptogrfica como segue:
; ************************************* ADICAO_CHAVE ********************************************* ; ESSA ROTINA FAZ: BLOCO ^= CHAVE ( ^= SIGNIFICA BLOCO = BLOCO XOR CHAVE ) ; ENTRADA: ; SAIDA..: ; GLOBAL.: BLOCO, CHAVE ; OBS....: ; ******************************************************************************************************** ADICAO_CHAVE: MOVF CHAVE+0x0,W XORWF BLOCO+0x0,F MOVF CHAVE+0x1,W XORWF BLOCO+0x1,F ; BLOCO[0] ^= CHAVE[0];

; BLOCO[1] ^= CHAVE[1];

_____________ 1 necessrio a autorizao expressa do fabricante Microchip para a descrio desses registradores e a sua utilizao, atravs do KeeLoq Encoder License Agreement.

- 50

MOVF CHAVE+0x2,W XORWF BLOCO+0x2,F

; BLOCO[2] ^= CHAVE[2];

MOVF CHAVE+0x3,W XORWF BLOCO+0x3,F MOVF CHAVE+0x4,W XORWF BLOCO+0x4,F MOVF CHAVE+0x5,W XORWF BLOCO+0x5,F MOVF CHAVE+0x6,W XORWF BLOCO+0x6,F MOVF CHAVE+0x7,W XORWF BLOCO+0x7,F MOVF CHAVE+0x8,W XORWF BLOCO+0x8,F MOVF CHAVE+0x9,W XORWF BLOCO+0x9,F MOVF CHAVE+0x0A,W XORWF BLOCO+0x0A,F MOVF CHAVE+0x0B,W XORWF BLOCO+0x0B,F MOVF CHAVE+0x0C,W XORWF BLOCO+0x0C,F MOVF CHAVE+0x0D,W XORWF BLOCO+0x0D,F MOVF CHAVE+0x0E,W XORWF BLOCO+0x0E,F MOVF CHAVE+0x0F,W XORWF BLOCO+0x0F,F RETURN

; BLOCO[3] ^= CHAVE[3];

; BLOCO[4] ^= CHAVE[4];

; BLOCO[5] ^= CHAVE[5];

; BLOCO[6] ^= CHAVE[6];

; BLOCO[7] ^= CHAVE[7];

; BLOCO[8] ^= CHAVE[8];

; BLOCO[9] ^= CHAVE[9];

; BLOCO[10] ^= CHAVE[10];

; BLOCO[11] ^= CHAVE[11];

; BLOCO[12] ^= CHAVE[12];

; BLOCO[13] ^= CHAVE[13];

; BLOCO[14] ^= CHAVE[14];

; BLOCO[15] ^= CHAVE[15];

Mas ao mesmo tempo esse controle permite que se conhea o estado atual de cada bit, o que pode ser til em uma procura por problemas de execuo. Com relao leitura dos dados gravados na EEPROM, uma facilidade implementada a no necessidade de uma rotina de gravao de dados, uma vez que os mesmos esto previamente gravados. No caso da implementao os dados esto armazenados na prpria memria EEPROM do microcontrolador, mas caso seja necessrio, os dados podem ser armazenados em uma memria externa, sendo preciso criar modelos de segurana para o acesso a esses dados. - 51

Outros controles importantes a serem considerados em toda implementao que utilize microcontroladores, so os controles de tempo ou delay, a comunicao dos microcontroladores com outros perifricos (memrias, Displays, etc) devem ser temporizados, por exemplo, na comunicao como display de cristal lquido (LCD), o microcontrolador interno do display, necessita de um delay de pelo menos 15ms para que a tenso de alimentao do display atinja o pico de 4,5V.
;***************************************************************************** ; Rotina de criao de delays para a comunicao como LCD ; ; Delay_tempo = ((DELAY_valor * 3) + 4) * tempo_ciclo ; DELAY_valor = (Delay_tempo - (4 * Cycle_tempo)) / (3 * tempo_ciclo) ; ; Delay_tempo = ((32 * 3) + 4) * 1uSeg ; = 100uSeg ; DELAY_valor = (500uSeg - 4) / 3 ; = 165.33 ; = 165 ;***************************************************************************** DELAY500 MOVLW D'165' ; +1 1 cycle MOVWF DELAY ; +2 1 cycle DELAY500_LOOP DECFSZ DELAY, F ; passo 1 1 cycle GOTO DELAY500_LOOP ; passo 2 2 cycles DELAY500_FIM RETURN ; +3 2 cycles ; ; X_DELAY500 MOVWF X_DELAY ; +1 1 cycle X_DELAY500_LOOP CALL DELAY500 ; passo1 espera 500uSeg DECFSZ X_DELAY, F ; passo2 1 cycle GOTO X_DELAY500_LOOP ; passo3 2 cycles X_DELAY500_FIM RETURN ; +2 2 cycles

A programao baseada no fluxograma descrito acima (figura 16) e tem a seqncia de execuo linear, ficando preso em um loop infinito esperando o sinal de dados, na implementao, o acionamento do boto conforme figura 19.

- 52

Figura 19 Esquema eletrnico do modelo proposto.

- 53

5. Concluso
A segurana da informao nos tempos atuais uma disciplina que est sendo detalhada exausto, com diversas pesquisas e trabalhos sendo desenvolvidos. A necessidade de se desenvolver mecanismos que venham a dificultar ataques ou o uso indevido de informao por terceiros, tem gerado solues das mais complexas s mais simples, tendo sido foco deste trabalho o aumento da segurana na urna eletrnica. Com a utilizao de microcontroladores o modelo proposto permitiu a utilizao de conceitos de engenharia eletrnica (hardware) e de conceitos da cincia da computao (software). A simplicidade da arquitetura do microcontrolador aliada a sua disponibilidade de implementao de segurana atravs de modelos criptogrficos, o torna uma ferramenta bastante potente e ao mesmo tempo eficiente com relao ao modelo proposto, aumentando-se o grau de dificuldade de interveno externa e diminuindo-se as provveis vulnerabilidades do sistema como um todo. As dificuldades encontradas no desenvolvimento deste projeto estiveram em grande parte relacionadas programao em linguagem de mquina (912 linhas de cdigo), por ser essa uma linguagem de baixo nvel e por ter o controle bit a bit do microcontrolador, envolvendo uma parte substancial de tempo para a implementao. Com a utilizao das ferramentas disponveis no software de desenvolvimento MPLAB, foi possvel efetuar investigaes em determinados momentos da programao para se perceber o estado de determinados bits e de algumas variveis, o que despendeu muito tempo mas permitiu um controle maior do fluxo da programao. Como sugesto de trabalhos futuros, pode-se considerar a implementao do mdulo de votao e/ou o desenvolvimento de aplicativo de banco de dados para a apurao e totalizao dos votos, bem como o aplicativo de configurao dos microcontroladores para a distribuio nos TREs. Concluindo, a soluo apresentada tem como caracterstica principal o aumento da segurana da urna eletrnica agregando tambm a simplificao de hardware, o que permite um controle maior sobre as possibilidades de interveno com um nmero menor de portas de acesso e uma vez gravada a informao no microcontrolador, este pode operar em modo de proteo de cdigo (code-protection) que no permite o acesso s informaes contidas no microcontrolador, sejam estas, dados gravados na EEPROM ou o programa propriamente dito. - 54

- 55

6. Referncias Bibliogrficas
[1]http://www.tse.gov.br ltimo acesso em 12/05/2006. [2]MARTINS, Jos Carlos Cordeiro. Gesto de projetos de segurana da informao, So Paulo-SP, 2003; [3]COLTRO, Renata. Segurana: prioridade coorporativa Computerworld, So Paulo, p. 26, 13 mar 2002. [4]ARTIGOS, extrado da Lei 9.504 do Tribunal Superior Eleitoral; [5]RELATRIO UNICAMP Avaliao do sistema informatizado de eleies / maio 2002; [6]JAKOBSKIND, Mrio Augusto e MANESCHY, Osvaldo, Burla eletrnica, Rio de Janeiro-RJ, 2002; [7]ADIDA, Ben, Special Topics in Cryptography, Instrutor: Ran Canetti, Lecture 17: Introduction to Electronic Voting, Abril 8, 2004, MIT/OCW. [8]CHAUM, D., Security without Identification, Card Computers to make Big Brother Obsolete, Comunications of the ACM, october 1985, pp 1030-1044. [9]CHAUM, D., Achieving Electronic Privacy, Scientific American, August 1992, pp. 96-101. [10]SPAFFORD, G., Diretor de Operaes de Computador, Auditoria e Tecnologia da Segurana, Purdue University/France; [11]ASSOCIAO BRASILEIRA DE NORMAS TCNICAS - NBR ISO/IEC17799: Tecnologia da informao - Cdigo de prtica para a gesto da segurana da informao. Rio de Janeiro, 2001. [12]GOLDREICH, O. Foundations of Cryptography: Basic Tools. New York, NY: Cambridge University Press, 2001. [13]DIFFIE, W. and HELLMAN, W. E., New directions in cryptography, IEEE trans. on information theory, nov. 1976. [14]MENEZES, A. J., OORSCHOT, P. C. V. and VANSTONE, S. A., Handbook of applied cryptography, California, CRC press, August, 2001. [15]FERGUSON, N., SCHNEIER, B., Practical cryptography, Wiley Publishing, Indianapolis, Indiana, 2003. [16]http://www.esat.kuleuven.ac.be/~rijmen/rijndael - acessado em 12/05/2006. [17]http://csrc.nist.gov/CryptoToolkit/aes/ - acessado em 12/05/2006. [18]RIJMEN, V. & DAEMEN, J., AES proposal: Rijndael, NIST, october,1999. - 56

Anexo A
Hardware da Urna Eletrnica (UE).

Urna eletrnica de 1996 (UE 96):

o Processador 386 SX 40 MHz o Cdigo Braille o 2 Mb de memria o vdeo de cristal lquido monocromtico de 9 Sharp o teclado tipo membrana o Impressora de impacto Epson o Dois drives de disquetes Sony o Sistema Operacional: VirtuOS o Peso: 10 Kg o Fonte de alimentao: AC 90 240V / DC 12V o Autonomia de 1:30 horas com bateria interna o Autonomia de 12 horas com bateria externa automotiva

Urna eletrnica de 1996 (UE 96) - Upgrade:

o Processador 386 SX 40 MHz o Cdigo Braille o 2 Mb de memria o vdeo de cristal lquido monocromtico de 9 o teclado de borracha condutiva o Impressora impacto Epson o 2 flash card o Peso: 10 Kg o Fonte de alimentao: AC 90 240V / DC 12V o Autonomia de 1:30 horas com bateria interna o Autonomia de 12 horas com bateria externa automotiva - 57

Urna eletrnica de 1998 (UE 98):

o Cyrix media GX-133 Mhz o Cdigo Braille o 8 Mb de memria o vdeo de cristal lquido monocromtico de 9 sharp o teclado tipo borracha condutiva o 2 flash card o 1 Drive de disquete Sony o Fonte alimentao: 35 W o Impressora: Axiohm - Trmica 35 colunas o Sistema Operacional: VirtuOs o Peso: 8 Kg o Fonte de alimentao: AC 90 240V / DC 12V o Autonomia de 4 horas com bateria interna o Autonomia de 15 horas com bateria externa automotiva

Urna eletrnica de 2000 (UE 2000):

o Processador Cyrix media GX-166 Mhz o 16 Mb de memria o vdeo de cristal lquido monocromtico de 9 Nanya o teclado mecnico resistente e especial para eleies o Duas Flash Card (FI e FV) o 1 Drive de disquete o Impressora: MECAF/ROHM o fone auricular para cegos o Peso: 8 Kg o Fonte de alimentao: AC 90 240V / DC 12V o Autonomia de 12 horas com bateria interna

- 58

Anexo B
Extrato da Lei no. 9.504 do TSE ... Do Sistema Eletrnico de Votao e da Totalizao dos Votos Art. 59. A votao e a totalizao dos votos sero feitas por sistema eletrnico, podendo o Tribunal Superior Eleitoral autorizar, em carter excepcional, a aplicao das regras fixadas nos arts. 83 a 89. 1 A votao eletrnica ser feita no nmero do candidato ou da legenda partidria, devendo o nome e fotografia do candidato e o nome do partido ou a legenda partidria aparecer no painel da urna eletrnica, com a expresso designadora do cargo disputado no masculino ou feminino, conforme o caso. 2 Na votao para as eleies proporcionais, sero computados para a legenda partidria os votos em que no seja possvel a identificao do candidato, desde que o nmero identificador do partido seja digitado de forma correta. 3 A urna eletrnica exibir para o eleitor, primeiramente, os painis referentes s eleies proporcionais e, em seguida, os referentes s eleies majoritrias. 4o A urna eletrnica dispor de mecanismo que permita a impresso do voto, sua conferncia visual e depsito automtico, sem contato manual, em local previamente lacrado, aps conferncia pelo eleitor. (Pargrafo includo pela Lei n 10.408, de 10.1.2002) 5o Se, ao conferir o voto impresso, o eleitor no concordar com os dados nele registrados, poder cancel-lo e repetir a votao pelo sistema eletrnico. Caso reitere a discordncia entre os dados da tela da urna eletrnica e o voto impresso, seu voto ser colhido em separado e apurado na forma que for regulamentada pelo Tribunal Superior Eleitoral, observado, no que couber, o disposto no art. 82 desta Lei.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 6o Na vspera do dia da votao, o juiz eleitoral, em audincia pblica, sortear trs por cento das urnas de cada zona eleitoral, respeitado o limite mnimo de trs urnas por Municpio, que devero ter seus votos impressos contados e conferidos com os resultados apresentados pelo respectivo boletim de urna.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) - 59

7o A diferena entre o resultado apresentado no boletim de urna e o da contagem dos votos impressos ser resolvida pelo juiz eleitoral, que tambm decidir sobre a conferncia de outras urnas.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 4o A urna eletrnica dispor de recursos que, mediante assinatura digital, permitam o registro digital de cada voto e a identificao da urna em que foi registrado, resguardado o anonimato do eleitor. (Redao dada pela Lei n 10.740, de 1.10.2003) 5o Caber Justia Eleitoral definir a chave de segurana e a identificao da urna eletrnica de que trata o 4o. (Redao dada pela Lei n 10.740, de 1.10.2003) 6o Ao final da eleio, a urna eletrnica proceder assinatura digital do arquivo de votos, com aplicao do registro de horrio e do arquivo do boletim de urna, de maneira a impedir a substituio de votos e a alterao dos registros dos termos de incio e trmino da votao. (Redao dada pela Lei n 10.740, de 1.10.2003) 7o O Tribunal Superior Eleitoral colocar disposio dos eleitores urnas eletrnicas destinadas a treinamento. (Redao dada pela Lei n 10.740, de 1.10.2003) 8o O Tribunal Superior Eleitoral colocar disposio dos eleitores urnas eletrnicas destinadas a treinamento.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) Art. 60. No sistema eletrnico de votao considerar-se- voto de legenda quando o eleitor assinalar o nmero do partido no momento de votar para determinado cargo e somente para este ser computado. Art 61. A urna eletrnica contabilizar cada voto, assegurando-lhe o sigilo e inviolabilidade, garantida aos partidos polticos, coligaes e candidatos ampla fiscalizao. Art. 61A. Os tribunais eleitorais somente proclamaro o resultado das eleies depois de procedida a conferncia a que se referem os 6o e 7o do art. 59.(Artigo includo pela Lei n 10.408, de 10.1.2002) (Revogada pela Lei n 10.740, de 1.10.2003) Art. 62. Nas Sees em que for adotada a urna eletrnica, somente podero votar eleitores cujos nomes estiverem nas respectivas folhas de votao, no se aplicando a ressalva a que se refere o art. 148, 1, da Lei n 4.737, de 15 de julho de 1965 Cdigo Eleitoral. Pargrafo nico. O Tribunal Superior Eleitoral disciplinar a hiptese de falha na urna eletrnica que prejudique o regular processo de votao. Das Mesas Receptoras

- 60

Art. 63. Qualquer partido pode reclamar ao Juiz Eleitoral, no prazo de cinco dias, da nomeao da Mesa Receptora, devendo a deciso ser proferida em 48 horas. 1 Da deciso do Juiz Eleitoral caber recurso para o Tribunal Regional, interposto dentro de trs dias, devendo ser resolvido em igual prazo. 2 No podem ser nomeados presidentes e mesrios os menores de dezoito anos. Art. 64. vedada a participao de parentes em qualquer grau ou de servidores da mesma repartio pblica ou empresa privada na mesma Mesa, Turma ou Junta Eleitoral. Da Fiscalizao das Eleies Art. 65. A escolha de fiscais e delegados, pelos partidos ou coligaes, no poder recair em menor de dezoito anos ou em quem, por nomeao do Juiz Eleitoral, j faa parte de Mesa Receptora. 1 O fiscal poder ser nomeado para fiscalizar mais de uma Seo Eleitoral, no mesmo local de votao. 2 As credenciais de fiscais e delegados sero expedidas, exclusivamente, pelos partidos ou coligaes. 3 Para efeito do disposto no pargrafo anterior, o presidente do partido ou o representante da coligao dever registrar na Justia Eleitoral o nome das pessoas autorizadas a expedir as credenciais dos fiscais e delegados. Art. 66. Os partidos e coligaes podero fiscalizar todas as fases do processo de votao e apurao das eleies, inclusive o preenchimento dos boletins de urna e o processamento eletrnico da totalizao dos resultados, sendo-lhes garantido o conhecimento antecipado dos programas de computador a serem usados. 1 No prazo de cinco dias, a contar do conhecimento dos programas de computador a que se refere este artigo, o partido ou coligao poder apresentar impugnao fundamentada Justia Eleitoral. 2 Os partidos concorrentes ao pleito podero constituir sistema prprio de fiscalizao, apurao e totalizao dos resultados, contratando, inclusive, empresas de auditoria de sistemas, que, credenciadas junto Justia Eleitoral, recebero, previamente, os programas de computador e, simultaneamente, os mesmos dados alimentadores do sistema oficial de apurao e totalizao.

- 61

Art. 66. Os partidos e coligaes podero fiscalizar todas as fases do processo de votao e apurao das eleies e o processamento eletrnico da totalizao dos resultados.(Redao dada pela Lei n 10.408, de 10.1.2002) 1o Todos os programas de computador de propriedade do Tribunal Superior Eleitoral, desenvolvidos por si ou sob encomenda, utilizados nas urnas eletrnicas para o processo de votao e apurao, sero apresentados para anlise dos partidos e coligaes, na forma de programas-fonte e programas-executveis, inclusive os sistemas aplicativo e de segurana e as bibliotecas especiais, sendo que as chaves eletrnicas privadas e senhas eletrnicas de acesso se mantero no sigilo da Justia Eleitoral.(Redao dada pela Lei n 10.408, de 10.1.2002) 2o A compilao dos programas das urnas eletrnicas, referidos no 1o, ser feita em sesso pblica, com prvia convocao dos fiscais dos partidos e coligaes, aps o que sero lacradas cpias dos programas-fonte e dos programas

compilados.(Redao dada pela Lei n 10.408, de 10.1.2002) 3o No prazo de cinco dias, a contar da sesso referida no 2o, o partido ou coligao poder apresentar impugnao fundamentada Justia Eleitoral.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 4o Havendo necessidade de modificao dos programas, a sesso referida no 3o realizar-se-, novamente, para este efeito.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 1o Todos os programas de computador de propriedade do Tribunal Superior Eleitoral, desenvolvidos por ele ou sob sua encomenda, utilizados nas urnas eletrnicas para os processos de votao, apurao e totalizao, podero ter suas fases de especificao e de desenvolvimento acompanhadas por tcnicos indicados pelos partidos polticos, Ordem dos Advogados do Brasil e Ministrio Pblico, at seis meses antes das eleies. (Redao dada pela Lei n 10.740, de 1.10.2003) 2o Uma vez concludos os programas a que se refere o 1o, sero eles apresentados, para anlise, aos representantes credenciados dos partidos polticos e coligaes, at vinte dias antes das eleies, nas dependncias do Tribunal Superior Eleitoral, na forma de programas-fonte e de programas executveis, inclusive os sistemas aplicativo e de segurana e as bibliotecas especiais, sendo que as chaves eletrnicas privadas e senhas eletrnicas de acesso manter-se-o no sigilo da Justia Eleitoral. Aps

- 62

a apresentao e conferncia, sero lacradas cpias dos programas-fonte e dos programas compilados. (Redao dada pela Lei n 10.740, de 1.10.2003) 3o No prazo de cinco dias a contar da data da apresentao referida no 2o, o partido poltico e a coligao podero apresentar impugnao fundamentada Justia Eleitoral. (Redao dada pela Lei n 10.740, de 1.10.2003) 4o Havendo a necessidade de qualquer alterao nos programas, aps a apresentao de que trata o 3o, dar-se- conhecimento do fato aos representantes dos partidos polticos e das coligaes, para que sejam novamente analisados e lacrados. (Redao dada pela Lei n 10.740, de 1.10.2003) 5o A carga ou preparao das urnas eletrnicas ser feita em sesso pblica, com prvia convocao dos fiscais dos partidos e coligaes para a assistirem e procederem aos atos de fiscalizao, inclusive para verificarem se os programas carregados nas urnas so idnticos aos que foram lacrados na sesso referida no 2o deste artigo, aps o que as urnas sero lacradas.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) 6o No dia da eleio, ser realizada, por amostragem, auditoria de verificao do funcionamento das urnas eletrnicas, atravs de votao paralela, na presena dos fiscais dos partidos e coligaes, nos moldes fixados em resoluo do Tribunal Superior Eleitoral. (Pargrafo includo pela Lei n 10.408, de 10.1.2002) 7o Os partidos concorrentes ao pleito podero constituir sistema prprio de fiscalizao, apurao e totalizao dos resultados contratando, inclusive, empresas de auditoria de sistemas, que, credenciadas junto Justia Eleitoral, recebero, previamente, os programas de computador e os mesmos dados alimentadores do sistema oficial de apurao e totalizao.(Pargrafo includo pela Lei n 10.408, de 10.1.2002) Art. 67. Os rgos encarregados do processamento eletrnico de dados so obrigados a fornecer aos partidos ou coligaes, no momento da entrega ao Juiz Encarregado, cpias dos dados do processamento parcial de cada dia, contidos em meio magntico. Art. 68. O boletim de urna, segundo modelo aprovado pelo Tribunal Superior Eleitoral, conter os nomes e os nmeros dos candidatos nela votados. 1 O Presidente da Mesa Receptora obrigado a entregar cpia do boletim de urna aos partidos e coligaes concorrentes ao pleito cujos representantes o requeiram at uma hora aps a expedio. - 63

2 O descumprimento do disposto no pargrafo anterior constitui crime, punvel com deteno, de um a trs meses, com a alternativa de prestao de servio comunidade pelo mesmo perodo, e multa no valor de um mil a cinco mil UFIR. Art. 69. A impugnao no recebida pela Junta Eleitoral pode ser apresentada diretamente ao Tribunal Regional Eleitoral, em quarenta e oito horas, acompanhada de declarao de duas testemunhas. Pargrafo nico. O Tribunal decidir sobre o recebimento em quarenta e oito horas, publicando o acrdo na prpria sesso de julgamento e transmitindo imediatamente Junta, via telex, fax ou qualquer outro meio eletrnico, o inteiro teor da deciso e da impugnao.

- 64

Anexo C
... 2.6 CONTROLE E CLASSIFICAO DE ATIVOS DE INFORMAO

Os objetivos desta seo so definir a classificao, o registro e o controle das informaes da organizao.

2.6.1 Contabilizao dos ativos de informao

A contabilizao tem como objetivo manter a proteo adequada dos ativos de informao da organizao. Por isso, faz-se necessrio inventariar todos os ativos de informao, para garantir que a proteo seja mantida de forma correta.

A informao deve possuir um proprietrio responsvel e identificado. A ele atribuda a responsabilidade pelo controle da implementao e manuteno.

- Inventrio dos ativos de informao O objetivo do inventrio dos ativos da informao garantir a implementao efetiva e correta das protees. Assim, necessrio que a organizao seja capaz de identificar seus ativos de informao, com seus respectivos valores e importncia, e cujos nveis de proteo implementados estejam relacionados diretamente com eles. Para tanto, se faz necessrio estruturar e manter um inventrio dos principais ativos associados com seus respectivos sistemas de informao. Cada ativo de informao e seu respectivo proprietrio devem estar claramente identificado, assim como a classificao de segurana desse ativo deve estar acordada e documentada, juntamente com sua localizao atual (dado importante para o plano de contingncia).

2.6.2 Classificao da informao O objetivo da classificao da informao garantir que os ativos de informao recebam um nvel adequado de proteo, pois a informao possui vrios nveis de sensibilidade e criticidade. A informao deve ser classificada para indicar a importncia, a prioridade e o nvel de proteo. Pode ser que informaes mais sensveis recebam um - 65

nvel adicional de proteo ou um tratamento especial. Um sistema de classificao da informao deve ser usado com intuito de definir nveis mais adequados de proteo.

- Recomendaes para classificao recomendado que a classificao da informao e seus respectivos controles de proteo levem em considerao as necessidades de compartilhamento ou restrio da informao com seus respectivos impactos nos negcios. A informao deve ser classificada e rotulada de acordo com seu valor, sensibilidade e criticidade, e esta rotulao deve ser feita de forma bem criteriosa, para evitar classificaes que no condizem com a realidade da informao.

As regras de classificao devem, ainda, levar em considerao que algumas informaes no devem possuir uma classificao fixa, pois sua sensibilidade varia com o tempo, e que sua rotulao pode ser modificada de acordo com uma poltica predeterminada. Ateno especial deve ser dada interpretao dos rtulos nas informaes de terceiros, para averiguar se as definies destes so as mesmas utilizadas pela organizao. A responsabilidade pela classificao da informao e sua reviso peridica devem ficar a cargo de seu autor ou do proprietrio responsvel por ela.

- Rtulos e tratamento da informao importante definir os procedimentos para rotular a informao em conformidade com a poltica de classificao da informao adotada pela organizao. Cada classificao deve abranger as atividades de cpia,armazenamento e tipos de transmisso a que a informao est sujeita, e ainda, como e quando dever ser executada a destruio de sua mdia.

- 66

Anexo D
; ******************************************************************* ; DESCRIO: CODIGO FONTE DA AUTENTICACAO NA URNA ELETRONICA ; AUTOR....: SERGIO KOBAYASHI ; TRABALHO DE PROJETO FINAL DE GRADUACAO ; PROGRAMA URNA.ASM ; VERSO...: 1.0 DATA: 05/05/06 ATUALIZACAO: 15/06/06 ; ******************************************************************* ; DESCRIO DO ARQUIVO ; ******************************************************************* ; ******************************************************************* LIST P=PIC16F636 #INCLUDE P16F636.inc #INCLUDE S_TABELA.inc

; GUARDA DA TABELA S E INICIALIZA NO ; ENDERECO 0x0700

; ******************************************************************* ; CONFIGURAES DO MICROCONTROLADOR ; ******************************************************************* ; __CONFIG _CP_OFF & _WDT_ON & _BODEN_OFF & _PWRTE_ON & _RC_OSC ; ************************* CONSTANTES ****************************** INIT_RAM0 ROUNDS POS_MEM EQU 0x20 EQU EQU EQU EQU 4 5 7 6 5 4 3 2 1 0 0x23 0x24 ; PONTO INICIAL DA RAM NO SEGMENTO 0 ; NUMERO DE RODADAS ; ENDERECO ONDE ESTA ARMAZENADA A INSCRICAO

0x0A 0x00

LCD_DATA_TEMP LCD_CTRL LCD_E LCD_RS RC3 RC2 RC1 RC0 RA5 RA4 RA2 RA1 DELAY X_DELAY EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU

PORTA ; PORTA DE DADOS PARA O LCD PORTC ; PORTAS DE CONTROLE DO LCD ; LCD ENABLE ; LCD RS ; LCD dataline 7 (MSB) ; LCD dataline 6 ; LCD dataline 5 ; LCD dataline 4 ; LCD dataline 3 ; LCD dataline 2 ; LCD dataline 1 ; LCD dataline 0 (LSB) ; USADO NA ROTINA DE DELAY ; USADO NA ROTINA DE X_DELAY

; ************************** VARIAVEIS ****************************** BLOCO CHAVE AUX AUX1 EQU EQU EQU EQU 0x20 0x30 0x40 0x41 ; VETOR DE BLOCO ( 16 bytes*8 => 128 bits) ; VETOR DA CHAVE ( 16 bytes*8 => 128 bits) ; VARIAVEIS ;

- 67

AUX2 AUX3 ROUND_CNT RCON

EQU EQU EQU EQU

0x42 0x43 0x44 0x45 ; CONTADOR DE RODADAS PARA CRIPTOGRAFIA ;

; ************************* EEPROM ********************************** ; DEFINICAO DO ENDERECO INICIAL DA EEPROM ; ******************************************************************* ORG H'2100'+POS_MEM ; INICIO DA EEPROM

;****************** INICIO DA AREA DE PROGRAMA ********************** ; DEFINICAO DO ENDERECO INICIAL DO PROGRAMA E ROTINAS DE INTERRUPCAO ; ******************************************************************************** ORG INICIO: GOTO MAIN 0x00 ; ENDERECO INICIAL DO PROGRAMA

; VAI A ROTINA PRINCIPAL

;********** INICIO DA AREA DE TRATAMENTO DE INTERRUPCAO ************* ; COMO NAO HA INTERRUPCOES A ROTINA E RESTRITA AO ENDERECO ; E AO RETORNO. ESSA ROTINA NAO E NECESSARIA, MAS A INCLUSAO ; PODE EVITAR QUALQUER "BUG" CASO SEJA INTERPRETADA ALGUMA INT. ; ******************************************************************* ORG INT_CTRL: RETFIE 0x04 ; ENDERECO DE CONTROLE DE INTERRUPCAO

; RETORNO DA INTERRUPCAO

;********************** ROTINA DE CRIPTOGRAFIA ********************** ; ESSA ROTINA CRIPTOGRAFA O CODIGO DO ELEITOR PARA A BUSCA ; ******************************************************************* MAIN: BTFSC DADOS GOTO MAIN CALL INIT_CPU CALL INIT_DISPLAY CALL LE_BLOCO CALL LE_CHAVE CALL CRIPT CALL BUSCA_MEM GOTO $

; CHECA SE TEM DADOS ; NAO, LOOP INFINITO ; SIM, INICIALIZA OS REGISTRADORES DA CPU ; INICIALIZA DISPLAY LCD ; LE A INSCRICAO A SER CRIPTOGRAFADO ; LE A CHAVE USADA NA CRIPTOGRAFIA ; CRIPTOGRAFA ; BUSCA NA EEPROM

; ********************* INIT_CPU ************************************ ; ESSA ROTINA LIMPA A RAM NO SEGMENTO 0 ; ENTRADA: ; SAIDA..: ; GLOBAL.: ; OBS....: ; ******************************************************************* INIT_CPU: MOVLW INIT_RAM0 MOVWF FSR LOOP_CRAM0 CLRF INDF

; APONTA O INICIO DA RAM

; APAGA O PONTEIRO DA RAM

- 68

INCF FSR,F ; INCREMENTA O PONTEIRO BTFSS FSR,7 ; ENQUANTO FSR < 0x80 (D128) EXECUTA O LOOP GOTO LOOP_CRAM0 RETURN ; ********************* INIT_DISPLAY ************************************ ; ESSA ROTINA INICIALIZA O DISPLAY LCD ; ENTRADA: ; SAIDA..: ; GLOBAL.: ; OBS....: ; ******************************************************************* INIT_DISPLAY: MOVLW 0x1E CALL X_DELAY500 MOVLW CALL MOVLW CALL MOVLW CALL RETURN TTT: MOVWF BCF BSF BCF RETURN LCD_DATA_TEMP RS E E ;COPIA W PARA LCD ;MODO INSTRUO DO DISPLAY ;SET BIT E (ENABLE) ;CLEAR BIT E (DISABLE) B'00001101' LCD_INST B'00000001' LCD_INST B'00000110' LCD_INST

; DELAY DE 15ms (30 * 0,5ms = 15ms) ;DISPLAY ON, CURSOR OFF, BLINKING OFF

;CLEAR DISPLAY

;CURSOR_RIGHT ON, AUTO_SHIFT OFF

; ************************** LE_BLOCO ******************************* ; ESSA ROTINA LE O BLOCO DE DADOS DO CARTAO DO ELEITOR ; ENTRADA: INSC[12] + ZN_EL[4] ; SAIDA..: BLOCO[16]={B0,B1,...,B15} ; GLOBAL.: BLOCO,AUX,FSR ; OBS....: ; ******************************************************************* LE_BLOCO: MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF

0x0 BLOCO+0x0 0x0 BLOCO+0x1 0x0 BLOCO+0x2 0x0 BLOCO+0x3 0x0 BLOCO+0x4 0x0 BLOCO+0x5 0x0 BLOCO+0x6 0x0 BLOCO+0x7

- 69

MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF RETURN

0x0 BLOCO+0x8 0x0 BLOCO+0x9 0x40 BLOCO+0xA 0x0 BLOCO+0xB 0x0 BLOCO+0xC 0x0 BLOCO+0xD 0x0 BLOCO+0xE 0x0 BLOCO+0xF

; ************************** LE_CHAVE ******************************* ; ESSA ROTINA LE A CHAVE CRIPTOGRAFICA PARA A SER UTILIZADA ; "PROJETOFINALURNA" ; ENTRADA: ; SAIDA..: CHAVE[16]={CH0,CH1,...,CH15} ; GLOBAL.: CHAVE[16],FSR,AUX ; ******************************************************************* LE_CHAVE: MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF RETURN

0x50 CHAVE+0x0 0x52 CHAVE+0x1 0x4F CHAVE+0x2 0x4A CHAVE+0x3 0x45 CHAVE+0x4 0x54 CHAVE+0x5 0x4F CHAVE+0x6 0x46 CHAVE+0x7 0x49 CHAVE+0x8 0x4E CHAVE+0x9 0x41 CHAVE+0xA 0x4C CHAVE+0xB 0x55 CHAVE+0xC 0x52 CHAVE+0xD 0x4E CHAVE+0xE 0x41 CHAVE+0xF

;P ;R ;O ;J ;E ;T ;O ;F ;I ;N ;A ;L ;U ;R ;N ;A

- 70

; ************************* ADICAO_CHAVE **************************** ; ESSA ROTINA FAZ: BLOCO ^= CHAVE ( ^= SIGNIFICA BLOCO = BLOCO XOR CHAVE ) ; ENTRADA: ; SAIDA..: ; GLOBAL.: BLOCO, CHAVE ; OBS....: ; ******************************************************************* ADICAO_CHAVE: MOVF CHAVE+0x0,W XORWF BLOCO+0x0,F MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF RETURN CHAVE+0x1,W BLOCO+0x1,F CHAVE+0x2,W BLOCO+0x2,F CHAVE+0x3,W BLOCO+0x3,F CHAVE+0x4,W BLOCO+0x4,F CHAVE+0x5,W BLOCO+0x5,F CHAVE+0x6,W BLOCO+0x6,F CHAVE+0x7,W BLOCO+0x7,F CHAVE+0x8,W BLOCO+0x8,F CHAVE+0x9,W BLOCO+0x9,F CHAVE+0x0A,W BLOCO+0x0A,F CHAVE+0x0B,W BLOCO+0x0B,F CHAVE+0x0C,W BLOCO+0x0C,F CHAVE+0x0D,W BLOCO+0x0D,F CHAVE+0x0E,W BLOCO+0x0E,F CHAVE+0x0F,W BLOCO+0x0F,F

; BLOCO[0] ^= CHAVE[0];

; BLOCO[1] ^= CHAVE[1];

; BLOCO[2] ^= CHAVE[2];

; BLOCO[3] ^= CHAVE[3];

; BLOCO[4] ^= CHAVE[4];

; BLOCO[5] ^= CHAVE[5];

; BLOCO[6] ^= CHAVE[6];

; BLOCO[7] ^= CHAVE[7];

; BLOCO[8] ^= CHAVE[8];

; BLOCO[9] ^= CHAVE[9];

; BLOCO[10] ^= CHAVE[10];

; BLOCO[11] ^= CHAVE[11];

; BLOCO[12] ^= CHAVE[12];

; BLOCO[13] ^= CHAVE[13];

; BLOCO[14] ^= CHAVE[14];

; BLOCO[15] ^= CHAVE[15];

- 71

; *********************** SUBSTITUICAO_S **************************** ; ESSA ROTINA FAZ: BLOCO[i] = S_BOX[BLOCO[i]] ; ENTRADA: ; SAIDA..: ; GLOBAL.: AUX,BLOCO,FSR,PCLATH ; OBS....: ; ******************************************************************* SUBSTITUICAO_S: MOVLW HIGH S_TABELA MOVWF PCLATH PUT_S_TABELA_B0: MOVLW D'99' MOVF BLOCO+0x0,F BTFSC STATUS,Z GOTO PUT_B0 DECF BLOCO+0x0,W CALL S_TABELA PUT_B0: MOVWF BLOCO+0x0 PUT_S_TABELA_B1: MOVLW D'99' MOVF BLOCO+0x1,F BTFSC STATUS,Z GOTO PUT_B1 DECF BLOCO+0x1,W CALL S_TABELA PUT_B1: MOVWF BLOCO+0x1 PUT_S_TABELA_B2: MOVLW D'99' MOVF BLOCO+0x2,F BTFSC STATUS,Z GOTO PUT_B2 DECF BLOCO+0x2,W CALL S_TABELA PUT_B2: MOVWF BLOCO+0x2 PUT_S_TABELA_B3: MOVLW D'99' MOVF BLOCO+0x3,F BTFSC STATUS,Z GOTO PUT_B3 DECF BLOCO+0x3,W CALL S_TABELA PUT_B3: MOVWF BLOCO+0x3 PUT_S_TABELA_B4: MOVLW D'99' MOVF BLOCO+0x4,F BTFSC STATUS,Z GOTO PUT_B4 DECF BLOCO+0x4,W CALL S_TABELA PUT_B4: ; IMPLEMENTA A SUBSTITUICAO DIRETA ; SELECIONA UM SEGMENTO ; ; FUNCIONA COMO UM FOR: for i(0....15) ; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

- 72

MOVWF

BLOCO+0x4

PUT_S_TABELA_B5: MOVLW D'99' MOVF BLOCO+0x5,F BTFSC STATUS,Z GOTO PUT_B5 DECF BLOCO+0x5,W CALL S_TABELA PUT_B5: MOVWF BLOCO+0x5 PUT_S_TABELA_B6: MOVLW D'99' MOVF BLOCO+0x6,F BTFSC STATUS,Z GOTO PUT_B6 DECF BLOCO+0x6,W CALL S_TABELA PUT_B6: MOVWF BLOCO+0x6 PUT_S_TABELA_B7: MOVLW D'99' MOVF BLOCO+0x7,F BTFSC STATUS,Z GOTO PUT_B7 DECF BLOCO+0x7,W CALL S_TABELA PUT_B7: MOVWF BLOCO+0x7 PUT_S_TABELA_B8: MOVLW D'99' MOVF BLOCO+0x8,F BTFSC STATUS,Z GOTO PUT_B8 DECF BLOCO+0x8,W CALL S_TABELA PUT_B8: MOVWF BLOCO+0x8 PUT_S_TABELA_B9: MOVLW D'99' MOVF BLOCO+0x9,F BTFSC STATUS,Z GOTO PUT_B9 DECF BLOCO+0x9,W CALL S_TABELA PUT_B9: MOVWF BLOCO+0x9 PUT_S_TABELA_BA: MOVLW D'99' MOVF BLOCO+0xA,F BTFSC STATUS,Z GOTO PUT_BA DECF BLOCO+0xA,W CALL S_TABELA PUT_BA:

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

- 73

MOVWF

BLOCO+0xA

PUT_S_TABELA_BB: MOVLW D'99' MOVF BLOCO+0xB,F BTFSC STATUS,Z GOTO PUT_BB DECF BLOCO+0xB,W CALL S_TABELA PUT_BB: MOVWF BLOCO+0xB PUT_S_TABELA_BC: MOVLW D'99' MOVF BLOCO+0xC,F BTFSC STATUS,Z GOTO PUT_BC DECF BLOCO+0xC,W CALL S_TABELA PUT_BC: MOVWF BLOCO+0xC PUT_S_TABELA_BD: MOVLW D'99' MOVF BLOCO+0xD,F BTFSC STATUS,Z GOTO PUT_BD DECF BLOCO+0xD,W CALL S_TABELA PUT_BD: MOVWF BLOCO+0xD PUT_S_TABELA_BE: MOVLW D'99' MOVF BLOCO+0xE,F BTFSC STATUS,Z GOTO PUT_BE DECF BLOCO+0xE,W CALL S_TABELA PUT_BE: MOVWF BLOCO+0xE PUT_S_TABELA_BF: MOVLW D'99' MOVF BLOCO+0xF,F BTFSC STATUS,Z GOTO PUT_BF DECF BLOCO+0xF,W CALL S_TABELA PUT_BF: MOVWF BLOCO+0xF RETURN

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; SE (BLOCO[i]==0) --> BLOCO[i]=99D)

; SENAO BLOCO[i] = S_TABELA[BLOCO[i]-1]

; ************************ SHIFT_ROW ******************************* ; ESSA ROTINA MUDA AS LINHAS (1,2 e 3 MAS NAO A 0) ; ENTRADA: ; SAIDA..: BLOCO MODIFICADO ; GLOBAL.: AUX, BLOCO, VETOR_COL ; OBS:

- 74

; ******************************************************************* SHIFT_ROW: ; ROTACIONA LINHA ESQUERDA 1 UMA POSICAO MOVF BLOCO+0x1,W MOVWF AUX MOVF BLOCO+0x5,W ; MOVWF BLOCO+0x1 MOVF BLOCO+0x9,W ; MOVWF BLOCO+0x5 MOVF BLOCO+0xD,W ; MOVWF BLOCO+0x9 MOVF AUX,W MOVWF BLOCO+0xD ;

; ROTACIONA LINHA ESQUERDA 2 DUAS POSICOES A PARTIR DO BLOCO+0x0A MOVF BLOCO+0x2,W MOVWF AUX MOVF BLOCO+0x6,W MOVWF AUX1 MOVF MOVWF MOVF MOVWF MOVF MOVWF MOVF MOVWF BLOCO+0xA,W BLOCO+0x2 BLOCO+0xE,W BLOCO+0x6 AUX,W BLOCO+0xA AUX1,W BLOCO+0xE

; ROTACIONA LINHA ESQUERDA 3 TRES POSICOES A PARTIR DO BLOCO+0xB MOVF BLOCO+0xF,W MOVWF AUX MOVF BLOCO+0xB,W MOVWF BLOCO+0xF MOVF BLOCO+0x7,W MOVWF BLOCO+0xB MOVF BLOCO+0x3,W MOVWF BLOCO+0x7 MOVF AUX,W MOVWF BLOCO+0x3 RETURN ; ************************* MIX_COLUMN ************************ ; ESSA ROTINA E EQUIVALENTE A MULTIPLICACAO DO BLOCO EM COLUNAS ; DE UMA MATRIZ 4x4 PELA SEGUINTE MATRIZ ; ; 0x2 0x3 0x1 0x1 ; 0x3 0x1 0x1 0x2 ; 0x1 0x1 0x2 0x3 ; 0x1 0x2 0x3 0x1 ; ; ENTRADA: ; SAIDA..: ; GLOBAL.: ; OBS....: ; ***************************************************************

- 75

MIX_COLUMN: ; INICIA COM A MISTURA DA COLUMN 0 MOVF BLOCO+0x0,W XORWF BLOCO+0x1,W MOVWF AUX1 XORWF BLOCO+0x2,W XORWF BLOCO+0x3,W MOVWF AUX ^ BLOCO+0x3 MOVF XORWF MOVWF MOVF XORWF MOVWF BLOCO+0x1,W BLOCO+0x2,W AUX2 BLOCO+0x2,W BLOCO+0x3,W AUX3

; AUX1 = BLOCO+0x0 ^ BLOCO+0x1

; AUX = BLOCO+0x0 ^ BLOCO+0x1 ^ BLOCO+0x2

; AUX2 = BLOCO+0x1 ^ BLOCO+0x2

; AUX3 = BLOCO+0x2 ^ BLOCO+0x3

CALL CALC_XVEZES AUX2 = XVEZES(AUX2), AUX3 = XVEZES(AUX3) MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF MOVF ^ AUX XORWF XORWF XORWF MOVWF BLOCO+0x1,W BLOCO+0x2,W AUX,W BLOCO+0x3 AUX,W AUX1,W BLOCO+0x0,f AUX,W AUX2,W BLOCO+0x1,f AUX,W AUX3,W BLOCO+0x2,f BLOCO+0x0,W

; AUX = XVEZES(AUX), AUX1 = XVEZES(AUX1),

; BLOCO+0x0 ^= AUX ^ AUX1

; BLOCO+0x1 ^= AUX ^ AUX2

; BLOCO+0x2 ^= AUX ^ AUX3

; BLOCO+0x3 = BLOCO+0x1 ^ BLOCO+0x2 ^ BLOCO+0x2

; MISTURA COLUNA 1 MOVF BLOCO+0x4,W XORWF BLOCO+0x5,W MOVWF AUX1 XORWF BLOCO+0x6,W XORWF BLOCO+0x7,W MOVWF AUX MOVF XORWF MOVWF MOVF XORWF MOVWF CALL BLOCO+0x5,W BLOCO+0x6,W AUX2 BLOCO+0x6,W BLOCO+0x7,W AUX3

CALC_XVEZES

- 76

MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF XORWF MOVWF

AUX,W AUX1,W BLOCO+0x4,f AUX,W AUX2,W BLOCO+0x5,f AUX,W AUX3,W BLOCO+0x6,f BLOCO+0x4,W BLOCO+0x5,W BLOCO+0x6,W AUX,W BLOCO+0x7

; MISTURA COLUNA 2 MOVF BLOCO+0x8,W XORWF BLOCO+0x9,W MOVWF AUX1 XORWF BLOCO+0xA,W XORWF BLOCO+0xB,W MOVWF AUX MOVF XORWF MOVWF MOVF XORWF MOVWF CALL BLOCO+0x9,W BLOCO+0xA,W AUX2 BLOCO+0xA,W BLOCO+0xB,W AUX3

CALC_XVEZES AUX,W AUX1,W BLOCO+0x8,f AUX,W AUX2,W BLOCO+0x9,f AUX,W AUX3,W BLOCO+0xA,f BLOCO+0x8,W BLOCO+0x9,W BLOCO+0xA,W AUX,W BLOCO+0xB

MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF XORWF MOVWF

; MISTURA COLUNA 3 MOVF BLOCO+0xC,W XORWF BLOCO+0xD,W MOVWF AUX1

- 77

XORWF XORWF MOVWF MOVF XORWF MOVWF MOVF XORWF MOVWF CALL

BLOCO+0xE,W BLOCO+0xF,W AUX BLOCO+0xD,W BLOCO+0xE,W AUX2 BLOCO+0xE,W BLOCO+0xF,W AUX3

CALC_XVEZES AUX,W AUX1,W BLOCO+0xC,f AUX,W AUX2,W BLOCO+0xD,f AUX,W AUX3,W BLOCO+0xE,f BLOCO+0xC,W BLOCO+0xD,W BLOCO+0xE,W AUX,W BLOCO+0xF

MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF MOVF XORWF XORWF XORWF MOVWF RETURN CALC_XVEZES: MOVLW BCF RLF BTFSC XORWF BCF RLF BTFSC XORWF BCF RLF BTFSC XORWF RETURN

0x1B STATUS,C AUX1,F STATUS,C AUX1,F STATUS,C AUX2,F STATUS,C AUX2,F STATUS,C AUX3,F STATUS,C AUX3,f

; ********************* ENC_CHAVE ******************************* ; ESSA ROTINA ATUALIZA A CHAVE CRIPTOGRAFICA GERANDO UMA NOVA ; ENTRADA: CHAVE ; SAIDA..: ; GLOBAL.: AUX,RCON ; *************************************************************** ENC_CHAVE: CALL CALC_S_TABELA_VALORES MOVF RCON,W

; CHAVE[0] ^= RCON

- 78

XORWF BCF RLF BTFSS GOTO MOVLW MOVWF

CHAVE,F STATUS,C RCON,F STATUS,C COMP_ROUND 0x1B RCON

; RCON = XVEZES(RCON)

COMP_ROUND: MOVF CHAVE+0x0,W XORWF CHAVE+0x4,F MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF MOVF XORWF RETURN CHAVE+0x1,W CHAVE+0x5,F

; EQUIVALENTE A UM ; XOR DE CADA COLUNA ; COM A ANTERIOR

; PRIMEIRO COLUNA[1] ^= COLUNA[0] CHAVE+0x2,W CHAVE+0x6,F CHAVE+0x3,W CHAVE+0x7,F ; COLUNA[2] ^= COLUNA[1] CHAVE+0x4,W CHAVE+0x8,F CHAVE+0x5,W CHAVE+0x9,F CHAVE+0x6,W CHAVE+0xA,F CHAVE+0x7,W CHAVE+0xB,F ; COLUNA[3] ^= COLUNA[2] CHAVE+0x8,W CHAVE+0xC,F CHAVE+0x9,W CHAVE+0xD,F CHAVE+0xA,W CHAVE+0xE,F CHAVE+0xB,W CHAVE+0xF,F

CALC_S_TABELA: MOVLW HIGH S_TABELA MOVWF PCLATH MOVF CHAVE+0xD,W BTFSS STATUS,Z GOTO S_TABELA_0xD MOVLW D'99' XORWF CHAVE+0x0,F GOTO LE_CHAVE_0xE S_TABELA_0xD: DECF CHAVE+0xD,W CALL S_TABELA

; CHAVE[0x0] ^= s_box[CHAVE[0xD]]

- 79

XORWF

CHAVE+0x0,F

LE_CHAVE_0xE: MOVF CHAVE+0xE,W BTFSS STATUS,Z GOTO S_TABELA_0xE MOVLW D'99' XORWF CHAVE+0x1,F GOTO LE_CHAVE_0xF S_TABELA_0xE: DECF CHAVE+0xE,W CALL S_TABELA XORWF CHAVE+0x1,F LE_CHAVE_0xF: MOVF CHAVE+0xF,W BTFSS STATUS,Z GOTO S_TABELA_0xF MOVLW D'99' XORWF CHAVE+0x2,F GOTO LE_CHAVE_0xC S_TABELA_0xF: DECF CHAVE+0xF,W CALL S_TABELA XORWF CHAVE+0x2,F LE_CHAVE_0xC: MOVF CHAVE+0xC,W BTFSS STATUS,Z GOTO S_TABELA_0xC MOVLW D'99' XORWF CHAVE+0x3,F RETURN S_TABELA_0xC: DECF CHAVE+0xC,W CALL S_TABELA XORWF CHAVE+0x3,F RETURN ; ************************** CRIPT ******************************** ; ESSA ROTINA CRIPTOGRAFA O TEXTO UTILIZANDO A CHAVE ; ENTRADA: INSCRICAO DO ELEITOR + ZONA ELEITORAL ; A CHAVE DE CRIPTOGRAFIA ; SAIDA..: TEXTO CIFRADO ; OBS....: ; ***************************************************************** CRIPT: MOVLW 0x01 MOVWF RCON CALL ADICAO_CHAVE MOVLW ROUNDS MOVWF ROUND_CNT LOOP_CRIPT:

; CHAVE[0x1] ^= s_box[CHAVE[0xE]]

; CHAVE[0x2] ^= s_box[CHAVE[0xF]]

; CHAVE[0x3] ^= s_box[CHAVE[0xC]]

; INICIALIZA O RCON ; ADICAO_CHAVE INICIAL ; INICIALIZA AS RODADAS

- 80

CALL SUBSTITUICAO_S CALL SHIFT_ROW DECF ROUND_CNT,W BTFSC STATUS,Z GOTO ULTIMA_RODADA CALL MIX_COLUMN ULTIMA_RODADA: CALL ENC_CHAVE CALL ADICAO_CHAVE DECFSZ ROUND_CNT,F GOTO LOOP_CRIPT RETURN

; ********************* BUSCA_MEM ******************************* ; ESSA ROTINA BUSCA OS DADOS NA MEMORIA DE DADOS DA EEPROM ; ENTRADA: BLOCO ; SAIDA..: LCD ; GLOBAL.: ; *************************************************************** BUSCA_MEM: BSF MOVLW MOVWF BSF MOVF BCF XORWF BTFSC RETURN

STATUS,RP0 POS_MEM EEADR EECON1,RD EEDAT,W STATUS,RP0 BYTE_LOW STATUS,Z

; BANK1 ; ENDERECO DA MEMORIA PARA LEITURA ; LE O CONTEUDO DO ENDERECO (BAIXO - 1o. BYTE) ; MOVE O CONTEUDO DO ENDERECO PARA W ; BANK0 ; COMPARA O VALOR COM BYTE_LOW ; VALOR IGUAL? ; NAO, ENTAO VOLTA ; COLUNA 0 DA LINHA 2 ; ; MOSTRA O PRIMEIRO BYTE NO DISPLAY ; SIM, LE O VALOR SEGUINTE (ALTO) ; BANK1 ; ENDERECO + 16BYTES (EM HEXA) ; ENDERECO DA MEMORIA PARA LEITURA ; LE O CONTEUDO DO ENDERECO (ALTO - 2o. BYTE) ; MOVE O CONTEUDO DO ENDERECO PARA W ; BANK0 ; COMPARA O VALOR COM BYTE_HIGH ; VALOR IGUAL? ; NAO, ENTAO VOLTA SIM, MOSTRA O VALOR NO DISPLAY CRIPTOGRAFADO ; COLUNA 9 DA LINHA 2 ; MOSTRA O SEGUNDO BYTE NO DISPLAY

MOVLW .0 CALL LINHA2 CALL LCD_DATA BSF STATUS,RP0 BCF STATUS,RP1 MOVLW POS_MEM+H'10' MOVWF EEADR BSF EECON1,RD MOVF EEDAT,W BCF STATUS,RP0 XORWF BYTE_HIGH BTFSC STATUS,Z RETURN MOVLW .8 CALL LINHA2 CALL LCD_DATA

; ******************** ESCRITA NO DISPLAY ************************ ; ROTINA DE ESCRITA NO DISPLAY (LCD) ; **************************************************************** LCD_DATA: MOVWF LCD_DATA_TEMP MOVLW 0x1E CALL X_DELAY500 ;MOVE W PARA LCD_DATA_TEMP ;DELAY 15ms (30 * 0,5ms = 15ms)

- 81

BSF BSF BCF RETURN

RS E E

;MODO DADOS DO DISPLAY ;SETA BIT E (ENABLE) ;CLEAR BIT E (DISABLE)

; **************************************************************** ;* ROTINA DE INSTRUO DO LCD ; **************************************************************** LCD_INST MOVWF LCD_DATA_TEMP CALL X_DELAY500 BCF RS BSF E BCF E RETURN ; **************************************************************** ;* ROTINA PARA ENDEREOS DA LINHA 1 ; **************************************************************** LINHA1: ADDLW B'10000000' CALL LCD_INST RETURN ;LINHA 1 + POSIO DO CURSOR ;MOVE W PARA LCD_DATA_TEMP ;DELAY 15ms ;MODO INSTRUO DO DISPLAY ;SETA BIT E (ENABLE) ;CLEAR BIT E (DISABLE)

; **************************************************************** ;* ROTINA PARA ENDEREOS DA LINHA 2 ; **************************************************************** LINHA2: ADDLW B'11000000' CALL LCD_INST RETURN ;LINHA 2 + POSIO DO CURSOR

;***************************************************************************** ; ROTINA DE CRIAO DE DELAYS PARA A COMUNICACAO COM O LCD ; ; DELAY_TEMPO = ((DELAY_VALOR * 3) + 4) * TEMPO_CICLO ; DELAY_VALOR= (DELAY_TEMPO - (4 * CYCLE_TEMPO)) / (3 * TEMPO_CICLO) ; ; DELAY_TEMPO = ((32 * 3) + 4) * 1uSeg ; = 100uSeg ; DELAY_VALOR= (500uSeg - 4) / 3 ; = 165.33 ; = 165 ;***************************************************************************** DELAY500 MOVLW D'165' MOVWF DELAY DELAY500_LOOP DECFSZ DELAY, F GOTO DELAY500_LOOP DELAY500_FIM RETURN ; +1 ; +2 ; passo 1 ; passo 2 ; +3 ; ; ; +1 1 cycle 1 cycle 1 cycle 2 cycles 2 cycles

X_DELAY500

MOVWF

X_DELAY

1 cycle

- 82

X_DELAY500_LOOP

X_DELAY500_FIM

CALL DELAY500 DECFSZ X_DELAY, F GOTO X_DELAY500_LOOP RETURN

; passo1 ; passo2 ; passo3 ; +2

espera 500uSeg 1 cycle 2 cycles 2 cycles

END

; PONTO FINAL DO PROGRAMA

- 83

Anexo E

Extrato do Manual do microcontrolador PIC16F636

- 84

Anexo F

Manual do transcoder HCS410

- 85

Potrebbero piacerti anche