UNICAMP
IA 368
TÓPICOS EM ENGENHARIA
DA COMPUTAÇÃO V
SEGURANÇA
ESTUDO DE CASO
Raquel Cristina Bosnardo
RA 973505
I - Introdução
1. Criptografia
......1.1
O que criptografar ?
......1.2
Categorias
...... .....1.2.1
Cifras de Substituição
............1.2.2
Cifras de Transposição
......1.3
Chave
............1.3.1
Tamanho da chave
............1.3.2
Tipos de Chave
.....................1.3.2.1
Criptografia Simétrica
.................................1.3.2.1.1
Algoritmo DES
.....................1.3.2.2
Criptografia de chave
pública
.................................1.3.2.2.1
Algoritmo RSA
..... 1.4
Vantagens da Criptografia
......1.5
Desvantagens da Criptografia
......1.6
Questões governamentais
2. SSL
....2.1
Características
....2.2
Camadas do protocolo
..........2.2.1
Record Protocol
..........2.2.2
Handshake Protocol
3. S-HTTP
....3.1
Características
....3.2 Negociação
4. SSL X S-HTTP
5. Firewall
..... 5.1
O que é Firewall ?
..... 5.2
Características
........... 5.2.1
Permissão default
........... 5.2.2
Negação default
......5.3
O uso do Firewall
......5.4
Tipos de Firewalls
............5.4.1
Filtro de Pacotes
............5.4.2
Proxy
............5.4.3
Nat (Network Address
Translation)
......5.5
Falhas
6. Conclusão
7. Bibliografia
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, firewall e os protocolos S-HTTP e SSL. Sendo que o assunto sobre criptografia e firewall tiveram maior destaque nesse trabalho, devido a importância no aspecto da segurança.
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.
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.
Os métodos de criptografia têm sido divididos em duas categorias: as cifras de substituição e as de cifras de transposiçã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.
a b c d e f g h i j k l m n o p q r s t u v w
x y z
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.
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"
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.
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.
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:
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.
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:
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 utilizando-se 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:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
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
P |
P3 |
C = P3 (mod 33) |
|
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) |
C 7 |
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.
- 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.
Os governos não gostam que as pessoas guardem segredos. Na França
por exemplo, toda a criptografia não governamental é proibida,
a menos que o governo receba todas as chaves que estão sendo usadas.
Nos Estados Unidos existe uma lei (22 U.S.C. 2778) que proíbe os
cidadãos de exportar munições de guerra, sem autorização
do DoD (Departamento de Defesa dos Estados Unidos). Para os objetivos dessa
lei, os softwares criptográficos são classificados como munição.
Sob a política americana, qualquer software criptográfico
pode ser diretamente exportado para o Canadá sem a necessidade de
uma licença de exportação. O Canadá tem também
liberado sua política de exportação, permitindo que
qualquer software criptográfico canadense seja mais tarde exportado
para fora. Mas o software exportado para o Canadá não pode
ser exportado para um terceiro país.
Esta questão de segurança tem uma característica política
que quase não se vê em outras questões técnicas,
representando desse modo, a diferença entre uma democracia e um
estado totalitário na era da informática.
É um protocolo para garantir a segurança de dados em trânsito na Internet desde que o cliente e o servidor o apoiem.
O Protocolo é composto de duas camadas:
- SSL Record Protocol
- Handshake Protocol Overview
É o nível mais baixo e é usado no encapsulamento de vários protocolos de alto nível.
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 é:
É uma extensão do HTTP para prover um comércio eletrônico seguro.
Ambas as partes (cliente-servidor) são capazes de expressar seus requerimentos e preferencias, considerando que tipo de criptografia eles irão permitir ou requerer da outra parte. A escolha apropriada depende da capacidade da implementação e dos requerimentos de aplicações particulares.
Um cabeçalho de negociação é uma sequência de especificações conforme o esquema:
Como alternativa para proteger computadores individuais na rede, muitas organizações tem optado pela solução de proteger a sua rede interna de ataques externos, como uma espécie de isolamento, onde as pessoas de "fora" não atacam a sua rede interna sem primeiro contactar suas premissias. Para criar esse isolamento é utilizado o Firewall, que do mesmo modo, também pode controlar o acesso da rede interna à internet.
É uma barreira inteligente entre a rede local e a Internet, que restringe o fluxo de informação.
Para configurar o firewall, você deve definir que tipos de dados podem ser passados e que tipos de dados serão bloqueados. Este procedimento é conhecido como definir a política do firewall.
Um exemplo de algumas linhas de permissões:
Protocolo...
Serviço/Porta...
End Origem .........End
Dest ......
in/out ........Negar/Aceitar
... TCP
............Telnet
.............204.17.195.0
......199.232.92.0
........in.........................Aceitar
....TCP.............
FTP ...............
200.13.142.1 ......199.232.89.0
....... in .................
Negar
....TCP.............Finger.............
201.11.100.0 ......199.232.90.0
....... in .................
Negar
(in/out = interface de entrada / saída)
Nesse exemplo definimos protocolos e serviços que podem ser aceitos ou negados. Semelhantemente existe uma linha de permissões para pacotes.
Existem duas estratégias básicas
para definir a política:
- Permissão default
- Negação default
Permite todos os serviços e protocolos
externos e se estabelece restrições em apenas alguns deles.
Qualquer protocolo e serviço que não esteja coberto por sua
política irá passar por default.
Como são muitos, nesse caso, você corre o risco de deixar
passar desapercebido algum serviço ou protocolo não desejável.
Nenhum serviço e protocolo são permitidos e se estabelece algumas exceções. Aqui o risco de se deixar passar algum serviço ou protocolo desapercebidamente é bem menor.
Pode ser usado para:
Fundamentalmente os tipos de firewalls são:
- Filtro de Pacotes
- Proxy
- Nat (Network Address Translation)
Constituído de roteadores que são
programados para permitir o acesso de alguns pacotes e bloqueio de outros.
Vantagem
Desvantagem
O proxy esconde os arquivos e os servidores da ação dos hackers.· Ele se comunica com a Internet no lugar da rede local e trabalha a nível de serviço e não de pacotes, bloqueando ou permitindo os serviços e protocolos.
Vantagem
Desvantagem
5.4.3 Nat (Network Address Translation)
Ele é próprio para uma rede interna que tenha endereços não registrados. Ele se comunica com a Internet no lugar da rede local e trabalha a nível de pacotes, permitindo ou negando seu acesso.
Vantagem
Desvantagem
Dependendo da utilização do seu sistema, você pode optar pelo uso de um método em específico ou da combinação de vários, por exemplo, Firewalls são ferramentas poderosas mas não devem ser usadas no lugar de outras medidas de segurança, e sim em adição a tais medidas.
Vimos anteriormente que não é possível ignorar o dano que um usário da rede interna pode fazer em um Firewall, nesse caso, se o problema for "comprometer o sigilo da informação", poderia ser usado a criptografia.
De um modo geral é importante observar que um método pode completar o outro. Por outro lado, também é necessário levar em consideração que muitas metodologias poderiam resultar em um exagero dispensável, que consequentemente poderia levar a uma queda de desempenho do sistema.
Portanto é necessário ter várias ferramentas de proteção mas é fundamental ter um equilíbrio entre o desempenho do sistema e as metodologias empregadas, para se conseguir uma proteção adequada sem maiores danos .
Hacker - é um intruso de sistemas de computador, que procura aprender detalhes sobre esses sistemas, testando sua capacidade e violando regras do bom senso.
Criptografia e Firewall
Practical Unix & Internet Security
Simson Garfinkel and Gene Spafford
O´Reilly & Associates, Inc.
Criptografia
Redes de Computadores
Andrew S. Tanenbaum
Ed. Campus
S-HTTP
E.Rescorla, A. Schiffman
Terisa Systems, Inc.
July 1996
SSL
Netscape Products Security
e
file://FAM_ALU/VOL1/TRB/FUNC/L...ICAMP/IA3687/SECURITY/SECURITY.HTM