• Nenhum resultado encontrado

2. FUNDAMENTAÇÃO TEÓRICA 2.1 CONCEITO DE CRIPTOGRAFIA

N/A
N/A
Protected

Academic year: 2021

Share "2. FUNDAMENTAÇÃO TEÓRICA 2.1 CONCEITO DE CRIPTOGRAFIA"

Copied!
6
0
0

Texto

(1)

ASSINATURA DIGITAL

Instituto Tecnológico de Aeronáutica

Divisão de Ensino Fundamental

Departamento de Matemática

Professor Orientador: Tânia Nunes Rabello

Autor: Rafael Fernandes Cunha

Bolsista do CNPq - Brasil

Resumo: O artigo busca em conceitos de criptografia fornecer um algoritmo de assinatura

digital de criptografia assimétrica baseando-se no algoritmo do RSA, para isso faz-se o

estudo de resultados matemáticos de aritmética modular, do algoritmo do RSA e do DSA.

Abstract: Studying cryptographic concepts, the article develop a digital signature algorithmic

based on the RSA algorithmic, for this, we study arithmetic modular results, the RSA and DSA

algorithmic.

1. INTRODUÇÃO

A criptografia é muito utilizada nos dias atuais, principalmente com o advento da internet, que fornece a possibilidade de se fazer diversos tipos de transações administrativas pelo computador. Com isso houve a necessidade de se garantir o sigilo de informações confidenciais que transitam em ambiente de rede. Depois se sentiu a necessidade de ir se transferindo, pouco a pouco, todo o tipo de documentação que antes era feita através de papéis, cheques, documentos assinados, contratos, tudo para o computador e o desafio maior foi fazer com que a informação, colocada como um arquivo de computador, tenha o mesmo sigilo e credibilidade de antes fazendo com que um documento, que antes deveria ser assinado apenas com a presença física da pessoa no local da transação por exemplo, hoje possa ser assinado de maneira digital, com o mesmo grau de confiabilidade.

O projeto apresentado mostrará uma implementação de assinatura digital feita com o objetivo de auxiliar o processo de entrega das notas dos boletins pelos professores, que passará a ser feito via internet, e para termos a credibilidade de que a nota passada foi escrita pelo professor, ele assinará esse documento de forma digital, utilizando o programa proposto nesse projeto.

Para o desenvolvimento do programa, foi necessário o estudo de alguns tópicos de teoria dos números, dos quais os principais resultados serão citados no parágrafo abaixo, o estudo de linguagem JAVA, por se tratar de um trabalho que deve ser viabilizado via internet e a partir de computadores diversos, e de teoria de criptografia, fundamental para o desenvolvimento do algoritmo.

2. FUNDAMENTAÇÃO TEÓRICA 2.1 CONCEITO DE CRIPTOGRAFIA

A criptografia é a ciência que estuda formas de modificar uma mensagem sem a utilização de símbolos (criptografar), de forma a tornar esta ilegível para quem a possui, a menos que essa pessoa saiba a maneira de fazer a mensagem voltar a sua configuração normal (decriptografar). O processo de criptografar e decriptografar é feito através de chaves e essas são combinadas como sendo de troca de letras do alfabeto até resposta a algoritmos matemáticos. A mensagem enviada deve manter os seguintes parâmetros para a transmissão ser considerada satisfatória: disponibilidade, confidencialidade, integridade e autenticidade.

(2)

A simétrica recebe esse nome devido as duas partes, tanto o emissor como o receptor possuírem a mesma chave. Este tipo de criptografia se caracteriza por usar funções matemáticas mais simples e por isso ser mais rápida, porém possui o problema de as duas partes terem que trocar as chaves por um canal seguro. Se considerarmos que cada empresário teria que trocar uma chave diferente com cada pessoa que ele fosse fechar um contrato, a criptografia simétrica seria impraticável para ser usada através da internet, da maneira como ela é usada hoje.

A criptografia assimétrica veio para consertar essa debilidade da criptografia simétrica e resolver o problema da distribuição de chaves, pois nela, não é necessário que transmissor e receptor tenham a mesma chave, pois existe uma chave para criptografar e uma chave diferente para decriptografar. Sua idéia foi concebida através da utilização de funções matemáticas de uma só direção, ou seja, a função sai de um estado inicial e volta a ele sem ter que voltar pelo mesmo caminho. A chave que faria a função ser criptografada seria a chave pública e a outra, a privada. A chave pública seria de acesso de todos e estaria cadastrada em algum centro de cadastramento de forma a quando Alice precisasse mandar uma mensagem para Bob, por exemplo, ela iria neste centro e lá lhe seria fornecida a chave pública de Bob. Agora Alice possui um meio seguro para, caso queira trocar com Bob uma mensagem longa, trocar com ele um par de chaves simétricas, eliminando dessa forma o problema da distribuição

