Mais um blog inútil.

Serious-Business

Agosto 22, 2010

McEliece e a QFT

Arquivado em: fail, serious-business — dcoder @ 04:17

Nos últimos dias, tem andado uma notícia a passar pelos sites de notícias “científicas” que me chamou a atenção. Pela negativa. Pois parece que uns gajos quaisquer descobriram que o algoritmo proposto pelo McEliece em 1978 é resistente a “todos os ataques quânticos”. Que valente merda de “jornalismo”.

Quem se tivesse dado ao trabalho de ler o artigo tinha reparado que só foram considerados ataques baseados na QFT (Quantum Fourier Transform). A QFT é extremamente útil na análise de sistemas criptográficos, dado que permite detectar períodos de uma função consideravelmente mais rápido que um computador clássico. Isto é posto em uso no algoritmo de Shor e extensões do mesmo para quebrar sistemas baseados em factorização de inteiros (RSA), logaritmo discreto (DH, DSA), logaritmo discreto em curvas elípticas (ECDH, ECDSA), etc.

No caso do algoritmo de McEliece (mal escrito num dos artigos — será assim tão difícil?), o problema a resolver é consideravelmente diferente — trata-se de descodificar um código de Goppa aleatório. No caso genérico, este problema está na classe NP-hard, e não vai ter nenhuma aceleração exponencial no futuro. Como tal, o resultado obtido não é nenhuma surpresa, e nem sequer justifica chegar às notícias.

Finalmente, o argumento que o McEliece resiste a todos os ataques quânticos conhecidos simplesmente não é verdade. É sabido que o algoritmo de Grover acelera o processo de pesquisa quadraticamente; isto é usado eficientemente para acelerar o algoritmo clássico que quebra o McEliece, de forma a que sejam necessárias chaves 4 vezes maiores.

Agosto 13, 2010

Desenvolvimentos no SHA-3

Arquivado em: serious-business, useless — dcoder @ 00:06

Ora viva,

Como os leitores deste blog devem certamente lembrar-se, decorre neste momento uma competição para seleccionar uma função de hashing adequada para servir como um novo standard, denominado SHA-3.

As funções restantes neste momento são: BLAKE, Blue Midnight Wish, CubeHash, ECHO, Fugue, Grøstl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite-3, SIMD e Skein. No próximo dia 24, serão anunciados os 5 finalistas da competição.

Quais destas funções serão escolhidas é impossível de saber ao certo. Das funções listadas, não foram encontrados ataques que reduzissem dramaticamente a segurança de qualquer uma delas. Existem algumas decisões no design destas funções que podem afectar a segurança, no entanto.

A função CubeHash torna mais fácil obter preimages de 512 bits do que o esperado; ao invés de O(2^512) operações, são apenas necessárias O(2^384). A relevância deste problema é bastante discutível — mesmo com computadores quânticos e transformando todos os átomos em qubits, seria difícil encontrar 2^192 no universo inteiro. No entanto, este nível de segurança vai contra as regras da competição, que especificavam um nível de segurança mínimo de 2^512. Isto põe a passagem desta função para o próximo passo em risco.

Outro ponto a considerar é o desempenho das funções. O NIST especificou que qualquer função escolhida terá de ser mais ou igualmente rápida que o SHA-2. Isto deixa-nos com as seguintes funções: BLAKE, Blue Midnight Wish, Shabal, Skein, CubeHash, Keccak, SIMD, Luffa (parcialmente). Algumas destas (i.e., ECHO e SHAvite-3) são extremamente acelerada se existirem instruções específicas de AES no sistema (AES-NI).

Dito isto, é uma decisão difícil escolher as 5 funções finalistas. Um palpite pode ser: BLAKE, Shabal, Skein, Blue Midnight Wish, Keccak. Existe um problema com este palpite, dado que as primeiras 4 funções são todas bastante semelhantes e pode ser vantajoso ter mais variedade, mas vou ignorar esse pequeno detalhe.

Julho 22, 2010

Maquinas Fotográficas Vintage

Arquivado em: lulz, serious-business, useless — falso @ 23:37

Ora viva amigalhaços!
Eu desde há uns tempos que ando fascinado com maquinas fotográficas clássicas, e então há coisa de uns meses atrás vi alta pérola no eBay, uma Kodak Junior II por um preço mesmo bacano, o gajo la dizia que estava boa, e o rating dele era 100% então comprei logo à fome.

Pronta a dispararDetalhe da lente

Quando a recebi é que descobri que havia um drama maior, esta maquina usa rolos de 620, que já não são fabricados, mas com ajuda das Internets descobri que existem os rolos de 120, mas há um pequeno problema, o “carreto” dos rolos de 120 é um bocado mais comprido e mais largo que os de 620, e não cabe na minha maquina. E de novo, Internets to the rescue, achei uns documentos a explicar que se pode limar e cortar um bocado do plástico dos rolos de 120 ate atingirem o tamanho dos clássicos de 620.
Comprei então um pack de 5 rolos de 120 a PB no eBay por alta preço, pedi uma lima toda xpto a um amigo, e eu mais a minha namorada aplicamos-nos a lixar até aquilo caber na maquina.

Depois entretanto parti uma perna e tal, e o rolo teve mil anos na maquina, até que houve um dia que fui com uns amigos até aos Algarves, e eu mandei logo a dica que tínhamos de passar na Praínha de Alvor para tirar umas fotos, porque há uns aninhos atrás o grande Xumpi levou-me la e amei mesmo aquilo.

Andei lá de tripé e tal na praia a tirar fotos com esta relíquia :-P Quando voltei, pus o rolo a revelar, e DUAS SEMANAS E MEIA depois estava revelado, e o resultado foi melhor do que eu esperava!

nameNNNN-001nameNNNN-003nameNNNN-006nameNNNN-004

As fotos estão todas aqui.


Agora há umas semanas atrás novamente no eBay vi alta SLR classica dos anos 70 fabricada na RDA, uma Praktica Super TL 1000, o preço era tão apetecível que não resisti e comprei.

Esta maquina já é mais profissional, é a minha primeira SLR, e pelo que descobri um pouco tempo depois de a ter é que existem MONTES de lentes para ela, usa o tipo de rosca M42. Tem alta “light-meter” para dizer como esta o nível de luz, bem, é uma maravilha! Comprei um rolo, e nestas ferias tenho estado a tirar fotografias com ela. Revelei-as hoje, e para mim ficaram mesmo baris! Estão com alta aspecto vintage, parece que foram tiradas nos anos 70 ou 80.

prakticaNNNN-004prakticaNNNN-001prakticaNNNN-012prakticaNNNN-021prakticaNNNN-025prakticaNNNN-008

As fotos estão todas aqui.

Espero que tenham curtido, fiquem bem e joguem muito!

Junho 4, 2010

Lost Eden

Arquivado em: coding, serious-business, useless — falso @ 00:11

Olá pessoal.

Eu há uns tempos, quando ainda estava de cama, lembrei-me de um granda jogo dos tempos do DOS, o Lost Eden. A história é sobre um mundo onde os humanos e os dinossauros coexistiam, e eram amigos (alguns), e era bem fixe para a altura!
O jogo era feito de animações em vídeo, género ficheiros FLC feitos no 3D Studio, e incluía altas musicas do grande compositor Stéphane Picq (eu tenho o CD original da banda sonora ;-).

Andei à procura nas internets a ver se alguém já tinha feito o reverse engineer ao jogo, e se já dava para jogar em SO actuais, mas pelos vistos não. A única maneira de o jogar é no DOSBox, mas fica uma beca com frame-skip.
Decidi então, mesmo sabendo que não ia fazer nada de jeito, tentar eu algo.

O jogo vem com alta ficheiro de 431MB chamado EDEN.DAT, fui então primeiro tentar descobrir qual é o conteúdo desse ficheiro.

