Paulo Mateus
“O meu ataque é feito directamente
sobre o protocolo.”
Em que consiste uma "Prova de
Conhecimento Nulo"?
Uma prova de conhecimento nulo é um protocolo de segurança
entre dois agentes, ditos a Alice e o Bruno. Por protocolo
entende-se uma sequência encadeada e sincronizada de
passos realizados pelos agentes envolvidos que, no caso particular
da prova de conhecimento nulo, não confiam um no outro.
O objectivo de uma prova de conhecimento nulo é a Alice
provar ao Bruno que conhece um segredo de tal forma que o
Bruno, após interactuar com a Alice, não fique
a saber nada sobre este segredo, mas apenas que a Alice o
possui. Estas provas servem para quando uma pessoa tem de
interactuar com agentes em que não confia completamente,
mas com os quais tem de realizar alguma tarefa que envolve
segurança. Por exemplo, quando pagamos uma compra com
um cartão multibanco confiamos que o vendedor nos fornece
uma máquina honesta que se vai ligar ao sistema de
SIBS para retirar dinheiro da nossa conta e colocá-la
na conta do vendedor. Assumimos que a máquina não
guarda a banda magnética do cartão nem o código
que acabámos de digitar. Uma pessoa mais desconfiada
poderia pensar que o vendedor tinha alterado a máquina
e que esta, além de se ligar ao SIBS, também
guardaria a banda magnética bem como o código
do cartão, cartão este que depois seria reproduzido
pelo vendedor para utilização ilícita.
Como resolver este problema? Uma solução é
o cartão utilizar um sistema de identificação
baseado em prova de conhecimento nulo. O cartão comunicaria
com a máquina dando permissão, no momento, à
retirada do dinheiro da conta do proprietário do cartão,
mas a máquina nunca obteria informação
para reproduzir o segredo do cartão, isto é,
o acesso permanente à conta. Aparentemente parece ser
impossível criar provas de conhecimento nulo, mas nos
anos 80 foram propostas várias soluções.
Supostamente estas provas de conhecimento nulo têm ainda
outra propriedade de segurança que permite, no contexto
da identificação, que o Bruno não consiga
provar a ninguém que a Alice se identificou. Olhando
mais uma vez para o exemplo do multibanco, esta propriedade
garantia que o vendedor não teria hipótese de
provar a ninguém que o titular do cartão lhe
tinha feito uma compra. Esta propriedade foi posta em causa
num trabalho da minha autoria que foi premiado pelo prémio
IBM 2005.
Quais os objectivos da "Matemática
Discreta"?
A Matemática Discreta é uma área que
intersecta vários ramos da Matemática, entre
eles a Lógica, Computação, Complexidade,
Criptografia, Combinatória, Teoria das Probabilidades,
Teoria dos Grafos e a Teoria dos Números. Estuda-se
em Matemática Discreta estruturas matemáticas
contáveis, isto é, finitas ou com a cardinalidade
dos naturais. O interesse nesta(s) área(s) da matemática
tem vindo a crescer significativamente devido às aplicações
no âmbito dos sistemas computacionais, nomeadamente
na análise da correcção e da eficiência
de soluções informáticas. Tendo em linha
de conta a crescente presença destas aplicações
na Sociedade (a todo o nível), é natural que
seja cada vez mais importante estudar a correcção
e melhorar a eficiência destas.
Para quando está prevista a
implementação de sistemas quânticos na
computação?
Os sistemas quânticos já estão implementados
no presente, e não são ficção
científica. Podem até ser adquiridos a título
pessoal, por exemplo, em http://www.idquantique.com/
Os sistemas existentes de momento permitem: geração
perfeitamente aleatória de números e troca de
chave com segurança perfeita (limitada a autenticação
computacional). Pensa-se que os sistemas quânticos irão
ter muito mais impacto num futuro próximo, em particular
na comunicação e sistemas distribuídos.
Num futuro mais distante, poderão revolucionar a computação
se for possível construir um computador quântico,
o que não parece imediato com a tecnologia presente.
Como nos podemos defender de um ataque
à segurança dos nossos dados?
Bem, a pergunta é muito ampla, e de difícil
resposta, assim dedico um parágrafo a um tópico
corriqueiro que faça uso de segurança (mas julgo
que as respostas são mais de senso comum do que de
conselho técnico).
A nível do comércio electrónico o principal
problema é o roubo do número do cartão
de crédito. Uma solução simples é
a utilização do sistema MBNet para precaver
o roubo deste número. Convém também pagar
a empresas on-line que tenham as suas chaves e sites certificados.
Quanto ao multibanco, é na realidade impossível
proteger-mo-nos contra uma panóplia de ataques, como
por exemplo o que apresentei na resposta 1 (ou outros como
os perpetuados recentemente que foram bem mediatizados), no
entanto, não vale a pena ser excessivamente zeloso.
Alguns conselhos podem ser dados, como por exemplo: não
ter muito dinheiro nas contas à ordem que podem ser
acedidas por cartões, levantar dinheiro em bancos ou
locais regularmente vigiados, não efectuar compras
com multibanco em loja menos idóneas ou utilizando
máquinas menos idóneas, não escrever
PINS na agenda, etc.
Quanto a palavras-chave utilizadas em aplicações,
evitar sempre palavras que apareçam no dicionário
e utilizar conjuntamente maiúsculas, minúsculas,
símbolos, e números em todas as palavras-chave
que permitam este tipo de entrada.
Quando as palavras-chave são só numéricas,
evitar datas e combinações óbvias. Mais
uma vez, nunca escrever estas chaves.
Quanto à utilização de um PC, convém
ter um antivirus que cubra o sistema de mail e ter o sistema
sempre actualizado e com uma Firewall. Evitar visitar páginas
de web menos idóneas. Ter um software de controlo de
spyware no computador (eg. spybot).
Evitar ler mails de desconhecidos, bem como seguir links em
mails de desconhecidos (ou supostamente enviados pelo o seu
banco).
Há de certeza mais cuidados a ter em mente, mas de
momento não me ocorre mais nenhum.
Qual a diferença entre
o seu trabalho e o de um hacker?
O meu trabalho é muito diferente de o trabalho de um
hacker. Os hackers tipicamente atacam o sistema explorando
erros de implementação de serviços do
sistema (ou até erros nos compiladores que foram usados
para gerar este serviços). Este erros permitem o acesso
privilegiado ao sistema operativo. Um hacker conhece muitos
destes erros e explora os mesmo para atacar o sistema. Assim,
se os protocolos estiverem bem implementados, e compilados
sobre ferramentas sem erros, um hacker dificilmente poderá
aceder ao sistema. Infelizmente a maioria do software que
utilizamos está cheio de erros, e portanto há
muito espaço para os hackers atacarem. Um problema
de investigação muito importante no presente
consiste em provar que o software está correcto e que
a geração de código não tem erros.
O meu trabalho que foi premiado pela IBM é muito distante
deste, no sentido em que mesmo que o protocolo esteja bem
implementado, o ataque que proponho é sempre possível.
Assim, o meu ataque é feito directamente sobre o protocolo,
ainda como entidade abstracta e não implementada, enquanto
um hacker concentra os seus ataques nos erros de implementação. |