28
Jul 07

A Future Web Development Framework – Introduction

Path: mv.asterisco.pt!mvalente
From: mvale…@ruido-visual.pt (Mario Valente)
Newsgroups: mv
Subject: A Future Web Development Framework – Introduction
Date: Sat, 28 Jul 07 01:30:21 GMT

I have decided that my promised reflections on web
development frameworks must be done this weekend.
I have also decided that it’s not going to be one
long post; and so, more to kick myself into starting
than anything else, here’s the first part: its actually
a braindump of links to read and understand the rest of
my commentaries.

This first post should be regarded as a prerequisite
reading list…

Please Teach me Web Frameworks for Python
http://www.artima.com/weblogs/viewpost.jsp?thread=146149

WebFS: a Web of Data
http://www.zefhemel.com/archives/2007/03/04/webfs

Python web development and frameworks in 2007
http://jesusphreak.infogami.com/blog/vrp1

Web Framework Manifesto
http://blog.circleshare.com/?/archives/16-Web-Framework-Manifesto.html

The Right Way to do Ajax is Declaratively
http://duncan-cragg.org/blog/post/right-way-to-do-ajax-is-declaratively/

Enforcing Strict Model-View Separation in Template Engines
http://davidrupp.blogspot.com/2007/06/required-reading-enforcing-strict-model.html

Aren’t the MVC and 3-Tier architectures the same thing?
http://www.tonymarston.net/php-mysql/infrastructure-faq.html#faq26

From all of the above it follows that my next posts subject’s will
be:

– Architecture
– Backend Storage
– Application Logic
– Templating
– Form Handling
– URL Mapping
– Existing Frameworks

— MV


28
Jul 07

Musical Snapshots

Path: mv.asterisco.pt!mvalente
From: mvale…@ruido-visual.pt (Mario Valente)
Newsgroups: mv
Subject: Musical Snapshots
Date: Sat, 28 Jul 07 00:30:21 GMT

Strange how usually some progressive rock songs are
able to somehow capture in a single snapshot phases
and feelings of my life. I guess that the power of
melody, harmony, rhythm and lyrics, when properly
combined, has something to do with it…something
that doesnt happen that much nowadays.

Yes – Hold On – http://www.youtube.com/watch?v=5xVU5PDikm0
“Justice to the left of you
Justice to the right
Speak when you are spoken to
Don’t pretend you’re right
Hold on – Hold on
Wait maybe the answer’s
Looking for you”

Yes – Owner Of A Lonely Heart – http://www.youtube.com/watch?v=ELpmmeT69cE
“See yourself
You are the steps you take
You and you – and thats the only way”

Yes – Changes – http://www.youtube.com/watch?v=oRUmjphVqFk
“Im moving through some changes
Ill never be the same
Change changing places
Root yourself to the ground
Capitalize on this good fortune
One word can bring you round
Changes”

Rush – Time Stand Still – http://www.youtube.com/watch?v=ylViJpX1KBs
“Time stand still
Im not looking back
But I want to look around me now
Summers going fast
Nights growing colder
Children growing up
Old friends growing older”

Rush – Mission – http://www.youtube.com/watch?v=kkDS3werTL8
“Spirits fly on dangerous missions
Imaginations on fire
Focused high on soaring ambitions
Consumed in a single desire
We each pay a fabulous price
For our visions of paradise
But a spirit with a vision
Is a dream with a mission…”

— MV

PS – “Hold Your Fire” from Rush and “90125” from Yes are two
albums that are indispensible for any heavy mental refugee.


24
Jul 07

Notas Egocentricas

Path: mv.asterisco.pt!mvalente
From: mvale…@ruido-visual.pt (Mario Valente)
Newsgroups: mv
Subject: Notas Egocentricas
Date: Tue, 24 Jul 07 22:52:21 GMT

Notas rapidas do dia em que o meu pai faria 78
anos:

– mais uma entrada em producao de um projecto que
deu agua pela barba, o Casa Pronta. O protocolo do
costume, desta vez em Agueda. Recomenda-se o Joao
dos Leitoes, que nao sendo Mealhada tinha um tinto
espumante “razoaaaaavel”. O Sr Primeiro Ministro
acabou por ver o site publico online ja no meu E70.

http://www.casapronta.pt/

– como o Luis Sequeira e reincidente em publicar
artigos vergonhosos a arruinarem-me com a reputacao
de “SOB in a leather jacket” e a insinuarem que eu
sou boa pessoa, sou obrigado a divulgar as fotos que
ele quer manter escondidas.

http://pauloquerido.net/2007/06/o_triunfo_dos_geeks_nacional
http://mv.asterisco.pt/Images/modems.jpg (***)

– ja vou visitando a Usenet de forma irregular e mesmo
assim muito filtrada. Mas nao ha duvida que continua a
ser fonte de umas belas risadas; ha sempre um noob ou
kook para animar a festa…

http://groups.google.com/group/pt.comp.so.linux/msg/ef48a590fbff3412

— MV

*** Notas relativas a imagem dos modems:
– do lado esquerdo, com o autocolante da Esoterica,
esta o tower 486 que servia simultaneamente de email
server e de terminal server; note-se que logo ao lado
esta uma caixa com 16 interfaces RS232 que ligavam
aos modems brancos que estao no armario; as fontes de
alimentacao azul e vermelha foram construidas inhouse
para alimentarem os 16 modems (em vez de ter ligados os
16 transformadores respectivos)
– ainda do lado esquerdo nota-se um outro servidor que
salvo erro estava a fazer news; digo isto porque se nota
que esta sem a tampa (para arrefecer)
– ao fundo, na parede, veem-se as fichas RJ45 para as
varias linhas de telefone que tinhamos antes de percebermos
para que servia um primario RDIS e termos dinheiro para
comprar o equipamento terminal (um Ascend que o Sequeira
foi buscar a Londres numa 6a feira de manha e voltou ao
fim do dia com ele debaixo do braco)
– em cima do armario 2 Cisco 2500, um para a linha dedicada
Lisboa/Porto e outro para a linha dedicada Lisboa/Londres
– ao lado dos Cisco os respectivos CSU/DSU da PT
– em cima dos Cisco multiplos modems para linhas dedicadas
analogicas
– no fundo do armario 3 modems Motorola para linhas dedicadas
analogicas, os primeiros que tivemos e que o ICP/Anacom veio
dizer que estavam ilegais ate nos lhes apontarmos aonde e
que estavam na lista de modems aprovados… deles…
– a Esoterica (95) nao era muito mais do que o que se ve
na foto; a sala tinha 14m2 e para alem do que se ve tinha
mais 4 secretarias onde eu, o Sequeira, o Laureano e o
Goncalo nos acotovelava-mos…
– a minha fobia por fios e o interesse por wireless sao
resultados directos desta foto.


23
Jul 07

Separadores Enviesados

Path: mv.asterisco.pt!mvalente
From: mvale…@ruido-visual.pt (Mario Valente)
Newsgroups: mv
Subject: Separadores Enviesados
Date: Sun, 22 Jul 07 23:35:21 GMT

Que a grande maioria da comunicacao social tem um
enviesamento a esquerda, ja e sabido. Mas a SIC Noticias,
nao sei porque, deve ter alguem a fazer os separadores
que e especialista.

Irrita-me particularmente um separador com referencia
a varios campos de morte e a varias atrocidades, com uma
musica de fundo funebre e acho que de origem arabe. Nao
tenho nada contra o separador ou a musica, mas contra a
escolha de “eventos”: todos relacionados com totalitarismos
de direita ou com os EUA. Gulags na Uniao Sovietica? Massacres
na China? Fome na Coreia do Norte? Nada; nenhuma referencia.

Se calhar, em termos de “peso”, era mais pratico colocar
no separador uma unica referencia: o Grande Salto em Frente
do camarada Mao e os seus resultados “praticos”:

http://www.mises.org/story/2652

— MV


22
Jul 07

Chaves, Assinaturas e Certificados

Path: mv.asterisco.pt!mvalente
From: mvale…@ruido-visual.pt (Mario Valente)
Newsgroups: mv
Subject: Chaves, Assinaturas e Certificados
Date: Sun, 22 Jul 07 20:35:21 GMT

No ambito da montagem da PKI para o Cartao de
Cidadao e da PKI para o Ministerio da Justica, assim
como no ambito do uso do proprio Cartao e das chaves
e certificados que contem, tenho visto alguma confusao
sobre o que sao cada uma destas coisas, como funcionam
e para que servem. Chega-se a pensar que uma assinatura
digital e a digitalizacao (scanning) da assinatura
manuscrita…

Para tentar ajudar na compreensao da coisa, e na
sequencia de algumas explicacoes que ja dei sobre o
assunto, vou tentar reproduzir aqui as mesmas, sendo
que e certo que e mais facil de explicar em regime
presencial :-)

Comecando pelo principio e pelo problema base: como
e que o Antonio (A) envia uma mensagem ao Bruno (B)tendo
ambos (ou pelo menos o Bruno) a garantia de que a mensagem
nao foi falsificada e vem mesmo (mas mesmo, *mesmo*) do A?

A primeira opcao, desde os tempos dos imperadores romanos,
e codificar (criptar) a mensagem. Digamos que A quer enviar
a B o texto “A verdadeira mensagem”. Em vez de enviar assim
o texto, escrito a papo seco num bocado de papel, envia
antes o texto “B xfsebefjsb nfotbhfn”; o Bruno so tem de
saber que para obter a mensagem original basta andar uma
letra para tras no ABCdario.
Este “esquema”, com mais ou menos complexidades de metodo
e acrescido de palavras chave (passwords) e outros tantos,
sofre sempre de um problema: tem de haver a partilha entre
A e B sobre qual a forma/metodo usada para codificar a
mensagem. Isto significa que se C, um dos maus da fita,
souber essa forma ou metodo (nota: mais tarde ou mais cedo
acaba por saber), podera enviar mensagens codificadas da
mesma forma. E la se vai a garantia que o Bruno queria: ao
receber uma mensagem, ter a certeza de que esta nao foi
alterada de qualquer forma e que vem mesmo (*mesmo*) do
Antonio.

O sistema acima referido e tao mau que foi assim que os
Alemaes perderam a guerra…

Como resolver o problema? Sera que nao existe uma maneira
de obter uma especie de “impressao digital” de um documento,
uma especie de ADN do documento? Se houvesse, enviava-se o
documento junto com a sua “impressao digital” e qualquer
alteracao ao mesmo podia ser detectata reobtendo essa mesma
“impressao”.

Por exemplo: o Antonio passa a enviar todas as mensagens
ao Bruno acrescentadas do total de letras em cada mensagem.
Para enviar “A verdadeira mensagem”, escreve num papel
“A verdadeira mensagem – 19”. O Bruno recebe a mensagem,
conta as letras da mensagem, verifica que sao 19 e conclui
que a mensagem nao foi alterada. Se tivesse recebido um
papel a dizer “A falsa mensagem – 19”, sabia que o texto
original tinha sido alterado.

Pode parecer que o problema esta resolvido. Infelizmente
tem de se assumir que C (um dos maus da fita) teria, claro,
conhecimento desta historia de mandar com a mensagem o
numero de letras. E assim C, se quisesse enviar ou alterar
uma mensagem de A para B a dizer “A falsa mensagem”, trataria
de enviar “A falsa mensagem – 14”. E voltamos ao ponto zero:
o Bruno nao tem certezas quanto ao conteudo nem quanto a
proveniencia da mensagem.

No entanto o conceito acima (“impressao digital” de um
documento) e meio caminho andado na resolucao do problema.
Este numero (no exemplo acima “numero total de letras da
mensagem”) e aquilo que e chamado de checksum (somatorio
literalmente, embora seja mais uma especie de prova dos
nove; va, vao relembrar a aritmetica da 4a classe); este
numero e tambem chamado de hash (mistura) e muitas vezes
de fingerprint (impressao digital).

Obviamente que o metodo usado na realidade para calcular
a impressao digital de um documento nao e algo tao simplista
como “o total das letras da mensagem”. Quanto mais nao seja
porque este metodo tem varias colisoes possiveis: existem
varios documentos com 50 letras; portanto 50 nao seria com
certeza forma de “identificar” um documento de forma unica.

Os metodos usados para gerar “impressoes digitais” de
documentos tem nomes complicados como SHA, MD5, CRC32; e
sao tambem metodos mais complicados do que “o total de
letras da mensagem”; e geram resultados finais muito mais
complicados do que 50; geram coisas tipo 7213E1C0 ou
858997B06E6537A581C8ABB0019758C3. Numeros que de alguma
forma sao garantidos como unicos para aquele documento ou
aquela mensagem.

O problema no entanto mantem-se, mesmo complicando o
sistema: temos de assumir que C (e o Carlos, pronto) sabe
qual o sistema. E quando altera uma mensagem de A para B
ou envia uma mensagem falsa, enviara tambem o checksum/hash/
fingerprint da mensagem falsa. O Bruno continua sem garantias
de que uma mensagem recebida veio mesmo do Antonio.

A ideia de usar uma password/chave para codificar o
checksum enferma do mesmo problema. Se o Antonio combinar
que envia ao Bruno as mensagens com o total das letras mas
somado com 7 (aqui o 7 funciona como chave/password partilhada),
temos de assumir que a mensagem “A verdadeira mensagem – 25”
(25=19+7), vai continuar a correr o risco de que a mensagem
seja alterada pelo Carlos para “A falsa mensagem – 21″…

Mas imagine-se que o Antonio envia a mensagem para o
Bruno na seguinte forma: “A verdadeira mensagem – 703”; e
diz ao Bruno “para obteres o checksum/hash/fingerprint
da mensagem multiplica por 0,027027”. O Bruno recebe a
mensagem “A verdadeira mensagem – 703”, pega no 703 e
multiplica por 0,027027, obtem 19 e como isso e igual
ao numero de letras da mensagem sabe que a mesma nao foi
alterada.

O que e que o Carlos pode fazer? Pode tentar alterar
a mensagem. Pode saber que o metodo para fazer o
checksum e “o total de letras”. Mas ja nao e tao simples
descobrir como colocar o valor final correcto (checksum +
calculo). Ja nao e tao simples perceber que valor colocar
no fim de “A falsa mensagem”. Mesmo que saiba que o
metodo usado e “multiplicar o total de letras pelo tamanho
do sapato” (e o Antonio calca o 37; 19*37=703), nao serve
a C multiplicar 14 (o total de letras da falsa mensagem)
por 38 (o seu tamanho de sapato). “A falsa mensagem – 532”
e uma mensagem valida, mas quando 532 e multiplicado por
0,027027 obtem-se 14,37 que nao coincide direito com o
numero de letras da mensagem. A mesma nao veio, portanto,
do Antonio. Se fosse multiplicada por 0,0263, obter-se-ia
14.

Para todos os efeitos o que foi descrito acima e um
sistema de chaves publicas e chaves privadas (PKI).
A chave privada do Antonio e 37 (o tamanho do sapato);
a sua chave publica e 0,027027. Quem receber mensagens
do Antonio, codificadas com a sua chave privada, pode
descodifica-las com a sua (do Antonio) chave publica.

Como e obvio este metodo de criacao de chaves privadas
(o tamanho do sapato) e de criacao de chaves publicas
(a chave publica, caso ainda nao tenham deduzido, e o
inverso do tamanho do sapato) e fraco. Primeiro porque
tem uma serie de colisoes (varias pessoas calcam o mesmo
tamanho, logo teriam a mesma chave privada); segundo porque
sendo mais complicado, e relativamente facil partir de
uma chave publica (0,027027 por exemplo) e inverter a
mesma com uma calculadora com a funcao 1/x.

Os sistemas de PKI utilizados na vida real usam metodos
muito mais complexos para criacao de chaves privadas. As
chaves geradas sao linhas e linhas de valores alfanumericos
tipo “00:f6:9c:64:49:18:7f:c7:47:db:07:b6:a3:43:2e” cujo
conjunto e garantido unico para cada utilizador (ao contrario
do tamanho do sapato) e cuja inversao (ou seja, passar da
chave publica para a chave privada) e completamente impossivel
em termos matematicos.

O que temos entao ate agora? Temos que para cada
cidadao portugues, no momento da emissao do Cartao
de Cidadao, e emitido um par de chaves: a sua chave
publica e a sua chave privada. A chave publica, como
e obvio, e publica, pode ser divulgada e e legivel
directamente do cartao. A chave privada apenas e do
conhecimento e posse do cidadao, sendo apenas possivel
de ser gerada pelo seu cartao (aquele cartao) e com
a introducao do seu PIN. Nao e possivel, a partir da
chave publica, obter a chave privada.

O Antonio, na posse do Cartao de Cidadao, pode agora
enviar um documento ao Bruno, com “A verdadeira mensagem”,
assinando-o digitalmente.
O que isto significa e que, para o documento em causa,
sera calculado o checksum/hash/fingerprint (um 19 mais
complicado) e o mesmo sera codificado usando a chave
privada do Antonio (tamanho 37, mais complicado). O Bruno,
ao receber a mensagem, pode descodificar o valor final
(703, mais complicado) usando a chave publica do Antonio
(0,027027, mas mais complicado). Se o resultado nao for
igual ao checksum (19), que o Bruno tambem pode calcular,
entao a mensagem nao vem do Antonio ou entao foi alterada.
Se o resultado for 19 entao o documento nao foi alterado
e veio, garantidamente, do Antonio.

Note-se: para o documento em causa. O que significa que
nao existe uma assinatura digital igual para todos os
documentos. Cada documento sera assinado digitalmente
por cada cidadao de forma diferente; cada cidadao tera
diferentes assinaturas por cada documento (o que faz
sentido: uma assinatura num cheque nao e o mesmo que
uma assinatura num contrato ou num recado); cada documento
tera uma assinatura diferente quando assinado por
diferentes cidadaos (esta era obvia).

Falta explicar o que e um certificado digital: um
certificado digital nao e mais do que um documento,
com um conjunto de texto e propriedades, assinado (de
forma digital, obviamente; vide acima) por alguem
que garante que a informacao contida nesse documento
e verdadeira. Assim, o Cartao de Cidadao, para alem
de conter as chaves publicas e privadas de cada cidadao
(o que lhe permite assinar documentos digitalmente),
contem tambem um texto/documento/bloco, com os seus
dados pessoais (basicamente numero BI e nome), sendo
este documento assinado digitalmente pelo Ministerio
da Justica que garante assim a verdade desses dados.
Este “bloco de informacao”, assinado por uma entidade
que garante a verdade da mesma, e o certificado digital.
Os dados sao assinados com uma chave privada (a chave
privada do sistema de PKI do Cartao de Cidadao, guardada
a sete chaves na Casa da Moeda) podendo qualquer cidadao
ou qualquer sistema verificar a validade dos dados do
certificado digital usando a chave publica correspondente.

Desta forma, com a existencia do certificado digital e
com a existencia das chaves (e portanto possibilidade de
assinaturas), vamos passar a ter em Portugal um sistema
de autenticacao (por via do certificado) e de prova (por
via das chaves e das assinaturas digitais) para todas
as comunicacoes elctronicas que trara um maior nivel de
seguranca e privacidade as mesmas.

— MV

PS – Porque privacidade? Porque a chave privada de cada
cidadao pode tambem ser usada para codificar/criptar
documentos, mensagens e emails. A quem recebe a mensagem
basta usar a chave publica do emissor para descodificar
a mensagem criptada e obter a mensagem original.