de chaves. Como só Bob tem acesso àchave privada dele, só ele pode decriptografar a mensagem que

Alice lhe enviou. O problema da criptografia assimétrica é que ela envolve funções matemáticas de cálculos mais complexos, fazendo com que o processo de criptografar e decriptografar a mensagem seja mais demorada.

Os algoritmos utilizados em transações comerciais, tanto na criptografia simétrica como assimétrica são de conhecimento público, o que não fornece insegurança visto que a força do processo criptográfico está no não conhecimento da chave e não do algoritmo. Um dos mais utilizados na criptografia simétrica é o DES e na assimétrica temos o RSA e o ElGamal.

2.2 RESULTADOS MATEMÁTICOS

Daremos a seguir os principais resultados matemáticos que são utilizados na grande maioria dos algoritmos criptográficos.

2.2.1 TEOREMA DE FERMAT

Se p é inteiroprimo e ‘a’ é um inteiro positivo não divisível por p, então: ap-1≡1 mod p

Antes de enunciar o teorema de Euler, deve-se ter em mente o significado da função φ de Euler, que é definida por: φ(n) é o numero de inteiros positivos menores que n e relativamente primos com n.

Logo se p é primo, temos que φ(p)=p-1

Se temos dois primos p e q tal que n = p*q, temos que φ(n)=(p-1)*(q-1)

2.2.2 TEOREMA DE EULER

Sejam a,n inteiros primos entre si, isto é, m.d.c(a,n)=1. Então aφ(n) ≡ 1 mod n

Com isso, torna-se possível a compreensão do algoritmo do RSA:

2.3 ALGORITMO DO RSA

Geração da chave-pública do RSA

Cada entidade cria uma chave pública do RSA e uma chave privada correspondente. Cada entidade A deve fazer o seguinte:

(3)

2- Calcule n = pq e φ = (p-1)*(q-1).

3- Selecione um inteiro aleatório e tal que 1 <e<φ e m.d.c.(e,φ) = 1.

4- Use o algoritmo estendido de Euclides para calcular o único inteiro d, 1<d<φ, tal que ed ≡ 1(modφ).

5- A chave pública de ‘A’ é (n,e); A chave privada de ‘A’ é d. Algoritmo para criptografar:

Sumário : B criptografa a mensagem m para A, e A decriptografa. 1- Criptografando, B deve fazer o seguinte:

a. Obter a chave pública de A: (n,e).

b. Representar a mensagem como um inteiro m num intervalo [0, n-1]. c. Calcular c = me mod n.

d. Enviar o texto cifrado ‘c’ para A.

2- Decriptografia. Para recuperar o texto m de c, A deve fazer o seguinte: a. Usar a chave privada ‘d’ e recuperar m = cd mod n.

Outro conceito importante em criptografia é o de assinatura digital.

Uma assinatura convencional a mão livre anexada a um documento é usada para especificar a pessoa responsável por ela. Assinaturas são usadas em situações do dia a dia tais como escrever uma carta, sacar dinheiro de um banco, assinar contratos, etc.

Um esquema de assinatura é um método de assinar uma mensagem de forma eletrônica. Assim, uma mensagem assinada pode ser transmitida através de uma rede de computadores. Devemos lembrar que enquanto em um processo convencional de assinatura, a assinatura é fisicamente anexada à mensagem que é assinada, na assinatura digital isso não acontece, logo o algoritmo deve de alguma forma, juntar a assinatura à mensagem. Na questão da autenticação, assinatura digital seria mais segura visto que a assinatura convencional é verificada por comparação enquanto que a digital, por utilização de um algoritmo de conhecimento público, ou seja, o uso de um esquema de assinatura seguro prevenirá a

possibilidade de forja. Um cuidado que deve ser tomado é com relação àtentativa da reutilização de

uma assinatura digital, por exemplo, como um cheque, visto que não existe diferenças entre elas.

Assim para isso ela deve ser datada prevenindo dessa forma que seja reutilizada. Podemos então

sintetizar três aspectos importantes para a assinatura digital:

