Introdução - TV Prudente

Transcrição

Introdução - TV Prudente
Introdução
Atualmente no mundo internacional das redes e com o comércio eletrônico, todo sistema de
computador se tornou um alvo em potencial para intrusos. O problema é que não há como saber os
motivos que levam o intruso a agir e nem quando ele pode atacar, contudo é importante tentar se
previnir utilizando mecanismos de proteção.
Iremos procurar ver aqui alguns mecanismos de proteção mais utilizados como: criptografia e SSL.
1.0 Criptografia
O conhecimento dessa metodologia é antigo. Com o advento dos computadores ela se tornou uma
parte indispensável da segurança moderna, sendo empregada no ambiente computacional para
proteção dos dados de pessoas não autorizadas.
1.1 O que criptografar ?
Criptografia vem da palavra grega kryptos = "escondida" e graphia = "escrever". Criptografar significa
transformar uma mensagem em outra ("escodendo" a mensagem original), usando para isso, funções
matemáticas e uma senha especial, chamada chave.
1.2 Categorias
Os métodos de criptografia têm sido divididos em duas categorias: as cifras de substituição e as de
cifras de transposição.
1.2.1 Cifras de Substituição
Cada letra ou grupo de letras é substituída por outra letra ou grupo de letras.
Exemplo:
Vejamos um exemplo bem simples, só para se entender a idéia.
Cada uma das 26 letras do alfabeto tem seu correspondente em outra letra.
abcdefghijklmnopqrstuvwxyz
QWERTYUIOPASDFGHJKLZXCVBNM
Esse sistema é conhecido como substituição monoalfabética, sendo a chave o string de 26 letras
correspondente ao alfabeto.
Substituindo as letras da palavra "atacar" pela correspondente resultaria em "qzqeqk".
Todavia em um texto pequeno, a cifra poderia ser descoberta facilmente. Pois o intruso começaria
contando as letras mais frequentes do texto cifrado e depois disso ele atribuiria a letra "a" a letra mais
comum. Em seguida ele poderia verificar os trigamas e encontrar um no formato gXi, o que poderia
sugerir que X poderia ser "u".
Embora a criptografia moderna utilize as mesma idéias básicas da substituição tradicional, sua ênfase
atual é diferente, ela tem como objetivo tornar o algoritmo complexo e emaranhado para que o intruso
não seja capaz de obter qualquer sentido da mensagem.
1.2.2 Cifras de Transposição
Muda a ordem das letras.
Por exemplo:
Para cifrar o texto "transferir um mil"
A cifra se baseia em uma chave que é uma palavra ou frase. No exemplo é "disco".
A chave servirá de apoio para enumerar as colunas.
Palavra chave = "d i .s c o"
.............................(2 3 5 1 4)
A mensagem é escrita abaixo da chave , de 5 em 5 letras (que é a mesma quantidade de letras da
chave).
Palavra chave = "d i .s c o"
............................(2 3 5 1 4)
..............................t .r a n s
..............................f .e r .i .r
..............................u m m i l
O texto é lido na vertical, conforme a ordem dessas colunas.
Resultando em "niitfuremsrlarm"
1.3 Chave
A chave consiste em um string que pode ser alterada sempre que necessário. Desse modo o
algoritmo de criptografia pode ser conhecido. Quando o algoritmo se torna público, vários
especialistas tentam decodificar o sistema. Se após alguns anos nenhum deles conseguirem a
proeza, significa que o algoritmo é bom.
1.3.1 Tamanho da chave
O fator de trabalho para decodificar o método através de uma pesquisa no espaço da chave é
exponencial em relação ao tamanho da chave. Por exemplo, uma chave com um tamanho de dois
dígitos significa que existem cem possibilidades, e um tamanho de chave de seis dígitos significa um
milhão de possibilidades, portanto quanto maior for a chave, maior será o fator de trabalho com que o
intruso terá de lidar.
1.3.2 Tipos de Chave
O tipo de chave usada depende do tipo da criptografia usada. Existem dois tipos de criptografia:
- Criptografia simétrica, que usa uma chave privada.
- Criptografia de chave pública, que usa um par de chaves, conhecida com chaves publica e privada.
1.3.2.1 Criptografia Simétrica
Uma única chave criptografa e decriptografa os dados. Ela é relativamente pequena e rápida, contudo
como desvantagem, não só o transmissor deve conhecer a chave como também o receptor. Além
disso, o volume total dos dados transmitidos é limitado pelo tamanho da chave.
É mais frequentemente usada:
- Nas comunicações entre duas máquinas
- No armazenamento da informação em um disco rígido
Exemplos resumidos de algoritmos que usam criptografia simétrica:
•
Crypt
Programa de criptografia original do Unix. O método se baseia em uma chave de variável de
comprimento.
•
IDEA(International Data Encrypton Algorithm)
O método se baseia na utilização de uma chave de 128 bits, onde blocos de texto da
mensagem de entrada são alterados em uma sequência de interações, produzindo blocos de
saída.
•
DES (Data Encrypton Standard)
Por ser um algoritmo muito adotado na informática para uso em produtos de segurança,
veremos maiores detalhes sobre ele.
Algoritmo DES
O DES é basicamente uma cifra de substituição que utiliza um caracter de 64 bits. Ele possui uma
chave de 56 bits e seu algoritmo tem 19 estágios. O DES executa uma série de transposições,
substituições, e operações de recombinação em blocos de dados de 64 bits. Inicialmente, os 64 bits
de entrada sofrem uma transposição e são colocados em uma função usando tabelas estáticas de
transposição e substituição (conhecidas como caixas-P e caixas-S).
Exemplo do funcionamento de uma caixa-P:
P significa "permuta", então se forem designados 8 bits de entrada "01234567" será efetuada uma
transposição (que irá mudar a ordem dos números ) . A saida dessa caixa-P será "36071245".
Exemplo do funcionamento de uma caixa-S:
S representa a substituição dos números por outros números. Supondo que o número 0 seja
substituido por 2, o 1 por 4, o 2 por 5, o 3 por 0, o 4 por 6, o 5 por 7, o 6 por 1 e o 7 por 3.
Para a entrada "01234567" a substituição resultaria em "24506713".
Os estágios são parametrizados por diferentes funções da chave. A função consiste em 4 etapas, que
são executadas em sequência.
•
Primeiro é feita uma transposição de 64 bits dos dados.
•
Os 16 estágios restantes (ver figura como iteração) são parametrizados por diferentes
funções da chave.
•
O penútimo estágio troca os 32 bits da esquerda pelos 32 bits da direita (os 32 bits
representam uma divisão dos 64 bits)
•
O útimo estágio é o inverso da primeira transposição
Em cada uma das 16 iterações, é utilizada uma chave específica. Antes de se iniciar o algoritmo, uma
transposiçãode 56 bits é aplicada a chave. Antes de cada iteração, a chave é particionada em duas
unidades de 28 bits, sendo que cada uma delas é roteada para a esquerda por um determinado
número de bits. Em cada rodada, um subconjunto de 48 bits dos 56 bits é extraído e permutado. O
algoritmo então executa a transposição final e gera 64 bits.
........................................................................(Entrada de dados simples)
..............................................................................................|......................
..............................................................................................|......................
............................................................................Transposição inicial
..............................................................................................|......................
..............................................................................................|......................
....................................................................................Iteração 1......................<--chave de 56 bits
..............................................................................................|......................
..............................................................................................|......................
....................................................................................Iteração 2 .....................<--chave de 56 bits
..............................................................................................
...................................................................................................................
..............................................................................................
....................................................................................Iteração 16....................<--chave de 56 bits
..............................................................................................|......................
..............................................................................................|......................
..............................................................................Troca dos 32 bits
..............................................................................................|......................
..............................................................................................|......................
.........................................................................Transposição inversa final
..............................................................................................|......................
..............................................................................................|......................
........................................................................(Dado cifrado de 64 bits)
Este algoritmo é estruturado de uma maneira que a mudança de qualquer bit de entrada surta um
efeito maior em quase todos os bits de saída.
1.3.2.2 Criptografia de chave pública
Nesse método as chaves de criptografia e decriptografia são diferentes. Quando uma chave
criptografa um dado, a outra pode decriptografá-lo.
O usuário tem duas chaves, uma chave pública que é usada por todo mundo que queira enviar
mensagens a ele, e a chave privada que o usuário utiliza para decriptografar as mensagens
recebidas. Aqui o usuário divulga sua chave publica para os outros, e mantém a sua chave privada
em sigilo. Poderia também ser ao contrário, criptografar com chave privada e decriptografar com
chave pública. Nesse caso, não existe uma questão de segurança, mas de identificação, certificando
a origem do dado.
Algumas desvantagens são que esse método é lento, volumoso, e as chaves não podem ser
facilmente divididas.
É mais frequentemente usada:
- Para certificar a origem do dado e integridade
Exemplos resumidos de algoritmos que usam criptografia assimétrica:
•
Diffie-Hellman
É um método para desenvolver e trocar uma chave compartilhada sobre um canal de
comunicação público utilizando transformações matemáticas.
•
ElGamal
É um método baseado na exponenciação e aritmética modular.
•
RSA (Rivest, Shamir, Adleman)
O RSA é um algoritmo largamente usado, por isso vamos entrar em maiores detalhes sobre
ele.
Algoritmo RSA
Este algoritmo leva a inicial do nome dos seus criadores Rivest, Shamir e Adleman.
O RSA usa duas chaves criptográficas, uma chave pública e uma privada. A chave pública é usada
para criptografar a mensagem e a chave privada é usada para decriptografar a mensagem (pode ser
vice-versa).
A segurança desse método se baseia na dificuldade de fatorar números extensos. Segundo seus
pesquisadores, a fatoração de um número de 200 dígitos requer 4 milhões de anos para ser
processada; fatorar um número de 500 dígitos exige 1025 anos. Mesmo que os computadores se
tornem mais velozes, muito tempo irá passar até que seja possível fatorar um número de 500 dígitos,
e até lá poderão escolher a fatoração de um número ainda maior.
Como o RSA funciona
1- São escolhidos dois números primos extensos, p e q, (geralmente maiores que 10 100 )
2- Calcula-se n = p * q
..................... z = (p-1) * (q-1)
3- Escolhe-se um número primo d, em relação a z
4- Encontramos e de forma que (e * d ) mod z = 1
O texto simples (uma string de bits) é dividido em blocos, de modo que cada mensagem de texto
simples, p , fique no intervalo 0 <= p < n.
Para criptografar a mensagem, p, é calculado C = p e (mod n). Para decriptografar C, é calculado p =
C d (mod n).
É possível provar que, para todo P na faixa especificada, as funções de criptografia e decriptografia
são inversas entre si. Para realizar a criptografia, é necessário ver o "e" e "n", ao passo que para a
decriptografia, são necessários "d" e "n". Portanto a chave pública consiste no par (e,n) e a chave
privada consiste em (d,n).
Se pudesse fatorar o valor de n (publicamente conhecido), seria possível então encontrar d utilizandose o algoritmo de Euclides, porém fatorar números extensos é extremamente difícil.
Para um melhor entendimento do algoritmo RSA, veremos resumidamente o uso do método em um
exemplo.
Escolheremos p = 3 e q = 11
Calculando n = p * q ........e......... z = (p-1) * (q-1)
......................n = 3 * 11 ..................z = 2 * 10
......................n = 33 .........................z = 20
O valor escolhido como número primo, em relação a z é 7, visto que 7 e 20 não possuem fatores
comuns.
Desse modo d = 7.
Para que a equação (e * d ) mod z = 1 seja verdadeira o "e" deverá ser um número que multiplicado
por 7, mod 20 seja igual a 1. .Na tentativa 1 não daria certo pois (1* 7) mod 20 é diferente de 1,
Com 2 também não daria certo pois (2* 7) mod 20 é diferente de 1. O número 3 se identifica pois (3 *
7) mod 20 = 1, portanto e = 3.
Cálculo do transmissor
Cada letra do alfabeto é representada por um número:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
P3 C = P3 (mod 33)
P
Simbólico Numérico
R
18
5832
24
A
1
1
1
Q
17
4913
29
U
21
9261
21
E
5
125
26
L
12
1728
12
Cálculo do Receptor
C = P 3 (mod 33)
C7
C 7 ( mod 33) Simbólico
24
4586471424
18
R
1
1
1
A
29
17249876309
17
Q
21
1801088541
21
U
26
8031810176
5
E
12
35831808
12
L
Os números escolhidos para p e q, nesse exemplo são muito pequenos (geralmente os números são
maiores que 10 100 ). Se ao invés disso tivéssemos escolhido p e q = 10 100, teríamos n = 10 200 ;
portanto cada bloco de texto poderia ter até 664 bits (2 664 = 10 200) ou 83 caracteres de 8 bits.
1.4 Vantagens da Criptografia
- Proteger a informação armazenada em trânsito
- Deter alterações de dados
- Identificar pessoas
1.5 Desvantagens da Criptografia
Não há como prevenir que um intruso:
- Apague todos os seus dados, estando eles criptografados ou não.
- Modifique o programa para modificar a chave . Desse modo o receptor não consigara decriptografar
com a sua chave.
- Acesse o seu arquivo antes dele ser criptografado.
2. SSL
É um protocolo para garantir a segurança de dados em trânsito na Internet desde que o cliente e o
servidor o apoiem.
2.1 Características
•
Versão 2.0 desenvolvido pela Netscape e a versão 3.0 foi projetada com revisão pública e
"input" da indústria.
•
É um protocolo não proprietário.
•
Executa uma negociação do protocolo para estabelecer a conexão
•
Usa criptografia e é baseado em uma tecnologia de criptografia desenvolvida pela RSA.
•
Provê privacidade e confiança na comunicação, evitando espionagem ou falsificação.
•
Executa a negociação do protocolo para estabelecer uma conexão segura ao nível do socket.
Os serviços de segurança são transparentes ao utilizador e à aplicação.
•
Como o SSL é uma camada API de sockets de segurança (Secure Sockets Layer) ele pode
ser usado com qualquer porta TCP. Por exemplo, FTP, TELNET, WWW.
•
No transporte da mensagem incluí uma mensagem de checagem de integridade.
•
Programadores podem desenvolver aplicações utilizando o SSL que podem trocar
parâmetros criptográficos, com sucesso, sem um conhecer o código do outro.
2.2 Camadas do protocolo
O Protocolo é composto de duas camadas:
- SSL Record Protocol
- Handshake Protocol Overview
2.2.1 Record Protocol
É o nível mais baixo e é usado no encapsulamento de vários protocolos de alto nível.
2.2.2 Handshake Protocol
Uma vez encapsulado o Handshake Protocol Overview irá permitir que o servidor e o cliente
opcionalmente se autentiquem e negociem um algoritmo de criptografia assim como as chaves. Isso
tudo antes do protocolo de aplicação transmitir ou receber seu primeiro byte de dado.
O processo da execução do protocolo resumidamente é:
•
O cliente envia uma mensagem de hello ao servidor
•
O servidor responde com outra mensagem de hello
•
O hello do cliente e do servidor estabelece os seguintes atributos:
o
Versão do protocolo
o
Sessão ID
o
A cifra
o
O método de compressão dos dados
•
O servidor pode requerer uma certificação do cliente (se for autenticado).
•
O cliente deverá enviar a certificação (ou um alerta de não certificação).
•
Em resposta o servidor irá enviar sua identificação.
•
Agora eles poderão começar a troca de dados.
•
Quando eles decidirem terminar a conversação, o cliente enviará o seu hello usando a
sessão ID para finalização.
•
O servidor irá enviar o mesmo hello com o mesmo valor da sessão ID.
•
Nesse ponto, o cliente e o servidor devem enviar suas identificações e proceder diretamente
para finalizar.

Documentos relacionados

Aplicação de Técnicas de Criptografia de Chaves Assimétricas em

Aplicação de Técnicas de Criptografia de Chaves Assimétricas em Os métodos de criptografia podem ser classificados de acordo com o uso das chaves em duas categorias principais: os criptossistemas simétricos e assimétricos. Os métodos categorizados como criptogr...

Leia mais

Criptografia simétrica e assimétrica: os principais

Criptografia simétrica e assimétrica: os principais 2. Criptografia simétrica ou chave privada O modelo mais antigo de criptografia, em que a chave, isto é, o elemento que dá acesso à mensagem oculta trocada entre duas partes, é igual (simétrica) pa...

Leia mais

Trabalho Final - Universidade Federal do Paraná

Trabalho Final - Universidade Federal do Paraná Existem várias técnicas de criptoanálise que podem ser usadas para quebrar sistemas criptografados. Uma delas, o ataque da força bruta (busca exaustiva da chave), consiste na média do teste da meta...

Leia mais