Rotina de criptografia simétrica, alguem tem ?

Programação C em geral

Moderadores: 51, guest2003

Rotina de criptografia simétrica, alguem tem ?

Mensagempor andre_luis » 08 Mar 2007 09:03

Pessoal,

Alguem possui um link, ou uma função de criptografia, preferencialmente a DES ? A que encontrei na internet não é muito fácil de entender, pois foi escrita para Linux, mas eu gostaria de usar em um microcontrolador.

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor mrtabs » 12 Mar 2007 09:15

Eu nao manjo nada de criptografia...rs
mas se quiser, posso te ajudar a entender o codigo pra linux...ele esta em C? entao nao tenha medo...posta ai os trechos do codigo q nao entender...

abraço
mrtabs
Nibble
 
Mensagens: 70
Registrado em: 24 Out 2006 09:27
Localização: Santos e/ou Sao Paulo

Mensagempor andre_luis » 12 Mar 2007 10:22

Obrigado,

Mas, embora esteja em C sim, ele possui uma infinidade de #ifdef #includes, etc... que acabam tornando o código muito difícil de saber até que ponto eu posso ir 'limpando' o que nao me interessa.

Trata-se desse arquivo :

http://www.gelato.unsw.edu.au/lxr/source/crypto/des.c

valew
+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Iran » 12 Mar 2007 11:51

Tem um site que andei fuçado chamado Aldeia numa Boa http://www.numaboa.com/ que é mantido por uma médica chamada vovô Vick, ela é f*** nesse assunto,tem até livro publicado, lá vc pode achar alguma coisa.

Zé Iran.
Avatar do usuário
Iran
Word
 
Mensagens: 558
Registrado em: 16 Out 2006 18:10
Localização: Imperatriz - MA

Mensagempor ivan » 12 Mar 2007 16:57

Bem,

1) o problema maior seriam os tipos de dados. Por ex. é definido u32 q deve ter 32 bits de tamanho e definir o MCU a ser usado, creio eu.

2) As tabelas tb seriam outro prob a ser contornado por causa do seu tamanho, qtde de indices.

3) Os includes, defines e ifdefs são resolvidos com paciência e compilações sucessivas.

Se os itens 1) e 2) forem passíveis de solução, então é trabalho braçal.

Encontrei êsse site q deve ajudar:
http://www.brouhaha.com/~eric/crypto/
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor gibim » 13 Mar 2007 01:40

Olha amigo, não recomendo você usar o DES para microcontroladores se não for no mínimo um ARM 7, e ainda assim, já ia sofrer muito com a dec/encriptação dos dados, caso nunca tenha visto isso na sua vida.

A minha recomendação, é que você use um algorítimo mais simples e proprietário. Certamente já saiba que algorítimos proprietários são fáceis de serem quebrados por que entende muito, mas quebra o galho contra os curiosos em muitos níveis. Então recomendo você a usar o SSP da Innovative

B.1 Encryption routine
/***********************************************************************
Function CODE
Function to encrypt 16 bytes of data (4 long ints)
Usage: : code (long_data, long_current_key);
Parameters: data() - 16 bytes to be encrypted packed into 4 long ints
Key() - key to use packed into array of 2 long ints
Returns: data() - 16 bytes of encrypted data packed into 4 long ints
Locals: w,x,y,z,delta,n
/***********************************************************************
void code(long* data, long* key) {
unsigned long w=data[0],x=data[1],y=data[2],z=data[3], sum=0, /* set up */
delta=0x9e3779b9, n=32 ; /* a key schedule constant */
while (n-->0) { /* basic cycle start */
sum += delta ;
w += (z<<4)+key[0] ^ z+sum ^ (z>>5)+key[1] ;
x += (w<<4)+key[1] ^ w+sum ^ (w>>5)+key[0] ;
y += (x<<4)+key[0] ^ x+sum ^ (x>>5)+key[1] ;
z += (y<<4)+key[1] ^ y+sum ^ (y>>5)+key[0] ;
} /* end cycle */
data0]=w ; data[1]=x ; data[2]=y ;data[3]=z;

Todo o doc pode ser acessado em:
http://www.innovative-technology.co.uk/pdfs/ssp.pdf

Agora se quiser continuar com a épica vontade de implementar DES num microcontrolador, saiba que é necessário, para o mesmo rodar em um Pentium200 daria umas 50000 cifraçoes de 64 bits.

Um Atmega16 de 8Mhz são 786 ciclos por bytes, sendo 8Kbits por segundo

Um ARM7-60Mhz são 350 ciclos por byte.

Um ARM9-200Mhz são 101 ciclos por byte.

Esses são os que eu já utilizei, pra modo de teste, agora tenho trabalhos com SHA1 e outros parecidos. É só escolher o que usar.

Um comparativo do ARM7 e os diferentes tipos de encriptação:

" An ARM7 with an embedded encryption engine can achieve AES data rates as high as 20 Mbits/s. It also allows DES and triple DES encryption at 12.8 and 11.2 Mbits/s respectively. However, although the hardware AES encryption rate is nearly four times faster than a software implementation, the encryption rate still may not be fast enough for higher-data-rate Ethernet or high-speed SPI applications. "

Implementação de um dos orientadores nossos da USP que trabalham com isso:
http://fp.gladman.plus.com/cryptography ... /rijndael/
Avatar do usuário
gibim
Byte
 
Mensagens: 117
Registrado em: 08 Nov 2006 21:40
Localização: Londrina - PR

Mensagempor andre_luis » 13 Mar 2007 09:56

gibim,

Muito obrigado pelos esclarecimentos. Eu nao sabia que o 'buraco' era tao fundo.

Bom, embora essa criptografia nao seja simétrica, atende à limitacao do meu uC que possui um barramento de míseros 8 bits.

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Wagner de Queiroz » 13 Mar 2007 11:49

Que chance tenho, se eu postar um arquivo criptografado por um algoritmo proprietario meu de alguem quebrar e descobrir o conteudo do arquivo ?

Detalhe: chave de 32 bits
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor gibim » 14 Mar 2007 21:38

Para uma chave de 32 bits, sabendo qual é o algorítimo em que foi encriptado, é questão de minutos. Agora com algorítimos proprietário, tem que ser feito uma busca de padrões, e digo que´isso é extremamente F* pra resolver, acho que deve existir poucas pessoas no mundo com conhecimento pra isso.

Abraços!
Avatar do usuário
gibim
Byte
 
Mensagens: 117
Registrado em: 08 Nov 2006 21:40
Localização: Londrina - PR


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x