O problema é autenticar o servidor, não o usuário

Semana passada me falaram de um novo tipo de fraude que está sendo feita em São Paulo: o golpe da falsa multa. Um sujeito se posta em cruzamentos e outros locais públicos e tira fotos da placa dos carros, cometendo ou não infrações. Depois o fraudador obtém os dados do veículo, provavelmente com ajuda de gente interna ao Detran, e envia uma "multa" ao proprietário, com a foto real mas com  os dados de pagamento (código de barras, etc.) de uma conta laranja. Ao liquidar o débito no banco ou via Internet a vítima estará na verdade transferindo dinheiro para o fraudador.

Essa fraude é similar a diversas outras fraudes que acontecem na Internet, no sentido que ela somente é possível quando o destinatário não consegue autenticar o emissor da comunicação. Da mesma forma que não é trivial saber se o boleto de cobrança veio ou não do Detran, também não é trivial saber se o email solicitando atualização de cadastro veio ou não da Receita Federal, ou se o pop-up veio ou não do site do banco.

Para combater este tipo de fraude, pelo menos no mundo online, é preciso ter mecanismos que permitam validar a origem dos sites web e dos e-mails apresentados ao usuário. Enquanto muita gente se concentra em combater fraudes usando novas formas de autenticar o usuário, como tokens e biometria, em minha opinião tão ou mais fundamental para eliminar fraudes é conseguirmos autenticar o servidor. E é disso que vamos tratar neste post.

Duas abordagens são usadas pelos produtos da Microsoft para validar sites web e e-mails: filtros heurísticos para eliminar as comunicações falsas, e certificação digital para autenticar comunicações verdadeiras.

Filtros Heurísticos

Como podemos autenticar uma obra de arte? Se o suposto autor estiver vivo, bem basta então perguntar para ele. Mas e se não estiver? Neste caso os peritos trabalham com a análise de diversas características da obra que podem indicar uma fraude, como composição química das tintas utilizadas, análise da técnica de pintura via raios-X, comparação com outros trabalhos do período e verificação da procedência da obra. Nem sempre funciona, mas pode-se assim autenticar o trabalho com um bom grau de confiança.

O Internet Explorer e o Outlook usam o mesmo princípio para identificar e bloquear respectivamente sites e emails falsos usados para fraude. Uma análise é feita nos sites web e e-mails procurando características que indiquem fraude, através de filtros heurísticos:

  • Internet Explorer Phishing Filter analisa características dos sites web navegados e informa ao usuário sites que provavelmente são falsos. Estes sites suspeitos são identificados com uma barra de endereços em amarelo e uma mensagem, que devem ser suficientes para alertar o usuário que algo não está bem.
    IE Phishing Filter acusando um site suspeito
  • O Outlook Junk E-mail Filter faz a classificação de mensagens recebidas com base nas suas características (texto, endereço de origem e destino, assunto, etc.), e coloca mensagens suspeitas em uma pasta de junk e-mail. Como já vimos anteriormente, os links são desabilitados nesta pasta para que o usuário não clique de forma inadvertida e seja vítima de fraude.

Nenhum destes dois métodos garante 100% de proteção, mas a medida em que os algoritmos forem sendo melhorados eles devem fornecer proteção apropriada contra a maioria das fraudes.

Certificação Digital

Voltando a nossa analogia com o mundo das artes, o certificado digital seria o equivalente a um documento assinado pelo autor indicando que a obra é verdadeira. Sites web e emails podem ser autenticados digitalmente, usando respectivamente SSL e S/MIME, e neste caso um terceiro confiável garante que o site ou a mensagem são legítimos.

Se SSL e S/MIME dão este grau de certeza e são tecnologias relativamente antigas e disseminadas, porque então não são tão utilizadas? Bem, essa é uma outra longa discussão, mas parte do problema estava na usabilidade por parte do usuário. Nos navegadores Internet por exemplo, o uso de SSL era indicado somente por um minúsculo cadeado fechado escondido na interface; e se o certificado não correspondesse ao site ou até mesmo se não fosse emitido um terceiro confiável a única indicação ao usuário era uma mensagem de alerta que era solenemente ignorada pelo usuário.

No Internet Explorer 7 o comportamento muda radicalmente. Para começar, nos casos onde o certificado não bate com a URL do site, ou o certificado não foi emitido por uma entidade confiável, ou certficado está revogado ou expirou, o acesso ao site será bloqueado. O usuário terá que clicar em uma página para desbloquear o site, e ainda assim a barra de endereços ficará em vermelho com um alerta ao lado indicado certificado inválido.

O ícone do cadeado indicando o uso de SSL também mudou de lugar e agora fica ao lado da barra de endereços, um lugar muito mais nobre na interface. E ao lado do cadeado é mostrado alternadamente o nome do site e da autoridade certificadora.

Barra verde indicando certificado válido

(Essa interface foi acertada de comum acordo pelos desenvolvedores do IE, Opera, Konqueror e Firefox. Quem disse que não se concorrentes não podem colaborar? Aqui um relato dessa reunião promovida pelo time do KDE).

Por fim, a partir do Windows Vista o Internet Explorer vai passar a checar por default a revogação dos certificados. Pouca gente sabe, mas as versões anteriores do Internet Explorer não checam se o certificado do site web foi revogado ou não. Isso porque a checagem através de Listas de Certificados Revogados não escalava bem, e poderíamos parar a Internet ou pelo menos tirar do ar as autoridades certificadoras mais populares. Como o Windows Vista suporta OCSP a verificação fica mais leve e é possível deixar ligado para todos os sites.

Eu certamente espero que com essas mudanças cada vez mais sites utilizem SSL para provar sua validade para os usuários, e usuários se eduquem a somente confiar em sites certificados para operações críticas. Ainda assim SSL não é uma panacéia, e os custos associados aos certificados e carga de processamento acrescentada em cima do servidor ainda vão continuar a ser uma barreira na popularização dessa tecnologia.

E quanto a email? Aqui a situação é um pouco pior. Apesar da maior parte dos clientes de e-mail suportar S/MIME, como o Outlook e o Outlook Express, pouquíssimos sistemas de web mail suportam o padrão (para dizer a verdade, ao que eu saiba somente a interface web do Exchange 2003 tem esse suporte). Isso é realmente lamentável, e espero que o Hotmail possa um dia ao menos validar as mensagens recebidas.

(A dificuldade técnica é que o cliente é que tem que fazer as operações criptográficas de assinatura e validação, e no caso dos web mail não existe uma interface HTML ou Javascript para o servidor repassar esta tarefa para o cliente. O Exchange 2003 resolve isso instalando um componente no Internet Explorer, mas não vejo uma forma fácil de fazer isso em um serviço de massa como o Hotmail.)

Em Resumo...

Com os novos produtos vamos ter validação heurística da procedência dos sites e emails recebidos pelo usuário, e um melhor suporte para uso de certificação digital para garantia da autenticidade de sites web. É o suficiente? É difícil dizer, mas dá para afirmar que pelo menos é um excelente começo. Eu pessoalmente aposto muito nos filtros heurísticos, já que a precisão deles vem sendo notavelmente melhorada ao passar do tempo.

Já falamos nesse blog em tecnologias para garantir a integridade do sistema operacional do cliente, e agora em formas de autenticar o servidor. Em um próximo post vou discutir a autenticação do usuário: por que este problema é mais dificil do que se pensa, e o que a Microsoft está propondo nessa área. Ah, e uma parte especial sobre por que biometria não funciona.