UNICAMP

 

 

 

IA368

Prof. Ivan Ricarte

Prof. Leo Pini Magalhães

 

 

Aluno Rossano Pablo Pinto

RA 973273

 

 

SEGURANÇA

"Tendências"

 

 

SEGURANÇA

"Tendências"

 

  1. Introdução
  2. Breve cronologia da segurança em rede
  3. Internet Drafts
  4. Segurança em Bancos brasileiros
  5. Duas tecnologias atuais em segurança
  6. Ficção
  7. Conclusão
  8. Glossário
  9. Referências

 

 

 

 

 

Abstract

 

The first part of this document presents a brief security chronology, which is ordered by date of implementation. The second part lists some proposals in security, presented as Internet Drafts, which are submitted to IETF and also presents some brazilian banks security systems. At the end, two recent technologies in security are presented, CDSA and CryptoAPI. The focus of this document wil be on these two technologies.

Resumo

 

A primeira parte deste documento apresenta uma breve cronologia da segurança em rede, ordenadas por data de implementação. A segunda parte relaciona algumas propostas em segurança apresentadas nos Internet Drafts da IETF e sistemas de segurança utilizados em bancos brasileiros. Ao final são apresentadas duas tecnologias atuais em segurança, CDSA e CryptoAPI. Eu darei maior ênfase nestas duas tecnologias.

Introdução

 

Existem várias técnicas utilizadas para tentar garantir a segurança em rede. Técnicas estas que são empregadas nas várias camadas do modelo OSI de referência, tentam garantir os seguintes aspectos:

 

As técnicas atuais para garantir os aspectos citados são:

 

  • Firewall – proteção responsável em barrar acesso não autorizado à uma rede ou servidor.

  • Antivírus – software responsável em detectar e eliminar vírus de computador.

No contexto da Internet, a maior preocupação está em autenticar mensagens utilizando criptografia, impossibilitando que sejam alteradas e/ou inseridas novas mensagens por uma pessoa não envolvida na comunicação, pois muitas vezes é mais importante a procedência do que o próprio conteúdo da mensagem.

 

Cada uma das técnicas citadas podem ser empregadas em uma ou mais camadas ao mesmo tempo, formando uma hierarquia que pode trabalhar em conjunto, podendo até mesmo ser redundante em alguns casos.

 

 

Breve cronologia da segurança em rede

 

 

A preocupação com a segurança em rede aumenta com o crescimento do número de usuários utilizando-a. Atualmente não existe mais barreira para a interconexão e comunicação entre equipamentos e software de diferentes plataformas, viabilizando os ataques (invasão, destruição, roubo, espionagem, alteração, vírus etc..) à qualquer máquina conectada em uma rede. A preocupação existe há muito tempo e as técnicas para tentar garantir a segurança em rede tem evoluído de acordo com a necessidade. Será apresentada aqui uma linha do tempo com o objetivo de retratar uma evolução histórica.

 

A criptografia foi o primeiro método inventado para tentar garantir que uma mensagem não fosse interpretada por alguém diferente do destinatário e já era utilizada muito antes de qualquer computador ser inventado. As maiores contribuições na criptografia atual vieram dos militares, os quais definiram as bases para a tecnologia.

 

  • 1976 - Diffie e Hellman exponential key exchange

  • 1977 - Cifrador de Bloco - DES (Data Encryption Standard) – Em janeiro de 1977 o DES passou à ser adotado nos produtos de segurança.

  • Entrada – 64-bit block / Saída – 64-bit block
  • Chave de 56 bits
  • A cada 5 anos uma recertificação é feita. Em 1993 o DES foi reafirmado para utilização Financeira e em Autenticação.

  • 1978 - RSA – Criptosistema de chave pública (RSAREF – versão pública disponível na Internet, proibida para utilização comercial) – utilizado em assinaturas digitais

  • 1979 - Triple DES – utiliza o DES três vezes resultando em uma chave de 112 bits (K1+ K2 = 56+56) C=K1[!K2[K1[P]]].

  • 1989 - Cryptographic hash algorithm MD2 (Message Digest) (Rivest)

  • 1990 - Cifrador de Bloco – IDEA
  • Chave de 128 bits
  • 1990 - Cryptographic hash algorithm MD4 (Rivest)

  • 1991 - DAS/DSS – Digital Signature Standard

  • 1991 - Cryptographic hash algorithm MD5 (Rivest)

  • 1993 - SHA (Secure Hash Algorithm ) Cryptographic hash algorithm

  • 1994 - SHA-1 (Revisão do SHA) Cryptographic hash algorithm

 