Este site explica o seguinte:
The EDEN.DAT file begins with 2 bytes which might indicate the number of files contained in the GRAF. Following this number is a series of 25-byte records. Each record is laid out as follows:
bytes 0-11 filename: typically 8.3 DOS filenames, padded with zeroes
bytes 12-15 unknown
bytes 16-19 file size
bytes 20-23 absolute offset of file within GRAF
byte 24 unknown

Então meti mãos à obra, e fiz um script para extrair todos os ficheiros que estão no EDEN.DAT.

#!/opt/local/bin/python
# this script can never fail
import os
import struct

dat = open("EDEN.DAT", "rb")

dat.seek(0)
(total,) = struct.unpack("<H", dat.read(2))
print "O total de ficheiros e: %i" % total

# primeiro 0x2 - 2
# segundo 0x1b - 27
# terceiro 0x34 - 52

for info in range(0,total):
#for info in range(0,1000):
    start = 2+25*info
    
    dat.seek(start)
    filename = str.strip(dat.read(12),'\x00')
    if filename != "":
        print "Filename: %s" % filename
    
        dat.seek(start+16)
        (file_size,) = struct.unpack("<L", dat.read(4))
        print "Tamanho : %i bytes" % file_size
    
        dat.seek(start+20)
        (file_offset,) = struct.unpack("<L", dat.read(4))
        print "Offset: 0x%x" % file_offset
    
        destfn = os.path.join("rip/",filename)
        print "A escrever ficheiro %i: %s " % (info, repr(destfn))
        dat.seek(file_offset)
        dest = open(destfn, "wb")
        dest.write(dat.read(file_size))
        dest.close

dat.close

Consegui então extrair, montes de ficheiros VOC, que são todas as vozes e musicas do jogo, e também vários ficheiros mais ou menos grandes com a extensão HNM e com mais umas buscas nas internets descobri que o HNM é alta formato de video proprietário da já extinta CRYO Interactive Entertainment e que não há nenhum decoder ainda feito. Com essa informação fiquei triste e nunca mais toquei nisto, mas hoje liguei aqui o maczinho e vi aqui isto, e achei que era uma boa coisa para blogar, nem que seja para não perder o código. Espero que tenham gostado.

Fiquem bem, e joguem muito!

Maio 29, 2010

Portugal@Rippar - Os rippers contra-atacam

Arquivado em: arvorezinha, drama, java, serious-business — falco @ 10:51

Antes de mais, devo dizer, que estou emocionado pela quantidade de arvorezinhas que surgiram depois dos meus dois posts de arvorezinhas…

Agora vou ao assunto deste post.
O “ripanço” (desculpa dcoder), no Portugal@Rippar está de volta!
Digo de volta porque até uma arvorezinha já foi ripada. Um dia conto o drama todo como deve ser, mas vai ser difícil porque eu não ripei o texto da discussão antes dos donos do fórum o terem apagado para esconder as asneiras que fizeram e as acusações injuriosas que fizeram a mim e ao falso.

Desta vez algum “ripper” resolveu rippar uma calendário feito em java o jcalendar. O GNU Cop, já avisou os moderadores do fórum, vamos ver agora como vai decorrer o drama.

Update: O autor do software já corrigiu a situação.

Março 25, 2010

...boa noite, convosco vão ficar Os Simples

Arquivado em: serious-business — falso @ 22:08

Olá!

Para quem não sabe, Os Simples foram uma banda que existiu nas décadas de 70 e 80 nessa terra mítica que é a Trafaria, cujo um dos membros era o meu pai (é o de barba com a trompete, na primeira foto).

Eu há uns tempos passei para formato digital duas cassetes de audio que tinha de gravações deles, e partilhei-as aqui e aqui.

Desde então já fui contactado por antigos membros d’ Os Simples e também por filhos deles, e claro, tentei sempre arranjar mais informações, fotos, etc.

