Jump to content
Sign in to follow this  
tripes2011

Encriptação ficheiros

Recommended Posts

tripes2011

Boa noite,

estou a desenvolver uma aplicação que consiste no tipo client/server application.

Pretendo que o cliente envie para o servidor varios ficheiros (genero de partilha)... estes ficheiros não podem estar perceptiveis para o servidor (ou seja o servidor nao os pode ver normalmente, tem que estar encriptados) e são de seguida partilhados com outros utilizadores.

A minha questão é, como é que é possivel eu (utilizador 1) enviar um ficheiro A para o servidor, este é logo encriptado... e de seguida um utilizador 2 e um utilizador 3 conseguir obter esse ficheiro e ser desencriptado ?

A minha duvida não é o enviar ficheiros... etc, é só mesmo que metodo de encriptação se pode usar de modo a o servidor nunca poder ter os ficheiros desencriptados... mas no entanto quando eu partilho o ficheiro com A, B, C... estes poderem sacar o ficheiro e abri-lo normalmente.

Share this post


Link to post
Share on other sites
KTachyon

O correcto seria encriptares o ficheiro antes de o enviares para o servidor. A melhor forma seria utilizares chaves assimétricas para encriptar/desencriptar ficheiros. Ou seja, cada utilizador irá gerar um par de chaves, uma delas será a chave privada, a outra será a chave pública. A chave pública é partilhada entre os utilizadores (por exemplo, por meio do servidor).

Quando encriptas os ficheiros com a chave pública do utilizador de destino, esse ficheiro só pode ser desencriptado pelo utilizador que tem a chave privada (que não é nunca trocada, daí o nome "privada").

Se não me engano,  existem interfaces Java que permitem utilizar o GPG, por exemplo, para gerar chaves e encriptar/desencriptar ficheiros.

O problema aqui é que, encriptando o ficheiro com a chave pública de outro utilizador só permite que esse outro utilizador possa desencriptar, não funciona para vários utilizadores.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Sergiosaturn

Saudações,

Pelo o que eu percebi o que tu queres fazer é enviar um ficheiro de um cliente para um servidor, e vice-versa. Sugiro que para isso uses o SSL, e assim uma boa parte dos teus problemas de encriptação estarão resolvidos.

Share this post


Link to post
Share on other sites
tripes2011

Sim, ja tinha pensado nessa maneira usando chaves assimetricas. Mas o problema é que não pode haver ficheiros 'repetidos'. Ou seja se eu quiser partilhar o mesmo ficheiro com 10 pessoas diferentes, desse modo tenho que ter 10 ficheiros diferentes, um para cada utilizador. Nao pretendo isso, pretendia uma maneira que só ficasse um ficheiro encriptado.

Share this post


Link to post
Share on other sites
KTachyon

Bem... podes sempre partilhar uma chave única, mas tens sempre que ter cuidado por onde a passas.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Anusko

Sim, ja tinha pensado nessa maneira usando chaves assimetricas. Mas o problema é que não pode haver ficheiros 'repetidos'. Ou seja se eu quiser partilhar o mesmo ficheiro com 10 pessoas diferentes, desse modo tenho que ter 10 ficheiros diferentes, um para cada utilizador. Nao pretendo isso, pretendia uma maneira que só ficasse um ficheiro encriptado.

Não propriamente. Podes cifrar com a chave privada (sim, privada, não é engano) e só quem tiver a publica correspondente pode decifrar. É uma perversão ao sistema mas funciona. Tem em atenção que a divisão dos bits pelo par não é, por norma, equitativa. A chave pública tende a ficar com um intervalo inferior, portanto este método pode resultar num sistema fácil de crackar.

Eu para uma cadeira de segurança fiz um projecto que se assemelha à tua descrição. Cada user tinha um par chave pública/privada. O servidor servia simultaneamente de storage e de CA. Quando enviava um ficheiro, associava-lhe a chave simétrica cifrada com a minha pública. Quando queria partilhar esse ficheiro com outro utilizador, envia-lhe um convite, que consistia na chave simétrica usada para cifrar o ficheiro, assinada com a minha privada e cifrada com a pública dele. Quando ele aceita o convite, cifra a simétrica com a publica dele e, tal como eu já tinha feito, associa-a ao ficheiro no servidor. Na prática o servidor só gere as permissões de acesso (metadados).

O ponto fraco deste sistema é q se partilhas um ficheiro com alguém mal intencionado, corres o risco de ele te o "roubar", pois pode enviar o ficheiro cifrado com outra chave. Ora isto é mais ou menos o mesmo que esse utilizador mal intencionado te apagar o ficheiro, por isso a lição é que a partir do momento em se partilha, corre-se os riscos.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.