Outras tecnologias que merecem ser citadas são:

  • Kerberos Authentication/Key Distribution Service (Resultado de um projeto iniciado em 1983 no MIT com parceria da IBM e Digital)

  • Bulk encryption algorithms - RC2, RC4, RC5 (Provavelmente de ‘Rivest Code’), Blowfish, CAST

  • SSL – Secure Sockets Layer – Criado pela Netscape.

  • S-HTTP – Protocolo utilizado em conjunto com o HTTP para prover segurança entre partes comunicantes.

  • GSS-API – Generic Security Service API – Application Program Interface com serviços genéricos de segurança, contrastando com a CryptoAPI da Microsoft que só oferece serviços de assinatura.

Internet Drafts

 

 

Os Internet Drafts constituem-se de documentos organizados e disponibilizados na WEB pela IETF (Internet Engineering Task Force). Estes documentos apresentam propostas de grupos associados à IETF e individuais. Procurei organizar tais propostas em categorias neste documento, as quais representam as camadas do modelo OSI (Figura 1.) em que estas tecnologias atuam. A camada de enlace não será abordada, apesar de existirem maneiras de à utilizar, bem como a camada física para implementação de sistemas de segurança.

 

Dentre os Internet Drafts lidos, a grande maioria apresenta propostas de extensões à mecanismos de segurança já existentes e em utilização, sejam elas referentes ao modo de criptografar, se utiliza chave simétrica ou não, tamanho das chaves etc..

 

 

As propostas citadas abaixo são poucas, muitas outras estavam disponíveis quando pesquisadas. Estas foram escolhidas pelo grau de interesse despertado durante a leitura. As propostas estão divididas em grupos em cada camada. O número de documentos em cada grupo é apresentado, no entanto apenas alguns são citados aqui. Para maiores referências acesse a página da IETF, que quando este documento for lido já estará desatualizado com relação as propostas.

 

Categoria I – Rede

 

A Figura 2 apresenta um exemplo de criptografia na camada de rede.

 

  • Domain Name System Security (12 Internet Drafts)

  • Don Eastlake – 05/05/1998 – Extensão ao DNS para oferecer integridade dos dados e autenticação à aplicativos através do uso de assinaturas criptográficas digitais.
  • Don Eastlake – 12/03/1998 – Descrição de um método para armazenar chaves "Diffie-Hellman" utilizando registros de recurso DNS KEY.
  • Don Eastlake – 27/01/1998 - Descrição de um método para armazenar chaves DSA e assinaturas utilizando registros de recursos DNS KEY e SIG.

  • IP Security Protocol (23 Internet Drafts)
  • H. Orman – 25/07/1997 – Descreve um protocolo chamado OAKLEY, na qual duas partes autenticadas podem trocar informações. O mecanismo utilizado é o algoritmo de troca de chave Diffie-Hellman.
  • Ran Atkinson – 12/05/1998 – Descreve o AH, IP Authentication Header, o qual é utilizado para tentar garantir a integridade sem conexão e autenticação da origem para datagramas IP.
  • B. Patel – 04/12/1997 – Apresenta o IPSEC "protocol suite" que tem a função de assegurar a comunicação entre pares comunicantes.

Categoria II – Transporte

 

Segundo afirmações de Tanenbaum[4], nesta camada é possível criptografar conexões inteiras, oferecendo sigilo às partes comunicantes. A Figura 3 exemplifica a criptografia na camada de transporte.

 

  • Transport Layer Security (5 Internet Drafts)
  • E. Rescorla – 13/03/1998 – Descreve como utilizar TLS para dar segurança à conexões HTTP na Internet.

Categoria III – Sessão

 

Não encontrou-se propostas nesta categoria.

 

Categoria IV – Apresentação

 

Não encontrou-se propostas nesta categoria.

 

Categoria V – Aplicação

 

Esta categoria é a que mais abriga propostas e soluções concretas em segurança.

 

  • Web Transaction Security (2 Internet Drafts)
  • A. Schiffman, E. Rescorla – 03/12/1997 – Descreve uma sintaxe para embutir parâmetros de negociação S-HTTP em documentos HTML.
  • Common Authentication Technology (12 Internet Drafts)
  • GSS-API – Generic Security Services
  • Public-Key Infrastructure (14 Internet Drafts)

A Figura 4 exemplifica protocolos nas várias camadas do modelo OSI.

Segurança em Bancos brasileiros

 

