Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 07 de Agosto de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
70 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Criptografia de chaves assimétricas - Introdução
Publicado por icemagno : Terça, Agosto 17, 2004 - 06:21 GMT-3 (18074 leituras)
Comentários 2 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Carlos Magno ALGORITMO DE CRIPTOGRAFIA RSA
Muitos programadores desejam implementar sistemas que utilizam criptografia em empresas, mas não conhecem realmente as técnicas.
Isto pode acarretar prejuízo ao cliente, pois o mesmo acredita estar usando um sistema seguro quando na realidade tem apenas um contratempo para um hacker.
A seguir apresenta-se os conceitos do algoritmo RSA e os conceitos de Criptografia de Chave Pública necessários para o estudo do mesmo, o que fornecerá base para criação de sistemas seguros utilizando assinatura digital e criptografia.
No modelo que vou propor futuramente, um sistema não precisará somente de senha, mas de um arquivo particular de chave também, elevando a segurança ao máximo de proteção.

Conceitos de Criptografia de Chave Pública: Esse conceito foi apresentado por Diffie e Hellman no artigo “New Directions in Cryptography” para minimizar a necessidade de transmissão de chaves por redes ou canais seguros e fornecer assinatura digital.

Com o uso de criptografia de chave pública uma mensagem é cifrada com uma chave E (Encription key) e só pode ser decifrada com uma chave D (Decription key) e o calculo de D a partir de E é computacionalmente difícil. Com esse sistema a chave E pode ser publicada sem comprometer a segurança.

Conceitos do Algoritmo RSA: O RSA é um sistema de criptografia de chave assimétrica ou criptografia de chave pública que foi inventado por volta de 1977 pelos professores do MIT (Massachsetts Institute of Technology) Ronald Rivest, Adi Shamir e o professor da USC (University of Southern California) Leonard Adleman.

O sistema consiste em gerar uma chave pública (geralmente utilizada para cifrar os dados) e uma chave privada (utilizada para decifrar os dados) através de números primos grandes, o que dificulta a obtenção de uma chave a partir da outra. Quanto maior os números primos utilizados para a criação da chave, maior é a segurança proporcionada por esse algoritmo.

Hoje em dia os números primos que são utilizados têm geralmente 512 bits de comprimento e combinados formam chaves de 1024 bits. Em algumas aplicações como por exemplo bancárias que exigem o máximo de segurança a chave chega a ser de 2048 bits.

Com o passar do tempo, a tendência é que o comprimento da chave aumente cada vez mais. Esse fenômeno acontece, em grande parte, pelo avanço nos sistemas computacionais que acompanham o surgimento de computadores que são capazes de fatorar chaves cada vez maiores em um tempo muito baixo.

Os algoritmos para a geração da chave pública e privada usadas para cifrar e decifrar as mensagens são simples. Observe-os a seguir: (1) Escolhe-se dois números primos grandes (p e q); (2) Gera-se um número n através da multiplicação dos números escolhidos anteriormente (n = p . q); (3) Escolhe-se um número d, tal que d é menor que n e d é relativamente primo à (p-1).(q-1); (4) Escolhe-se um número e tal que (ed-1) seja divisível por (p-1).(q-1). Para realizar esse cálculo é necessário o algoritmo de Euclides estendido.

Os valores e e d são chamados de expoentes público e privado, respectivamente. O par (n, e) é a chave pública e o par (n, d) é a chave privada. Os valores p e q devem ser mantidos em segredo ou destruídos.

Para cifrar cada bloco é realizado o cálculo: C = Te mod n, onde C é a mensagem cifrada e T é a mensagem original.

Para T = 0920, temos:
C = 092097 mod 3233 = 2546;
Para T = 1900, temos:
C = 190097 mod 3233 = 1728;
Para T = 0112, temos:
C = 011297 mod 3233 = 0514;
Para T = 1200, temos:
C = 120097 mod 3233 = 0210;
Para T = 0718, temos:
C = 071897 mod 3233 = 2304;
Para T = 0505, temos:
C = 050597 mod 3233 = 0153;
Para T = 1100, temos:
C = 110097 mod 3233 = 2922;
Para T = 2015, temos:
C = 201597 mod 3233 = 2068;
Para T = 0013, temos:
C = 001397 mod 3233 = 1477;
Para T = 0500, temos:
C = 050097 mod 3233 = 2726,

Assim temos a mensagem cifrada:

2546 1728 0514 0210 2304
0153 2922 2068 1477 2426