Há uns dias atrás o senhor Manuel José, membro original d’ Os Simples enviou-me umas fotos e informações lindas que achei que tinha de partilhar.


Citando o senhor Manuel José:

Conforme prometi aqui seguem algumas fotografias que tinha em meu poder d’ Os Simples e do Tatoo, o grupo que se formou após a extinção d’ Os Simples.

A formação que, em minha opinião, teve imensa qualidade (para a altura) e eventualmente o maior sucesso.

Bateria: Dário
Baixo: Manuel José
Metais: Carlos Oliveira (“China”) e Manuel Eixa
Teclas: José Carlos
Guitarra: Matos (jovem guitarrista que posteriormente ingressou como viola baixo nos “UHF” de grande talento)
Cantor: Jorge Gomes (tinha deixado os “6 de Portugal”)

Infelizmente o Manuel Eixa e o Jorge Gomes são hoje só saudade.


A aparelhagem “Geannini” foi a primeira a sair do distribuidor, linda. O guitarrista é o Bessa.


Tatoo - Única formação

Teclas: José Carlos
Baixo: Manuel José
Guitarra: Jorge Horta (Bilas)
Cantor: Day (actualmente “vedeta” do karaoke)
Baterista: Paulo Caldas

Março 9, 2010

Mais um ano, mais um ataque.

Arquivado em: fail, serious-business, useless — dcoder @ 16:45

As notícias sobre tecnologia cada vez mais se aproximam às notícias sobre terrorismo ou epidemias. Há dias, foi apresentado um artigo sobre um novo ataque ao RSA [PDF], baseado em falhas, que pôs a blogosfera em polvorosa. Existe alguma razão para isto? Absolutamente não.

É bem sabido que existem imensas classes de ataques que podem afectar implementações perfeitamente correctas do RSA (e não só).  Em particular, este novo ataque usa falhas geradas por flutuações de voltagem exteriores à máquina para derivar bits da chave privada. Nada de novo. Este ataque já tinha sido proposto em pelo menos 2006. Ataques baseados em outros tipos de falhas são mais do que conhecidos, alguns deles tendo sido usados para quebrar os smartcards da TV Cabo (glitching).

Como é comum para qualquer ataque bem conhecido, existem maneiras de proteger implementações contra o mesmo. Isto é uma completa não-notícia, e só mostra como blogs e bloggers são absolutamente lixo no que toca a apresentar notícias com algum tipo de rigor e isenção.

Março 2, 2010

Multiplicação de polinómios - part ii

Arquivado em: coding, serious-business, useless — dcoder @ 23:42

Viva. Após a maré de degredo que afectou este estimado blog, venho tentar retomar a dignidade e qualidade do mesmo, uma tarefa deveras hercúlea.

Consideremos a multiplicação de polinómios em

$$\mathbb{F}_2[x]$$

. O algoritmo considerado no post anterior é conhecido há milénios e tem uma complexidade quadrática, i.e.,

$$O(n^2)$$

operações para multiplicar dois polinómios de grau n. Este algoritmo será óptimo? Não.

Nos anos 60, foi descoberto o algoritmo de Karatsuba para multiplicar números inteiros em assimptoticamente menos operações. Resumidamente, este algoritmo divide os números a multiplicar na sua parte superior e inferior, e efectua a multiplicação em 3, não 4, multiplicações menores. Por exemplo, para multiplicar 123456 e 789012, dividimos ambos os números a meio: 123, 456, 789 e 012. Obtemos a parte menos significativa do resultado por multiplicar 456*012 = 5472. A parte mais significativa é obtida por 789*123 = 98154. O resto do nosso produto é obtido por efectuar a operação: (123+456)(789+012) - 5472 - 98154 = 360153. O resultado final é 5472 + 10^3*360153 + 10^6*98154 = 97408265472. Podem facilmente verificar que o resultado está correcto.

