Criptografia

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: CRIPTOGRAFIA

Mensagem por alaminojunior »

Será que existe alguma função que criptografe a base de dados inteira e "descriptografe" a base de dados inteira, também?
Neste caso, como vc já trabalha com a versão 5.2 do Clipper, estude à respeito da Lib Six. Me parece que ela faz isso de uma maneira bem simples.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Em rede só vai dar problema. Em monousuário até vai. Mas ainda assim, há um inconveniente: se o sistema decriptografar o arquivo, logicamente será em disco. Se depois desse processo o programa abortar por qualquer motivo, o arquivo ficará desprotegido. Não vale a pena. É melhor fazer isso "on-the-fly", campo a campo, apenas quando necessário.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: CRIPTOGRAFIA

Mensagem por rochinha »

Amiguinhos

Eu também procurei algo a respeito mas a maioria das funções são para uso mono e também usei minhas proprias funções de criptografia em campos que defino como de alta prioridade de salvaguarda.

A criptografia deverá ser efetuada numa primeira vez nos campos pre-definidos e somente descriptografados no momento de uma exibição, impressão, etc.

O que pega é se usarmos este método em campos indexados como, NOME, pois ai existe a necessidade de indexação do dados descriptografados para que no momento de pesquisa de um nome aqueles SSD975843HSSD6F7F dejam reconhecidos como ROCHINHA, por exemplo.

Como ja disseram, "on the fly" e "trabalhão" é a pura realidade.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: CRIPTOGRAFIA

Mensagem por Maligno »

O jeito é não criptografar campos que serão parte da chave de índice.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: CRIPTOGRAFIA

Mensagem por rochinha »

Amiguinho,

No meu caso preciso realmente criptografar alguns campos que fazem parte de chaves como NOME, ENDERECO e TELEFONE e descriptografar no momento de visualizar ou pesquisar.

Algo como:

Criptografar o campo NOME.
Indexar por este campo descriptografando no momento de enviar o comando de INDEXação.
Ao pesquisar passar o dado normalmente ja que a pesquisa ocorre primeiro no indice e depois aponta ao dbf.
Ao salvar sempre criptografar o conteudo antes.
Ao recuperar o dado para visualizar, alterar ou imprimir descriptografar.

Um processo tedioso pois é necessário cercar todos os pontos onde estes dados serão apresentados e modificados.

Comecei a testar esta implemntacao mas dei um tempo por falta do mesmo.

No caso utilizei uma função que implementei o método de Julio Cesar ou Cesar que consiste na troca de letras pela letra anterior ou posterior, que me corrijam de postei algo errado, mas postei um tópico extenso explanando estas técnicas aqui no forum. Ver este link

Primeiro criptografei em todo o DBF o campo NOME:

Código: Selecionar todos

...   
do while .not. eof()
      dbRLock()
      CLIENTES->NOME := MinhaEncriptadora( CLIENTES->NOME )
      dbRUnLock()
      dbCommit()
      skip
enddo
...
Depois promovi a indexacao pelo campo NOME usando o inverso:

Código: Selecionar todos

...   
INDEX ON MinhaDecriptadora(NOME) TO CLIENTES
...
Para pesquisar um determinado dado:

Código: Selecionar todos

...   
dbSelectArea( nArea )
ordSetfocus( nOrdem )
dbSeek( cSeekFrase, lSoftSeek )
...
Neste caso não usei nenhuma função pois o dado passado e o dado que será encontrado no indice esta descriptografado e portanto a pesquisa se efetivará com exito.

Salvar o conteudo no campo do DBF ja criptografado:

Código: Selecionar todos

...   
CLIENTES->NOME := MinhaEncriptadora( M->NOME )
...
Para recuperar o conteudo do campo para vizualizar, alterar etc:

Código: Selecionar todos

...
M->NOME := MinhaDecriptadora( M->NOME )
...
E no browse colocar a chamada ao campo criptografado usando MinhaDecriptadora( M->NOME )

Fica ai o trabalho de verificar onde serão usados campos criptografados e usar as funções corretamente.

Vou usar este método em um módulo para testes e depois homologarei com o cliente o uso em outros módulos, inclusive farei alguns testes em campos com valores, para salvaguardar valores de produtos ou recebimentos.

A aplicabilidade de algo assim é mero segurança e não, um ponto de honra e vai depender do quanto se quer salvaguardar.

Ilustrando o post http://www.5volution.com.br/downloads/forum/crypto.zip

Dicas e sugestões serão benvindas.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder