Blog do programador e tecnico em redes ….

Categoria — Criptografia

Dados criptografados são processados sem serem decifrados

Redação do Site Inovação Tecnológica – 20/09/2010

Imagine a solução definitiva da criptografia: você poder responder a uma pergunta sem saber a própria pergunta.

De forma mais simples, suponha que alguém pense em dois números e, em seguida, peça a outra pessoa para somar ou multiplicar os dois, sem que essa pessoa saiba quais são os dois números.

Isso já é possível desde que a pessoa receba um código criptografado dos dois números – mesmo não conhecendo a senha para decifrá-los.

A técnica tornará possível, por exemplo, que uma empresa envie seus dados criptografados para processamento em um computador de terceiros, sem correr o risco de que seus dados sejam lidos.

Computação em dados criptografados

O último passo para transformar essa possibilidade técnica em uma realidade prática foi dado por Nigel Smart, da Universidade de Bristol, no Reino Unido, e Frederik Vercauteren, da Universidade Católica de Leuven, na Bélgica.

Os dois pesquisadores acabam de dar um passo importante rumo a um sistema totalmente prático que permita computar dados criptografados sem precisar decifrá-los.

“Nosso sistema permite que os cálculos sejam executados em dados criptografados, o que poderá permitir a criação de sistemas nos quais você armazena os dados remotamente de uma forma segura e ainda é capaz de acessá-los,” diz Smart.

Segundo o pesquisador, quando totalmente desenvolvido, o trabalho terá um impacto muito abrangente, em áreas tão diversas como o acesso a banco de dados, leilões eletrônicos e até urnas eletrônicas.

Um sistema assim será ideal também para acessar prontuários médicos durante pesquisas científicas. Os pesquisadores poderão executar cálculos estatísticos sobre ocorrências de enfermidades sem a necessidade de revelar informações sobre os pacientes individuais.

Criptografia homomórfica

Em outro exemplo, imagine uma pessoa que está participando de um leilão online, mas não quer o leiloeiro saiba sua oferta para não incentivar lances mais altos.

Lances criptografados poderão ser enviados para o leiloeiro e, em seguida, usando um esquema totalmente homomórfico, o leiloeiro poderá saber quem ganhou e qual foi a proposta vencedora mesmo sem conhecer os demais lances.

Por quase 30 anos esse tem sido o sonho da criptografia: chegar a um esquema que permita “somar” e “multiplicar” mensagens cifradas – o chamado esquema totalmente homomórfico.

Tão logo seja possível somar e multiplicar, torna-se possível realizar qualquer outra função.

Ao longo dos anos, foram propostos vários esquemas de criptografia nesse caminho, que possuem as operações de soma ou de multiplicação, mas nunca as duas.

Operações em textos cifrados

Em 2009, Craig Gentry, então na Universidade de Stanford e ligado à IBM, sugeriu o primeiro esquema capaz de tanto somar quanto multiplicar mensagens cifradas.

Contudo, embora seja uma descoberta teórica surpreendente, o sistema de Gentry não é prático.

Agora, Smart e Vercauteren descobriram uma maneira de simplificar o sistema de Gentry, tornando-o um pouco mais prático.

Embora ainda não seja eficiente o suficiente para ser usado no dia-a-dia, a realização é um passo importante nesse sentido, mostrando que a criptografia homomórfica é bem mais do que uma curiosidade técnica.

Bibliografia:
Fully Homomorphic Encryption with Relatively Small Key and Ciphertext Sizes

http://www.info.unicaen.fr/M2-AMI/articles-2009-2010/smart.pdf

Site Inovação Tecnologica

http://www.inovacaotecnologica.com.br

20 / setembro / 2010   Sem Comentarios

cast128 com php

abaixo mais um algoritimo com classe e exemplo para usar com o php, ele usa um dos meios de criptografias mais rápidos e eficientes que já testei:


< ?php require_once('cast128.class'); ? >
< ?php

$example = new cast128;

$teste = $example->encrypt("Francisco Pedro da Costa Filho","suasenha");

echo $teste;

echo "

";

$testebb = $example->decrypt($teste,"suasenha");

echo $testebb;

? >

em http://www.pedrofilho.com.br/arquivos/cast128.class vc pode baixa a classe do mesmo, vlw …

11 / janeiro / 2010   1 Comentario

HASH com senha – HMAC

Dias atrais precisei criar um algoritmo para verificar se um form realmente esta vindo de uma pagina especifica, usando MD5 para isso como hoje existem alguns sites com dicionarios inteiros de hash que facilita a vida dos malas, pensei em concatenar a string com outra que seria secreta para ficar diferente.

Mais para minha surpresa pesquisei no site do php sobre as funções de hash nativas e encontrei um recurso bem interessante chamado HMAC ( Hash-based Message Authentication Code ) que permite você adicionar um código de autenticação ao hash final.

Como ele é bem simples, irei colocar abaixo um codigo em php e mais abaixo a saida do codigo:

// varios  - md5, sha1, sha256, crc32 e ripemd160 com e senha senha e hmac
echo "<br><b>Algoritmo MD5</b><br>";
echo hash('md5','pedro','');
echo "<br>";
echo hash_hmac('md5','pedro','senha');
echo "<br>";
echo "<br><b>Algoritmo SHA1</b><br>";
echo hash('sha1','pedro','');
echo "<br>";
echo hash_hmac('sha1','pedro','senha');
echo "<br>";
echo "<br><b>Algoritmo SHA256</b><br>";
echo hash('sha256','pedro','');
echo "<br>";
echo hash_hmac('sha256','pedro','senha');
echo "<br>";
echo "<br><b>Algoritmo crc32</b><br>";
echo hash('crc32','pedro','');
echo "<br>";
echo hash_hmac('crc32','pedro','senha');
echo "<br>";
echo "<br><b>Algoritmo ripemd160</b><br>";
echo hash('ripemd160','pedro','');
echo "<br>";
echo hash_hmac('ripemd160','pedro','senha');
echo "<br>";

<?php

// varios  - md5, sha1, crc32 e ripemd160 com e sem senha em hmac

echo "<br><b>Algoritmo MD5</b><br>";

echo hash('md5','pedro','');

echo "<br>";

echo hash_hmac('md5','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo SHA1</b><br>";

echo hash('sha1','pedro','');

echo "<br>";

echo hash_hmac('sha1','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo crc32</b><br>";

echo hash('crc32','pedro','');

echo "<br>";

echo hash_hmac('crc32','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo ripemd160</b><br>";

echo hash('ripemd160','pedro','');

echo "<br>";

echo hash_hmac('ripemd160','pedro','senha');

echo "<br>";

?>

saida do codigo acima:

Algoritmo MD5
c6cc8094c2dc07b700ffcc36d64e2138
a1d018ffaf490f6a5b92742ef3ccd173

Algoritmo SHA1

4410d99cefe57ec2c2cdbd3f1d5cf862bb4fb6f8
5c82ffca9902349d22bf36ab133b40cbb2f2ea76

Algoritmo crc32

e86f00aa
0f6fd579

Algoritmo ripemd160

7755874530352e4d9fce481fbf92ac0e46581b16
a2a25fa6891b36bbd4761cf84ad01a7a0ceee458

14 / novembro / 2009   Sem Comentarios