Deve-se ser capaz de verificar o autor e a data com o horário da assinatura. Deve-se ser capaz de autenticar os conteúdos no momento da assinatura. A assinatura deve ser verificada por terceiros, a fim de se resolver disputas.

3. DESENVOLVIMENTO DO PROJETO

O projeto foi focado no seguinte problema:

Fazer com que a passagem das notas dos alunos pelos professores para a Pró-Reitoria de Graduação e vice-versa seja feita através da internet. De forma mais esquemática, teríamos:

a) O professor preenche as notas em uma planilha do excel, faz a assinatura digital do

documento e o envia ao coordenador do curso.

b) O coordenador verifica se não há problemas com as notas, e o envia para a

Pró-Reitoria de Graduaçãocom o seu alvará.

c) A Pró-Reitoria de Graduação recebe o documento, reconhece a assinatura do

professor e o alvará do coordenador de ensino e dá baixa nas notas. Obs1: Pode-se confiar no coordenador do curso.

Obs2: O mesmo pode acontecer no processo inverso.

Para criarmos um método seguro, vamos primeiramente estudar quais são os pontos fracos no sistema de transmissão de informação.

(4)

1-Interrupção: um acesso do sistema é destruído e a informação para. Trata-se de um ataque à disponibilidade da informação.

2-Interceptação: Uma parte não autorizada ganha acesso às informações que estão sendo transmitidas. Ataque ao quesito confidencialidade.

3-Modificação: A parte não autorizada pega a mensagem, modifica a e a envia para o destinatário. Ataque ao quesito integridade.

4-Fabricação: A parte não autorizada cria uma mensagem e a transmite para o destinatário fazendo-se passar por outra pessoa. Ataque ao quesito autenticidade.

Levando-se em consideração os quesitos acima e o problema proposto, o seguinte algoritmo é apresentado:

3.1 ALGORITMO DESENVOLVIDO

P -> C : IDp || Ekrp [IDp || Ekuc [M] ]

C -> D : IDc || Ekrc [IDc || IDp || EkuD [M] ]

Em que:

IDx = identificação de x

Ekrx[m] = a mensagem m criptografada com a chave privada de x

Ekux[m] = a mensagem m criptografada com a chave pública de x

|| = representação de concatenação M = mensagem

P = professor

C = coordenador do curso D = Pró Reitoria de Graduação.

Não foi colocado o quesito “tempo” por não fazer sentido o fato de evitar a reutilização de uma assinatura feita confirmando notas.

De forma mais detalhada, temos: P = professor Nome do professor: N1 Chave privada : p1, q1, a1 Chave pública : b1, n1 C = coordenador do curso Nome do professor: N2 Chave privada : p2, q2, a2 Chave pública : b2, n2 D = Pró Reitoria de Graduação Nome do professor: N3 Chave privada : p3, q3, a3 Chave pública : b3, n3

Para sedefinir a chave pública e privada, faz-se como no DSA enquanto que a assinatura e a

(5)

ASSINANDO 1ºpasso: (P -> C) N1’ = N1a1 mod n1 M1’ = (M1b2 mod n2)a1 mod n1 Enviar (N1’, M1’, N1)

VERIFICANDO

N1” = (N1’)b1 mod n1 M1 = ((M1’)b1 mod n1)a2 mod n2

M1 deve ser legível e N1’’ deve ser igual a N1 2ºpasso: (C -> D) N1’” = N1a2 mod n2 N2’ = N2a2 mod n2 M3’=[M1 b3mod n3]a2mod n2 Enviar (N2, N2’, N1”’, M3’) N1’’’’ = (N1’’’)b2 mod n2 N2 = (N2’)b2 mod n2 M1=((M3’)b2mod n2)a3mod n3

M1 deve ser legível e N1’’’’ e N2’’ devem ser iguais a N1 e N2 respectivamente. O algoritmo de assinatura digital mais utilizado atualmente é o do DSA.

3.2 ALGORITMO DO DSA (The Digital Signature Algorithm)

COMPONENTES DA CHAVE PÚBLICA

p número primo entre 2L-1 < p < 2L, em que 512 < L < 1024 e L múltiplo de 64, isto é, tamanho da

chave entre 512 e 1024 bits em incrementos de 64 bits.

q divisor primo de (p-1), onde 2159 < q < 2160, isto é, tamanho de 160 bits.

g = h(p-1)/q mod p, onde h é um inteiro entre 1 < h < (p-1) tal que h(p-1)/q mod p>1.