Este método pode ser aplicado recursivamente aos produtos mais pequenos resultantes de cada passo (divide and conquer). Isto significa que esta recorrência vai precisar de

$$O(n^{\log_2 3})$$

operações para multiplicar dois números. Isto pode parecer irrelevante, mas faz toda a diferença com números grandes (e.g., com mais de 1024 bits.)

O método de Karatsuba não se limita aos inteiros; aplica-se a qualquer anel comutativo. Isto significa que podemos facilmente adaptar este método para multiplicar polinómios. Os truques algébricos para acelerar a multiplicação são uma área extremamente interessante: duas referências relevantes e recomendadas são ‘Multidigit multiplication for mathematicians’ e ‘Faster multiplication in GF(2)[ x ]’.

No caso dos polinómios com coeficientes em {0,1}, i.e.,

$$\mathbb{F}_2[x]$$

, a tarefa é ainda mais simples: a adição é equivalente à subtracção, ambas sendo efectuadas com um simples xor. Implementar este algoritmo em C++ sem operações condicionais é ainda mais simples, dada a natureza recursiva do mesmo:

template<unsigned N>
inline word kmul(word a, word b)
{
	word a0, a1, b0, b1;
	word z0, z1, z2;

	a0 = a&(const word)((1<<(N/2))-1);
	b0 = b&(const word)((1<<(N/2))-1);
	a1 = a>>(const word)(N/2);
	b1 = b>>(const word)(N/2);

	z0 = kmul<N/2>(a0,b0);
	z2 = kmul<N/2>(a1, b1);
	z1 = kmul<N/2>(a0^a1, b0^b1) ^ z0 ^ z2;
	return z0 ^ (z2<<N) ^ (z1<<(N/2));
}

template<>
inline word kmul<1>(word a, word b)
{
	return a&b;
}

Apesar da menor complexidade deste algoritmo, esta implementação não vai ser mais rápida (para todos os tamanhos úteis) do que a do post anterior. Alguém me sabe dizer porquê?

Fevereiro 1, 2010

Oi pessoal! Vamos falar de consolas!

Arquivado em: drama, serious-business — sadik @ 12:52

Ora viva caros amigos! Espero que a vossa cave esteja bem quentinha e com pouca humidade, pois vou falar de algo que vos vai deixar cheio de sopas de cu! Vamos falar da: XBOX 360!

Como toda a gente sabe, eu tenho uma Xbox 360 e gosto de comprar jogos originais, para ela se sentir amada. Mas há sempre pessoal que acha que comprar jogos é um desperdício de dinheiro. Acho isso relativo, há quem curta gastar guito em PDA’s e telemóveis, outros gostam de comprar o último produto da maçã mordida. No final, todos compram aquilo que gostam e o que os fazem felizes, seja X, Y ou Z. Mas gostava de saber o que é que vocês acham sobre isso. Comprar games, YAY or NAY?

Janeiro 29, 2010

Palavras para quê...

Arquivado em: drama, fail, serious-business — madinfo @ 10:46

Andava eu a googlar coisas sobre o iphone quando dou de caras com isto:

Somos os únicos distribuidores autorizados da marca Cect para Portugal. Oferecemos Cects i9 com 2 Gb de memória desbloqueados dual sim a 110,33 euros com transporte incluído para Portugal continental e ilhas. Clone aperfeiçoado do Iphone, sendo que a Apple criou uma nova versão do Iphone devido à concorrencia do Cect que, apesar de ser mais barato, era mais aperfeiçoado e corrigia alguns bugs do iPhone.

Claro que tive de entrar para ver o que era… e sim era mesmo isso… um clone ranhoso do iphone… agora imaginem se o iphone já é mau pensem como será este magnifico clone chines com symbian…

Aqui fica o site:

http://www.cectportugal.com/

PS: Na hora do fecho desta redação eis que surge ainda melhor:

http://www.tugatronica.com/iphone-chines-com-autenticacao-por-impressao-digital/

Vejam caros leitores…