Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Criptologia – Segurança na Internet
2003 / 2004
970371 Rui Matos
Departamento de Engenharia Informática
Setembro de 2004
Orientador: Engº António Costa
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto i
Prefácio
No âmbito da disciplina Projecto do 5º ano da Licenciatura de Engenharia
Informática, Ramo Computadores e Sistemas, do Instituto Superior de
Engenharia do Porto, era pedido que se escrevesse um relatório sobre um
assunto/tecnologia relacionado com o curso. A minha escolha recaiu sobre a
Criptologia.
Tudo começou com uma pesquisa na Internet acerca do tema, onde fui
encontrando informação e documentos, que numa primeira etapa, fui
guardando. Segui-se uma leitura mais aprofundada, onde dei início à selecção
da informação mais pertinente. Com isto, comecei a tirar conclusões acerca da
matéria e a construír este relatório. No entanto, nunca deixei de pesquisar por
mais dados, sempre que surgia uma dúvida.
Com isto, posso neste momento dizer, que aprendi bastante sobre o tema –
Criptologia – tendo agora uma visão consideravelmente mais ampla acerca da
segurança necessária que se deve empregar, quando se requer privacidade,
sigilo, segurança nas transacções comerciais, documentais ou meramente de
mensagens privadas.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto ii
Agradecimentos
O projecto representa o final do curso académico, pelo que gostaria de
agradecer a todos os que contribuiram para que, neste momento, me
encontrasse aqui. Foram vários anos, muito trabalho, dores de cabeça,
sacrifícios feitos, não podendo, nesta altura deixar de deixar um Muito
Obrigado a todos que ajudaram não só no estudo, mas também a passar o
tempo. Especialmente, gostaria de enumerar algumas, que se tornaram casos
especiais.
Meus pais, pelo que sempre fizeram por mim.
Cláudia, por várias vezes se ver privada da minha presença e por todo o apoio.
Eduardo Covelinhas, Sérgio Lopes, pela grande amizade que ficou e pelos
bons momentos passados.
Engº António Costa, pelo tema deste projecto e pela prontidão em ajudar que
sempre revelou.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto iii
Índice
PREFÁCIO..................................................................................................................................................... I AGRADECIMENTOS .................................................................................................................................II ÍNDICE ........................................................................................................................................................ III ÍNDICE DE FIGURAS ................................................................................................................................V ÍNDICE DE TABELAS................................................................................................................................V 1. INTRODUÇÃO ...............................................................................................................................1 2. A REDE COMO MEIO DE DIVULGAÇÃO..............................................................................3
2.1. O QUE PROTEGER ..........................................................................................................................3 2.2. DE QUE PROTEGER ........................................................................................................................4 2.3. COMO PROTEGER...........................................................................................................................5
3. CRIPTOLOGIA..............................................................................................................................6 3.1. TERMINOLOGIA BÁSICA................................................................................................................6 3.2. PRINCÍPIOS BÁSICOS DA SEGURANÇA............................................................................................7
3.2.1. Autenticidade...........................................................................................................................8 3.2.2. Confidencialidade ...................................................................................................................9 3.2.3. Integridade.............................................................................................................................10 3.2.4. Disponibilidade .....................................................................................................................10
4. TEORIA DA INFORMAÇÃO E LEGISLAÇÃO.....................................................................12 4.1. ASPECTOS LEGAIS.......................................................................................................................12
4.1.1. Copyright (Direitos de Autor)...............................................................................................16 4.1.2. Trade Secrecy Protection (Protecção do Negócio) ..............................................................16 4.1.3. Contrato.................................................................................................................................17
5. PROTECÇÕES POR MEIOS NÃO LEGAIS...........................................................................18 6. TIPOS DE RISCOS PARA AS ORGANIZAÇÕES .................................................................19 7. ALGORITMOS DE CRIPTOGRAFIA BÁSICOS ..................................................................21 8. ASSINATURAS DIGITAIS.........................................................................................................23 9. FUNÇÕES DE HASH CRIPTOGRÁFICAS.............................................................................25 10. GERADORES DE NÚMEROS ALEATÓRIOS CRIPTOGRÁFICOS.................................27 11. A FORÇA DOS ALGORITMOS CRIPTOGRÁFICOS..........................................................29 12. CRIPTOANÁLISE E ATAQUES EM CRIPTOSISTEMAS ..................................................31 13. ALGORITMOS.............................................................................................................................35
13.1. CRIPTOSISTEMAS DE CHAVE PÚBLICA.........................................................................................35 13.2. TERMINOLOGIA ...........................................................................................................................36
14. CRIPTOSISTEMAS PRÁTICOS...............................................................................................39 14.1. FACTORIZAÇÃO: RSA, RABIN.....................................................................................................39 14.2. DISCRETE LOGS: DIFFIE-HELLMAN, ELGAMAL, DSS ................................................................41 14.3. KNAPSACKS ................................................................................................................................45 14.4. LATTICES.....................................................................................................................................45
14.4.1. Qual a ideia base por detrás do algoritmo NTRUSign?......................................................46 15. CRIPTOSISTEMAS DE CHAVE SECRETA ..........................................................................47
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto iv
15.1. TERMINOLOGIA ...........................................................................................................................47 15.1.1. S-Boxes..............................................................................................................................47 15.1.2. Redes Feistel.....................................................................................................................48 15.1.3. Expansão, Permutação.....................................................................................................49 15.1.4. Operações bit slice ...........................................................................................................49
15.2. ONE-TIME PAD............................................................................................................................50 15.3. DES.............................................................................................................................................51
15.3.1. As origens do DES: o cifrador “Lucifer” da IBM...........................................................51 15.3.2. Descrição do Algoritmo ...................................................................................................54 15.3.3. Controvérsias sobre a segurança do DES .......................................................................55 15.3.4. Armadilhas e fraquezas ....................................................................................................56 15.3.5. Tamanho da chave............................................................................................................57 15.3.6. Fragilidades reais do DES...............................................................................................57 15.3.7. Existência de chaves fracas..............................................................................................58 15.3.8. Existência de chaves semi-fracas.....................................................................................58 15.3.9. O Futuro Padrão ..............................................................................................................59
15.4. BLOWFISH ...................................................................................................................................62 15.5. IDEA...........................................................................................................................................63 15.6. RC4.............................................................................................................................................63 15.7. MODOS DE OPERAÇÃO ................................................................................................................63 15.8. CRIPTOGRAFIA ANTES DOS ANOS 70 ...........................................................................................65
16. SSLEAY/OPENSSL......................................................................................................................68 16.1. CONTEXTO ..................................................................................................................................68 16.2. A ORIGEM DO SSLEAY................................................................................................................68
16.2.1. Autoridade ........................................................................................................................69 16.3. CERTIFICADO ..............................................................................................................................70
16.3.1. Informação de atributo.....................................................................................................71 16.3.2. Chave de informação pública ..........................................................................................71 16.3.3. Assinatura da Autoridade em Certificação (CA).............................................................72
16.4. CHAVES.......................................................................................................................................73 16.5. COMO FUNCIONA O SSL..............................................................................................................74 16.6. CARACTERÍSTICAS ......................................................................................................................76 16.7. CAMADAS DO SSL ......................................................................................................................77
16.7.1 Processos ..........................................................................................................................79 16.8. ALGORITMOS UTILIZADOS..........................................................................................................81 16.9. ATAQUES.....................................................................................................................................81
16.9.1. Integridade........................................................................................................................81 16.9.2. Autenticidade ....................................................................................................................82 16.9.3. Personificação ..................................................................................................................82 16.9.4. Confidencialidade.............................................................................................................82 16.9.5 Disponibilidade ................................................................................................................83
17. S-HTTP...........................................................................................................................................84 17.1 AMEAÇAS....................................................................................................................................84
17.1.1 Protecção possível............................................................................................................84 17.1.2. Fraquezas .........................................................................................................................85
18. PROTOCOLOS E STANDARDS...............................................................................................86 18.1. DOMAIN NAME SERVER SECURITY (DNSSEC). ........................................................................87 18.2. GENERIC SECURITY SERVICES API (GSSAPI) ...........................................................................87 18.3. SECURE SOCKET LAYER (SSL)...................................................................................................87 18.4. SECURE HYPERTEXT TRANSFER PROTOCOL (S-HTTP) .............................................................87 18.5. STANDARDS DE ENCRIPTAÇÃO DE CHAVE PÚBLICA (PKCS – PUBLIC KEY ENCRYPTION STANDARDS)..............................................................................................................................................88 18.6. IEEE P1363: ESPECIFICAÇÕES DO STANDARD PARA CRIPTOGRAFIA DE CHAVES PÚBLICAS .....88 18.7. PUBLIUS CENSOR-RESISTENT PUBLISHING PROTOCOL ..............................................................88 18.8. SSH2...........................................................................................................................................88 18.9 IPSEC ..........................................................................................................................................89
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto v
19. CONCLUSÃO ...............................................................................................................................90 20. DEFINIÇÕES E ABREVIATURAS...........................................................................................92 21. BIBLIOGRAFIA...........................................................................................................................95
Índice de Figuras FIGURA 1 – ESQUEMA DE CIFRAGEM DO ALGORITMO DES.............................................................................. 56 FIGURA 2 – DIAGRAMA-BLOCO DES................................................................................................................. 57 FIGURA 3 – CAMADAS DE PROTOCOLO SSL..................................................................................................... 81 FIGURA 4 – PROTOCOLOS HANDSHAKE E PROCESSOS RECORD....................................................................... 81
Índice de Tabelas TABELA 1 - AMEAÇAS................................................................................................................................... 23 TABELA 2 – CHAVES FRACAS DES .................................................................................................................. 61 TABELA 3 – CHAVES SEMI-FRACAS DES......................................................................................................... 62
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 1
1. Introdução
Podemos situar a criação da Internet no fim da década de 60, patrocinada pela
então ARPA (Advanced Research Projects Agency), com o nome de ARPANET,
que tinha como objectivo ligar em rede as várias instituições governamentais,
Ensino, Defesa e Pesquisa dos Estados Unidos da América.
O projecto original visava obter conectividade plena entre computadores, dentro
de um ambiente restrito de utilizadores de confiança. O crescimento da Internet
– a partir da sua criação – revelou-se exponencial, englobando um número cada
vez maior de organizações e pessoas.
Na realidade, os criadores da Internet não previram a sua utilização num
ambiente de tráfego de informações confidenciais e valiosas, quer sejam de
carácter pessoal, comercial ou mesmo oficial, como acontece actualmente.
No ambiente actual, com a massificação do acesso à Internet e também o livre
acesso de indivíduos e organizações mal-intencionadas, que laboram, pelos mais
diversos motivos, no sentido de obter o conhecimento e/ou comprometimento
de informações e sistemas alheios, há que se cuidar permanentemente do
aspecto da Segurança.
Portanto, no início, apenas a interoperabilidade e não a segurança, foi
enfatizada. Agora, com o crescimento da procura comercial cada vez mais
acentuado, a segurança passou a ser uma necessidade fundamental consistindo
foco de discussão das pessoas envolvidas com a tecnologia de redes.
Este projecto tem por objectivo, analisar os principais aspectos e ferramentas da
segurança das redes modernas, em especial, aquelas baseadas na tecnologia
TCP/IP. A motivação fundamental para este tema deve-se à utilização desses
padrões na rede mundial, a Internet. Esta rede é considerada por muitos como
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 2
um dos mais importantes e revolucionários desenvolvimentos da história da
humanidade, tendo contribuído fortemente para o que se chama globalização
das informações. Através da Internet, qualquer pessoa ou empresa pode
(facilmente e a um custo muito baixo), não só ter acesso a informações
localizadas nos mais distantes pontos do Planeta, como também criar, gerir e
distribuir informações em larga escala, no âmbito mundial. A sua existência tem
vindo a criar costumes e a modificar culturas por todo o mundo.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 3
2. A Rede como meio de divulgação
A operação em rede possibilita, entre outras coisas, ganhos de produtividade
pela partilha de recursos e propagação da informação, inclusive com a
finalidade de divulgação. Contudo, esses benefícios trazem alguns riscos.
Conectar-se em rede significa possibilitar, mesmo que sob condições específicas
e com algum tipo de controlo, o acesso externo aos recursos computacionais,
inclusive às informações. Assim, falhas na especificação das condições e
controlo de acesso podem ser exploradas por utilizadores da rede, externos ou
internos ao sistema de computação/informação, para obtenção de acesso não
autorizado aos recursos. Essas falhas nos sistemas podem causar impactos dos
mais diferentes níveis, indo desde um simples constrangimento, passando pelo
desgaste da imagem corporativa e chegando a perdas financeiras e de mercado.
Torna-se, então, importante definir e configurar regras que determinem a
segurança dos sistemas. A definição de uma política de segurança que atenda as
necessidades de uma organização, seja ela qual for, deve partir da análise de três
factores: O que proteger, de que proteger e como proteger.
2.1. O que proteger
O alicerce da construção de um ambiente seguro consiste em saber o que precisa
realmente ser protegido. Cada organização precisa proteger algo diferente,
recursos ou informações, normalmente com graus de protecção diferenciados.
Muitas vezes, uma informação é sigilosa para uma organização e para outra não.
Por exemplo, para uma organização que tenha em seus dados o seu factor
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 4
crítico, alterações na integridade destes podem acarretar altos custos em termos
de horas de trabalho necessárias para análise e recuperação ou prejuízos
irrecuperáveis com a perda definitiva de dados. Tal organização deve
estabelecer um nível de segurança mais rigoroso em termos de assegurar a
integridade do seu sistema. Por outro lado, uma agência de publicidade que
esteja ligada à Internet, tem que proteger muito a confidencialidade de seus
trabalhos, pois uma propaganda que irá ser na semana seguinte, não pode, de
maneira alguma, cair nas mãos da concorrência, pois isto traria muitos
prejuízos à empresa. Já numa universidade, o aspecto confidencialidade não é
tão necessário, pois os seus trabalhos geralmente são colocados à disposição de
outras universidades. Desse modo, a segurança deve ser entendida segundo
vários aspectos, dentre eles: autenticidade, confidencialidade, integridade e
disponibilidade, os quais serão tratados de forma mais abrangente neste
trabalho.
2.2. De que proteger
O segundo passo é saber “De que proteger?”. É necessário descobrir quais os
tipos de acção que podem comprometer a segurança das informações ou do
sistema da organização. Actualmente, não são só as grandes empresas que são
alvo de ataques. Existem mais de 80.000 sitios na própria Internet dedicados a
actividades de hacking onde é possível obter ferramentas para invasão de
sistemas. Essas ferramentas, muitas vezes automáticas, implementam
combinações de diversos tipos de ataque, procurando por falhas de configuração
e vulnerabilidades inerentes aos sistemas adoptados nas diversas redes alvo. As
providências específicas que uma organização deverá tomar para conter ataques
deverão ser baseadas nos objectivos das transacções e no que é preciso proteger.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 5
2.3. Como proteger Outro facto a ser enfatizado é que a segurança deve prever também a protecção
e controlo da rede internamente. Muitos modelos para segurança de redes tem
assumido que os invasores estão do lado de fora. Essa idéia tem feito com que
criadores de sistemas e administradores de rede utilizem uma estratégia
simplista na Internet, evitando qualquer acesso externo e, por outro lado, não
restringindo o acesso para utilizadores internos, quando grande parte dos
problemas está associada a ameaças internas.
A finalidade de toda a análise de segurança consiste em fundamentar a
especificação de como os níveis de segurança desejados devem ser atingidos.
Assim, depois de conhecer a ameaça, deve-se projectar mecanismos para
prevenir, detectar ou recuperar-se de um ataque. Nesse sentido, são
desenvolvidas diversas ferramentas para avaliação das vulnerabilidades das
redes, bem como para sua proteção, onde se destacam técnicas de criptografia e
softwares firewalls e proxies. Essas ferramentas possibilitam, além da protecção
preventiva do sistema, a realização de auditorias que permitam identificar a
ocorrência de ataques e rastrear a origem destes.
A análise destes factores vai fundamentar uma avaliação dos custos e benefícios
envolvidos na determinação e implantação de uma política de segurança
adequada. A maioria dos métodos para determinação de riscos e prejuízos
produzem resultados descritivos (análises) e não quantitativos. Isso expressa a
complexidade se calcular prejuízos decorrentes de uma segurança fraca ou
inexistente. Mas é certo assegurar que o custo de implementação de ferramentas
para segurança do sistema é bem menor que os custos e prejuízos advindos da
falta de segurança.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 6
3. Criptologia As pessoas têm interpretações diferentes quando se fala de criptologia. Crianças
brincam com linguagens secretas e códigos. Contudo, isto pouco se relacionará
com segurança real e encriptação forte.
Encriptação forte é o tipo de encriptação que pode ser usado para proteger
informação valiosa, de criminosos, corporações multinacionais e instituições
governamentais. Começou por ser apenas usada pelas forças militares, no
entanto, na sociedade de informação que vivemos, tornou-se numa das
principais ferramentas para preservar tanto a privacidade como
confidencialidade.
À medida que avançamos para a sociedade da informação, os meios
tecnológicos de vigilância de milhões de indivíduos tornam-se disponíveis aos
Governos. Para combater tal facto, a criptologia tem sido um dos melhores
meios para garantir a privacidade, confiança, controlo de acesso, pagamentos
electrónicos e inúmeros outros campos.
A Criptografia deixou de ser algo estritamente militar. Chegou a hora de a
desmistificar e aproveitar ao máximo todas as vantagens que pode proporcionar
a uma sociedade moderna.
3.1. Terminologia Básica A palavra Criptografia tem a sua origem no grego: “kryptós” significa oculto,
envolto, escondido, secreto; “grápheim”, escrever, grafar. Pode ser vista como a
ciência que estuda os princípios e técnicas que visam proporcionar às
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 7
informações ou dados, armazenados ou em trânsito, os serviços de segurança da
Confidencialidade, Integridade e Autenticidade.
A meta da Criptografia é alcançada pela aplicação de sistemas, chamados
criptográficos, projectados e construídos de maneira adequada.
A Criptoanálise, do grego: “kryptós” e “analyein”, desfazer, é a ciência (e/ou
arte) que estuda os princípios, processos e métodos para desvendar os segredos
dos sistemas criptográficos existentes (“quebrar” os sistemas), com o propósito
de ganhar acesso ou mesmo a capacidade de alterar as informações ou dados
supostamente protegidos.
Juntas, a Criptografia e a Criptoanálise, compõem a Criptologia (“kryptós” +
“lógos” – palavra).
Quem efectua criptografia são chamados Criptógrafos, enquanto que os
praticantes da criptoanálise, são os Criptoanalistas.
Em termos criptológicos, a mensagem é chamada de texto simples. Codificar o
conteúdo de uma mensagem de forma a que se torne imperceptível a estranhos
designa-se por encriptação. À mensagem encriptada chama-se de texto cifrado.
O processo inverso (tranformar o texto cifrado em texto simples) é designado
por decifragem.
A encriptação e decifragem geralmente usam uma chave e, a codificação é feita
de forma que a decifragem apenas seja possível com o conhecimento dessa
chave.
3.2. Princípios básicos da segurança Os princípios básicos da segurança são a autenticidade, confidencialidade,
integridade e disponibilidade das informações. Os benefícios evidentes são
reduzir os riscos com fraudes, erros, uso indevido, sabotagens, roubo de
informações e diversos outros problemas e assim, consequentemente aumentar
a produtividade dos utilizadores através de um ambiente mais organizado,
maior controle sobre os recursos de informática e, finalmente, viabilizar
aplicações críticas das empresas.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 8
3.2.1. Autenticidade O controle de autenticidade está associado com a identificação correcta de um
utilizador ou computador. O serviço de autenticação em um sistema deve
assegurar ao receptor que a mensagem é realmente procedente da origem
informada em seu conteúdo. Normalmente, isso é implementado a partir de um
mecanismo de senhas ou de assinatura digital. A verificação de autenticidade é
necessária após todo processo de identificação, seja de um utilizador para um
sistema, de um sistema para o utilizador ou de um sistema para outro sistema.
Ela é a medida de proteção de um serviço/informação contra a personificação
por intrusos.
Um ataque contra a autenticidade envolve alguma forma de personificação
(spoofing). Um tipo comum de personificação consiste num utilizador externo
assumir a identidade de um utilizador interno, actuando no sistema no lugar
deste utilizador legítimo. A maneira mais simples de personificação está
associada com infiltrações de senha, onde o intruso introduz uma combinação
de nome do utilizador/senha, depois outra e assim por diante, até que uma
determinada combinação permita a sua entrada no sistema. Tal técnica,
consome, com frequência, um volume considerável de tempo e esforço. Assim
software como o sniffer, que possibilitam o rastreio de senhas, estão a ser
utilizados cada vez em maiores escalas.
Muitos tipos de sistemas não bloqueiam tentativas de autenticação após um
determinado número de insucessos. Essa fraqueza inerente em termos de
segurança, permite que um intruso dê início a um grande número de tentativas
de autenticação que não são impedidas. Consequentemente, possibilita aos
violadores várias formas de invasão: acedendo a mensagens de correio
electrónico, os quais contêm senhas; ou decifrando-as com uma ferramenta que
permite localizar e obter informações sobre senhas vulneráveis em sistemas. Na
verdade, alguns invasores utilizam TFTP ou FTP para tentar obter a senha, em
seguida o invasor deverá identificar as senhas verdadeiras. No Unix, as senhas
contidas em /etc/passwd são cifradas através de um esquema de criptografia
não-convencional, mas o algoritmo de criptografia em si está largamente
disponível e pode ser até mesmo incorporado em algumas ferramentas
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 9
utilizadas pelos invasores. Os invasores utilizam-nas para obter senhas em
textos simples que serão espalhadas durante sessões de telnet ou de rlogin.
3.2.2. Confidencialidade Confidencialidade significa proteger informações da sua revelação para alguém
não autorizado – interna ou externamente. Consiste em proteger a informação
contra leitura e/ou cópia por alguém que não tenha sido explicitamente
autorizado pelo proprietário daquela informação. A informação deve ser
protegida qualquer que seja a forma que a contenha, como por exemplo,
impressa ou digital. Deve-se cuidar não apenas da proteção da informação como
um todo, mas também de partes da informação que podem ser utilizadas para
interferir sobre o todo. No caso da rede, isto significa que os dados, enquanto
em trânsito, não serão vistos, alterados, ou extraídos da rede por pessoas não
autorizadas ou capturados por dispositivos ilícitos.
O objetivo da confidencialidade é proteger informação privada (cidadãos,
indústrias, governo, militar). Na comunicação, ela é obtida evitando-se a escuta
(meio físico, topologia), ou se isto não for possível, evitando-se a inteligibilidade
dos dados durante o processo de transmissão (cifra).
Uma rede de meios físicos compartilhados, é uma rede na qual os pacotes são
transmitidos para várias partes da rede à medida que trafegam dos pontos de
origem para os de destino. As redes de meios físicos compartilhados impõem
um tipo especial de risco de segurança, pois os pacotes podem ser interceptados
em qualquer ponto dessas redes. A captura de pacotes dessa forma é conhecida
como rastreamento da rede. Para o rastreamento de uma rede é preciso usar um
dispositivo físico ou um programa. Normalmente, os dispositivos físicos de
rastreamento são instalados onde há conexão de cabos, através de um conector
dentado que penetra no isolamento do cabo, ou em interfaces de porta de
máquina host individuais. Os programas de captura de pacotes proporcionam
uma interface com um dispositivo de hardware que é executado no modo
promíscuo (sniffer), ou seja, copiando todos os pacotes que chegam até ele,
independentemente do endereço de destino contido no pacote.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 10
Se um sniffer for instalado em alguma parte da rota entre dois hosts de uma
rede, senhas e informações confidenciais podem ser capturadas, causando
transtornos e prejuízos. Tal acção pode proporcionar, também, a ocorrência de
futuros ataques contra autenticidade, usando senhas, usernames e endereços de
host capturados por sniffers.
3.2.3. Integridade A integridade consiste em proteger a informação contra modificação sem a
permissão explicita do proprietário daquela informação. A modificação inclui
acções como escrita, alteração de conteúdo, alteração do estado, remoção e
criação de informações. Deve-se considerar a protecção da informação nas suas
mais variadas formas, como por exemplo, armazenada em discos ou fitas de
segurança. Integridade significa garantir que se o dado está lá, então não foi
corrompido, encontra-se íntegro. Isto significa que aos dados originais nada foi
acrescentado, retirado ou modificado.
A integridade é assegurada evitando-se alteração não detectada de mensagens
(ex. Tráfego bancário) e o forjamento não detectado de mensagem (aliado a
violação de autenticidade).
3.2.4. Disponibilidade Ter as informações acessíveis e prontas para uso representa um objectivo crítico
para muitas empresas. No entanto, existem ataques de negação de serviços,
onde o acesso a um sistema/aplicação é interrompido ou impedido, deixando de
estar disponível; ou uma aplicação, cujo tempo de execução é crítico, é atrasada
ou abortada.
Disponibilidade, consiste na protecção dos serviços prestados pelo sistema, de
forma que eles não sejam degradados ou se tornem indisponíveis sem
autorização, assegurando ao utilizador o acesso aos dados sempre que deles
precisar. Isto pode ser chamado também de continuidade dos serviços.
Um sistema indisponível, quando um utilizador autorizado necessita dele, pode
resultar em perdas tão graves quanto as causadas pela remoção das informações
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 11
daquele sistema. Atacar a disponibilidade significa realizar acções que visem a
negação do acesso a um serviço ou informação, como por exemplo:
bloqueamento do canal de comunicação ou do acesso a servidores de dados.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 12
4. Teoria da informação e legislação
A Informação é hoje, sem dúvida, o bem mais importante e mais precioso para
as organizações. Todavia, com os recursos de Tecnologia da Informação
disponíveis actualmente, as organizações vêem-se cercadas de imensa
quantidade de informações, às quais requerem alto custo para obtenção,
tratamento, armazenamento e disseminação, além de grandes investimentos na
protecção desse bem.
Os mecanismos de segurança disponíveis – cada vez mais sofisticados – não
asseguram total protecção às informações. Desse modo, as organizações ficam
expostas a riscos de intrusões, interceptações, alterações, destruição, divulgação
indevida, indisponibilização e outros ataques.
A falta de amparo legal, que imponha punições aos infractores, propicia e
incentiva acções da espécie, forçando as organizações a investirem cada vez
mais na protecção de suas informações, embora sem o sucesso desejado.
Alguns países já atentaram para a necessidade de proteger esse bem e
elaboraram leis rigorosas que protegem e amparam as organizações, como por
exemplo: Estados Unidos e Portugal.
4.1. Aspectos Legais
A informação tem sido objecto de alguns dos mais antigos acordos
multinacionais, tratados e organizações. Tratados postais remontam de 1601,
entre a França e a Espanha. O telégrafo, empregado comercialmente entre 1840
e 1849, gerou acordos para facilitar e regular o seu uso entre os países. Nos dias
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 13
de hoje, informação e comunicação são objectos de centenas de acordos
internacionais, destacando-se: Convenção de Berna (Protecção aos trabalhos
literários e artísticos), Intelsat, World Intellectual Property Organization,
Intersputinik, etc.
Além desses acordos e tratados, existem outros que visam proteger direitos de
informação: Declaração Universal dos Direitos Humanos, art. 19 – “Todo o
homem tem direito à liberdade de opinião e expressão; este direito inclui a
liberdade de, sem interferências, ter opiniões e de procurar, receber e transmitir
informações e idéias por quaisquer meios, independentemente de fronteiras”;
Convenção Europeia para a protecção dos Direitos Humanos e Liberdades
Fundamentais, art. 10 e a Convenção Americana sobre Direitos Humanos, art.
13. Todavia, o direito à livre expressão de opiniões e repasse ou guarda de
informações, com a evolução dos meios de comunicação e com o advento da
tecnologia da informação, vem sendo cerceado por mecanismos cada vez mais
sofisticados de “invasão de privacidade”, deixando muitas vezes impune o
agente de tais acções.
As empresas têm enfrentado acções na justiça, muitas sem o sucesso desejado,
visto que as leis de protecção ao património e dos direitos das pessoas,
existentes até a década de 70, deixaram de atender às necessidades de penalizar
todo o tipo de crimes contra o direito das pessoas. Pela imaterialidade da
informação – um bem muito adverso daqueles até então normalmente tratados
como objecto de “roubo”, “subtracção” ou “destruição” – fica difícil de aplicar o
conceito de “coisa”, deixando lacunas na lei que, ou não possibilitam aplicar
penalidades aos agentes infractores ou exigem verdadeiras “ginásticas” de
interpretação por advogados e juízes, para que os julgamentos tenham o
resultado esperado num crime que envolva a informação. O exame dessas
questões tem ocorrido a nível internacional e regional. Em particular podemos
citar o OECD (Organisation for Economic Co-operation and Development) e o
Council of Europe, que têm produzido guias para legisladores e interessados no
assunto, além de órgãos envolvidos em investigação. Em 1983, o OECD
procedeu a um estudo que resultou na publicação, em 1986, de relatório que
analisava as leis existentes e recomendava uma lista mínima de abusos contra a
informação de modo geral, que os países deveriam considerar proibidos e
passíveis de punições por leis criminais, por exemplo: fraudes e falsificações por
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 14
computador, alteração de programas e dados, violação de copyright e
interceptação de comunicações. Além destas, outras proteções legais deveriam
ser adoptadas para outros tipos de abusos, incluindo o roubo de “Segredos de
Negócios” e acesso não autorizado aos sistemas de computadores. O 8º
Congresso das Nações Unidas
A Prevenção de Crimes e Tratamento aos Infractores produziu uma resolução,
na qual cada Nação Membro intensificaria os seus esforços no combate aos
crimes por computador, observando as seguintes medidas:
Modernização das Leis e procedimentos penais;
Desenvolvimento de medidas de prevenção e segurança para
computadores, no que concerne a respeitar os direitos humanos e as
liberdades fundamentais;
Adopção de medidas que sensibilizem o público e o judiciário para o
problema e a importância de prevenir os crimes por computador;
Adopção de treinamento para juizes, oficiais e agências responsáveis por
prevenir, investigar e julgar os crimes por computador.”3 Nesta
resolução, recomenda-se que o Comité de Prevenção e Controle de
Crimes encite esforços no desenvolvimento e na disseminação de regras e
padrões que auxiliem as Nações a tratar com crimes por computador.
Para subsidiar tais acções foi elaborada a Lista Mínima de Infracções, que
concerne a crimes por computador, que deveriam ser tratadas pela
legislação:
Fraude por computador – compreende a adulteração, dano ou supressão
de dados ou programas de computador ou outras interferências no curso
do processamento de dados, que influencie o resultado do processo,
ocasionando perdas económicas ou de propriedade, beneficiando os
infractores ou terceiros;
Falsificação por computador – compreende a modificação de dados
descrita no item acima, já protegidos por lei, caracterizando embuste ou
imitação (fazer se passar por outro);
Danos a dados ou programas de computador – modificação, deterioração
ou supressão de dados ou programas sem autorização.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 15
Sabotagem computacional – introdução, alteração, supressão de dados
ou programas ou outras interferências em sistemas, com a intenção de
dificultar o funcionamento de computadores ou sistemas de
comunicação;
Acesso não autorizado – acesso a sistemas ou redes de computadores,
sem autorização, burlando os controles de segurança implementados;
Interceptação não autorizada – interceptação de comunicações de, para e
de dentro dos sistemas e redes de computadores, feita sem autorização e
por meios técnicos;
Cópias não autorizadas de programas de computadores – reprodução,
distribuição ou divulgação de programas de computador, sem
autorização;
Reprodução não autorizada de topografia – abrange a reprodução,
exploração ou importação comercial não autorizada de topografia de
semicondutores.” Ainda, a resolução propõe a Lista Opcional
abrangendo:
Espionagem computacional – obtenção, transferência ou uso de segredos
de negócio, de modo ilícito, sem autorização ou qualquer outra
justificativa legal, com intenção tanto de causar perdas económicas para
o proprietário como de obter vantagens económicas para si ou terceiros;
Uso não autorizado de computadores – uso de sistemas ou rede de
computadores, sem autorização, que: 1. é feito com a admissão de riscos
significativos de perdas para o proprietário, danos aos sistemas ou ao seu
funcionamento; 2. é feito com a intenção de causar perdas para o
proprietário, danos aos sistemas ou ao seu funcionamento; 3. causa
perdas para o proprietário, danos aos sistemas ou ao seu funcionamento,
mesmo não sendo intencional.
Uso não autorizado de programa computacional – uso e reprodução não
autorizados de programas protegidos por lei, com a intenção tanto de
obter ganhos económicos para si ou para terceiros, como causar danos ao
proprietário do bem.
Actualmente, os principais meios invocados para proteger legalmente as
informações são: Copyright, Segredo de Negócio e Contrato. Normalmente,
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 16
aliam-se estes três métodos a outros não legais, a fim de obter-se maior nível de
protecção contra cópias e divulgações indevidas de informações e sabotagens,
visto que as leis não foram criadas observando os aspectos supracitados.
4.1.1. Copyright (Direitos de Autor) Tem origem no art.1 parag.18 da Constituição dos EUA arbitrando poderes ao
Congresso para: “Promover o progresso da ciência e das artes, assegurando por
tempo determinado a autores e inventores os direitos exclusivos sobre seus
escritos e descobertas”. O principal problema é determinar se o trabalho possui
ou não “originalidade” – ou seja, se mostra alguma criatividade e não somente
cópia de trabalhos ou de informações já existentes. Por exemplo: um Banco de
Dados com informações sobre cadastro de clientes: as informações não são
consideradas “originais” pois qualquer um pode obter as mesmas informações.
O trabalho despendido para obter as informações não qualifica o Banco de
Dados a ser protegido por Copyright. No que diz respeito à propriedade
intelectual de programas de computador, a Lei 9609 elevou de 25 para 50 anos
o prazo de protecção, equiparando-se ao regime de protecção conferido a obras
literárias. Entretanto, esta Lei não faz nenhuma referência à protecção das
informações processadas e armazenadas pelos sistemas.
4.1.2. Trade Secrecy Protection (Protecção do Negócio) Essencialmente, é a protecção legal ao conhecimento que pessoas ou
companhias adquirem pelos seus esforços e que tem valor ou vantagem
competitiva para elas. Tipicamente, estes conhecimentos são guardados dos
seus concorrentes, pois sabe-se que estes obteriam vantagens ao possuir tais
informações. Exemplos: fórmulas, programas, metodologias, tecnologias,
padrões etc.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 17
4.1.3. Contrato Acordos estabelecidos formalmente entre vendedores e compradores, definindo
as condições de compra. Tipicamente assumem a forma de “Licenças de Uso”
para proteger o direito das partes.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 18
5. Protecções por meios não legais
Trata-se da criação de mecanismos ou marcas específicas, como uma
“assinatura”, que possam comprovar a autoria de trabalhos. Exemplo: implantar
erros ou omissões em bases de dados, de forma a obter provas de cópias não
autorizadas. Se alguns erros são implantados e os mesmos erros se mostram em
base de dados de outrem, tem-se boas provas de que um competidor não obteve
tais informações por seus próprios meios. Outro exemplo seria o estilo de
programação, que equivale a um estilo de escrita. Os programadores podem
esconder mensagens cifradas no código objecto ou adicionar linhas de
programação desnecessárias. Estas idiossincrasias podem ser documentadas e
servir de prova contra cópias ilegais.
Em resumo, embora os mecanismos acima garantam sustentação legal que
favoreça acções contra os infractores, a necessidade de uma Lei específica, que
defenda os autores e as companhias contra invasões, danos, divulgação não
autorizada de informações ou topografias, dentre outros e, que defina
claramente as respectivas penalidades, é extremamente urgente e imperiosa.
Alguns países já perceberam a importância de se legislar sobre este assunto –
crimes por computador – oferecendo Leis abrangentes, consistentes e rigorosas
quanto às penalidades imputadas aos infractores. A lacuna deixada pela
ausência de Lei específica sobre o assunto, tem obrigado advogados e juízes a
enquadrar os crimes por computador em crimes comuns previstos em Leis
penal e civil.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 19
6. Tipos de riscos para as organizações
Ameaça – possibilidade de exploração de fragilidades de sistemas, de forma
intencional ou não. Podem originar-se interna ou externamente.
Ataque – é a efectivação da ameaça. Classificam-se em:
Ataque activo – informações são modificadas.
Ataque passivo – informações não sofrem modificação, sendo somente
copiadas. Caracteriza-se pela interceptação.
As ameaças típicas, contra as quais as organizações despendem maior esforço e
investimento em mecanismos de protecção das suas informações e estratégias
de negócio são:
Ameaças Descrição Violação de autorização Uso de autorização para outra finalidade.
Recusa de serviços Não atendimento, sem motivo explícito, das requisições dos legítimos usuários.
Espionagem Obter a informação, sem autorização do proprietário. Vazamento Revelação indevida de informação. Violação de Integridade Edição não autorizada de informação. Mascaramento Passar-se por outro, embuste. Replay Retransmissão ilegítima.
Repudiação Negação imprópria de uma acção ou transacção efectivamente realizada.
Exaustão Sobrecarga de utilização de recurso. Emulação Imitação para conseguir informações sensíveis. Roubo Posse ilegítima de informações.
Porta dos fundos (backdoor) Programação inserida e escondida no sistema, que possibilita a entrada de forma não convencional.
Cavalo de Tróia (trojan) Programa de captura indevida de informações. Tabela 1 – Ameaças
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 20
Esses tipos de ameaças possibilitam ataques, que podem ser caracterizados
como:
Invasão – acesso intencional e não justificado, por pessoa não
autorizada pelo proprietário ou operadores dos sistemas.
Interceptação – acesso não autorizado a transmissões, possibilitando a
cópia das mensagens transmitidas. É o ataque mais comum e de difícil
detecção pelas partes legítimas.
Modificação – é um agravante da interceptação, em que o conteúdo da
mensagem é alterado.
Fabricação ou embuste – simulação para o destino de uma origem
legítima. O atacante faz-se passar por uma procedência legítima,
inserindo objectos ilegítimos no sistema atacado.
Indisponibilidade ou Interrupção – acções não autorizadas gerando
sobrecarga no processamento de sistemas, tornando-os inacessíveis aos
legítimos usuários, por longos períodos ou por sucessões de pequenos
intervalos.
Estes crimes carecem de legislação específica e, também, de apuração ou
investigação detalhada que, devido às suas especificidades e meios utilizados,
aliados à falta de capacitação dos investigadores e do judiciário, dificultam a
comprovação do acto e de sua autoria. A situação torna-se ainda mais crítica
pelas características do mercado actual, com a globalização da economia,
levando pessoas e empresas a disputarem freneticamente a sua fatia de mercado
e “justificando” acções, mecanismos e técnicas não muito “éticas” adoptadas por
elas, para conhecimento de planos e produtos de concorrentes. A inadequação
da legislação actual, a não tratar tais ações como crime, favorece a sua
ocorrência, através de agentes internos ou externos ao país. Com esse cenário e
as fragilidades criadas pela própria tecnologia de comunicação, as preocupações
com a criação de uma Lei visando a protecção dos cidadãos e empresas contra
crimes por computador são crescentes. É imperativo que haja uma
normatização e definição de punições para os excessos, inclusive as tentativas,
que também afectam a prestação de serviços e disponibilidade do sistema para
os usuários.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 21
7. Algoritmos de Criptografia Básicos
O método de encriptação e a operação inversa (decifragem) chama-se cifra.
Alguns métodos criptográficos baseiam-se no secretismo dos algoritmos. Tais
algoritmos apenas têm interesse histórico e não são os mais adequados para as
operações da vida real. Todos os algoritmos modernos usam uma chave para
controlar a encriptação/desencriptação; a mensagem só pode ser decifrada se a
chave coincidir com a chave de encriptação.
Existem duas classes de algoritmos de encriptação baseados em chaves, os
algoritmos simétricos (chave secreta) e os assimétricos (chave pública). A
diferença reside no facto que os algoritmos simétricos usam a mesma chave
tanto para a encriptação, como para a decifragem (por vezes a chave de
decifragem não é a mesma, mas facilmente derivável a partir da chave de
encriptação); enquanto que os algoritmos assimétricos usam chaves diferentes
para os processos de encriptação e decifragem, bem como a chave de decifragem
não pode derivar da chave de encriptação.
Os algoritmos simétricos podem ser divididos em cifras de cadeia e cifras de
bloco. Cifras de cadeia, apenas conseguem encriptar um bit de texto simples de
cada vez, enquanto que as cifras de bloco pegam num número de bits
(geralmente 64 bits em algoritmos modernos) e, encriptam-nos como um só.
Cifras assimétricas (também conhecidas por algoritmos de chave pública, ou
criptologia de chave pública) permitem que a chave de encriptação seja pública,
permitindo que qualquer indivíduo encripte com essa chave, mas apenas o
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 22
destinatário da mensagem (que conhece a chave de descriptação) consegue
descriptar a mensagem.
A chave de encriptação é também conhecida por chave pública e a de
descriptação, chave privada ou secreta.
Os algoritmos modernos de criptografia à muito que deixaram de ser cifras
simples escritas em papel. Algoritmos fortes, são concebidos para serem
executados em computadores ou aparelhos de hardware especializados para tal.
Na maioria das aplicações, a criptografia é feita em software de computadores.
De uma forma genérica, a execução dos algoritmos simétricos é bastante mais
rápida do que os assimétricos. Na prática, são muitas vezes usados em conjunto,
de forma que um algoritmo de chave pública, é usado para encriptar uma chave
gerada aleatoriamente e, que essa chave é usada para encriptar a mensagem
usando o algoritmo simétrico. Este método é conhecido como encriptação
híbrida.
Descrições de inúmeros bons algoritmos criptográficos, são vastamente
conhecidos e disponíveis publicamente em variados locais, tais como a Internet,
bibliotecas científicas, livrarias de renome. Provavelmente a mais conhecida e
estudada cifra simétrica é a DES, contudo poderá ser substituída pela nova AES.
Como melhor algoritmo de encriptação assimétrica temos o RSA.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 23
8. Assinaturas digitais
Alguns algoritmos de chave pública podem ser usados para gerar assinaturas
digitais. Uma assinatura digital é uma pequena quantidade de dados, que foram
criados usando uma chave secreta, onde existe uma chave pública que pode ser
usada para verificar que a assinatura foi gerada usando a chave privada
correspondente. O algoritmo deverá ser implementado de forma que, sem saber
a chave seceta, não poderá ser possível criar a assinatura que se apresente como
válida.
Assinaturas digitais são usadas para verificar que uma mensagem provém
realmente de onde aparenta (isto assumindo que apenas o emissor conhece a
chave secreta correspondente à sua chave pública).
Outra aplicação pode ser de certificar que a chave pública pertence a uma
pessoa. Isto é feito atribuindo a combinação da chave e da informação acerca do
seu dono a uma chave de confiança. O conjunto da assinatura digital
pertencente a uma entidade alheia, da chave pública e a informação acerca do
dono da chave pública são chamados de certificados.
Porque se deverá confiar numa chave duma entidade alheia? A explicação é
simples, também esta terá sido atribuída por uma chave de confiança.
Eventualmente, alguma chave terá de ser a raiz de toda esta hierarquia de
confiança (isto é, não é de confiança porque foi atribuída por alguém, mas sim
porque se acredita que a chave é de confiança).
Numa infraestructura de chave centralizada, poucas serão as raízes na rede de
confiança – um exemplo serão agências governamentais, as suas raízes são
também conhecidas por autoridades de certificação.
Ao contrário do exemplo anterior, numa infraestructura distribuída, não são
necessárias raízes de asssinaturas universalmente reconhecidas, neste caso, as
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 24
entidades podem ter diferentes raízes de confiança. Este conceito de “rede de
confiança” é usado por exemplo no PGP.
A assinatura digital de um documento é tipicamente criada através da
computatação do sumário da mensagem, concatenando-a com a informação
acerca do utilizador, data do documento, etc. A “string” resultante é então
encriptada usando a chave privada. O bloco de bits resultante é a assinatura.
Normalmente é distribuída juntamente com informação acerca da chave pública
usada. Para verificar a assinatura, o recipiente deve decidir se confia que a chave
usada, provém donde é suposto (através da rede de confiança ou conhecimento
prévio), de seguida desencripta a assinatura, usando a chave pública da pessoa.
Se a assinatura desencripta devidamente e a informação coincide com a da
mensagem (sumário da mensagem), a assinatura é aceite como válida.
Podem encontrar-se vários métodos para fazer e verificar assinaturas digitais de
distribuição gratuita. O mais conhecido é o algoritmo RSA.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 25
9. Funções de Hash Criptográficas
Funções de Hash Criptográficas são usadas mediante variados contextos. Uma
função de hash, compressa os bits de uma mensagem para um valor de hash de
tamanho fixo, de forma que distribui as mensagens possíveis uniformemente
através dos valores possíveis das hashes. Isto serve para tornar extremamente
difícil a criação duma mensagem, cuja hash teria o mesmo valor de uma outra
hash.
Geralmente produzem valores de hash de 128 ou mais bits. Este valor (2128) é
largamente superior ao número de mensagens distintas, que serão trocadas em
todo o Mundo. A principal razão para usar mais de 128 bits, reside no paradoxo
do aniversário (birthday paradox). O paradoxo do aniversário diz-nos que para
uma função de hash a usar uma hash de 128 bits, essa mesma hash terá sido
computada por duas vezes, quando 264 das mensagens totais escolhidas
aleatoriamente, tiverem sido processadas.
Existem inúmeras funções de hash criptográficas disponíveis livremente. As
mais conhecidas fazem parte da família MD, em particular a MD4 e MD5.
Contudo, a MD4 foi já quebrada, enquanto que a MD5, apesar de ser ainda
usada comummente, deverá ser considerada insegura. Dois exemplos de
funções consideradas como seguras, são a SHA-1 e RipeMD-160.
Algumas das funções mais conhecidas e usadas são descritas a seguir.
SHA-1 (Secure Hash Algorithm):
Este algoritmo foi publicado pelo Governo dos EUA. Produz um valor de hash
de 160 bits dum conjunto de caracteres de tamanho arbitrário. É considerado
um algoritmo bastante bom.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 26
RIPEMD-160:
Algoritmo concebido para substituiro MD4 e MD5 (ver mais abaixo). Produz um
sumário de 20 bytes (160 bits, de onde deriva o nome), correndo a cerca de 40
Mb/s num Pentium 90 MHZ, sendo de domínio público.
MD5 (Message Digest Algorithm 5):
Desenvolvido nos RSA Laboratories, pode ser usado para criar uma hash dum
conjunto de caracteres de tamanho arbitrário num valor de 128 bits. O seu
antecessor, o MD4, foi quebrado, pelo que também existem algumas
preocupações que o mesmo aconteça com o MD5. Em 1996, uma colisão da
função de compressão do MD5 foi encontrada por Hans Dobbertin. Apesar disto
não comprometer directamente a sua segurança, como medida de precaução, o
uso do MD5 não é recomendado em aplicações novas.
Tiger:
Algoritmo de hash recente, desenvolvido por Anderson e Biham.
MD2, MD4.
Estes são algoritmos mais antigos desenvolvidos pela RSA Data Security. Ambos
possuem falhas conhecidas, pelo que o seu uso também não é recomendado.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 27
10. Geradores de números aleatórios criptográficos
Geradores de números aleatórios criptográficos, geram números para serem
usados em aplicações criptográficas. Os geradores convencionais, utilizados na
maioria das linguagens de programação , não são adequados para este tipo de
aplicações, pois não previnem nem dificultam a previsão por criptoanalistas.
Numa situação óptima, os números aleatórios são baseados em fontes físicas de
aleatoriedade, que não podem ser previstas. Como exemplo podemos destacar o
ruído proveniente dum dispositivo semicondutor, os bits menos significantes
duma entrada de áudio, tal como os intervalos de tempo do carregar de teclas de
um utilizador. O “barulho” obtido duma fonte física é então, “destilado” por uma
função de hash criptográfica, de forma a que cada bit dependa de todos os
outros bits. Geralmente, uma grande fila – de vários milhares de bits – é usada
para criar a aleatoriedade, onde cada bit da fila, dependa de cada bit de ruído de
entrada, bem como de todos os outros bits da fila.
Quando não é possível obter aleatoriedade pura, é necessário usar números
“pseudo-aleatórios”. Esta situação, obviamente, não é a desejada, no entanto
acontece em actividades menos específicas. De preferência, deverá incluir-se
ruído ambiental – dispositivos de latência, estatisticas de rede, o que quer que
seja. O objectivo principal, é tornar os dados o menos previsíveis possível, aos
olhos de um observador externo. Para conseguir isto, a fila de aleatoriedade,
deverá conter, pelo menos 128 bits de entropia.
Geradores de números pseudo-aleatórios, têm geralmente uma fila grande
contendo aleatoriedade. Os bits são retornados da fila, extraíndo dados da
mesma fila, ou opcionalmente, fazendo os dados percorrer através duma função
de hash criptográfica, de forma a evitar revelar o conteúdo da fila. Quando são
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 28
necessários mais bits, a fila é agitada através da encriptação do seu conteúdo,
por uma cifra de chave aleatória, de forma que cada bit da fila, dependa de todos
os outros bits. Ruído ambiente deverá voltar a ser acrescentado, antes da
agitação, para que a predição de valores anterior ou futura, seja ainda mais
difícil.
Apesar de não ser difícil de construir geradores de números aleatórios – se
projectados devidamente- são muitas vezes menosprezados. A importância de
um gerador de números aleatórios não deve deixar de ser realçado – se for feito
de forma incorrecta, facilmente se tornará no ponto mais fraco do sistema.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 29
11. A Força dos Algoritmos Criptográficos
Bons sistemas criptográficos, devem ser projectados a pensar na sua dificuldade
de quebrar. Obviamente, deve-se procurar construir o mais difícil possível. É
possível montar sistemas que na prática não podem ser quebrados (embora isto
não possa ser provado). Tal facto não aumenta significativamente o esforço de
implementação do sistema, contudo, algum cuidado e competência são
necessários. Não existe desculpa para que o sistema seja violável. Quaisquer
mecanismos que possam ser usados para ludibriar a segurança, devem estar
disponíveis, documentados e trazidos à atenção dos utilizadores.
Teoricamente, qualquer método criptográfico com uma chave, pode ser
quebrado tentando todas as chaves possíveis em sequencia. No caso da força
bruta ser a única opção, o poder de computação aumenta exponencialmente
com o comprimento da chave. Uma chave de 32 bits, são necessárias, no
máximo 232 tentativas. Isto, contudo, pode ser conseguido por qualquer pessoa
no seu computador pessoal. Num sistema com chave de 40 bits, já sobe para
240 tentativas – este tipo de computação requer períodos que podem chegar a
uma semana (dependendo da eficiência do algoritmo) num computador pessoal
moderno. Se subirmos para 56 bits (caso da DES) o esforço é já considerável
(com um número grande de computadores pessoais trabalhando em conjunto,
já foi possível quebrar em alguns meses), mas ainda facilmente quebrável, com
hardware especial. O custo deste hardware especial, é substancial, contudo, ao
alcance de organizações criminosas, grandes companhias, ou instituições
governamentais. Chaves de 64 bits, são provavelmente quebráveis nos nossos
dias por algumas instituições governamentais, estando ao alcance de criminosos
organizados, grandes companhias e governos menos poderosos dentro de
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 30
alguns anos. Com 80 bits, deverão estar salvaguardadas por um bom período
ainda, enquanto que chaves de 128 bits, ainda não se prevê que possam ser
quebradas num futuro próximo.
No entanto, o comprimento da chave não é a única parte relevante. Muitas cifras
podem ser quebradas sem tentar todas as chaves possíveis. No geral, é muito
difícil projectar as cifras que não poderiam ser quebradas mais eficazmente
usando outros métodos. Projectar as suas próprias cifras pode ser desafiador,
mas não se recomenda para aplicações reais a menos que seja um grande perito
e souber exactamente o que está a fazer.
Deve-se geralmente ser muito cauteloso com algoritmos não publicados ou
secretos. Frequentemente o desenhador não está certo da segurança do
algoritmo, ou a sua segurança depende do secretismo do algoritmo. Geralmente,
nenhum algoritmo que depende do secretismo do algoritmo é seguro.
Particularmente no software, qualquer um pode contratar alguém para
desmontar e converter, redireccionar o algoritmo. A experiência, tem-nos
mostrado que a grande maioria dos algoritmos secretos que se tornaram de
conhecimento público, mais tarde revelaram-se muito fracos no uso de
aplicaçõe reais.
O comprimento usado na criptografia de chaves públicas, é geralmente muito
maior do que nas chaves privadas. Isto é causado pela estrutura extra que fica
disponível ao criptoanalista. Neste caso, o problema não reside em adivinhar a
chave correcta, mas derivar a chave secreta correspondente à chave pública. No
caso da RSA, isto pode ser alcançado factorizando um número inteiro grande
com dois factores primos.
Para dar uma ideia da complexidade do RSA, um módulo de 256 bits é
facilmente factorizado em casa, uma chave de 512 bits podem ser quebrados
num período de meses, por grupos de pesquisa universitários – tendo em conta
a facilidade de computação conjunta. 768 bits, não serão seguras por muito
mais tempo. Chaves de 1024 bits e mais, podem se considerar seguras por
agora, a não ser que surjam grandes avanços criptográficos contra a RSA;
chaves de 2048 bits são consideradas por muitos, seguras pelas próximas
décadas.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 31
12. Criptoanálise e ataques em criptosistemas
Criptoanálise é a arte de decifrar comunicações encriptadas, sem possuir o
conhecimento das chaves apropriadas. Existem variadas técnicas
criptoanalíticas. Algumas das mais importantes são descritas de seguida.
Ataque Ciphertext-only
Esta é a situação em que o intruso desconhece o conteúdo da mensagem, pelo
que se vai concentrar apenas no texto de cifra. Na prática, é possível tentar
adivinhar o conteúdo da mensagem, visto que muitos de mensagens possuem
formatos de cabeçalho fixos. Mesmo cartas e documentos começam de forma
muito previsível.
Ataque Known-plaintext
O intruso conhece ou consegue prever a mensagem de algumas partes do texto
de cifra. A tarefa, neste caso consiste em desencriptar o resto dos blocos do texto
de cifra usando essa informação. Isto pode ser feito, determinando a chave
usada na encriptação dos dados, ou através de algum atalho.
Ataque Chosen-plaintext O intruso é capaz de obter qualquer texto que queira, encriptado com chave
desconhecida. A tarefa consiste em determinar qual a chave usada na
encriptação.Um bom exemplo deste tipo de ataque é a criptoanálise diferencial,
que pode ser aplicada contra cifras de bloqueio ( e em alguns casos, também
contra hashs de funções).Alguns criptosistemas, particularmente RSA, são
vulneráveis a este tipo de ataques. Quando tais algoritmos são usados, é preciso
muito cuidado na implementação da aplicação ou protocolo, de forma a que o
intruso nunca tenha acesso à mensagem encriptada.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 32
Ataque Man-in-the-middle Este ataque é relevante para cominucações criptográficas e protocolos com troca
de chaves. A ideia consiste em ter dois lados, A e B, que trocam chaves para
comunicações seguras, um intruso posiciona-se algures entre A e B na linha de
comunicação. Esse intruso, intercepta o sinal que A envia para B e, efectua uma
troca de chaves com A e B separadamente. A e B, acabam por usar uma chave
diferente, sendo ambas do conhecimento do intruso. De seguida, este pode
desencriptar toda a comunicação proveniente de A com a chave que partilha
com ele, após esta operação, o intruso encripta a mensagem com a chave de B e
envia-a para este. Tanto A, como B, pensarão que estão a comunicar em
segurança, mas o que realmente acontece é que o intruso consegue ler todas as
mensagens.A forma mais comum de prevenir este ataque é usar um sistema que
suporte chave pública com assinaturas digitais. Para tal, os intervenientes
precisam de saber à partida as chaves públicas um do outro. Depois de
partilhado o segredo, os intervenientes trocam entre si as assinaturas digitais.
Caso o intruso tente usar o método acima referido para forjar as assinaturas,
falhará porque não as conseguirá falsificar. Esta solução é suficiente, caso exista
forma de distribuir, com segurança, chaves públicas. Uma forma é usar o
certificado hierárquico tal como o X.509, usado no IPSec.
Correlação Correlação entre a chave secreta e os dados de saída do criptosistema são a
principal fonte de informação para o criptoanalista. No caso mais simples, a
informação acerca da chave secreta é directamente fornecida ao criptosistema.
Casos mais complexos, requerem um estudo da correlação entre a informação
observada acerca do criptosistema e a informação da chave “adivinhada”. Por
exemplo, com os ataques lineares contra blocos de cifras, o criptoanalista estuda
o texto simples e o texto cifrado observado. Adivinhando alguns dos bits chave
do criptosistema, o analista determina através de correlação entre o texto
simples e o texto cifrado, se adivinhou correctamente. Este processo pode ser
repetido, contendo inúmeras variações.A criptoanálise diferencial introduzida
por Eli Biham e Adi shamir no final dos anos 80, foi o primeiro ataque que fez
uso desta ideia, contra cifras de bloco (especialmente contra DES). Anos depois,
Mitsuru Matsui surgiu com criptoanálise que se provou ser ainda mais eficiente
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 33
contra o DES. Mais recentemente, novos ataques com ideias semelhantes têm
sido desenvolvidos e usados. A ideia da correlação é fundamental para a
criptografia e diversos investigadores têm tentado construir critposistemas,
onde seja possível provar que são seguros contra estes ataques.
Ataques contra ou usando hardware subjacente
Nos últimos anos, com o surgimento de vários pequenos aparelhos de criptação
móveis, de fácil acesso, uma nova categoria de ataques tornou-se relevante,
onde se direccionam directamente à implementação de hardware para
criptosistemas. Os ataques usam os dados provenientes das medições dos
aparelhos de criptação. O modo de operação é semelhante ao usado no ataque
de correlação. O intruso adivinha alguns bits chave e tenta verificar a exactidão,
estudando a correlação entre as suas medições.Vários ataques foram
efectuaqdos, usando medições precisas do consumo de energia, padrões de
radiação, tempos dos aparelhos, etc. Estas medições podem servir para obter a
chave secreta ou outro tipo de informação armazenada no aparelho. Este ataque
é geralmente independente dos algoritmos criptográficos, podendo ser aplicado
a qualquer aparelho que não esteja explicitamente protegido.
Falhas nos criptosistemas Podem lever à criptoanálise e mesmo à descoberta da chave secreta. O interesse
em aparelhos criptográficos, levou à descoberta que alguns algoritmos
comportavam-se bastante mal, se fossem introduzidas pequenas falhas na
computação. Por exemplo, na implementação da chave privada da RSA, as
operações são muito subjectíveis de serem atacadas. Já foi provado que
causando um bit de erros num certo ponto, pode revelar a factorização do
módulo (ou seja, revela a chave privada). Ideias semelhantes foram usadas num
número grande de algoritmos e dispositivos. É então necessário que os
dispositivos criptográficos, sejam concebidos de forma a serem resistentes a
estas falhas (bem como contra a introdução maliciosa de falhas pelos
criptoanalistas).
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 34
Computação quântica Consiste no campo de pesquisa que usa mecanismos quânticos para construir
computadores, que são na teoria, mais poderosos que computadores de série
modernos. O poder deriva do paralelismo inerente da mecânica quântica. Ao
invés de fazer as tarefas uma a uma – como as máquinas em série fazem – os
computadores quânticos conseguem fazê-las todas ao mesmo tempo. Com isso,
é esperado que se consiga resolver problemas que de outra forma seria
impossível de encontrar solução.Mecânica quântica, é também uma fonte para
esconder informação e assegurar comunicações, com o potencial de oferecer
segurança inquebrável, este é o campo da criptografia quântica. Ao contrário da
computação quântica, inúmeras implementações experimentais de criptografia
quântica, foram já conseguidas com êxito. Contudo, encontra-se ainda longe de
poder ser usada em aplicações comerciais.
Análise do ADN Leonard Adleman (um dos inventores de RSA) surgiu com a idéia de usar o
ADN como computadores. As moléculas do DNA podiam ser vistas como um
computador bastante grande, capaz de fazer execução paralela. Esta natureza
paralela poderia proporcionar aos computadores de ADN, um aumento
exponencial da velocidade em relação aos computadores em série. Infelizmente,
existem alguns problemas com os computadores de ADN, sendo um que o
aumento exponencial de velocidade requer um aumento também exponencial
no volume do material necessário, pelo que na prática, os computadores teriam
limites no seu desempenho. Para além de que não é nada fácil construir um.
Existem inúmeros outros ataques criptográficos e técnicas de criptoanálise.
Contudo os apresentados aqui, serão os mais importantes para a construção de
uma aplicação. Mesmo assim, para alguém que faça intenções de criar um
criptosistema, terá obrigatoriamente de possuir conhecimentos bem mais vastos
dos aqui apresentados.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 35
13. Algoritmos
13.1. Criptosistemas de chave pública
Os criptosistemas de chave pública foram inventados no final da década de 70,
com a ajuda do desenvolvimento da teoria da complexidade. Foi observado, que
perante um problema com solução tão difícil que levaria anos a resolver e, com
alguma sorte à mistura, poderia ser desenvolvido um criptosistema que
possuísse duas chaves – uma pública, outra privada. Com a chave pública,
poderia se encriptar mensagens, com a privada, a operação inversa
(desencriptar). Assim, apenas o possuidor da chave privada poderia ler a
mensagem, embora qualquer um que possuisse a chave pública poderia enviar
mensagens.Outra ideia, era usar uma troca de chaves. Numa comunicação a
dois, fazia sentido poder gerar uma chave privada comum para a encriptação,
usando um criptosistema de chave privada (bloco de cifra). Com isto, Whitfield
Diffie and Martin Hellman fizeram uso da Teoria dos Números para construir
um protocolo de troca de chaves, que iniciou a era dos criptosistemas de chave
pública. Pouco depois disso, Ron Rivest, Adi shamir e Leonard Adleman,
desenvolveram um criptosistema que se tornou no primeiro criptosistema de
chave pública a suportar encriptação e assinaturas digitais.
Após esta descoberta, outros criptosistemas apareceram, subjacentes nas
mesmas ideias. Mas muitos deles, provaram não ser seguros, pouco tempo
depois. Contudo, o protocolo Diffie-Hellman e RSA, conseguiram manter-se na
preferência de muitos, mesmo até agora.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 36
13.2. Terminologia O ingrediente básico de qualquer criptosistema de chave pública é um problema
de difícil computação. A segurança do criptosistema é baseado no facto de que a
chave privada pode ser obtida através da chave pública, resolvendo esse mesmo
problema.
De seguida, serão apresentados alguns dos termos usados na criptologia da
chave pública.
Algoritmo
Um algoritmo é uma descrição explícita de como uma dada computação deve
ser executada. A eficiência de um algoritmo pode ser medida através do número
de passos que demora a resolver um problema. Então, se afirmarmos que um
algoritmo demora O(n) passos, então isso significa que demora n passos
elementares, mas não especificamos o tempo que cada passo leva a executar.
Complexidade computacional Um problema é tempo polinomial ou em P se puder ser resolvido por um
algoritmo que leva menos de O(nt) passos, onde t é algum número finito e a
variável n mede o tamanho da instância do problema. Se a solução adivinhada
para algum problema pode ser verificada em tempo polinomial, então o
problema é tido como sendo em NP (tempo polinomial não determinístico). Na
criptografia de chave pública, o intruso interessa-se mais por resolver instâncias
específicas de um problema (decompôr em factores um dado número), do que
uma solução geral. Isto causa alguma preocupação aos criptógrafos, dado que
algumas instâncias NP em geral, podem ser de fácil resolução.
Números Primos Um número primo é um número que é apenas divisível por si mesmo ou 1. Os
números 2,3,5,7,11,13…são todos números primos. Existe um valor infinito de
números primos, sendo um dos maiores conhecidos (26,972,593)-1.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 37
Factorização Todo o número inteiro pode ser representado unicamente como um produto de
números primos. Por exemplo, 10 = 2*5 e é único. A arte da factorização é quase
tão antiga como a própria Matemática. Contudo, o estudo de algoritmos rápidos
para factorização tem apenas algumas décadas.
Um algoritmo possível para factorizar um inteiro, é dividir iterativamente um
número por todos os números primos mais pequenos, até que o resultado seja
um número primo. Isto é apenas eficiente para inteiros de tamanho inferior a
1016, visto que requere tentar todos os números primos até 108. Em
criptosistemas com chaves públicas baseados no problema da factorização, os
números podem chegar ao valor de 10300 pelo que requereria tentar todos os
números primos até 10150 e, segundo o teorema dos números primos, existem
10147. Este valor, excede largamente o valor de átomos no Universo, pelo que
não parece plausível que fosse enumerado para alguma tarefa.
Uma instância fácil de factorizar surge no caso do número inteiro ter apenas
factores primos pequenos. Por exemplo o valor 9 765 625 é simples de
factorizar, pois pode ser escrito como 55* 55. De preferência escolhe-se um
inteiro com dois factores primos grandes, tal como é feito no criptosistema RSA.
Logaritmos discretos Outra classe importante de problemas é encontrar n sabendo apenas y sendo
que y = gn. O problema é simples para inteiros, mas quando se trabalha com
opções ligeiramente diferentes, pode tornar-se bastante complicado.
Knapsacks (Mochila) Dado um conjunto pequeno de inteiros, o problema de knapsack consiste em
determinar o subconjunto desses inteiros, de forma a que a sua soma é igual à
do dado inteiro. Por exemplo, tendo o conjunto (2,3,5,7) e 10, a solução será 2 +
3 + 5 = 10, resolvendo o problam de knapsack através da procura por força
bruta.
O problema knapsack foi provado ser de difícil NP (complexidade
computacional), parecendo superior à factorização e logaritmo discreto usado
nos criptosistemas de chave pública. Infelizmente, todos os criptosistemas
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 38
baseados neste princípio, foram quebrados – as instâncias usadas não são
consideradas de complexidade computacional elevada.
Lattices Definindo a base de um vector por wi = < w1, ..., wn> para i = 1, ..., m e, a lattice
gerada pela base. Isto é, os elementos da lattice são da forma t1w1 + t2w2 + ... +
tmwm, onde ti são inteiros.
O problema em encontrar o vector mais pequeno numa lattice (usando a
distância Euclidiana) é de complexidade computacional (NP) elevada, para
lattices de dimensões suficientemente grandes.
Contudo, o conhecido algoritmo LLL (de Lenstra, Lenstra e Lovasz) consegue
uma solução aproximada em tempo polinomial. A eficiência do algoritmo LLL,
provém do facto de que em muitos casos, soluções aproximadas são suficientes
e, um pouco surpreendentemente, o algoritmo consegue encontrar o vector mais
pequeno. Inclusivé, este algoritmo foi já usado por diversas vezes para quebrar
criptosistemas baseados nos problemas de lattice ou knapsacks, bem como
contra RSA e DSS.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 39
14. Criptosistemas práticos
O vasto interesse na criptografia de chave pública, serviu para produzir
criptosistemas de grande importância. De seguida será apresentada uma lista de
alguns problemas subjacentes.
Um criptosistema de chave pública, de maneira geral, é desenvolvido da
seguinte forma: pega-se num problema difícil, para o qual se consegue
encontrar uma instância que pode ser resolvida em tempo polinomial. Para
encriptar uma mensagem, converte-se a mesma numa instância simples do
problema difícil, de seguida, usa-se a chave pública para converter o problema
simples num complexo. O resultado será enviado para o recipiente através dum
canal inseguro. Para desencriptar, usa-se a chave privada para converter de
novo o problema complexo num simples e obter a mensagem. Todos os sistemas
usam este princípio, emboram difiram significativamente nos pormenores.
De seguida, para cada criptosistema, encontraremos as recomendações actuais
para tamanhos de chaves.
14.1. Factorização: RSA, Rabin
RSA (Rivest-Shamir-Adleman): é o algoritmo mais comum e mais
utilizado. Pode ser empregue, tanto na encriptação, como para assinaturas
digitais. O nível de segurança, é geralmente considerado equivalente à
factorização, embora isto ainda não tenha sido provado. A computação no RSA
acontece com o seguinte módulo n = p * q, para dois grandes números primos p,
q secretos.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 40
Para encriptar a mensagem m, é exponenciado com o expoente e. Para
decifragem,o recipiente do texto de cifra c = me (mod n) vai calcular o inverso
multiplicativo d = e-1 (mod (p-1)*(q-1)) obtendo cd = m e * d = m (mod n). A chave
privada consiste de n, p, q, e, d (onde p e q podem ser ignorados); a chave
pública consiste apenas de n, e. O problema do intruso é que calcular o inverso d
de e é conhecido como não sendo mais fácil que factorizar n.
O tamanho da chave deve ser superior a 1024 bits (magnitude superior a 10300)
para conseguir uma margem de segurança aceitável. Chaves de tamanho de
2048 bits deverão proporcionar segurança por décadas.
Avanços dramáticos na factorização de grandes números inteiros fariam com
que o RSA se torna-se vulnerável, no entanto, são também conhecidos ataques
contra outras variantes. Boas implementações usam redundância, com vista a
evitar ataques usando a estrutura multiplicativa do texto de cifra. RSA
apresenta-se vulnerável a Ataques Ciphertext-only e Ataques contra ou usando
hardware subjacente. Também ataques a expoentes bastante pequenos, bem
como a factorizações de módulos que foram parcialmente revelados.
A devida implementação do algoritmo RSA com redundância, encontra-se bem
explicada nos standards PKCS (Public-Key Cryptography Standards). É
fornecida uma explicação detalhada sobre como implementar encriptação e
assinaturas digitais, bem como os formatos para guardar as chaves. O algoritmo
RSA não deve ser usado em qualquer aplicação. É recomendado que as
implementações sigam à risca o standard, pois também se torna benéfico que
haja inter-operabilidade entre os principais protocolos.
RSA é actualmente o algoritmo de chave pública mais importante. Foi
patenteado nos Estados Unidos da América, com a curiosidade desta ter
expirado no ano 2000.
Rabin: criptosistema que pode ser visto como parente do RSA, embora o
processo de descodificação seja bastante diferente. O que o torna interessante é
o facto de que quebrar o Rabin, é tão difícil como a factorização.
Rabin usa o expoente 2 (ou qualquer outro inteiro par) ao invés dos inteiros
ímpares do RSA. Isto traz duas consequências; primeira, é possível provar que o
criptosistema é equivalente à factorização; segunda, a decifragem torna-se mais
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 41
difícil. A segunda, é devido aos problemas existentes em decidir qual dos
resultados possíveis da decifragem, está correcto.
Como é equivalente à factorização, o tamanho do modulus é o parâmetreo de
segurança mais importante de todos. Módulo superior a 1024 bits são
reconhecidamente seguros.
Actualmente não existem standards para o algoritmo de Rabin, mas encontra-se
explicado em diversos livros. No entanto, o projecto IEEE P1363 deverá
apresentar um standard e assim torná-lo mais usado pela comunidade.
14.2. Discrete logs: Diffie-Hellman, ElGamal, DSS
Diffie-Hellman é um protocolo vulgarmente usado para troca de
chaves.
Em muitos protocolos criptográficos, dois intervenientes desejam começar a
comunicar entre si, contudo, assumindo que não possuem nenhum segredo
comum, portanto não podem usar de criptosistemas de chave secreta. A troca de
chave pelo protocolo Diffie-Hellman remedeia esta situação, permitindo a
construção duma chave secreta comum através dum canal de comunicação
inseguro. Baseia-se num problema descrito como logaritmos discretos,
nomeadamente o problema Diffie-Hellman. Este problema é considerado difícil
e, encontra-se em algumas instâncias, tão difícil como o problema de logaritmos
discretos.
O protocolo Diffie-Hellman é geralmente considerado como seguro quando
usado com um grupo matemático apropriado. Em particular, o elemento
gerador usado nas exponenciações deve ter um período grande.
Algoritmos de logaritmos discretos podem ser usados para atacar o protocolo
Diffie-Hellman, com ataques passivos, que é a melhor forma de obter sucesso –
assumindo correctamente certos parâmetros.
Ataques contra Diffie-Hellman incluem também o man-in-the-middle. Este
ataque requer intervenção adaptativa, mas na prática, torna-se bastante simples
se o protocolo não usar contramedidas, tal como as assinaturas digitais.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 42
Geralmente, este protocolo não é implementado por hardware, sendo que os
ataques por hardware não são uma grande ameaça. Isto, claro poderá ser
diferente no futuro, quando as comunicações móveis se tornarem mais usuais e
difundidas.
DSS (Digital Signature Standard). Mecanismo apenas de assinatura
endossado pelo governo dos Estados Unidos. O algoritmo subjacente DAS
(Digital Signature Algorithm) é semelhante ao usado pelo ElGamal ou pelo
algoritmo de assinatura Schnorr. É também razoavelmente eficiente, no entanto
não tanto como o RSA para a verificação de assinaturas. O standard define o
DSS para usar a função de hash SHA-1 exclusivamente para o sumário das
mensagens.
O maior problema do DSS é o tamanho fixo do subgrupo (a ordem do elemento
gerador), que limita a sua segurança para um valor que ronda os 80 bits.
Ataques de hardware podem ser uma fonte de preocupação para algumas
implementações do DSS. Contudo, é usado e genericamente aceite como um
bom algoritmo.
ElGamal. Cifra de chave pública. Esta é uma extensão directa da ideia
original de Diffie/Hellman numa geração de segredo partilhado.
Essencialmente, gere um segredo partilhado, usando-o unicamente uma vez
para encriptar um bloco de dados.
ElGamal, apesar de ser o predecessor do DSS, é ainda bastante usado no
presente, embora não exista nenhum standard sobejamente conhecido que
tenha sido criado para si.
Criptosistema da Curva Elíptica é mais uma forma de implementar
métodos de logaritmos discretos. Uma curva elíptica é basicamente um
conjunto de pontos que satisfazem a equação y2 = x3 + ax + b quando
considerado num campo finito de características p (onde p tem de ser superior a
3). É necessária uma equação ligeiramente diferente para os casos de
características baixas, p = 2 e p = 3.
Os pontos nas curvas elípticas podem ser adicionados e formar entre si uma
estrutura chamada grupo. Isto, é apenas uma forma de dizer que é possível fazer
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 43
contas aritméticas com eles, tal como se podem fazer com inteiros, numa
operação como a adição ou a subtracção.
No que diz respeito à criptografia, curvas elípticas têm muitos benefícios
teóricos, sendo também bastante práticos. Não existe nenhum algoritmo sub-
exponencial para calcular logaritmos discretos de pontos das curvas elípticas, ao
contrário do que acontece nos logaritmos discretos. Um benefício prático para
tal, é que o tamanho da chave, bem como a assinatura digital produzida e as
mensagens encriptadas, são pequenas. Uma forma simples de calcular o limite
de segurança para um tamanho de uma chave, é pegar no tamanho dela, para
um criptosistema de chave privada, em bits e simplesmente multiplicar por
dois. Isto dá-nos uma estimativa, que não deixa de ser satisfatória para uma
instância genérica de curvas elípticas.
As curvas elípticas podem ser implementadas muito eficientemente tanto em
hardware como em software, competindo bem em termos de velocidade com
criptosistemas como o RSA e DSS. Existem algumas tentativas para
standardizar o criptosistema de curvas elípticas – por exemplo o ECDSA da
ANSI. N presente, as curvas elípticas são bastante conhecidas mas pouco usadas
na prática.
A segurança, neste método, tem-se mantido bastante estável durante anos,
contudo, foram já alcançados avanços significativos em ataques contra
instâncias especiais; sendo que estes ataques foram já previstos por
pesquisadores vários anos antes, pelo que não terão surgido como surpresa.
O algoritmo XTR, recentemente introduzido por Lenstra e Verheul, pode-se
tornar como um bom competidor às curvas elípticas. Contudo, estas, aparentam
ter um desempenho ligeiramente melhor e definitivamente escalam melhor com
o tamanho da chave.
LUC. Criptosistema de chave pública que utiliza um grupo especial
baseado nas sequências de Lucas (relacionadas com as séries de Fibonacci) na
construção básica do bloco. Pode implementar todos os algoritmos baseados nos
logaritmos discretos e, de certa forma, LUC é uma classe de algoritmos de chave
pública.
É possível de ver a estrutura subjacente do algoritmo como um grupo
multiplicativo de um campo finito de características p, de grau 2 (Fp2) – o que
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 44
também pode servir para provar que existe um algoritmo sub-exponencial, para
cálculos discretos e assim atacar o algorimo LUC. Por esta razão pode parecer
que o algorimo será de pouco interesse, sendo que é apenas outra forma de
implementar logaritmos discretos baseados em algoritmos de campos finitos.
Contudo, LUC faz uso de operações aritméticas que derivam das sequências de
Lucas, que podem ser ligeiramente mais rápidas, do que se se tentasse uma
aproximação directa.
Os diferentes algoritmos de chave pública baseados na aritmética de LUC são
chamado LUCDIF(LUC Diffie-Hellman), LUCELG (LUC ElGamal) eLUCDSA
(LUC Digital Signature Algorithm). Alguns destes encontram-se patenteados.
O facto de que valores usados nos algoritmos LUC, podem ser representados
como pares de valores proporcionam alguma vantagem em relação ao uso de
apenas inteiros de módulo p. Os cálculos apenas envolvem números com
metade dos bits que seriam precisos no caso dos inteiros de módulo p. Como as
operações de grupo do algoritmo LUC são simples de calcular, este torna-se
competitivo contra algoritmos como RSA e DSS.
Contudo, no presente momento, não existem muitos motivos para que se use os
criptosistemas LUC, visto que oferecem poucas vantagens sobre as curvas
elípticas ou o XTR.
XTR. Desenvolvido por Arjen Lenstra e Eric Verheul, o XTR é similar ao
LUC, no facto que usa um grupo multplicativo de um campo finito particular
(Fp6) como grupo subjacente.
Contudo, o XTR possui características únicas, tais como apenas precisar de 1/3
dos bits das assinaturas para encriptar as mensagens.
Todos os logaritmos discretos baseados nos algoritmos de chave pública podem
ser implementados segundo os ideais XTR. Portanto, tal como o LUC, é uma
classe de algoritmos de chave pública.
Talvez surpreendentemente, o algoritmo mostra-se eficaz e de acordo com os
autores (Lenstra e Verheul), pode até servir como um bom substituto às curvas
elípticas. Possui a vantagem sobre estas, pois baseia-se essencialmente no
mesmo problema de logaritmo discreto do DSS, pelo que pode incentivar os
criptógrafos a adoptarem-no mais facilmente como um algoritmo forte.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 45
14.3. Knapsacks Existem apenas alguns criptosistemas de chave pública baseados no knapsack,
sendo que nenhum apresenta grande importância no campo prático.
Rivest-Chor: criptosistema baseado numa variante particular do
problema knapsack. Este é o criptosistema que tem provado ser o mais
resistente a ataques.
Merkle-Hellman (MH): O primeiro criptosistema baseado no
knapsack. Surgiu em 1978 por Ralph Merkle e Martin Hellman. Apesar de se
basear nuns ideais bastante interessantes, sendo consideravelmente mais
simples que o RSA, já foi quebrado. MH apoia-se no problema da soma dos
subconjuntos (caso especial do problema do snapsack): dada uma lista de
números e um terceiro número, que é a soma do subconjunto desses números,
determinar o subconjunto. De forma geral, este problema é tido como sendo
computacionalmente complexo, contudo existem algumas instâncias simples
que podem ser resolvidas eficientemente. MH permite transformar instâncias
simples em complexas e vice-versa. Foi quebrado por Shamir, não atacando o
problema do knapsack, mas sim quebrando a conversão duma instância simples
para uma complexa.
14.4. Lattices Nos últimos anos o interesse em criptosistemas baseados em lattices aumentou
consideravelmente. Uma das razões principais reside no facto que certas classes
dos problemas de lattice são computacionalmente complexos (NP-hard), onde
vários criptosistemas eficientes foram já propostos e aparentam ser seguros.
NTRU é um criptosistema proposto a meio da década de 90 como uma
cifra de chave pública eficiente. É baseado no problema de lattice, apresentando
algumas características interessantes.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 46
Algumas das versões iniciais tinham problemas, mas as versões mais actuais foi
já proposta para alguns standards Americanos.
14.4.1. Qual a ideia base por detrás do algoritmo NTRUSign?
O algoritmo NTRUSign baseia-se na dificuldade em encontrar um ponto numa
lattice que seja próxima dum vector aleatório no espaço. Tal dificuldade é
conhecida como o Problema do Vector mais Próximo (appr-CVP). No
NTRUSign, o assinante tem um bom conhecimento da lattice, usando este
conhecimento para resolver a appr-CVP para um ponto arbitrário no espaço,
que esteja ligado ao documento a ser assinado. O destinatário apenas tem um
conhecimento deficiente da lattice, que é pública, podendo assim verificar que a
assinatura é um ponto da lattice e que se encontra próximo do ponto associado
ao assinado pelo documento.
A ideia subjacente em basear um esquema de assinatura, no uso de uma base
para encontrar vectores próximos numa lattice, foi inicialmente proposta por
Goldreich, Goldwasser e Halevi num artigo publicado em 1998. Contudo, neste
caso, as chaves e as assinaturas eram de tamanho n2 em n (onde n é a dimensão
da lattice), sendo que para um esquema seguro, as chaves seriam demasiado
grandes. A novidade no NTRUSign é a possibildade de utilizar as técnicas da
lattice NTRU para alcançar uma melhoria na velocidade e comprimento da
chave.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 47
15. Criptosistemas de chave secreta
Algoritmos de chave privada usam a mesma chave tanto para encriptar, como
para o processo inverso – desencriptar. Esta é a abordagem mais simples no
campo da encriptação, sendo matematicamene menos complexo do que a
criptografia de chave pública, usada à já vários séculos.
15.1. Terminologia A seguinte terminologia é usada quando tratamos de cifras simétricas.
15.1.1. S-Boxes Significa caixas de substituição. Tabelas com mapas de n por m bits (onde n e m
são muitas vezes iguais).
Existem várias formas de construir S-boxes eficientes para cifras, bem como
maneiras de as medir. Alguns criadores usam abordagens matemáticas através
de funções bent, para criar S-boxes que se mostrem ser mais seguras contra
certos ataques. Outros tentam abordagens heurísticas, matematicamente mais
complexas, mas que possuem benefícios adicionais (bem como implementação
de opções diferentes).
A S-box pode até ser a única parte não linear da cifra. Isto acontece no caso da
cifra de bloco DES, podendo mesmo ser considerada a parte mais importante do
algoritmo.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 48
15.1.2. Redes Feistel É o dispositivo para construir cifras de bloco a partir de funções simples. A ideia
original foi usada na cifra de bloco Lucifer, inventada por Horst Feistel. Desde
então surgiram já algumas variações ao modelo original.
De uma forma muito simplista, o standard redes Feistel, pega no texto a cifrar,
M e, divide-o em duas metades, L e R e, vai cifrando iterativamente uma das
metades, quando as metades se cruzarem, o processo volta a repetir-se.
M / \ / \ L1 R1 \ / \ / \C(K1) / \ L2 R2 \ / \ / \C(K2) / \ L3 R3 Como se pode observar, usam-se várias chaves (K1, K2), uma por cada ciclo.
Esta rede tem a particularidade de ser reversível, se aplicarmos o K em sentido
inverso. No DES, usam-se 16Ks, portanto forma uma rede Feistel com 16 ciclos.
A segurança da estrutura Feistel não é óbvia, mas análises ao DES, mostraram
que é uma boa forma de construir cifras. É imperativo que a cifra Feistel possua
passos suficientes, se bem que simplesmente adicionando mais passos não
garanta a segurança.
A operação de pegar na chave do utilizador e expandi-la em rK bits para os
passos de Feistel é chamado de key scheduling. Geralmente, esta é uma
operação não-linear, pelo que encontrar qualquer um dos rK bits, não nos
fornece directamente nenhuma informação acerca da chave. Existem diversas
cifras que têm esta estrutura base: Lucifer, DES, TwoFish, entre outros.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 49
15.1.3. Expansão, Permutação Estas são as operações comuns para misturar bits numa função. São operações
lineares, pelo que não são suficientes para garantir a segurança. Contudo,
quando usadas com S-boxes não-lineares fortes (como no DES), tornam-se
vitais para a segurança, porque propagam a não-linearidade uniformemente
entre todos os bits.
Existem três tipos de permutações:
1)As permutações em que a saída possui o mesmo número de bits de entrada:
Entrada: 1 0 1 0
\ / \ / / \ / \
Saída: 0 1 0 1 Os bits apenas trocam de posição.
2)Compressão. A saída ocupa menos bits que a entrada, sendo que alguns bits
acabam por se perder:
Entrada: 1 0 1 0 \ / \ / / \ Saída: 1 0 Por fim, a expansão:
Entrada: 0 1
/ \ / \ / \ Saída: 0 0 1 1 Igual à compressão, mas ao contrário. Os bits repetem-se para criar um número
de bits maior.
15.1.4. Operações bit slice Operações lógicas XOR, AND, OR, NOT e permutações de bit: a ideia sobre as
implementações de bit slice pertence a Eli Biham.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 50
Basicamente, todas as cifras de bloco podem ser escritas por bitslice, mas
operações aritméticas tornam-se muito lentas. Por outro lado, permutações são
praticamente imediatas, porque não requerem que se nomeie os registos
novamente e isto pode ser alcançado ao nível do código. Por isso, no caso do
DES, a pesquisa exaustiva da chave usando técnicas de bitslice, pode-se
incrementar a chave actual numa fracção de tempo do que normalmente é
necessário no key scheduling.
A Serpent, finalista na Advanced Encryption Standard (AES), foi desenhada
para realizar somente operações de bitslice, o que a torna bastante eficiente em
arquitecturas modernas com muitos registos.
Idealizada a pensar nos níveis práticos mais altos de segurança e, para o
conseguir, limitaram-se ao uso de mecanismos bem entendidos e rotinados,
para que se pudesse depender da experiência na criptoanálise de cifras de
blocos. Foram usados também o dobro dos passos suficientes para bloquear
todo o tipo de ataques de atalho actualmente conhecidos. O objectivo seria
conseguir proporcionar a esta cifra um tempo de vida superior a um século.
Apesar destas restrições, a Serpent consegue ser bem mais rápida que o DES.
15.2. One-Time Pad A OTP é a única cifra que se conseguiu provar ser incondicionalmente segura,
ou seja, inquebrável na prática. Foi provado também que qualquer cifra
inquebrável, tem de ser OTP.
A cifra Vernam (inventada por G. Vernam em 1917) é uma instância famosa de
uma OTP. Esta cifra é bastante simples: pega-se numa cadeia de bits que
contêm a mensagem em texto simples e uma cadeia de bits aleatória do mesmo
tamanho, que é considerada a chave. O problema prático é que a chave não tem
um tamanho pequeno constante, mas sim o tamanho da mensagem e, uma parte
da chave não deve ser usada mais que uma vez. Portanto, apenas temos que
substituir o problema de trocar dados secretos, pelo problema de trocar chaves
aleatórias secretas do mesmo tamanho. Esta cifra tem sido utilizada desde os
tempos da sua invenção e, mais ainda desde a prova de segurança dada por C.
Shannon em 1949.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 51
15.3. DES DES, abreviatura de “DATA ENCRYPTION STANDARD, é um algorítmo
criptográfico simétrico cifrador de blocos de 64 bits de texto simples, que utiliza
uma chave secreta de 64 bits, dos quais apenas 56 bits são efectivamente usados
e gera blocos de texto cifrado de 64 bits.
Adoptado como padrão de criptografia para protecção de informações federais
americanas de carácter não-classificadas, portanto de grau de sigilo menor que
as informações de segurança nacional (principalmente militares e
diplomáticas), o DES tornou-se de facto um padrão internacional, para uso de
bancos, particulares e organizações comerciais.
15.3.1. As origens do DES: o cifrador “Lucifer” da IBM Os algoritmos criptográficos ou cifradores mais antigos, usados até na altura da
Segunda Guerra Mundial, eram baseados em operações de substituição ou de
transposição. Durante aquele conflicto bélico os pesquisadores concluíram que
seria possível a obtenção de sistemas mais seguros, com o emprego de etapas
alternadas de substituição e transposição.
Shannon, em 1949, propôs a composição de vários tipos de funções, para obter
transformações mistas, mais complexas e geradoras de algoritmos criptográficos
mais poderosos. Basicamente, estas funções seriam obtidas através do produto
de duas operações simples não comutativas, o que levou os algoritmos que delas
fizesse uso denominar-se “algoritmo ou cifra-produto”.
Shannon estabeleceu dois princípios básicos que os algoritmos de criptografia
ou cifradores seguros deveriam obedecer:
1. O Princípio da Difusão
Pelo qual o bom cifrador deve realizar um espalhamento da informação do texto
simples sobre todo o texto cifrado. Em outras palavras, mudanças ocorridas no
texto simples devem afectar muitas partes do texto cifrado. Esta característica
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 52
irá obrigar um atacante ou criptoanalista possuir uma grande quantidade de
texto cifrado para tentar iniciar uma análise.
2. O Princípio da Confusão
Pelo qual o bom cifrador deve possuir um relacionamento funcional bastante
complexo entre o par texto simples/chave e o texto cifrado. Desta forma torna-
se difícil para um criptoanalista inferir que mudança ocorrerá no texto cifrado,
em decorrência de uma alteração no texto simples ou na chave, o que dificultará
a quebra do algorítmo.
O algoritmo Lucifer, projectado por Horst Feistel para a IBM no início da
década de 70, baseia-se exactamente na proposta de Shannon, sobre uso de
transformações mistas de substituições e transposições.
O Lucifer é, portanto, uma cifra-produto em bloco de 128 bits, com chave de 128
bits (o DES ficou com tamanho de bloco de 64 bits e com chave efectiva de 56
bits).
As operações de transposições no “Lucifer” são implementadas em forma de
caixas P (Permutação), ao passo que as substituições são efectuadas por caixas S
(Substituição), conforme a figura 2 mais abaixo.
No caso das operações de substituições, é impraticável a realização de todas as
substituições possíveis, para determinado tamanho de bloco. Por esta razão elas
são feitas em paralelo, sobre segmentos menores do bloco.
As operações de transposições, realizadas pelas caixas P – Permutação,
geralmente fixas e sem chave, são responsáveis pela produção da Difusão.
Por seu turno, as operações de substituições, feitas pelas caixas S, com chave,
implementam a Confusão.
As aplicações sobre os bits do bloco em claro, de sucessivas e alternadas
operações de transposição e substituição, sob o controle dos bits da chave, irão
produzir um bloco cifrado de bits, que não poderão ser deduzidos dos bits em
claro, sem o conhecimento de todas as operações e da chave envolvida.
A operação inversa, que vem ser a decifração, é efectuada submetendo-se o
bloco de dados cifrados, de volta pelo processo, usando-se o inverso de cada
caixa S, de substituição.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 53
Portanto, o Lucifer, originador do DES, tinha a sua segurança baseada numa
série de operações complexas de substituições, interpoladas por transposições,
bem como no segredo da chave criptográfica utilizada.
Figura 1 – Esquema da cifragem do algoritmo DES
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 54
Figura 2 – Diagrama-bloco DES
15.3.2. Descrição do Algoritmo O diagrama-bloco do DES, figura 2 acima, mostra os seguintes passos,
sucessivos e independentes entre si :
1. Um passo inicial denominado de Permutação Inicial ( IP ), que executa
uma operação simples de transposição de bits, trabalhando apenas sobre o
bloco de 64 bits do texto em claro (texto simples), sem fazer uso da chave
criptográfica de 64 bits.
2. Um passo intermediário denominado de Transformação Criptográfica
(tipo produto), complexa e dependente da chave, que realiza cifragem em bloco.
Sucessivas operações lógicas, de substituição e de transposição, são executadas
em 16 passos ou “rounds”. As substituições são efectuadas sob o controlo da
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 55
chave criptográfica, ao passo que as transposições são efectuadas de acordo com
uma sequência fixa.
3. Um passo final denominado de Permutação Final ( IP-1 ), operação de
transposição exactamente inversa à da Permutação Inicial ( IP ), o que irá
permitir a operação de decifração como o mesmo algorítmo.
Este método é ainda suficientemente forte para impedir os intrusos normais de
decifrarem as mensagens, mas é facilmente ultrapassavel com hardware
aproporiado ao alcance de Governos, organizações criminosas ou mesmo por
grandes companhias. DES está a tornar-se demasiado fraco, pelo que não deve
ser utilizado em aplicações.
A variante 3DES, é baseada no uso de três vezes do DES (geralmente numa
sequência de encriptar-desencriptar-encriptar com três chaves diferentes). É
sem dúvida muito mais forte, mas apresenta a desvantagem de ser bastante
mais lento que outras cifras de blocos.
Apesar de não apresentar grande interesse para uso em aplicações na
actualidade, existem ainda várias razões para que se considere ainda
importante. Foi a primeira cifra de blocos que se expandiu no sector público,
tendo assim, desempenhado um papel importante na divulgação da criptografia
ao público geral.
A sua estrutura era também excepcionalmente boa, para uma cifra que
supostamente apenas seria utlizada durante alguns anos. O DES mostrou-se
extremamente forte, pelo que demorou mais de uma década para que houvesse
algum desenvolvimento criptoanalítico que o pudesse pôr em causa.
15.3.3. Controvérsias sobre a segurança do DES As controvérsias a respeito do DES surgiram logo no início do processo de
padronização. Entre 1972 e 1974, uma equipa da IBM, sob o cargo de Walter
Tuchman, trabalhou no que seria a versão definitiva do DES, a partir do
algorítmo Lucifer.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 56
Por influência da NSA, os elementos principais do projecto do DES foram
designados como sensíveis e mantidos fora do conhecimento do público, tais
como os critérios de escolhas das caixas P (Permutação), caixas S (Substituição)
e cálculos das subchaves Ki.
Tal facto deu origem a críticas da comunidade científica e vários trabalhos
foram publicados, envolvendo diversos pesquisadores, uns criticando e outros
defendendo o DES, tais como Martin Hellman e Whitfield Diffie, ambos de
Stanford e, Walter Tuchman da IBM.
15.3.4. Armadilhas e fraquezas Eram dois os principais receios advindos do segredo do projecto do DES :
• Poderia haver uma armadilha (trapdoor) inserida no algoritmo, que
possibilitasse uma decifração fácil por parte dos conhecedores dos segredos do
projecto, que daria à NSA o poder de ter acesso a comunicações privadas;
• Alguma fraqueza séria do algoritmo poderia ser ou mesmo ter sido
descoberta por algum criptoanalista, que então ganharia a possibilidade de
acesso à correspondência privada.
Devido às repercussões do caso, o Senado Americano foi chamado a intervir.
Apesar dos trabalhos internos terem sido considerados como “classificados”, o
resultado final foi tornado público e livrou a NSA de qualquer envolvimento
indevido como o projeto do DES.
Tentando encontrar alguma fraqueza no DES, o Bell Laboratories e a Lexan
Corporation, analisaram na época a operação (mas não o projecto) das caixas S,
não tendo sido detectada nenhuma fragilidade.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 57
15.3.5. Tamanho da chave Outra crítica que logo surgiu, dizia respeito ao tamanho da chave. O algoritmo
Lucifer, que originou o DES, operava com chave de 128 bits. No entanto, o DES
ficou com chave efectiva de 56 bits.
Martin Hellman e outros membros da comunidade científica da época alegaram
ter a NSA pedido à IBM a redução do tamanho da chave, o que iria facilitar o
ataque ao algoritmo por pesquisa exaustiva da chave.
Walter Tuchman ofereceu outra versão para o novo tamanho da chave. Ele
negou que a NSA tivesse pedido a redução da chave. O real motivo, segundo ele,
da chave ficar com 64 bits, é por que ela deveria caber num elemento
semicondutor (NMOS) de 2,5 microns. Segundo o próprio Tuchman, a
explicação era tão simples e directa que simplesmente ninguém acreditava nela.
Na altura, Diffie e Hellman, sugeriram uma pesquisa exaustiva de chave, através
de um ataque em paralelo. Muitos processadores, a trabalhar em paralelo, a
pesquisar espaços contíguos da chave, poderiam dar conta do problema. Por
exemplo, um processador que pudesse testar uma chave por microsegundo e,
portanto, 8.6 x 1010 chaves num dia, levaria 106 dias para testar todas as 256 ≈ 7
x 1016 chaves. Agora, se colocarmos 106 processadores como este, a trabalhar
em paralelo, todas as chaves poderiam ser testadas num dia.
Na época, foi estimado por Diffie e Hellman um custo final para tal máquina de
cerca de US$20 milhões, com um consumo de 2MW, enquanto a IBM a cotava
em cerca de US$200 milhões.
Com a constante evolução tecnológica e redução dos custos de hardware, era
esperado que tal engenho poderia ter o seu custo baixado para algumas
centenas de milhares de dólares, já no fim da década de 80.
15.3.6. Fragilidades reais do DES Enquanto se estendia a controvérsia em torno de temores e conjecturas sobre a
existência de armadilhas, fraquezas e o pequeno tamanho da chave, algumas
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 58
fragilidades reais do padrão foram surgindo, graças ao intenso trabalho de
análise do DES empreendido pela comunidade científica.
15.3.7. Existência de chaves fracas No processo de cálculo das chaves, a chave K é dividida em 2 metades, que vão
sofrer deslocamentos circulares à esquerda independentes (FIG. 07). Se os
valores a serem deslocados forem todos “1s” ou “0s”, as subchaves usadas no
algorítmo serão iguais, não importando de se tratar de criptografia ou
decifração.
Então, para estas chaves criptografar é o mesmo que decifrar, isto é : Ek ( Ek
(m)) = m, onde Ek é a operação de cifrar com o DES, usando a chave k e m é a
mensagem em claro.
Vê-se, portanto, que se um utilizador capaz, cifrar uma mensagem m com uma
chave fraca k, basta o opositor aplicar sobre o resultado desta cifra, Ek (m), uma
nova cifra, Ek’ ( Ek (m)), testando agora todas as chaves fracas, que ele então
obterá, para k’ = k, a mensagem em claro m.
No DES existem quatro chaves fracas, conforme a Tabela abaixo, em notação
hexadecimal:
Tabela 2 – Chaves Fracas DES
15.3.8. Existência de chaves semi-fracas
Existem ainda seis pares de chaves que possuem a fraqueza pela qual, em cada
par considerado, as duas chaves realizam decifrações idênticas.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 59
Então, no par de chaves semi-fracas (k1, k2), teremos que :
Dk1 ( m ) = Dk2 ( m ), sendo D a operação de decrifração.
Portanto, a chave k1 pode decifrar uma mensagem criptografada com k2 e, vice-
versa. Estes pares de chaves semi-fracas são mostradas na tabela seguinte.
Tabela 3 – Chaves Semi-Fracas DES
Até a presente data, não têm sido encontradas outras fraquezas de chaves,
apesar das investigações realizadas, o que não significa que não existam. Por
outro lado, é aconselhável evitar o uso de chaves que possuam uma estrutura
óbvia ou semelhante às das tabelas acima.
Considerando o espaço de chaves do DES contendo 256 chaves possíveis, a
probabilidade de se apanhar, por acaso, uma destas chaves fracas e semi-fracas,
é de 2-52. Apesar disto, será mais seguro incorporar um filtro no algoritmo de
escolha aleatória de chaves, como garantia.
15.3.9. O Futuro Padrão
Actualmente existe uma árdua disputa no seio da comunidade científica
criptológica, travada entre várias organizações e pesquisadores autónomos. Têm
sido aplicadas etapas selectivas, como se se tratasse duma competição
desportiva,. O cobiçado prémio final, nada desprezível, é o título de “padrão
criptográfico para o próximo milênio”.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 60
No dia 2 de janeiro de 1997 o NIST anunciou o início dos esforços no sentido do
desenvolvimento de um novo padrão criptográfico para substituir o DES e, que
foi denominado AES ( Advanced Encryption Standard).
Em 12 de setembro de 1997 foi lançada formalmente uma chamada pública para
algorítmos candidatos ao novo padrão, tendo sido dado o prazo de até 15 de
Junho de 1998 para apresentação dos interessados.
As principais especificações colocadas aos candidatos ao AES foram :
Algoritmo criptográfico simétrico cifrador de bloco;
Será usado por organizações governamentais ou comerciais (de modo
voluntário), para protecção de informaçõess “não-classificadas”, justamente
como ocorrera com o DES;
O algoritmo deve ser completamente aberto ao conhecimento público e
possuir facilidades para execução de testes, para permitir, de modo irrestrito,
análises e avaliações ;
Deve ter a possibilidade de se tornar disponível mundialmente e livre de
royalties;
Deve ser mais eficiente e mais seguro que o 3-DES, possibilitando
tamanhos de chave de 128, 192 e 256 bits;
Deve também poder cifrar blocos de tamanhos variáveis, como : 64,128 e
256 bits.
Em 20 de agosto de 1998, o NIST anunciou que 15 candidatos tinham sido
seleccionados, após a 1ª Conferência de Candidatos a AES.
A partir daí foi travada uma verdadeira batalha, com os autores dos algoritmos
candidatos e também os seus simpatizantes a procurarem, ao mesmo tempo,
enaltecer as suas propostas e mostrar falhas, ou mesmo “quebrar”, os
algoritmos concorrentes. Foi uma guerra de todos contra todos.
Em 15 de abril de 1999, foi estabelecida uma trégua pelo NIST, com o fim do
período de aceitação de comentários públicos sobre os candidatos.
Entre os 15 candidatos selecionados, dez tinham origem fora dos EUA e havia
apenas um algoritmo cujos autores eram, na sua totalidade, cidadãos
americanos.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 61
Após um breve período de tempo, o NIST, que já vinha a realizar as suas
análises com o apoio da NSA, anunciou os cinco algoritmos candidatos
finalistas, que são os seguintes:
AES (Rijndael), concebido por dois criptógrafos belgas, Joan Daemen e
Vincent Rijmen.
Rijndael segue a tradição das cifras quadradas. NIST escolheu este como o
vencedor, devido ao elevado desempenho em hardware e software em
ambientes distintos. Requer pouca memória, para além de excelente tempos de
preparação da chave, sendo as suas operações fáceis de defender contra ataques
de tempos.
Foi salientado pela NIST, que todos os cinco finalistas possuíam segurança
adequada e, que nada de errado havia com os outros quatro. Após todas as
análises e comentários recebidos terem sido considerados, a NIST optou pelo
Rijndael como a melhor escolha para o AES.
MARS, desenvolvido pela IBM, em Armonk, Nova Iorque.
Com uma estrutura interessante (usando um tipo especial da Rede Feistel), que
depende grandemente no conjunto de instruções disponíveis nos processadores
de 32-bits. Tem a vantagem de ser eficiente neste tipo de arquitectura, mas
poderá levar a dificuldades de implementação em arquitecturas mais simplistas.
RC6, por Rivest, Robshaw e Yin, RSA Laboratories.
RC6 segue os ideais do RC5, mas conta com muitos melhoramentos. Contudo,
alguns ataques conseguem ir bastante longe, pelo que é ainda incerto se o RC6
se encontra analisado suficientemente.
Serpent, Anderson, Biham e Knudsen.
Servent possui uma estrutura basicamente conservadora, mas de alguma forma
inovadora. Pode ser implementada por bitslice. O que o torna bastante
complexo de implementar pela raíz, sendo que escrevendo-o de uma forma não
bitslice envolve uma perda de eficiência.
Twofish, Schneier et. Al., Counterpane Security.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 62
Cifra de bloco desenhada pela Counterpane. A sua estrutura é bastante delicada,
com várias formas de implementação. Consiste basicamente duma cifra Feistel,
mas utiliza muitas idéias diferentes.
15.4. Blowfish Blowfish é um algoritmo criptográfico de chave simétrica desenvolvido por
Bruce Schneier. Consiste de um cifrador em blocos de 64 bits com chaves de
tamanho variável (até 448 bits). Foi desenvolvido em 1973, tornando-se uma
alternativa grátis e eficiente aos algoritmos de encriptação já existentes. O
Blowfish ganhou uma grande aceitação no mercado sendo utilizado em diversas
aplicações, tal como o Nautilus e o PGPfone. Os únicos ataques conhecidos
baseiam-se na sua fraca classe de chaves. Possui:
Cifragem em blocos de 64 bits;
Chave de tamanho variável: 32 à 448 bits;
Desenvolvido por Bruce Schneier;
Mais rápido que o DES e o IDEA;
Não patenteado e totalmente grátis;
Não necessita de licença;
Código fonte disponível para download.
Vários criptógrafos examinaram o código do Blowfish, tendo deparado com
chaves fracas – existe uma classe de chaves que pode ser detectada, contudo não
quebrada – na variante do Blowfish.
É uma das cifras de bloco mais rápidas actualmente em uso, exceptuando na
troca das chaves. Cada chave nova requere um pré-processamento equivalente à
encriptação de 4 kilobytes de texto, o que comparando com outras cifras de
bloco é bastante lento. Tal pormenor, impossibilita o seu uso em certas
aplicações, não sendo problema para outras. Em alguns casos, isto é uma
vantagem, o método usado pelo OpenBSD para fazer o hashing da password usa
um algoritmo derivado do Blowfish, fazendo uso da lentidão na criação das
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 63
chaves, utilizando o tempo de processamento para prevenir os ataques de
dicionário.
15.5. IDEA
International Data Encryption Algorithm é um algoritmo desenvolvido pela
ETH em Zurique por Xuejia Lai. Usa uma chave de 128 bits, sendo considerado
bastante segura. Tem sido um dos algoritmos publicamente mais conhecidos.
Apesar de inúmeras tentativas de encontrar falhas, ainda não foram publicados
nenhuns ataques com sucesso.
15.6. RC4
RC2, RC4 – Algoritmos criados pelo Professor Ronald Rivest, são proprietários
da RSA Data Security. Estes algoritmos usam chaves que variam de 1 a 1024 bits
de extensão. Com chaves pequenas (menores que 48 bits), são códigos fáceis de
serem quebrados e, como são proprietários, não se tem muitas informações
sobre a sua segurança com chaves extensas. No entanto, não é um algoritmo
fácil de quebrar. RC2 é uma cifra de bloco, similar ao DES. RC4 é uma cifra de
corrente, onde o algoritmo produz uma corrente de pseudo-números que são
cifrados através de uma operação lógica XOR com a própria mensagem. Por esta
razão, é extremamente importante que a mesma chave não seja usada para
encriptar duas correntes de dados.
15.7. Modos de operação
As cifras mais comuns são cifras de blocos. Estas, transformam blocos de
tamanho fixo de dados (geralmente de 64 bits) em outros blocos com o mesmo
tamanho, usando uma função escolhida pela chave. Se a chave, o bloco de
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 64
entrada e de saída tiverem todos n bits, a cifra de bloco define um mapeamento
de um-para-um dos n-bit inteiros para permutações de n-bit inteiros.
Se o mesmo bloco for encriptado duas vezes com a mesma chave, o bloco de
texto cifrado resultante será também o mesmo (este tipo de encriptação é
conhecido como electronic code book ou ECB). Esta informação poderá ser de
grande uso para um atacante. Para evitar que isto aconteça e, que blocos
idênticos de texto simples sejam cifrados para blocos diferentes, são usados dois
métodos:
CBC (cipher block chaining): o bloco de texto cifrado é obtido
através duma operação de XOR do bloco de texto simples com o bloco cifrado
anterior, encriptando o valor resultante. Desta forma, os primeiros blocos
influenciam os restantes, o que aumenta o número de bits do texto simples que
um bit de texto cifrado depende, mas também leva a problemas de
sincronização, caso se perca um bloco.
CFB (cipher feedback): o bloco de texto cifrado na posição k, é obtido
através da encriptação do bloco na posição (k- 1) e pela operação XOR do seu
resultado no texto simples.
As cifras de bloco possuem relações bem interessantes com outras classes de
cifras. Vejam-se os seguintes exemplos:
Cifras de corrente. Consiste numa máquina de estados que devolve,
em cada transição de estados, um bit de informação. Esta corrente de bits
resultantes, é conhecida como running key. A máquina de estados não é mais
que um gerador de números pseudo-aleatório. Por exemplo, é possível criar um
a partir de uma cifra de blocos ao encriptar repetidamente o resultado da
encriptação anterior. Geralmente, são usadas criações mais elaboradas para as
cifras de corrente, de modo a conseguir diminuir os tempos de encriptação.
RC4 e SEAL são duas das cifras de corrente mais conhecidas.
Várias cifras de corrente baseiam-se no LFSR (linear feedback shift registers),
tal como o A5/1 usado no sistema GSM. Estes possuem a vantagem de serem
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 65
bastante rápidos, chegando a ser várias vezes mais rápidos que as cifras de bloco
comuns.
SSSC (self-synchronizing stream ciphers): a classe das SSSC
possuem a propriedade de corrirgir a corrente resultante após bit flips ou bits
perdidos após um período de tempo.
As SSSC podem ser criadas usando cifras de bloco no modo CFB. Assumindo
que já se encriptou n bits da mensagem e que se conhece outro tanto do texto
cifrado (onde n corresponde ao comprimento do bloco da cifra). É então criado
um novo bit running key, encriptando n bits do texto cifrado. Tira-se um bit do
resultado da cifra e obtém-se o novo bit running key. Movendo um bit à frente,
pode-se iterar todo o processo para o comprimento total da mensagem.
Facilmente se constata que um erro num bit num texto cifrado não irá afectar a
decifragem do texto após n bits. É esta propriedade que torna a cifra auto-
sincronizadora. A cifra de bloco usada, deverá ter um tamanho suficientemente
grande de forma a evitar ataques de substituição por exemplo.
15.8. Criptografia antes dos anos 70
Neste subcapítulo, serão listadas algumas das cifras do “passado”.
Fish foi usada pelo exército alemão durante a Segunda Guerra Mundial,
para encriptar comunicações com comandos importantes para as tropas. A
encriptação era feita através duma cifra de corrente chamada Máquina Lorentz.
O nome Fish, surgiu dos criptoanalistas britânicos. Foi muito importante,
porque causou bastantes dificuldades aos analistas britânicos, que finalmente
desenvolveram uma máquina chamada Colossus, tornando-se num dos
primeiros computadores digitais.
A máquina Colossus, poderá ter sido um factor importantíssimo no
planeamento e eventual sucesso do ataque dos Aliados à Normandia. Devido aos
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 66
resultados obtidos pelos criptoanalistas do Fish, as Forças Aliadas tinham
conhecimento da posição das tropas alemãs.
Engima foi outra cifra usada pelos Alemães na Segunda Guerra
Mundial. A máquina usava diversos rotores e tinha a aparência de uma simples
máquina de escrever. Contudo, tanto os matemáticos Polacos como os
Britânicos foram capazes de obter informações actualizadas acerca deste
método. A maior parte das comunicaões encriptadas pelo Enigma, eram
decifradas pelos analistas Britânicos em Bletchley Park no espaço de horas.
Uma das versões mais capazes do Enigma, era usada em comunicações entre
submarinos, mas mesmo estas, os analistas Aliados conseguiram quebrar,
provocando grandes implicações na Batalha do Atlântico.
Tudo isto encontra-se bem documentado, Enigma e Bletchley Park. Inclusive o
trabalho do mais respeitado criptoanalista britânico da altura, Alan Turing, que
foi explicado e dissecadoem vários livros e artigos.
Recentemente, as suas notas originais sobre criptoanálise da altura, foram
tornadas públicas.
No entanto e, devido à sua idade, é pouco provável e viável que qualquer
variante do Enigma possa ser considerada segura actualmente.
Cifra de substituição. Este é um dos métodos básicos de papel e
caneta. Constrói-se uma tabela listando o alfabeto por ordem na primeira linha,
fazendo uma permutação aleatória do alfabeto na segunda. Pode-se encriptar
qualquer caracter do alfabeto, simplesmente olhando para a primeira linha e,
escrevendo o caracter correspondente da segunda linha. A chave deste método é
a permutação do alfabeto na segunda linha. O processo de decifragem é
precisamente o inverso.
Este processo é susceptível a uma análise à frequência, no caso do alfabeto ser
pequeno. Cifras de bloco modernas, poderão ser vistas como uma variante desta
idéia, no sentido que tentam esconder a mensagem atrás dum alfabeto grande
que depende de uma chave. No caso da cifra de bloco a permutação é gerada
pela chave secreta, pelo que o espaço da chave pode não cobrir todas as
permutações possíveis.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 67
Vigenere. Esta cifra usa um relógio aritmético para adicionar a chave à
mensagem. A dferença entre o OTP (One Time Pad) e a Vigenere é que nesta
faz-se explicitamente uso da chave curta repetidas vezes para uma mensagem.
Métodos usados para atacar as cifras Vigenere são o teste Kasiski, índice de
coincidências e outros. Estes levam a métodos eficazes de quebrar até mesmo
mensagens bastante pequenas (relativamente ao tamanho da chave).
Cifra Hill. A cifra Hill usa matrizes de relógios aritméticos, sendo altamente susceptível a ataques de texto simples.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 68
16. SSLeay/OpenSSL
16.1. Contexto São relacionados abaixo três conceitos básicos para a compreensão do
funcionamento dos sistemas de comunicação seguros, são eles: Autenticidade,
Integridade e Confidencialidade.
Autenticidade: é a garantia de que a identidade da entidade com a qual se está a
comunicar corresponde à desejada. Em outras palavras, a autenticidade reside
no facto de as duas partes de uma comunicação terem a certeza de que estão a
trocar informações com a entidade correcta.
Integridade: é o facto de a mensagem transmitida chegar até ao seu receptor de
forma íntegra, isto é, sem erros ou modificações indevidas.
Confidencialidade: é a garantia de que apenas as partes envolvidas na
comunicação têm acesso às informações trocadas. De outra forma, diz-se que a
informação não pode ser interceptada por terceiros, ou pelo menos não pode ser
entendida quando interceptada. Deve-se notar que a autenticidade das partes é
essencial para se conseguir confidencialidade, pois é imperativo que se
identifique a outra parte na comunicação para o estabelecimento de chaves
criptográficas comuns que permitam a utilização de criptografia segura.
16.2. A origem do SSLeay A criptografia é o mecanismo básico para se prover segurança numa rede de
computadores. É esta que fornece as ferramentas para satisfazer os requisitos de
autenticidade, integridade e confidencialidade exigidos.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 69
O protocolo SSL fornece funções que permitem que se alcancem os três
requisitos citados anteriormente; fazendo uso de diferentes algoritmos
criptográficos para implementar segurança, tais como autenticação com
certificados, algoritmos de troca de chaves de sessão, cifração e verificação de
integridade. É um protocolo comummente utilizado para garantir que a
comunicação entre um servidor e um cliente WWW seja segura e cifrada.
Surgiu então o SSLeay que é uma biblioteca de funções que implementa o
protocolo SSL (Secure Socket Layer) da Netscape, baseado num trabalho
realizado por uma equipa coodenada por Eric A. Young e Tim Hudson. Este
trabalho iniciou-se devido a restrições do governo Norte Americano para
exportação de produtos que limitavam-se a um tamanho máximo de chaves
criptográficas, o que não atendia as necessidades do mundo da informática.
Após algum tempo, o SSLeay transformou-se no OpenSSL, que aproveitando o
legado do SSLeay deu sequência ao trabalho da equipa anterior de garantir
comunicação segura cliente-servidor (implementando o protocolo SSL), como
pode ser utilizado para criar uma Autoridade Certificadora e assim gerar
Certificados Digitais.
A Certificação Digital é uma tecnologia de identificação em redes de
computador. Ela permite a emissão de documentos de identidade electrónicos
para que entidades se reconheçam na Internet.
Os Certificados Digitais são elaborados segundo padrões internacionais,
definindo quais informações são imprescindíveis e deixa em aberto a
possibilidade de implmentação de outras informações de interesse do
usuário. Esse documento electrónico encontra-se sob a chancela digital do órgão
emissor, permitindo que a sua autenticidade possa ser verificada de maneira
simples e automática.
16.2.1. Autoridade
Os certificados digitais são emitidos por empresas especializadas, conhecidas
como Autoridades Certificadoras.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 70
Para obter um certificado digital, o usuário deve conectar-se (normalmente
utilizando um browser) ao sítio de uma certificadora digital e preencher um
formulário com os seus dados pessoais. Paralelamente, o browser envia a chave
pública para a certificadora, mantendo a privada em segredo na máquina do
usuário.
Depois disso, o candidato ao certificado digital deverá comprovar a sua
identidade junto a uma Autoridade de Registo (RA) que pode ser um cartório,
departamento de RH, etc. Feito isso, a autoridade certificadora emitirá o
certificado digital e o usuário fará o seu descarregamento e instalação através do
seu browser.
Normalmente uma Autoridade Certificadora torna pública a sua Declaração das
Práticas de Certificação (CPS – Certification Practice Statementes), que
descreve todos os procedimentos necessários para a validação de solicitações de
certificações, como realizar todos os processos de emissão de certificados,
verificação de validade, armazenamento, publicação ou acesso online, revogação
e arquivamento para verificação futura. Assim uma autoridade certificadora
constitui-se de um sistema computacional completo, com capacidade de
comunicação, processamento e armazenamento. Uma Declaração das Práticas
de Certificação bastante completa e interessante é disponibilizada pela
CertiSign.
16.3. Certificado
O Certificado de Identidade Digital, também conhecido como Certificado
Digital, associa a identidade de um titular a um par de chaves electrónicas
(uma pública e outra privada) que, usadas em conjunto, comprovam a
identidade. É uma versão electrónica de algo parecido a um Bilhete de
Identidade – serve como prova de identidade, reconhecida diante de qualquer
situação onde seja necessária a sua comprovação.
O Certificado Digital pode ser usado numa grande variedade de aplicações,
como comércio electrónico, groupware (Intranet e Internet) e transferência
electrónica de fundos.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 71
Dessa forma, um cliente que compre numa loja virtual, utilizando um servidor
seguro, solicitará o Certificado de Identidade Digital deste Servidor para
verificar a identidade do vendedor e o conteúdo do Certificado por ele
apresentado. Da mesma forma, o servidor poderá solicitar ao comprador o seu
Certificado de Identidade Digital, para identificá-lo com segurança e precisão.
Caso qualquer um dos dois apresente um Certificado de Identidade Digital
adulterado, ele será avisado do facto e, a comunicação com segurança não será
estabelecida.
O Certificado de Identidade Digital é emitido e assinado (chancelado) por uma
Autoridade Certificadora Digital(Certificate Authority – CA). Para tal, esta
autoridade usa as mais avançadas técnicas de criptografia disponíveis e de
padrões internacionais (norma ISO X.509 para Certificados Digitais), para a
emissão e chancela digital dos Certificados de Identidade Digital.
Um certificado contém três elementos:
16.3.1. Informação de atributo
Esta é a informação sobre o objecto que é certificado. No caso de uma pessoa,
isto pode incluir o seu nome, nacionalidade e endereço electrónico, a sua
organização e o departamento desta organização onde trabalha.
16.3.2. Chave de informação pública
Esta é a chave pública da entidade certificada. O certificado actua para associar
a chave pública à informação de atributo, descrita acima. A chave pública pode
ser qualquer chave assimétrica, mas usualmente é uma chave RSA.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 72
16.3.3. Assinatura da Autoridade em Certificação (CA)
A CA assina os dois primeiros elementos e então, adiciona credibilidade ao
certificado. Quem recebe o certificado verifica a assinatura e acreditará na
informação de atributo e chave pública associadas se acreditar na Autoridade
em Certificação.
Existem diversos protocolos que usam os certificados digitais para
comunicações seguras na Internet:
Secure Socket Layer ou SSL
Secured Multipurpose Mail Extensions – S/MIME
Form Signing
Authenticode / Objectsigning
O SSL é talvez a aplicação mais difundida para os certificados digitais e é usado
em praticamente todos os sitios que fazem comércio electrónico (livrarias, lojas
de música, bancos etc.). O SSL teve uma primeira fase de adopção onde apenas
os servidores estavam identificados com certificados digitais e, assim tínhamos
garantida, além da identidade do servidor, o sigilo na sessão. Entretanto, apenas
com a chegada dos certificados para os navegadores é que pudemos contar
também com a identificação na parte do cliente, eliminando assim a
necessidade do uso de senhas.
O S/Mime é também um protocolo muito popular, pois permite que as
mensagens de correio electrónico sejam encriptadas e/ou assinadas
digitalmente. Desta forma as mensagens não podem ser lidas ou adulteradas
por terceiros durante o seu trânsito entre a máquina do remetente e a do
destinatário. Além disso, o destinatário tem a garantia da identidade de quem
enviou a mensagem.
O Form Signing é uma tecnologia que permite que os utilizadores emitam
recibos com os seus certificados digitais. Por exemplo: o utilizador acede ao seu
banco pela rede e solicita uma transferência de fundos. O sistema do banco,
antes de fazer a operação, pede que o utilizador assine com o seu certificado
digital um recibo confirmando a operação. Esse recibo pode ser guardado pelo
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 73
banco para servir como prova, caso o cliente posteriormente negue ter efectuado
a transação.
O Authenticode e o Object Signing são tecnologias que permitem que um
programador assine digitalmente o seu software. Assim, ao descarregar software
pela Internet, o utilizador tem certeza da identidade do fabricante do programa
e que o software se manteve íntegro durante o processo. Os certificados digitais
dividem-se em basicamente dois formatos: os certificados de uso geral (que
seriam equivalentes a um bilhete de identidade) e os de uso restrito
(equivalentes a cartões de banco, cartões de clubes etc.). Os certificados de uso
geral são emitidos directamente para o utilizador final, enquanto que os de uso
restrito são direccionados basicamente para empresas ou governo.
16.4. Chaves
Existem dois tipos básicos de criptografia actualmente: a criptografia simétrica
(chave privada) e a criptografia assimétrica (chave pública). A certificação
digital utiliza basicamente a criptografia assimétrica, onde cada utilizador
possui um par de chaves: uma pública e outra privada.
A chave pública é divulgada livremente e a chave privativa é mantida em
segredo pelo seu utilizador. Assim, quando alguém deseja enviar uma
mensagem em segredo para outra pessoa, basta encriptar a mensagem com a
chave pública do destinatário. Desta forma, a mensagem só poderá ser aberta
pelo detentor da chave privada, ou seja, o destinatário da mensagem.
A criptografia assimétrica possui outra utilidade: a assinatura digital. Desta
forma, quando um utilizador deseja assinar um documento digitalmente, ele
cifra o documento com a sua chave privada e todas as outras pessoas poderão
verificar a sua assinatura usando a sua chave pública.
Exemplos de algoritmos simétricos são IDEA, RC2, RC4, DES, DES3, Blowfish e
Diamond. O melhor algoritmo assimétrico de criptografia conhecido é o RSA.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 74
16.5. Como funciona o SSL
Um sitio seguro é constituído por programas de computador que são executados
num servidor seguro para atender solicitações feitas pelos utilizadores finais,
através dos seus próprios programas (clientes seguros).
Dotado de características que tornam as transacções electrónicas confidenciais,
mediante criptografia, o servidor seguro faz uso de um protocolo especial de
comunicação que é o SSL, que utiliza criptografia de chave assimétrica,
tornando a comunicação entre as partes virtualmente inviolável. Desta forma, se
houver interceptação das informações entre o cliente e o servidor por parte de
pessoas não autorizadas, estas informações não terão utilidade já que seria
necessário o conhecimento prévio das chaves privadas de criptografia.
O par chaves de cifração (chave pública e chave privada) é a identificação
electrónica de um servidor na Internet. E existem também os “cartórios”
electrónicos: as Autoridades Certificadoras.
A chave pública de um servidor deve ser previamente certificada para
comprovar que ela pertence mesmo a esse servidor. Desta maneira o utilizador
do navegador da Internet pode ter a certeza de não estar a ligar-se e passar as
suas informações confidenciais a um desconhecido. Este certificado é fornecido
por uma Autoridade Certificadora.
O mecanismo de certificação é simples, embora a burocracia envolvida seja
grande. A Autoridade Certificadora, após verificar a autenticidade das
informações fornecidas pelo solicitante do certificado, assina-o (encripta) com a
sua chave privada.
Os navegadores seguros têm as chaves públicas dos certificadores. Ao receber
uma chave certificada de um servidor, o navegador primeiro verifica a
assinatura do certificador, decifrando-a com as chaves públicas dos
certificadores conhecidos.
É fácil perceber que as chaves privadas são informações muito sigilosas.
Especialmente as chaves privadas das Autoridades Certificadoras. Se alguém se
apoderar de uma destas chaves, poderá assinar certificados falsos,
comprometendo todo o sistema de segurança descrito. Por este motivo, as
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 75
chaves dos certificadores são conservadas em computadores especialmente
construídos, que destroem a chave em caso de tentativa de violação.
O Netscape Navigator, MS Internet Explorer, Mozilla Firefox e algumas versões
do Mosaic têm a capacidade de estabelecer sessões sigilosas com servidores
seguros na Internet. Usando cifração (codificação de dados com chaves) a
conversação entre o navegador e o servidor permanece secreta – nenhuma outra
pessoa consegue descodificar o conteúdo dos dados transitando entre os dois
computadores. É esta capacidade que permite a realização de negócios
comerciais, envolvendo informações sigilosas, via Internet.
Para alguns, existe um exagero na questão. Afinal, o cartão de crédito de uma
pessoa passa por diversas mãos sempre que efectua um pagamento numa loja
ou restaurante, não podendo ser considerado um número tão sigiloso assim.
Mas o trânsito destes números pela Internet permite a fraude de cartão de
crédito em grande escala e sem deixar pistas, algo difícil no comércio regular.
Na Internet, o sigilo deste tipo de dados é fundamental.
Os métodos de cifração podem ser divididos em duas categorias: Os simétricos
usam a mesma chave para codificar e decodificar a mensagem. Os assimétricos,
usam duas chaves diferentes. Uma mensagem cifrada com uma chave só pode
ser decifrada com a outra e vice-versa.
O protocolo SSL usa os dois tipos de cifração. O de chave pública é versátil pois
permite a passagem de chaves através da própria Internet. O simétrico, por
outro lado, é centenas de vezes mais rápido e é usado durante toda a
conversação após a passagem da chave secreta. O processo todo é um pouco
complicado, facto apontado como responsável pela lentidão do avanço do
comércio via Internet.
Suponha-se que uma pessoa deseja estabelecer uma sessão sigilosa com um
servidor de endereço wwws.exemplo.com. A sequência de eventos para efectuar
a negociação da chave é:
1) O navegador contacta o servidor wwws.exemplo.com solicitando a chave
pública deste servidor. Esta chave deverá estar previamente “assinada” por uma
autoridade reconhecida pelo navegador. A assinatura consiste na cifração da
chave pública do servidor com a chave privada da autoridade. Como o
navegador conhece a chave pública da autoridade, ele decifra a mensagem com
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 76
a chave pública. Se a decifração der certo, o navegador sabe que a chave pública
recebida pertence efectivamente a wwws.exemplo.com e não a um impostor. É o
que se chama de chave pública certificada.
2) O navegador faz então um desafio ao servidor. Ele fabrica uma mensagem
aleatória, cifra com a chave pública do servidor e envia. O servidor então decifra
a mensagem com a sua chave privada e devolve ao navegador. Se a mensagem
devolvida for igual à original, o navegador pode ter certeza que o servidor
realmente possui a chave privada que alega ter.
3) O navegador agora fabrica uma chave aleatória. Esta chave é chamada de
chave de sessão. A chave de sessão é uma chave de cifração simétrica, o processo
de cifração mais rápido. O browser cifra a chave de sessão com a chave pública
de wwws.exemplo.com e envia para este servidor.
4) O servidor recebe a chave de sessão cifrada e decifra com sua chave privada.
Como a chave de sessão foi cifrada com a chave pública de wwws.exemplo.com,
somente este servidor – e o navegador que fabricou a chave – conhecem a chave
de sessão. Esta chave é então usada para codificar todas as mensagens
subsequentes trocadas entre os dois computadores.
De salientar que as chaves de sessão são longas (128 bits nos EUA e 40 bits no
resto do Mundo). É virtualmente impossível obter estas chaves pelo método das
tentativas. Também não é possível decifrar as mensagens sem a chave de
sessão.
16.6. Características
As principais características do SSL são:
Segurança em conexões cliente/servidor: o SSL garante o sigilo dos dados
trocados entre as partes envolvidas na conexão através do uso de
criptografia simétrica. A fim de evitar que as mensagens, mesmo
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 77
decifradas, sejam modificadas e com isso um ataque de escuta activa seja
possível, o SSL adiciona a todas as mensagens um MAC (Message
Authentication Code). Calculado a partir de funções de hash seguras, o
MAC garante a integridade das mensagens trocadas. Além de sigilo e
integridade, o SSL ainda providencia a autenticação das partes
envolvidas a fim de garantir e verificar a identidade das mesmas. Neste
processo, o SSL utiliza criptografia assimétrica e certificados digitais.
Independência de protocolo: o SSL funciona sobre qualquer protocolo de
transporte confiável. Porém, a maioria das implementações são feitas
para redes TCP/IP.
Interoperabilidade: dado a sua especificação bem detalhada e o uso de
algoritmos criptográficos conhecidos, diferentes implementações do
protocolo têm a garantia de interagir entre si.
Extensibilidade: consoante a necessidade, permitir que novos parâmetros
e métodos de criptografia (assimétrica ou simétrica) sejam incorporados
ao protocolo, sem que seja necessária a criação de um novo protocolo ou
a implementação inteira de uma nova biblioteca.
Eficiência: devido à necessidade de recursos computacionais que este
tipo de operação requer, o protocolo dispõe da opção de
armazenamento em cache de informações referentes a sessão,
diminuindo desta forma o esforço computacional em sucessivas
conexões.
16.7. Camadas do SSL O protocolo SSL é dividido em duas camadas como mostra a figura. A de mais
baixo nível, que interage com o protocolo de transporte, é a camada Record.
Esta camada é responsável por encapsular os dados das camadas superiores em
pacotes compactados e cifrados e repassá-los para a camada de transporte.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 78
Entre as camadas superiores está a outra camada do SSL, a camada de
Handshake. Esta, permite que a aplicação servidora e a aplicação cliente
autentiquem-se e negociem os algoritmos de cifragem e as chaves criptográficas
antes que o protocolo de aplicação receba ou envie o seu primeiro byte.
Figura 3 – Camadas do protocolo SSL A camada Record recebe dados não interpretados de camadas superiores em
forma de bloco de dados cujo tamanho é variado. Estes blocos são encapsulados
em registos e, dependendo do seu tamanho, devem sofrer uma fragmentação.
Os dados contidos neste registo sofrem ainda uma compactação e, em seguida,
são cifrados usando os algoritmos e chaves definidos pelo processo de
Handshake. A figura 3.1.2 ilustra os protocolos internos da camada de
Handshake e os processos executados na camada Record.
Figura 4 – Protocolos Handshake e processos Record
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 79
16.7.1 Processos - Processo de Fragmentação: neste processo, os dados originados das
camadas superiores, Aplicação e Handshake, são fragmentados em blocos de, no
máximo, 214 bytes. Estes blocos são empacotados gerando uma SSLPlainText. O
pacote SSLPlainText além do bloco de dados, contém ainda a informação do
tipo destes dados, ou seja, que entidade os enviou (dados de aplicação ou de
protocolos da camada Handshake).
- Processo de Compactação: neste processo, os fragmentos resultantes do
processo de fragmentação são compactados de acordo com o método de
compactação escolhido. Na versão actual do protocolo, nenhum algoritmo de
compactação é especificado. Porém, todas as implementações devem aceitar um
tipo de compactação, o CompressionMethod.null, a qual não realiza nenhuma
modificação sobre os dados. O resultado deste processo é um pacote
SSLCompressed . O tamanho do bloco de dados contido no SSLCompressed,
após a compactação, não pode exceder 214 + 1024 bytes. Este processo também
é responsável pela operação inversa, ou seja, a descompactação dos pacotes
resultantes do processo de decifragem. O processo de descompactação é
responsável por assegurar que os dados, após descompactados, não causem
nenhum estouro do buffer. É considerado erro sempre que um bloco de dados
apresente tamanho maior a 214 bytes após a sua descompactação.
- Processo de Cifragem: este é o principal processo da camada Record. O
processo de cifragem é responsável por proteger os dados enviados entre as
partes, através do uso de cifras e códigos MAC . Os algoritmos usados neste
processo são resultantes da fase de handshake a qual determina a cipherspec
(parte da ciphersuite que indica o algoritmo simétrico e a função de hash) que
deverá ser usada pela camada Record. A integridade das mensagens
transmitidas numa conexão SSL é obtida com o uso de MACs, que são
calculados a partir de um conjunto de dados usando funções de hash seguras.
Na Record, os MACs têm uma característica a mais, a presença de um segredo o
qual garante que o resultado do hash não poderá ser forjado por outro que não
aquele que conhece o segredo. A forma em que os dados deverão ser cifrados
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 80
dependerá do tipo de algoritmo simétrico escolhido, ou seja, cifra de bloco ou
encadeada. Em ambos os casos, o dado cifrado é o bloco de dados compactado
no processo anterior, acrescentado do MAC. No caso de cifra de bloco, o pacote
a ser enviado para a rede conterá também um padding, quando necessário, a
fim de alcançar o tamanho do bloco. Este padding é acrescentado e retirado
respectivamente nos processos de cifragem e decifragem. O resultado do
processo de cifragem é um pacote SSLCipherText que deverá ser enviado pela
rede para o outro lado da comunicação.
A camada de Handshake é a responsável pelos processos de troca de chaves,
autenticação e estabelecimento de chave de sessão feitas no SSL. Nela,
encontram-se os protocolos Handshake, ChangeCipherSpec (CCS) e Alert. Cada
um destes protocolos desempenha um papel bem definido no SSL, mesmo
havendo uma grande interação entre eles durante os processos descritos acima.
Um conceito importante para o entendimento desta camada é o de sessão no
SSL. Uma sessão SSL é composta por um conjunto de dados que são gerados
após um processo de handshake completo. Uma sessão é dada como sendo
dependente do estado. O protocolo Handshake é o responsável por manter a
consistência dos estados de uma sessão tanto no cliente quanto no servidor.
Uma mesma sessão SSL pode incluir várias conexões, ou seja, a partir dos
mesmos dados que formam uma sessão podem-se abrir múltiplas conexões SSL.
Os dados que formam uma sessão são os seguintes:
• session ID: um valor arbitrário escolhido pelo servidor para identificar
esta sessão;
• peer certificate: usado para certificar uma organização. Está no
formato X.509 e entre outras coisas, encontra-se dentro dele a chave
pública da entidade que está a utilizar aquela aplicação;
• compression method: algoritmo usado na compressão dos dados;
• cipherspec: especifica que conjunto de algoritmos de cifragem e de
hash serão utilizados;
• Mastersecret: um segredo de 48 bytes compartilhado pelo servidor e
pelo cliente;
• IsResumable: flag utilizada para indicar se a sessão pode ou não ser
retomada ao iniciar uma nova conexão.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 81
16.8. Algoritmos Utilizados Existem quatro grupos que podem representar o conjunto de algoritmos
criptográficos utilizados pelo protocolo SSL. São estes:
• Algoritmos simétricos: estes algoritmos são utilizados no sigilo dos
dados transmitidos durante uma sessão SSL. Na actual especificação do
SSL são usados os algoritmos RC4, DES, 3DES, RC2, IDEA e Fortezza
(cartão PCMCIA que verifica tanto a cifragem como a assinatura digital).
• Algoritmos assimétricos e de derivação de chaves: algoritmos
utilizados para a troca de chaves e para o processo de assinatura digital.
Neste grupo estão o RSA, o DSA(somente assinatura) e o Diffie-Hellman
(derivação de chaves).
• Algoritmos de hash: usados para prover a integridade das mensagens
enviadas e no processo de criação dos segredos. São especificados o MD5
e o SHA.
• Algoritmos de compactação: na actual versão do SSL não há nenhuma especificação para funções de compactação.
16.9. Ataques Os protocolos de segurança precisam de oferecer protecção a tipos e métodos de
ataque. Mesmo com os algoritmos criptográficos a fazer a protecção dos dados
de aplicação, o protocolo deve resistir a ataques maliciosos. O SSL oferece
protecção contra as seguintes classes de ataque:
16.9.1. Integridade
Devido à presença de MACs nos pacotes Record, um invasor não consegue
alterar estes pacotes sem que a sua acção seja detectada. Qualquer modificação
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 82
posterior aos pacotes ocasiona a queda automática da conexão. A integridade
dos dados é mantida mesmo nos casos onde a cifragem não é usada.
16.9.2. Autenticidade O sequestro de sessão é um ataque à autenticidade dos dados, pois envolve a
quebra de uma sessão através da personificação das partes. O SSL evita este tipo
de ataque com o processo de autenticação de servidores e clientes.
16.9.3. Personificação Apesar de versões antigas possibilitarem este tipo de ataque, foram feitas
modificações no protocolo de modo a evitá-lo. O SSL usa certificados para a
autenticação de servidores, o que impossibilita a personificação dos mesmos.
Além disso, a última mensagem trocada durante o processo de handshake
(FINISHED) executa uma verificação de todas as mensagens trocadas até o
momento, evitando assim que prováveis modificações ou ataques através do uso
destas mensagens não passem despercebidas. Aqui estão relacionados os
ataques que o SSL não oferece adequada proteção:
16.9.4. Confidencialidade Num estabelecimento de conexão entre duas máquinas, um atacante pode
adquirir informações úteis apenas pelo facto de escutar o meio (sniffer), sem
precisar, efectivamente, de analisar quaisquer dados. O SSL, por transmitir
pacotes cujos cabeçalhos não são cifrados, pode permitir este tipo de ataque.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 83
16.9.5 Disponibilidade Um atacante pode evitar que um serviço seja prestado consumindo os recursos
de um servidor através do estabelecimento de falsas conexões ou com a
deterioração do meio físico (DOS – Denial of Service).
O SSL possui algumas limitações de segurança devido às suas características e
propósitos fundamentais:
1. A protecção aos dados locais não é fornecida pelo protocolo. O SSL somente
garante a segurança dos dados durante a sua transmissão entre dois aplicativos.
2. Não-repudiação: o SSL não possui um mecanismo que evite a não repudiação
de uma transacção. Por esta razão, sistemas que necessitem da habilidade para
auditar ou provar a execução de uma transacção, devem empregar o uso de
assinaturas digitais nos dados de aplicativo.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 84
17. S-HTTP
S-HTTP foi concebido por E. Rescorla e por A. Schiffman do EIT, para permitir
conexões seguras. Através de uma variedade de mecanismos, permite
confidencialidade, autenticação e integridade. O sistema não se encontra ligado
a um sistema criptográfico particular, infraestrutura de chave ou formato
criptográfico.
S-HTTP trabalha sob o HTTP, permitindo que as mensagens sejam
encapsuladas de várias formas. A encapsulação pode incluir encriptação,
assinaturas, ou autenticação baseada no MAC (Message Authentication Code)do
utilizador. Esta encapsulação pode ser recursiva e, a mensagem pode ter várias
transformações de segurança aplicadas em si. O S-HTTP também inclui
definições dos cabeçalhos para fornecer transferência de chaves, de certificados
e de funções administrativas similares.
17.1 Ameaças As ameaças ao S-HTTP são similares ao SSL. Contudo, a sua natureza mais
generalista, tornam-no mais difícil de avaliar exactamente o que é possível fazer.
17.1.1 Protecção possível O modo de operar por defeito do S-HTTP torna-o bastante mais resistente a
ataques do que o SSL. É portanto mais robusto.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 85
O custo da criptoanálise ao texto é mais elevado que no RC4-40 – a cifra usada
por defeito no S-HTTP é a DES, enquanto que no SSL é a RC4-40. dando
valores comparativos, podemos dizer que para quebrar uma chave RC4-40 num
mês, teriamos que gastar $100. Para quebrar uma chave DES no mesmo
período de tempo, teríamos de dispender $10,000, ou seja 100 vezes mais.
17.1.2. Fraquezas O uso de troca de chaves in band é potencialmente problemático, os autores não
dispendem tempo suficiente para se certificarem de que as chaves são
transferidas apropriadamente. Uma transferência imprópria seria algo como
enviar a chave B como Ea(B). É o mesmo que dizer, a chave B que substitui a
chave A, não pode ser enviada usando a chave A para cifrar. Se um atacante
possui a chave A, então terá a chave B, pelo que a troca de chaves se revela uma
perda de tempo. Foi precisamente este erro que os japoneses cometeram
durante a Segunda Guerra Mundial.
O facto de ser tão flexível, pode-se tornar um problema para o programador. É
sabido que não existem muitas opções para o quebrar, mas também não partilha
da facilidade do SSL onde se pode encriptar tudo e não se preocupar. Um
programador, especialmente um não muito familiarizado com questões de
segurança e criptografia, pode pensar que apenas por usar S-HTTP estará
protegido. No entanto, poderá estar susceptível de sofrer ataques que ponham
em perigo a sua segurança.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 86
18. Protocolos e Standards
Neste capítulo vão ser descritos os protocolos de software usados em várias
aplicações. Estes protocolos são construídos em algoritmos criptográficos de
baixo nível.
Criptografia funciona em muitos níveis. Num, temos os algoritmos, tais como as
cifras de bloco e criptosistemas de chave pública. Acima destes, temos os
protocolos e, ainda mais acima encontramos as aplicações ou mesmo outros
protocolos. Não é suficiente estudar apenas a segurança dos algoritmos
subjacentes, isto porque, uma fraqueza num protocolo de nível mais elevado (ou
na aplicação), pode tornar a aplicação insegura mesmo que os algoritmos
subjacentes tenham sido bem codificados. Um exemplo simples, é um protocolo
que deixa escapar a informação sobre a chave usada para encriptar o canal de
comunicação. Independentemente da robustez dos algoritmos inferiores, estes
tornam-se inseguros se os protocolos de nível superior revelarem as chaves de
encriptação.
A análise dos protocolos é geralmente uma tarefa complicada, porque as
aplicações que implementam tais protocolos podem levar a mais problemas.
Portanto, um bom protocolo não é suficiente, é necessário existir também uma
implementação robusta.
De seguida, serão listados alguns dos protocolos e standards mais conhecidos.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 87
18.1. Domain Name Server Security (DNSSEC). Usado para assegurar o DNS. É uma extensão do DNS, que proporciona
autenticidade ponta-a-ponta e integridade, tendo sido concebida para proteger a
Internet de certos ataques.
Existem várias classes distintas de ameaças ao DNS, sendo que a maioria estão
relacionadas com problemas e falhas gerais, mas algumas são específicas ao
protocolo DNS.
18.2. Generic Security Services API (GSSAPI) GSSAPI fornece a autenticação, troca e chave e interface de encriptação para
diferentes algoritmos e sistemas criptográficos.
18.3. Secure Socket Layer (SSL)
SSL é um dos dois protocolos para efectuar conexões WWW (World Wide Web)
seguras, sendo o outro o S-HTTP. A segurança na WWW tem-se tornado cada
vez mais importante devido à quantidade de informação sensível que a
atravessa, tais como números de cartões de crédito, números de contas
bancárias.
O protocolo SSL foi originalmente desenvolvido pela Netscape como um
protocolo standard aberto.
18.4. Secure Hypertext Transfer Protocol (S-HTTP) Protocolo que permite alguma segurança nas transacções efectuadas na WWW.
É mais fléxivel em certos aspectos que o SSL, mas devido ao domínio da
Netscape na área, o SSL encontra-se numa posição mais forte.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 88
18.5. Standards de encriptação de chave pública (PKCS – Public Key Encryption Standards)
Desenvolvidos na RSA Data Security, definem formas seguras de usar a RSA.
São um conjunto de standards com funções de segurança, incluindo métodos
para troca de chaves, cifragem e decifragem de chaves públicas, pedido de
certificados bem como outras.
18.6. IEEE P1363: Especificações do Standard para criptografia de chaves públicas
Novo standard para criptografia de chave pública. Consiste em vários
algoritmos para encriptação de assinaturas digitais. Possui grande e exaustiva
documentação que explica todos os detalhes para a sua implementação.
18.7. Publius Censor-Resistent Publishing Protocol
Sistema avançado que permite a um grupo de autores e leitores de partilhar
documentos através de um servidor de rede de modo que:
• Nenhum autor nem leitor precisa de revelar a sua identidade • A origem dos documentos é certificada de vir de um certo autor
(pseudónimo) • Os documentos não podem ser removidos ou modificados a não ser que a
integridade de um grande número de servidores envolvidos seja compromentida.
18.8. SSH2
Desenvolvido pela IETF, grupo pertencente à SecSH. Este protocolo é bastante
versátil no que diz respeito às exigências da Internet, sendo usado no software
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 89
SSH2. serve para proteger sessões terminais e conexões TCP. Baseia-se no seu
predecessor SSH1, desenvolvido por Tatu Ylönen.
18.9 IPSec Enquanto que os protocolos mencionados acima operam sob a camada de
aplicação da Internet, permitindo que programas comuniquem através de um
canal seguro, numa rede por si insegura, o IPSec tenta tornar a Internet segura
na sua base, o protocolo IP.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 90
19. Conclusão
A Internet evoluiu muito desde a sua origem. No início era apenas uma rede
privada, onde o fantasma da violação de propriedade e informação não passava
disso mesmo. Uma sombra que não se avistava na linha do horizonte ainda. Mas
esses tempos passaram rapidamente e, com a massificação, bem como a
mudança de interesses, que passaram a ser maioritariamente comerciais, algo
teve que ser feito. Pelo que então foi necessário dar maior relevância à
segurança.
A Internet tinha deixado de ser um canal privilegiado e seguro. Passara a ser um
local repleto de oportunistas, sabotadores ou meramente curiosos. A informação
passou a viajar “escondida”, codificada, imperceptível aos olhos alheios.
Codificação de mensagens, foi a resposta dada pelos peritos para a sua
protecção. Mas esta estratégia, não surgiu com o aparecimento da Internet e as
suas necessidades inerentes de segurança.
A codificação é uma arte secular que terá tido o seu marco mais importante nas
duas Grandes Guerras Mundiais. As forças Americanas transmitiam mensagens
com a ajuda da linguagem Mojave, conhecida apenas por alguns índios
americanos que se juntaram às Forças Aliadas. Alemães e Japoneses
desenvolveram algoritmos de encriptação para o mesmo efeito – tornar as
mensagens imperceptíveis a estranhos. Surgiram novos algoritmos, cada vez
mais fortes, de chaves maiores, embora todos possuam falhas, pelo que a
Criptografia continua a ser uma arte em desenvolvimento. Com a computação
em paralelo, a exigência da encriptação aumentou exponencialmente. Cifras
outrora julgadas inquebráveis, ou pelo menos na prática, pois exigiriam dezenas
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 91
de anos de computação para o conseguir, foram quebradas numa fracção desse
tempo, devido ao grande desenvolvimento tecnológico.
Esta é uma “batalha do gato e do rato”. Sempre que surge um método novo de
encriptação, rapidamente a comunidade a tenta quebrar. E é no meio desta
guerra que nos encontramos. Guerra onde não existem propriamente
vencedores e vencidos, mas sim desenvolvimento, aperfeiçoamento de técnicas
e tecnologia.
A questão final que se pôe é então, será a Internet um local seguro?
Apesar da resposta não ser tão simples ou directa, como a que vou apresentar,
na essência poderá ser algo como:
Sim, mas mediante certas medidas e precauções. Não se pode julgar que quando
conversamos com alguém, nos encontramos sozinhos. Há sempre a
possibilidade de alguém estar à escuta. O mesmo acontece na Internet. Por isso
se usam canais seguros, encriptam textos, usam-se entidades certificadoras.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 92
20. Definições e abreviaturas
• Sistema critpográfico assimétrico Algoritmo processado electronicamente ou séries de algoritmos que utilizam chaves diferentes com as seguintes características: • Uma chave encripta a mensagem • Uma chave decifra a mensagem • As chaves possuem uma propriedade que torna “impossível” de descobrir
uma chave meramente por conhecer a outra. • Autenticação
Processo para verificar a identidade de um utilizador. • Autorização
Processo para estabelecer e forçar os direitos e privilégios de um utilizador a recursos específicos.
• Política de certificação
São os documentos formais que descrevem os vários passos envolvidos para criar, manter e validar os certificados. Também especifica as obrigações associadas às funções e que partes do processo podem ser delegadas.
• Autoridade de certificação
Pessoa ou entidade que emite, revoga ou mantém os certificados PKI (infraestrutura de chave pública).
• Dados críticos
Refere-se aos recursos cuja indisponibilidade ou uso impróprio, pode afectar a realização duma missão.
• Encriptação
Método electrónico de processamento de uma mensagem, em que uma mensagem cifrada por um algoritmo, seja impossível de decifrar sem o algoritmo de decifragem correspondente.
• Par chave Chave privada e a correspondente chave pública num criptosistema assimétrico. Este par é único, onde a chave pública pode verificar a
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 93
assinatura digital criada pela chave privada e esta pode decifrar a mensagem ou ficheiro que a chave pública cifrou.
• Open Standard
Standard que apesar de não ser propriedade de nenhum constructor, vendedor, produto ou dono, pode ser usado entre outros componentes de modo a facilitar a interoperabilidade e, que tenha sido aprovado por um comité de standards reconhecido.
• Dono
Grupo ou divisão que controla o conjunto de recursos de informação que determinam o seu nível crítico. Sendo assim, podem determinar o acesso, direitos de autorização e disseminação desses recursos.
• Certificado PGP
Registo electrónico que inclui: • O número da versão do PGP, identifica qual a versão do PGP usada para
criar a chave associada ao certificado. • A chave pública do detentor do certificado – a porção pública do par
chave do subscritor, juntamente com o algoritmo da chave: RSA, Diffie-Hellman, DSA.
• A informação do detentor do certificado – consiste na informação identificativa do utilizador, tal como o seu nome, número de identificação, fotografia.
• A assinatura digital do detentor do certificado, esta é a assinatura usando a chave privada correspondente à chave pública associada ao certificado.
• O período de validade do certificado – data/hora de início e data/hora da validade do certificado.
• O algoritmo simétrico de preferência para a chave – indica o algoritmo usado para cifrar a informação que o detentor do certificado prefere.
• Conformidade com os standards do IETF OpenPGP. • Infraestructura de chave pública (PKI)
Conjunto de certificados, títulos e repositórios.
• Certificado PKI Também conhecido como certificado X.509, consiste de um registo electrónico que: • Identifica a autoridade certificadora. • Identifica o seu subscritor. • Contém a chave pública do subscritor. • Assinada electronicamente pela autoridade certificadora. • Em conformidade com os standards X.509/PKIX. • Pretty Good Privacy (PGP)
Implementação criptográfica assimétrica não baseada no PKI. O PGP reconhece dois formatos diferentes de certificados: • Certificados PGP. • Certificados X.509 (PKI). • Repository Authority (RA)
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 94
Entidade que valida a assinatura electrónica duma entidade de confiança. Geralmente, consiste numa fonte de informação actualizada acerca de certificados, o seu nível de confiança e outras informações relacionadas.
• Informação sensível
Informação confidencial ou crítica na qual a perda, acesso não autorizado ou modificação, pode afectar os interesses de quem a possui.
• S/MIME
Secure Multi-Purpose Internet Mail Extensions, é um protocolo de segurança de aplicação usado principalmente para comunicações de correio electrónico. Usa o sistema de encriptação.
• Standard
Directiva ou especificação cuja conformidade é obrigatória. • Subscritor
Pessoa que: • É o sujeito listado no certificado. • Aceita o seu próprio certificado. • Detém a chave privada correspondente à chave pública listada no certificado.
• Utilizador
Indivíduo ou grupo que tem acesso a um sistema de informação ou aos seus dados.
• X.509/PKIX
Conjunto específico de técnicas standards, definidas pela Internet Engineering Task Force (IETF) através do seu grupo de desenvolvimento de standards PKIX. Baseia-se no standard X.509 adoptado pela International Telecommunication Union.
Criptologia – Segurança na Internet
ISEP – Instituto Superior de Engenharia do Porto 95
21. Bibliografia
http://www.ssh.com/
http://www.cryptography.com/
http://www.rsasecurity.com/
http://www.nist.gov/
http://www.itl.nist.gov/fipspubs/fip180-1.htm
www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
http://www.ietf.org/rfc/rfc2660.txt
http://www.pgpi.org/
http://www.ietf.org/html.charters/smime-charter.html
http://grouper.ieee.org/groups/1363/
http://cs1.cs.nyu.edu/waldman/publius/
M. E. Hellman and R. C. Merkle: Public Key Cryptographic Apparatus
and Method. US Patent 4,218,582, 1980.
B. Chor and R.L. Rivest: A knapsack type public key cryptosystem based
on arithmetic in finite field, Crypto '84.
D. Coppersmith. and A. Shamir: Lattice Attacks on NTRU, Eurocrypt '97