Devido à imposição das leis norte-americanas, o SSL utilizava chaves de 40 bits em browsers utilizados fora dos E.U.A.. O SSL de 128 bits só foi liberado nas versões 4.0 e superiores do Netscape e Internet Explorer. Os bancos não podiam esperar e criaram suas próprias soluções. As restrições com relação à novos métodos em segurança, geralmente algoritmos matemáticos para criptografia, são fortemente controladas pelo governo norte-americano chegando ao ponto de proibir a exportação de livros ou CDs, ou seja, informações relacionadas ao assunto segurança. Esta restrição pôde ser comprovada na tentativa de compra de um CD com 12 livros sobre criptografia e segurança vendido pela revista Dr. Dobb’s Journal. Eles simplesmente recusaram o pedido de compra do CD e passou-se a publicar na revista que este CD só estaria disponível para leitores do Canadá e E.U.A.. Segue-se a seguir alguns exemplos de soluções implementadas nos bancos brasileiros:

 

  • Banco Real, HSBC Bamerindus e Unibanco

RCML (Remote Control Management Language da EverSystems) é uma tecnologia genérica que permite desenvolver aplicações cliente/servidor que manipulem transações com segurança.

 

Executado através de um plug-in instalado no browser, o qual deve ser adquirido junto aos bancos. Oferece:

 

  • Compressão
  • Criptografia
  • Conectividade com mainframe

Os dados serão primeiramente criptografados pelo SSL e depois pela camada de segurança da RCML.

  • Bandeirantes e Bradesco

 

Solução baseada no SSL de 40 bits e incrementos de segurança implementados em Java que utiliza criptografia baseada no algoritmo RSA. Trata-se de um segundo navegador que trabalha com chave de 128 bits.

 

  • Banespa

 

Solução utilizando o SSL de 40 bits do próprio browser + Solução proprietária com chave de 128 bits.

 

  • BankBoston

 

WSP (Web Security Protocol da Unitools) – As chaves do WSP podem variar de tamanho, mas na maioria dos casos utiliza-se chave de 128 bits. O banco utiliza chave de 160 bits. Implementado através de um plug-in adquirido junto ao banco através da Internet (download do plug-in).

 

Duas tecnologias atuais em segurança

 

 

CDSA - Common Data Security Architecture

 

É um conjunto de serviços disposto em camadas que oferece serviços de segurança para aplicações conforme mostra a Figura 5. A camada mais baixa oferece componentes fundamentais como algoritmos de criptografia, por exemplo. As camadas mais altas oferecem certificados digitais, mecanismos de gerenciamento de chaves e protocolos para transações seguras. Esta arquitetura foi criada e desenvolvida pela Intel e está na versão 1.1. A razão de escolha desta tecnologia para ser apresentada foi o fácil acesso ao material e uma certa simpatia pela maneira pela qual esta foi apresentada.

 

System Security Services Layer

  • Layered Services – Fornece serviços de segurança transparentes à aplicação – A aplicação pode acessar as APIs da camada CSSM diretamente ou utilizar esta facilidade.

  • Language Interface Adapter – Estende os serviços oferecidos pelas APIs da camada CSSM (definidas em C) para outras linguagens de programação além da C.

CSSM – Common Security Services Manager Layer

 

Esta é a camada principal do CDSA.

 

  • CSP – Cryptographic Services Manager – Administra os CSP (Cryptographics Service Providers) que podem ser DLLs que estão instaladas no sistema local.

  • TP – Trust Policy Services Manager – administra os módulos TP instalados no sistema local.

  • CL – Certificate Services Manager – Gerencia a biblioteca de certificados instalados no sistema local. Operações devem incluir:
  • Criação
  • Assinatura
  • Verificação de certificados

  • DL – Data Storage Services Manager – Define uma API para objetos de:
  • segurança
  • armazenamento persistente de certificados

Esta API deve permitir que as aplicações busquem e selecionem objetos de dados armazenados e também retornar meta-informação (nome, data da última modificação, tamanho etc..)

 

Security Add-in Modules

 

Esta camada é categorizada em quatro serviços básicos:

  • CSP – Cryptographic Service Providers – Biblioteca responsável por qualquer tipo de serviço criptográfico

 

  • TP – Trust Policy Modules – Implementa políticas definidas por autoridades e instituições

 

  • CL – Certificate Library Modules – Implementa manipulação sintática de vários tipos de certificados. Ex: X.509, SDSI.

 

  • DL – Data Storage Library Modules – oferece armazenamento estável de objetos de dados relacionados à segurança. Ex: certificados digitais, chaves criptográficas.

 

Cada instância de um módulo Add-in deve ser instalada pelo CSSM para que esteja disponível para utilização no sistema.

 

 

Microsoft CryptoAPI

 

Estas APIs fornecem interfaces de funções para assinatura digital para utilização em aplicações Windows de 32bits.

 

A potencialidade destas APIs está na forma em que estas são implementadas. São DLLs conhecidas como CSPs (Cryptographic Service Providers) (Alguma semelhança com o CDSA?). Mudanças podem ser feitas nas DLLs sem ter que mudar a interface das funções. Isto quer dizer quando uma nova técnica ou algoritmo for desenvolvido, basta criar DLLs utilizando-se destas e estarão disponíveis para as APIs.

 