Similarmente, para decifrar cada bloco é realizado o cálculo: T = Cd mod n, onde T é a mensagem original e C é a mensagem cifrada.

Para C = 2546, temos: T = 2546193 mod 3233 = 0920; Para C = 1728, temos: T = 1728193 mod 3233 = 1900;
Para C = 0514, temos: T = 0514193 mod 3233 = 0112; Para C = 0210, temos: T = 0210193 mod 3233 = 1200;
Para C = 2304, temos: T = 2304193 mod 3233 = 0718; Para C = 0153, temos: T = 0153193 mod 3233 = 0505;
Para C = 2922, temos: T = 2922193 mod 3233 = 1100; Para C = 2068, temos: T = 2068193 mod 3233 = 2015;
Para C = 1477, temos: T = 1477193 mod 3233 = 0013; Para C = 2726, temos: T = 2726193 mod 3233 = 0500,

Assim temos a mensagem decifrada, que corresponde à mensagem original:

0920 1900 0112 1200 0718
0505 1100 2015 0013 0500

Para cifrar uma mensagem com esse algoritmo é realizado o seguinte cálculo: C = Te mod n, onde C é a mensagem cifrada, T é o texto original, e e n são dados a partir da chave pública (n, e). A única chave que pode decifrar a mensagem C é a chave privada (n, d) através do calculo de: T = Cd mod n.

Exemplo de Funcionamento: Nosso exemplo do RSA realiza a criptografia da mensagem “ITS ALL GREEK TO ME” utilizada pelos autores do RSA como exemplo utilizando-se de chaves diferentes.
Satisfazendo a etapa 1 de criação de chaves descrita acima, são escolhidos dois números primos aleatórios p = 53, q = 61. No nosso exemplo utilizamos números pequenos para que possam ser representados facilmente. Pela etapa 2 n = p . q, portanto n = 53 . 61 = 3233; Pela etapa 3 escolher um número d tal que d seja menor que n e relativamente primo a (p-1).(q-1) para tanto basta escolher um número primo aleatório maior que p e q. Para o nosso exemplo escolhemos d = 193. Pela etapa 4 escolhe-se um número e tal que (ed-1) seja divisível por (p-1).(q-1), para realizar tal calculo é utilizado o algoritmo de Euclides Estendido. Fazendo o uso desse algoritmo calculamos que e = 97.

Portanto, em nosso exemplo, os valores importantes do algoritmo RSA são: p = 53, q = 61, n = 53 . 61 = 3233, d = 193 e e = 97. No artigo as chaves utilizadas foram: p = 47; q = 59; n = 2773; d = 157; e = 17.

Para realizar a criptografia adotamos a tabela abaixo para representar numericamente as letras maiúsculas do alfabeto. Uma outra implementação, talvez mais usada, utiliza-se da tabela ASCII que não é utilizada neste exemplo para simplificar os cálculos.

(por motivos de formatação eu excluí a tabela, mas considere que o ESPAÇO é 00, A=01, B=02, ... ,W=23, X=24, Y=25, Z=26).

Usando os valores indicados na tabela, a frase “ITS ALL GREEK TO ME” seria representada numericamente como:

09 20 19 00 01 12 12 00 07 18 05 05 11 00 20 15 00 13 05 00

Como nosso n = 3233, a mensagem pode ser criptografada em blocos de duas letras pois o valor máximo que pode aparecer na frase original é o eqüivalente à seqüência “ZZ” = 2626 que é menor que n (3233). Portanto, agrupando a mensagem em grupos de duas letras temos:

0920 1900 0112 1200 0718
0505 1100 2015 0013 0500



Em artigo futuro, mostrarei como aplicar criptografia realmente segura em Delphi, usando componentes gratuitos e com fonte aberto.



Observação: Carlos Magno Oliveira de Abreu.

Icemagno@hotmail.com
http://www.magnoabreu.kit.net


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: jaquesalmeida : Ago 29, 2004 - 09:56
(Informações sobre o membro | Enviar uma mensagem) http://
Muito profissional e de fácil entendimento. Parabéns!
Aguardo ancioso o próximo artigo!


por: jpmjr (webraptor@hotmail.com) : Fev 27, 2012 - 11:12
(Informações sobre o membro | Enviar uma mensagem) http://http://
Saudações,

Artigo muito bom, gostaria de saber se teria como receber sua ajuda para formar um certificado digital seguro para a área médica (Prontuário Eletrônico)?

Obrigado de qualquer forma
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados