Mais um blog inútil.

Maio 10, 2009

kryptwit 0.1

Filed under: Coding,Fail,Useless — dongs @ 6:41

Bom dia. Tenho, com alguma tristeza, assistido ao flagelo que o Twitter se tornou nos últimos tempos. Esta actividade inútil, 'twitar', fomentou a minha última criação: o kryptwit. A prova viva que inutilidade gera inutilidade.

Esta biblioteca tem como função cifrar updates do twitter, por forma a poderem apenas ser lidos pelos possuidores de uma password adequada. O RFC que proponho é o seguinte:

Mensagens de entrada - Não podem ultrapassar os 100 bytes (isto inclui caracteres unicode que podem ocupar mais de 1 byte) de tamanho.

Mensagem de saída - Tem exactamente 139 caracteres ASCII de tamanho. Tem como prefixo ";-) ". Os seguintes 10 caracteres (em Base 85) correspondem ao IV utilizado. Os restantes caracteres, também em Base85, correspodem à mensagem propriamente dita.

Algoritmo para cifração - AES no modo CTR (RFC3686), chave de 256 bits.

Derivação de chave - Password de tamanho arbitrário (até 2^32 bytes), 'salt' consiste no nome do utilizador que envia a mensagem. O algoritmo utilizado é o PBKDF2, 1000 iterações, SHA-256.

O IV tem apenas 64 bits. Esta escolha foi feita para contrabalançar a probabilidade de colisões (2^(n/2)) com o tamanho roubado à mensagem. 64 bits dá-nos um bom balanço entre 10 chars e 2^32 mensagens por colisão, em média.

A implementação foi feita em C, recorrendo às implementações excelentes do Brian Gladman do AES, SHA-2 e companhia. O resultado é algo pouco retocado, mas parece funcionar.

Download.

A aplicação de exemplo, sample.c, pode ser utilizada para cifrar e/ou decifrar mensagens. A utilização é simples:

sample e/d username password mensagem

Apresento agora um exemplo de funcionamento:

C:\kryptwit>sample.exe e dongs morte "ola sirs"
;-) lyqf(mXkLw&xU[53F8fP#Owitr}o6VVMAsf[C,h$POG=(M{u9sDT9t68Tfgj{RM}k6sGG.[n#V4i(jbdmp-FLxr#ENS`+Djv
(zV+t*imiCz=Aj]H39iRKcImO&DcSsmqZu-.f#F

C:\kryptwit>sample.exe d dongs morte ";-) lyqf(mXkLw&xU[53F8fP#Owitr}o6VVMAsf[C,h$POG=(M{
u9sDT9t68Tfgj{RM}k6sGG.[n#V4i(jbdmp-FLxr#ENS`+Djv(zV+t*imiCz=Aj]H39iRKcImO&DcSsmqZu-.f#F"
ola sirs

Divirtam-se!

EDIT: Disponibilizei uma nova versão (no mesmo link), com 1 bugfix menor e um Makefile e binario para Unix (amd64).

5 comentários a “kryptwit 0.1”

  1. falso diz:

    ui que tesão!!!!
    amanha (alias hoje), vou ver se consigo implementar isto em algum cliente basico !!! so pelo lulz, e com autodetect do ;-) no inicio

  2. falso diz:

    Já está a nova trend iniciada! quem não kryptwita não mama! e daqui a dias não se pode fazer ;-) no twitter!!!

  3. mirage diz:

    tesoa, mas tenho uma reputaçao a manter (LOL), nao vou twitar mt com isto!

  4. Mário Gamito diz:

    se eu fosse vivo, usava isso

  5. kuvalski diz:

    /comments

Comentar

widgeon
widgeon
widgeon
widgeon