A CryptoAPI da Microsoft oferece seis funções:

 

  • short DSPrepCrypEnv(void) – Carrega dinamicamente as DLLs CryptoAPI.

 

  • void DSFreeCryptEnv(void) – Limpa a estrutura CryptFuncEnv.

  • short DSSignMessage(charP msg, long msgLen, charP csp, charP hashAlg, charP signer, charP *pSignature, long *pSignatureLen) – Pega um bloco de dados uma identidade do assinante e gera uma assinatura.

  • short DSVerifySignature(charP msg, long msgLen, charP csp, charP signature, long signatureLen, charP *pSigner, charP * pCertInfo, charP *pCertChain, short *pVerifyStatus) – Pega um bloco de dados e uma assinatura, executa testes (Ex: compara o valor de hash).

  • short DSGetIdentityList(charP csp, charP subString, short OnlyValidCerts, charP **listPtr, short * listSizePtr) – Pega uma string que identifique o usuário (Ex: e-mail address) e gera uma lista identidades do assinante.

  • short DSGetCertList(charP csp, charP certStoreName, short wholeSubject, charP *theCertificatePtr) – Lista os certificados armazenados.

Para poder utilizar a CryptoAPI deve-se seguir os seguintes passos:

  • Download wincrypt.h e winerror.h (pode ser utilizado o site www.ddj.com )

  • Obtenha um certificado através de um CA (Certificate Authority)

  • O par "chave pública/privada" será gerada no seu computador.

  • Informação básica (Ex: e-mail address) + chave pública são enviadas ao CA, o qual as utiliza para criar um certificado.

  • Download the certificate

 

Ficção

 

 

No filme Johnny Mnemonic utiliza-se como chave para criptografar uma certa quantidade de dados, uma imagem adquirida aleatoriamente durante a programação normal de uma dada emissora. Uma cópia da imagem é impressa em um papel que servirá para descriptografar a mensagem quando chegar ao seu destino.

 

Em um outro filme, não me lembro o nome, um certo matemático inventou um algoritmo matemático que era capaz de quebrar qualquer chave criptográfica em questão de segundos, o qual foi implementado em hardware.

 

Conclusão

 

 

Todas as coisas de uma forma geral sofrem uma evolução contínua. Na área da tecnologia a visão desta evolução é mais fácil de ser notada. As técnicas em segurança evoluem e os ataques também. O problema é que existem pessoas empenhadas em desenvolver novas técnicas e outras preocupadas em quebrar ou burlar estas. Estas últimas podem ter causas nobres ou não. Uma causa nobre seria descobrir falhas de segurança nesta nova técnica. A facilidade de uso de APIs para fornecer serviços de segurança é um fator importante para emprego de novos algoritmos criptográficos e o poder inerente às DLLs que podem ser atualizadas sem ter que mudar as APIs. Além da CryptoAPI apresentada, que é utilizada apenas para assinatura digital, existem outras APIs genéricas. Temos como exemplo a GSS-API, que fornece uma interface genérica para aplicações que desejam oferecer segurança. Outra ferramenta relativamente nova que oferece serviços de segurança é a linguagem de programação JAVA.

 

 

Glossário

 

 

  • Algoritmo simétrico – utiliza a mesma chave para criptografar e descriptografar uma mensagem.
  • DES – Data Encryption Standard – é um algoritmo de bloco simétrico desenvolvido pela IBM visando atender a uma solicitação do governo americano por volta de 1976.
  • Diffie e Hellman exponential key exchange – Algoritmo para troca de chaves simétricas.
  • Kerberos – é um serviço de autenticação distribuída que permite um parceiro provar sua identidade perante um outro parceiro sem enviar dados confidenciais pela rede. Resultado de um projeto iniciado em 1983 no MIT com parceria da IBM e Digital.
  • MD2, MD4, MD5 – Message Digest – algoritmo projetado por Ron Rivest da RSA Data Security e é de domínio público utilizado como mecanismo de integridade. " A partir de uma mensagem de um tamanho qualquer, ele gera um valor hash de 128 bits; com este algoritmo é computacionalmente impraticável descobrir duas mensagens que gerem o mesmo valor bem como reproduzir uma mensagem a partir do seu digest." - Ana Clara Pinto.

Referências

 

 

 

  • [2] Common Data Security Architecture (CDSA) specification – Release 1.2 – February 1998

  • [3] Dr.Dobb’s Journal, June 1998 – Digital Signatures with the Microsoft CryptoAPI

  • [4] Tanenbaum

  • [5] Firewalls and Internet Security – Repealing the wilyHacker – Willian R. Cheswick / Steven M. Bellovin