2012/1/31 Demonbholder XTibia <demonb...@xtibia.com>:
> Olá, gostaria de saber se existe algum jeito de encriptar códigos lua
> sem alterar nada na sua execução.
>
> Já procurei, mas não achei nada conclusivo.
>
Antes de mais nada, o básico: Você sabe que vai ter que enviar a
chave para descriptografar o código junto com o programa de alguma
forma, e que não vai ser possível garantir a "segurança" do seu
código, certo?
--
-alex
http://www.artisancoder.com/
Mas foi exatamente o que eu disse. A chave vai ter que estar no
binário em algum lugar. Você pode dificultar que achem a chave, mas
nunca impedir. Uma idéia é espalhar os bytes da chave pelo programa e
reconstruir a chave em tempo de execução. Então, tendo isso em mente,
minha sugestão é estudar a API da biblioteca OpenSSL, que é rica, bem
testada e tem uma licença bem permissiva.
Por exemplo:
http://stackoverflow.com/questions/1152555/encrypting-decrypting-text-strings-using-openssl-ecc
--
-alex
http://www.artisancoder.com/
Encripte do modo que voc� quiser. Para executar um programa Lua encriptado,
escreva um "reader" que decripta ao carregar:
http://www.lua.org/manual/5.1/manual.html#lua_Reader
Use luaL_loadfile como exemplo:
http://www.lua.org/source/5.1/lauxlib.c.html#luaL_loadfile
Use um loader/searcher, se for usar require:
http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders
Algum tempo atras adotei uma solucao parecida com uma linguagem script: peguei o codigo e dentro do leitor, coloquei uma funçao que lia um formato binario que eu criei (coisa como mudar letras, essas coisas so mente para evitar o obvio e compactei com gzip) e depois converti o codigo txt nesse formato. Usei isso por muitqo tempo ate nao usar mais essa linguagem...
Abs,
Bruno
Enviado via iPad
> --
> Lua BR - http://groups.google.com/group/lua-br
Se vc quiser proteger alguma coisa localmente, o que muitas aplicações
fazem é usar algoritmos como 3DES ou AES para guardar um arquivo de
senhas criptografadas no disco. O usuário tem uma senha mestre que
descriptografa o arquivo de senhas e aí é possível ler a senha remota
de dentro desse arquivo. Acho que o lcrypt dá suporte a esses
algoritmos.
Já na parte remota, vc pode usar conexões SSL/TLS para estabelecer
canais seguros. O cliente só precisa ter o certificado público do
servidor. Como o certificado é público, não tem problema de ficar no
disco e alguém ler, o problema é se alguém trocar ele por outro.
(LuaSec é um binding que provê essa funcionalidade)
Depois da conexão segura estabelecida, vc pode confiar que está tudo
ok e trafegar a senha "aberta". Mas se vc acredita que a conexão ainda
assim não é tão segura (alguém trocou o certificado...), vc pode
tentar a abordagem de "desafio", onde a senha não trafega na rede. [1]
abs
--
bruno
2012/2/1 Demonbholder XTibia <demonb...@xtibia.com>:
> O problema que eu estou tendo é o seguinte:
>
> eu mando uma string via socket do cliente para o servidor com as
> informações de id e senha e de uma conta. O servidor checa e confere
> se está correto, se estiver, ele retorna uma outra string para o
> cliente.
>
Bem, você imaginou a solução mais errada possível para a
situação. A senha "plain-text" nunca deve passar pelo socket. Procure
por "password message digest" no Google.
--
-alex
http://www.artisancoder.com/