2.a Mecanismos de autenticação
Nos sistemas distribuídos, os parceiros da comunicação (isto é, o usuário origem e o usuá-rio destino de um intercâmbio) estão interconectados através de uma rede aberta na qual vários outros usuários também tem acesso. Assim sendo todo o intercâmbio realizado entre os dois parceiros deverá ser encaminhado através da rede, ficando portanto propício de ser intercepta-do por um outro usuário que poderá modificar ou destruir as mensagens enviadas bem como inserir mensagens falsas nesta comunicação. Particularmente o processo de autenticação de usuários é bastante prejudicado por essas possibilidades de interceptação, decorrentes do fato de que as informações confidenciais que são necessárias para autenticar o cliente (ou o usuário origem) junto ao servidor (ou usuário destino), poderão ser manipuladas por outros usuários ao trafegarem pela rede.
Devido a esses problemas de vulnerabilidade da comunicação possibilitando ameaças à se-gurança do sistema, um sistema de autenticação propício a esse ambiente deverá requerer:
As ameaças de segurança em um ambiente distribuído poderão ser controladas usando criptografia para fornecer uma autenticação forte, mútua e contínua. Independentemente de qual técnica de criptografia se irá utilizar, é necessário que os parceiros da comunicação te-nham conhecimento da chave criptográfica que irá ser utilizada na segurança do seu processo; se a chave de criptografia é compartilhada apenas entre os dois parceiros, denominamos esse processo de protocolo de autenticação two-party.
Na criptografia simétrica, cada dupla de parceiros deverá compartilhar entre si uma única informação confidencial; a cada novo parceiro de comunicação, uma nova informação confi-dencial deverá ser intercambiada entre eles. Dependendo do número de parceiros que estão envolvidos no processo de comunicação, poderá ficar bastante complexo a etapa de autentica-ção devido a quantidade de chaves confidenciais que irão ser necessárias para autenticar cada parceiro isoladamente.
Na criptografia assimétrica, teremos um problema semelhante com o gerenciamento das chaves públicas que, apesar de não ser uma informação confidencial como no caso anterior, continuará existindo uma diversidade de chaves (cada parceiro possui a sua própria chave pú-blica).
Baseado na complexidade do processo de autenticação em sistemas distribuídos, idealizou-se um serviço de autenticação utilizando um servidor dedicado: Servidor de Autenticação (SA). Nesse protocolo o usuário precisará ter conhecimento apenas da chave relacionada com o SA; por sua vez o SA deverá ter conhecimento de todas as chaves dos usuários relacionados com o seu domínio de atuação. Esse tipo de protocolo é denominado protocolo de autentica-ção third-party por existir um terceiro parceiro que será encarregado de, com segurança, ad-ministrar os usuários e suas senhas bem como autenticar usuários autorizados por sessão de comunicação.
É apresentado a seguir o software Kerberos como uma proposta de serviço de autenticação baseado na existência de um Servidor de Autenticação.
Kerberos é um serviço de autenticação distribuída desenvolvido no MIT (Massachusetts Institute of Technology) que permite um parceiro provar sua identidade perante um outro par-ceiro sem enviar dados confidenciais pela rede. Esse processo é realizado como um serviço de autenticação terceiro parceiro confiável utilizando criptografia convencional; opcionalmente ele também fornece integridade e confidencialidade das mensagens intercambiadas.
A origem do nome desse serviço é proveniente da mitologia grega, onde KERBEROS era o nome do cachorro de três cabeças que vigiava os portões de Hades e sua principal missão era evitar a entrada de pessoas ou coisas indesejáveis. Assim sendo foi o nome dado ao serviço de autenticação do projeto Athena por ele estar baseado em três servidores: Servidor de Autenti-cação (SA), Servidor de Concessão de Ticket (TGS) e Servidor de Administração (KADM).
O Kerberos utiliza criptografia para provar a identidade do usuário manipulando dois tipos de chave:
Existem dois tipos de credenciais usadas neste modelo, o ticket e o autenticador:
O protocolo de autenticação básico do Kerberos permite ao usuário com conhecimento da chave secreta do cliente, obter um ticket e uma chave de sessão. Normalmente a chave secreta do cliente deveria estar presente cada vez que o cliente realizasse autenticação com um novo servidor; isso gera problemas pois o cliente precisaria estar constantemente redigitando sua chave secreta. Uma alternativa seria armazenar a chave secreta em uma área da estação mas poderia ser capturada por um intruso. O Kerberos utiliza uma solução melhor que armazena apenas os tickets e chaves de sessão que possuem validade por um período limitado (normalmente 8 horas).
O funcionamento do software Kerberos pode ser dividido em quatro etapas:
fig 3 - Modelo de funcionamento do Kerberos
A criptografia transforma uma informação legível em uma informação inelegível, através de um algoritmo criptográfico e geralmente uma chave.
Os modernos sistemas criptográficos podem ser classificados em duas categorias de acordo com o tipo de chave que utiliza:
Como a criptografia simétrica está baseada no compartilhamento de uma mesma chave en-tre o emissor e o destinatário da mensagem, o principal problema deste método é o gerencia-mento das chaves: a chave secreta tem que ser gerada, transmitida e armazenada de uma ma-neira segura e confidencial para garantir que apenas o usuário origem e o usuário destino te-nham acesso a essa informação; ela deve ser protegida da ação dos intrusos que poderão tentar capturá-la para decifrar as mensagens secretas intercambiadas entre os parceiros de uma co-municação.
A principal vantagem da criptografia assimétrica é não necessitar desse tipo de gerencia-mento de chaves: ela possibilita uma maior segurança por não precisar compartilhar uma mes-ma chave criptográfica. A chave privada deve ser conhecida apenas pelo usuário proprietário e a chave pública correspondente (necessária para fazer o processo criptográfico inverso) poderá ser conhecida por todos. Apesar da criptografia assimétrica ser bem mais segura que a simétri-ca, ela possui uma grande desvantagem: para permitir a propriedade de utilizar duas chaves distintas, a sua execução está baseada em protocolos complexos que exigem mais recursos computacionais. Assim sendo os algoritmos simétricos são bem mais rápidos que os assimétri-cos.
A solução ideal seria combinar as duas técnicas de tal forma que usufruíssemos da vantagem de segurança do algoritmo assimétrico e da vantagem de rapidez de execução do algoritmo simétrico. Um método híbrido bastante utilizado atualmente baseia-se em:
Serão apresentados a seguir dois dos principais algoritmos criptografadores.
O DES - Data Encryption Standard - é um algoritmo de bloco simétrico desenvolvido pela IBM visando atender a uma solicitação do governo dos EUA e em nov/76, foi adotado como padrão federal americano (FIPS46 - Federal Information Processing Standard). Atualmente é o algoritmo mais divulgado e utilizado em sistemas criptográficos no mercado mundial.
A chave criptográfica DES possui apenas 56 bits; assim sendo, a segurança do DES é bas-tante questionada: o algoritmo pode ser quebrado por um ataque de força bruta pois a chave secreta faz parte de um conjunto de 256 chaves (esse procedimento levará 2000 anos de execu-ção para descobrir a chave secreta se considerarmos que uma máquina realizasse uma cripto-grafia DES em 1 microsegundo). Podemos concluir que esse algoritmo poderá não ser apro-priado para confidencialidade de informações de longa duração (por exemplo para informa-ções diplomáticas que devem ser mantidas sobre sigilo por mais de 40 anos) mas pode ser to-talmente adequado para proporcionar segurança para informações confidenciais de curta dura-ção (por exemplo nos dados de uma aplicação de transferência eletrônica de fundos).
Existe uma técnica de melhorar a segurança do algoritmo DES utilizando uma criptografia tripla que é conhecida como DES triplo. Nesta técnica cada mensagem passa por três proces-sos criptográficos que irão reduzir a possibilidade da segurança ser quebrada através de ata-ques de força bruta. Isto equivale a, no mínimo, dobrar o tamanho da chave DES para 112 bits.
O RSA (Rivest, Shamir e Adleman algorithm) é o mais popular algoritmo de chave pública bem como o mais fácil de compreender e de implementar. Este algoritmo foi desenvolvido por um grupo de pesquisadores: Ronald Rivest do MIT, Adi Shamir do Weizmann Institute de Israel e Leonard Adleman da University of Southern California, sendo patenteado pelo MIT em 1978.
A segurança do RSA está baseada na dificuldade de fatorar grandes números: as chaves são calculadas matematicamente combinando dois números primos de grande tamanho. Mesmo se conhecendo o produto desses número primos (que faz parte da chave pública divulgada), a segurança do algoritmo é garantida pela complexidade de fatorar esse produto e se obter os valores secretos.
A grande desvantagem do RSA é portanto a lentidão do processo que envolve exponencia-ção modular (é realizado uma série de multiplicações modulares).
As mensagens intercambiadas entre os parceiros devem ser protegidas contra modificações que possam a vir ocorrer durante a fase da comunicação. Na realidade, não existem maneiras de evitar que a mensagem seja corrompida mas caso isso venha a ocorrer, os parceiros obriga-toriamente devem identificar essa adulteração.
Dentre os mecanismos de integridade, podemos destacar os mecanismos à prova de colisão (collision proof) - que compreendem as funções hash one-way ou message digest: são funções que a partir de uma mensagem de tamanho variável e aplicando certos cálculos matemáticos, é gerado um valor resumo da mensagem (hash ou checksum) de tamanho fixo. As principais características dessas funções é que deve ser computacionalmente impossível descobrir a men-sagem original a partir do seu valor hash e de preferência não deverá existir duas mensagens que gerem o mesmo valor hash.
A assinatura digital é uma aplicação especializada da criptografia utilizada para assegurar a origem da mensagem e a identidade do emissor. Esse esquema está baseado na utilização de algoritmos criptográficos de chave pública: o emissor irá assinar a mensagem usando sua chave privada e o destinatário irá decodificar a assinatura usando a chave pública do emissor. Assim sendo no processo de assinatura digital, a chave privada é usada apenas para assinar uma men-sagem e a chave pública é usada apenas para autenticar assinaturas. Uma assinatura digital segura não pode ser repudiada isto é, um assinante de um documento não poderá rejeitar pos-teriormente que sua assinatura foi forjada.
A seguir será comentado um dos algoritmos message digest mais utilizados: o MD5.
O algoritmo MD5 é utilizado como mecanismo de integridade em vários protocolos de pa-drão Internet (RFC1352, RFC1446, etc.) bem como pelo CERT e CIAC.