CHAVE PRIVADA DO USUÁRIO

x inteiro aleatório ou pseudo aleatório tal que 0 < x < q CHAVE PÚBLICA DO USUÁRIO

y = gx mod p

NÚMERO SECRETO DO USUÁRIO POR MENSAGEM k = inteiro aleatório ou pseudo aleatório tal que 0 < k < q ASSINANDO r = (gk mod p) mod q s = [k-1(H(M) + xr)] mod q Assinatura = (r,s) VERIFICANDO w= (s’)-1 mod q u1 = [H(M’)w] mod q u2 = (r’)w mod q v = [(gu1yu2) mod p] mod q

M = messagem a ser assinada H(M) = função hash de M

M’, r’, s’ = versões recebidas de M, r, s. TESTE : v = r’

Sabemos que v tem que ser igual a r’ para que a assinatura seja autêntica analisando-se os seguintes tópicos:

Lema 1: se g = h(p-1)/qmod p então gt mod p = gt mod q mod p

Lema 2: Para inteiros não-negativos ‘a’ e ‘b’, temos

(6)

Lema 3: y(rw)mod qmod p = g(xrw)mod qmod p

Lema 4: ((H(M) + xr)w)mod q = k

Com essas informações, podemos fazer a verificação:

v = ((gu1yu2)mod p)mod q por definição

= ((g(H(M)w)mod qy(rw)mod q)mod p)mod q

= ((g(H(M)w)mod qg(xrw)mod q)mod p)mod q pelo Lema 3

= ((g(H(M)w)mod q + (xrw)mod q)mod p)mod q

= ((g(H(M)w + xrw)mod q)mod p)mod q pelo Lema 2

= ((g((H(M) + xr)w) mod q)mod p)mod q

= (gk mod p)mod q pelo Lema 4

= r por definição

Observemos que nesse algoritmo, usa-se função hash. Como não é o objetivo desse trabalho o desenvolvimento de função hash e como se trata de uma assinatura com objetivos bem particulares, elaborou-se um algoritmo baseado no RSA, apresentado acima, sem utilização de função hash, que satisfez os requisitos propostos.

4. UTILIZAÇÃO DE LINGUAGEM JAVA

Pelo fato da proposta ser a de todo o processo ocorrer via rede, a plataforma Java

apresenta vantagens para ser a usada na construção do programa, pois ela tem como

vantagem o fato de já possuir classes prontas que trabalham com números grandes e

poder rodar sem necessitar de uma plataforma fixa, ajustando-se ao computador da

pessoa que a esteja utilizando. A principal classe utilizada de Java foi a BigInteger, o

que facilitou o trabalho com as chaves. Como desvantagem temos que a linguagem Java

não apresenta o mesmo desempenho que a linguagem C, por exemplo, no quesito

velocidade, ou seja, trata-se de um programa mais lento que não deve ser aconselhado

para criptografar grandes mensagens.

5. CONCLUSÃO

O estudo de criptografia assimétrica possibilitou a criação de um algoritmo capaz de suprir as necessidades do problema fornecido, visto que agora, utilizando-se a assinatura digital, foi possível estabelecer um processo seguro de entrega das notas dos alunos pelos professores via internet, o que não é feito no momento.

É importante salientar que no algoritmo proposto, ainda temos que confiar no intermediador que no caso é coordenador do curso, o que não é bom. Um algoritmo que utilize funções Hash é capaz de solucionar essa deficiência, mas como essas funções não foram objetos de estudo desse artigo, gostaria de colocar esta opção como uma possibilidade de continuação desse trabalho.

REFERÊNCIAS BIBLIOGRÁFICAS

1. Stallings, W.; Cryptography and Network Security; Steele, L., Ed.; Prentice Hall; Upper SaddleRiver, NJ, 1998; p 299.

2. Stinson, D.R.; Cryptography, Theory and Practice; Rosen, K.H., Ed.; CRC Press; Washington, DC, 1995; p 124.

3. Schneier, B.; Applied Cryptography; Sutherland, P., Ed.; John Wiley & Sons, Inc.; New York, NY, 1996; p 483.

4. Menezes, A.J.; Oorschot, P.C.; Vanstone, S.A.; Handbook of applied cryptography;

CRC

Press,;

Washington, DC,1996; p 285.

5. Andrews, G.; Number Theory; Saunders, W.B., Co.; Philadelphia; Dover, New York,

Referências

Documentos relacionados