- Wagner Elias – Think Security First - http://wagnerelias.com -

Uma alternativa ao SSL

Posted By Elias Wagner On 28 28America/Denver August, 2009 @ 10:21 am In Security Developer | 9 Comments

Muitas vezes necessitamos criptografar o tráfego de dados sensíveis em aplicação, a melhor opção para estes casos é usar SSL. Obviamente que o SSL deve ser bem implementado, pois muitas vezes ele é mal implementado e possibilita que algumas vulnerabilidades sejam exploradas. [1]

Infelizmente implementar SSL em todos os ambientes nem sempre é responsabilidade do desenvolvedor, geralmente ele depende de uma área responsável por infraestrutura. Quando não existe um bom relacionamento entre as áreas e/ou um estudo de requisitos antes de colocar uma aplicação em produção, a aplicação acaba indo para produção sem o SSL e consequentemente exposta as vulnerabilidades pertinentes a data tampering [2].

Uma alternativa para desenvolvedores é um plugin chamado JCryption [3] para o framework javascript JQuery [4]. O plugin possibilita que seja criptografado as requisições POST e GET. Ele não substitui o SSL, mas pode "quebrar o galho" em algumas requisições.

A implementação é simples, basta seguir os exemplos da página do plugin [5].


9 Comments (Open | Close)

9 Comments To "Uma alternativa ao SSL"

#1 Comment By Chris Benseler On 28 28America/Denver August, 2009 @ 12:11 pm

Wagner, eu colocaria um * bem grande nesse “alternativa”… não dá pra comparar uma criptografia SSL com javascript, nem de longe! hehe

[6] [6]

#2 Comment By Elias Wagner On 28 28America/Denver August, 2009 @ 1:28 pm

Chris,

sem dúvida! Eu acho que deixei bem claro no texto.

“Ele não substitui o SSL, mas pode “quebrar o galho” em algumas requisições.”

hehehe

[6] [6]

#3 Comment By Lucas On 29 29America/Denver August, 2009 @ 9:22 pm

Esse plugin usa uma implementação meio “simplória” do RSA. Eu tenho bastante receio desse tipo de implementação e dos ataques possíveis.

Eu não trocaria um padrão conhecido e seguro como o SSL por uma implementação de RSA “puro” como a desse plugin.

[6] [6]

#4 Comment By Elias Wagner On 30 30America/Denver August, 2009 @ 9:40 pm

Fala Lucas!

Se você tem condição de implementar o SSL, sem dúvida é a melhor opção. Como eu deixei bem claro no texto, é um quebra galho. Em situações onde você mantém um “clear text” porque não tem como implementar um SSL, é uma alternativa.

Abs.

[6] [6]

#5 Comment By Fernando Cima On 31 31America/Denver August, 2009 @ 10:42 pm

Da página do projeto:

“jCryption at it’s [sic] current state is no replacement for SSL, because there is no authentication”

Wagner, eu sinceramente não sei em que situação você usaria isto. Como não existe autenticação você está exposto a ataques MITM, e gerar um par de chaves RSA a cada requisição vai afundar o processamento do seu servidor (e ainda abrir um potencial canal para um DoS). Fuja!

[6] [6]

#6 Comment By Elias Wagner On 1 01America/Denver September, 2009 @ 7:39 am

Oi Cima,

acho que deixei bem claro a frase que você citou: Ele não substitui o SSL, mas pode “quebrar o galho” em algumas requisições.

Uma situação onde você pode usar é: uma requisição onde você envia usuário e senha. Isto não irá afundar o processamento.

Vou escrever mais uma vez, se você não tem como implementar o SSL, você pode usar isto em requisições específicas. Jamais isto irá substituir o SSL, isto está bem claro na página do projeto e no post.

Já inicio o post com a seguinte frase: Muitas vezes necessitamos criptografar o tráfego de dados sensíveis em aplicação, a melhor opção para estes casos é usar SSL.

Abs.

[6] [6]

#7 Comment By Fernando Cima On 1 01America/Denver September, 2009 @ 10:06 am

Wagner, o meu ponto é diferente. Isto não é alternativa para SSL. Encriptação de canal sem autenticação do destinatário não serve nem para quebrar galho.

Os ataques MITM são os piores, mas o DoS também é trivial aqui. Vamos pegar o seu exemplo do envio de usuário e senha, onde a criptografia é feito a partir de uma página não autenticada. Um atacante pode rapidamente criar código Javascript no cliente para pedir que o seu servidor gere centenas de milhares de pares de chaves RSA, sem o menor custo de CPU para o atacante.

[6] [6]

#8 Comment By Elias Wagner On 1 01America/Denver September, 2009 @ 11:12 am

Oi Cima,

sua observação é valida, realmente estas vulnerabilidades existem. Mas eu mesmo assim ainda acredito que possa ser usado como quebra-galho, pois mesmo sem ter autenticação, podemos usar um token de sessão e mitigar significativamente o risco.

E vale ressaltar que um token de sessão é recomendado, necessário mesmo sem a utilização deste plugin.

Abs.

[6] [6]

#9 Pingback By Tobias (tobiassf) ’s status on Saturday, 29-Aug-09 23:59:12 UTC – Identi.ca On 29 29America/Denver August, 2009 @ 8:59 pm

[...] ao SSL em jQuery [7] a few seconds ago from [...]

[6] [6]

Article printed from Wagner Elias – Think Security First: http://wagnerelias.com

URL to article: http://wagnerelias.com/2009/08/28/uma-alternativa-ao-ssl/

URLs in this post:

[1] mal implementado e possibilita que algumas vulnerabilidades sejam exploradas.: http://www.webreference.com/internet/ssl2/

[2] data tampering: http://msdn.microsoft.com/en-us/library/aa291875%28VS.71%29.aspx#vxcondesigningforsecurabilityanchortamperingwithdata

[3] JCryption: http://www.jcryption.org/

[4] JQuery: http://jquery.com/

[5] exemplos da página do plugin: http://www.jcryption.org/demo/

[6] : #

[7] : http://wagnerelias.com/2009/08/28/uma-alternativa-ao-ssl/

Copyright © 2007 Wagner Elias - Think Security First | BCP, BIA, DRP, Security Assessment, Risk Assessment, Security Developer. All rights reserved.