UNICAMP

IA 368
TÓPICOS EM ENGENHARIA
DA COMPUTAÇÃO V

SEGURANÇA
ESTUDO DE CASO

Raquel Cristina Bosnardo
RA 973505

clique aqui para iniciar


Indice

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


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, 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.


1. 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.

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.

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:


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.

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:

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 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.

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.

1.6 Questões governamentais

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.


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

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 é:


3. S-HTTP

É uma extensão do HTTP para prover um comércio eletrônico seguro.

3.1 Características

3.2 Negociação

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:


4. SSL ..X.. S-HTTP


5. Firewall

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.

5.1 O que é Firewall ?

É uma barreira inteligente entre a rede local e a Internet, que restringe o fluxo de informação.

5.2 Características

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

5.2.1 Permissã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.

5.2.2 Negação default

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.

5.3 O uso do Firewall

Pode ser usado para:

  • Bloquear o acesso a sites particulares na Internet, ou para prevenir que certos usuários ou máquinas, de acessarem certos servidores ou serviços.
  • Monitorar comunicações entre a rede interna e a externa.
  • Armazenar toda comunicação entre sua rede interna e a externa.
  • Criptografar dados que são enviados sobre a rede.
  • 5.4 Tipos de Firewalls

    Fundamentalmente os tipos de firewalls são:
    - Filtro de Pacotes
    - Proxy
    - Nat (Network Address Translation)

    5.4.1 Filtro de Pacotes

    Constituído de roteadores que são programados para permitir o acesso de alguns pacotes e bloqueio de outros.

    Vantagem

    Desvantagem

    5.4.2 Proxy

    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

    5.5 Falhas


    6. Conclusão

    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.


    7. Bibliografia

    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