Mais um blog inútil.

Drama

Agosto 4, 2009

Arvorezinha - LISP take 2

Arquivado em: arvorezinha, coding, drama, fail, useless — falso @ 22:23

Oi!

Segundo a LISP Police, vim a saber que a primeira arvorezinha em LISP do _Lone_Wolf_ não cumpria os standards definidos pelo rfc da arvorezinha, e ele para não sofrer as consequências redimiu-se com uma versão totalmente standard. Aqui vai ela:

  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8
Welcome to GNU CLISP 2.47 (2008-10-23) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2008
Type :h and hit Enter for context help.
[1]> (loop
    (loop for i from 1 to 4 do
        (loop for j from 1 to i do
            (write-char #\*)
        )
        (terpri)
    )
    (return '*****)
)
*
**
***
****
*****

Blogosphere

Arquivado em: drama, fail, serious-business — devnull @ 09:54

Blogosphere is just multiplayer copy & paste.

Julho 31, 2009

Software livre? What's that?????

Arquivado em: drama, serious-business — gatuno @ 01:20

Ao que parece o nosso primeiro ministro nem sabe do que se trata quando se faz uma pergunta coerente. “Bem” fez ele.. deu a volta à pergunta para puxar a brasa à sua sardinha… 1 milhão de computadores… bla bla bla bla bla….. e não fomos nós, nós só demos o primeiro passo… mas graças a nós, todos têm aquilo que é preciso… bla bla bla bla bla… eu, eu, eu, eu… arrrrrrrrrrrgh!
Take a look:

Acho que este post foge um pouco ao “blog inútil”…(ou não.. com uma conversa daquelas….) lulz…

Junho 25, 2009

R.I.P Michael Jackson

Arquivado em: drama, useless — madinfo @ 23:09

Pois é… segundos após a morte apareceram nas internets quase mil gif’s a lolar com o SR… tá mal e achei que devia blolar sobre isto.

Junho 9, 2009

Curvas Elípticas

Arquivado em: drama, serious-business, useless — dcoder @ 23:41

Nos últimos anos, uma grande parte da investigação feita em criptografia de chave pública tem-se desviado dos grupos definidos sobre os números inteiros mod m, i.e.

$$\mathbb{Z}/m\mathbb{Z}$$

, para os grupos definidos por curvas elípticas sobre um corpo finito K, este geralmente

$$\mathbb{F}_p$$

ou

$$\mathbb{F}_{2^m}$$

— E/K. Não só a investigação, mas também a própria indústria tem-se virado para as curvas elípticas em detrimento dos algoritmos mais clássicos - o NIST definiu em 1999 uma série de curvas e corpos standard e em 2006 anunciou a Suite B, um conjunto de algoritmos aprovados para proteger dados até ao nível ‘Top Secret’.

A que é que se deve esta mudança?

Tem a ver com a estrutura, ou falta dela, existente nas curvas elípticas. No caso do Diffie-Hellman ou RSA clássico, estamos a trabalhar nos números inteiros mod N, e o problema fundamental a resolver é a factorização de um produto de dois primos ou o logaritmo discreto. Ambos estes problemas podem ser resolvidos com essencialmente o mesmo algoritmo — NFS. A complexidade deste é:

$$O(e^{\frac{64}{9}^{1/3} (\log n)^{1/3} (\log \log n)^{2/3}})$$

A razão pela qual este algoritmo funciona em tempo sub-exponencial relativamente a n está relacionada com a estrutura de

$$\mathbb{Z}$$

— todos os inteiros podem ser representados como um produto de factores primos. Associando esta propriedade às propriedades dos logaritmos e exponenciações e à distribuição dos números primos, conseguimos resolver logaritmos discretos em menos tempo do que os métodos genéricos, como o Pollard’s Rho. Nos grupos das curvas elípticas sobre um corpo, para parâmetros razoavelmente bem escolhidos, não são conhecidos algoritmos sub-exponenciais ou polinomiais para resolver o problema onde reside a segurança do algoritmo.

Antes de mais, vamos definir uma curva elíptica. Na prática, uma curva elíptica é definida pela equação de Weierstrass num corpo finito arbitrário:

$$y^2 + a_1 xy + a_3 y = x^3 + a_2 x^2 + a_4 x + a_6$$

Os coeficientes

$$a_1 \ldots a_6$$

definem, portanto, a curva. Tipicamente, quando a curva é definida sobre o corpo finito dos inteiros mod p, p primo, apenas

$$a_4$$

e

$$a_6$$

são diferentes de 0 (uma excepção sendo a Curve25519 do djb).

Naturalmente, os elementos deste grupo serão as soluções da equação acima — dado que existem duas soluções para cada x, os elementos são definidos como pontos P = (x, y) na curva. Ainda nos falta, no entanto, a operação de grupo - a adição. Esta é ligeiramente diferente para o caso em que P != Q e P = Q, quando queremos obter P+Q = (x3, y3), P=(x1, y1), Q=(x2, y2):

Adição

$$x3 = \frac{y2-y1}{x2-x1}^2 - x1 - x2 \\ y3 = \frac{y2-y1}{x2-x1}(x1-x3)-y1$$

Duplicação

$$x3 = \frac{3x1 + a_4}{2y1}^2 - 2x1 \\ y3 = \frac{3x1 + a_4}{2y1}(x1-x3)-y1$$

Existe ainda um ponto especial,

$$\infty$$

, que representa a identidade relativamente à adição, i.e.

$$P+\infty = \infty+P = P$$

.

Tendo o grupo definido, surge a operação relevante para fins criptográficos: a multiplicação. Esta é definida como:

$$nP = P+P+\ldots +P$$

i.e. n vezes o ponto P.

Outro conceito importante é a ordem de uma curva — o número total de pontos que nela existem — #E. Este valor deve ser sempre ou primo ou bastante próximo de um primo, de forma a evitar ataques conhecidos.

Uma propriedade importante da multiplicação em curvas elípticas é que é bastante fácil calcular

$$n P$$

, mas dado

$$P$$

e

$$n P$$

é extremamente difícil obter

$$n$$

. Este é o designado problema do logaritmo discreto em curvas elípticas. O melhor algoritmo conhecido para calcular este logaritmo é o Pollard’s Rho, que tem uma complexidade de

$$O({\#E}^{1/2})$$

A diferença entre o logaritmo discreto nas curvas elípticas e nos inteiros mod n é esta - não existe conceito de divisibilidade entre pontos, i.e. não existem pontos ‘primos’ nos quais seja possível decompor um ponto arbitrário. Esta (falta de) estrutura provê uma grande vantagem a nivel de segurança relativamente aos grupos mais clássicos.

Para fazer uma comparação directa entre os tamanhos dos corpos finitos necessários para uma segurança de 80 bits, podemos aplicar directamente as complexidades acima. Com curvas elípticas, precisamos de um corpo finito de tamanho

$${2^{80}}^2 = 2^{160}$$

, i.e. 160 bits. Com e.g. Diffie-Hellman, precisamos de pelo menos 896 bits de chave —

$$e^{\frac{64}{9}^{1/3} (\log 2^{896})^{1/3} (\log \log 2^{896})^{2/3}} \approx 2^{81.85}$$

. Note-se que isto são apenas complexidades assimptóticas; o custo real é muito diferente e geralmente muito, muito maior que o apresentado nestas fórmulas simplificadas.

Portanto, podemos ver como as curvas elípticas podem ser apelativas para quem implementa sistemas criptográficos — maior segurança por tamanho de chave, maior rapidez (derivado das chaves menores), menor estrutura dentro do grupo, minimizando as vias de ataque. Até agora parece ser em quase todos os sentidos uma opção superior ao RSA, ElGamal, DH tradicionais.

PS. Este post foi essencialmente elaborado para testar o

$$\LaTeX$$

no blol.

Junho 4, 2009

Samba e files por default.

Arquivado em: drama, fail, linux, lulz, useless, work — devnull @ 20:58

Que raio.

Quero fazer uma coisinha simples, uma directoria partilhada para toda a gente com acesso a leitura/escrita e deparo-me com uma complicação extrema de um ficheiro de configuraçao de samba por default em Debian completamente ilegivel, confuso e com um monte de “features” e comentários inúteis em que só me apetece pegar fogo ao ficheiro. Para não falar dos exemplos que não funcionam se nao Desactivarmos/Activarmos/Re-activarmos algumas opções que estão 34843 linhas acima.

Aqui está a receita para o que eu quero:

pidgeon:~# cat /etc/samba/smb.conf
[global]
workgroup = devnull
server string = Public Share 
netbios name = pidgeon
security = share
smb passwd file = /etc/samba/smbpasswd

[public]
guest ok = yes
guest only = yes
#guest account = ftp
path = /opt/shares/public/
writeable = yes 

Simples, hein?
Fantasticamente isto não vem no ficheiro de default do debian como um dos exemplos…

pidgeon:~# wc -l /etc/samba/smb.conf
13 /etc/samba/smb.conf
pidgeon:~# wc -l /etc/samba/smb.conf.old 
337 /etc/samba/smb.conf.old

337 linhas de lixo. Obrigado!

Junho 2, 2009

AES-256 debilitado

Arquivado em: cracking, drama, serious-business — dcoder @ 16:29

Surgiu um artigo recentemente, apresentado na Eurocrypt 2009, que afirmava que o AES-256 não é uma cifra ideal. O que é que isto significa? Significa que a cifra não é uma permutação aleatória de bits, i.e. que é possível, com um esforço menor do que testar todas as chaves possíveis, distinguir a saída de uma stream cifrada por AES de uma sequência aleatória de bytes.

Isto tem várias consequências importantes. Por exemplo, ao criar uma função de hashing recorrendo ao modo Davies-Meyer e à cifra AES-256, é possível encontrar colisões em menos de 2^(n/2) compressões — este facto é importante visto que este modo é usado em todas as hashes mais difundidas (e.g. MD5, SHA1, SHA2) e pode ser provado que é seguro, desde que a cifra seja segura. O artigo mostra que é possível encontrar q pseudo-colisões desta forma em q.2^67 operações. Utilizar AES-256 em modo Davies-Meyer estará, portanto, fora de questão.

Existem outras implicações desta distinção: dadas chaves relacionadas suficientes (2^35), conseguimos recuperar completamente uma delas em tempo 2^120. Este resultado é pouco útil na prática, mas mais uma vez debilita a cifra dado que não mantém a sua alegada segurança de 2^256.

O artigo em questão pode agora ser encontrado aqui.

Maio 31, 2009

Failures em certificados de 16k

Arquivado em: drama, fail — falso @ 22:44

Ora viva!!!

Há dias o senhor mirage fez um req para meter a administração do blol por ssl. Então segui a bela da FAQ do OpenBSD (Setting up a Secure HTTP server with SSL) e criei um certificado como explicam lá pus o login por https.

Mas no dia seguinte o dongs disse que com 1024 não se sentia seguro, e eu também achei que ele tinha razão, então picado por ele decidi criar um certificado de 16384 bits, porque I CAN REALLY NOTICE THE DIFFERENCE!

Depois de umas três horas a gerar, la pus a bombar e fui testar.

Então com a minha surpresa, o magnifico Firefox, a jóia da coroa do Open Sores, passa-se a processar o certificado. Clicko no link para fazer login, ele fica 20 segundos a pensar e depois mostra-nos esta mensagem bonita.

firefox

A seguir o Internet Explorer, tenho a versão 8 beta 2, fica também por volta de 20 segundos a pensar, mas depois lá nos mostra a página. E quase que aposto que o IE6 também funciona.

O Chrome também leva 20 segundos a pensar e depois abre.

Ate o clássico lynx abre bem :-P

O problema do Firefox em Windows IMEO é que não usa a *carteira* de certificados do Windows e implementa ele uma, e o fail surge daí.

Achei necessário vir blogar sobre isto, porque muitos dos blogers aqui usam o Firefox o que me faz baixar o tamanho do certificado. Talvez para 4096 bits ;-)

Maio 26, 2009

Leitor de SMS - Modem Huawei E220

Arquivado em: coding, drama, openbsd, osx, serious-business — falso @ 23:46

Ora viva!

No natal passado a minha fc ofereceu-me um “Vodafone Vita Net”. Que inclui este modem USB. A malandrice é que em OSX (onde costumo usar) e OpenBSD não há maneira de ler as sms que nos são enviadas pela Vodafone a dizer ate quando dura o serviço, quantos megabytes temos, etc. Já andava com esta fisgada há muito tempo então decidi fazer um programinha que se ligasse ao modem por serie, mandasse os comandos AT que listam as sms, e mostrasse duma forma pipi.

Decidi usar perl, porque já vem por default no OSX e no OpenBSD. Tive foi de usar um modulo extra do perl que não vem na base, o Device::Modem para conseguir comunicar com o modem.

Para instalar este modulo em OpenBSD basta instalar o comms/p5-Device-Modem. E no OSX o mais facil é chamar a shell do CPAN “perl -MCPAN -e shell” e depois lá “install Device::Modem” e responder que sim ao que ele pergunta.

Também uso o comando “stty”, mas existe em OpenBSD como em OSX portanto não há dramas. Uso-o para apanhar o numero de colunas do terminal, para o output se adaptar à largura.

No inicio do ficheiro estão duas variáveis que devem ser preenchidas correctamente, o $pin e o $device. Ah… e tem que ser corrido como root, ou então dar permissão ao device de alguma forma, eu não sei como.

Futuramente, talvez adicione opções para eliminar sms e também para enviar.

Sem mais demoras, aqui está o sms.pl - Licença BSD.

Aqui vão os screenshots obrigatórios.

osxopenbsd

Maio 8, 2009

Sexylosers is back!

Arquivado em: drama — dcoder @ 18:30

Amigos, fiquei imensamente entristecido pelo recente desaparecimento do sexylosers.com, um dos comics mais fixes de toda a Interweb.

Mas nada temam, pois o SL está de volta com 5 novos strips, segundo o Clay. 2 deles já estão no site:

http://sexylosers.com/251.html

http://sexylosers.com/252.html

Não temos senão razão para festejar este maravilhoso retorno do comic pródigo, já com 10 anos de existência!