Pergunta

Algumas aplicações web, como o Google Docs, armazenam dados gerados pelos usuários.Dados que só podem ser lidos pelo seu proprietário.Ou talvez não?

Pelo que eu sei, esses dados são armazenados em um banco de dados remoto.Portanto, se alguém com privilégios suficientes no sistema remoto (um administrador de sistema, por exemplo) puder ocultar meus dados, minha privacidade poderá ficar comprometida.

Qual poderia ser a melhor solução para armazenar esses dados criptografados em um banco de dados remoto e que somente o proprietário dos dados pudesse descriptografá-los?Como tornar esse processo transparente para o usuário?(Você não pode usar a senha do usuário como chave para criptografar seus dados, porque você não deveria saber sua senha).

Foi útil?

Solução

Se a criptografia/descriptografia for executada no servidor, não há como garantir que o texto não criptografado não seja despejado em algum lugar de algum arquivo de log ou algo semelhante.

Você precisa fazer a criptografia/descriptografia dentro do navegador usando JavaScript/Java/ActiveX ou qualquer outro.Como usuário, você precisa confiar que o lado cliente do serviço web não enviará de volta as informações não criptografadas ao servidor.

Carlos

Outras dicas

Acho que Carl acertou em cheio, mas queria dizer que com qualquer site, se você está fornecendo qualquer informação confidencial/pessoal/privilegiada, então você tem que ter um certo nível de confiança, e é responsabilidade do provedor de serviços para estabelecer essa confiança.Esta é uma daquelas perguntas que foram feitas muitas vezes, em toda a Internet, desde o seu início, e só continuará a crescer até que todos tenhamos os nossos próprios certificados SSL codificados na nossa impressão digital, e mesmo assim teremos que fazer a pergunta 'Como posso saber se o dedo ainda está preso ao usuário?'.

Bem, eu consideraria um processo semelhante ao Amazons AWS.Você autentica com uma senha privada que não é salva remotamente.Apenas um hash é usado para validar o usuário.Em seguida, você gera um certificado com um dos algoritmos principais e testados há muito tempo e fornece-o a partir de uma página segura.Em seguida, um algoritmo de chave pública/privada pode ser usado para criptografar coisas para os usuários.

Mas o problema principal continua o mesmo:Se alguém com privilégios suficientes puder acessar os dados (diga:hackeou seu servidor), você está perdido.Com tempo e energia suficientes, tudo poderia ser quebrado.É só uma questão de tempo.

Mas acho que algoritmos e aplicativos como GPG/PGP e similares são muito bem conhecidos e podem ser implementados de uma forma que proteja os aplicativos da web - e mantenha a usabilidade em uma pontuação que o usuário médio possa suportar.

editar Eu quero conversar @Carl e Tecnologia desconhecida e adicione sua declaração:Se você não confia no site em si, não divulgue dados privados.Isso antes mesmo de alguém hackear seus servidores...;-)

Auron perguntou:Como você gera uma chave para o cliente criptografar/descriptografar os dados?Onde você armazena essa chave?

Bem, a chave geralmente é derivada de alguma senha que o usuário escolheu.Você não armazena, você confia que o usuário se lembrará disso.O que você pode armazenar talvez seja algum valor salt associado a esse usuário, para aumentar a segurança contra ataques à tabela arco-íris, por exemplo.

É difícil acertar a criptografia ;-) Eu recomendaria olhar o código-fonte para AxCrypt e para Xsecrets'cliente off-line.

Carlos

Não, você não pode usar senhas, mas pode usar hashes de senha.No entanto, o objetivo do Google Docs é compartilhar, portanto, tal método exigiria o armazenamento de uma cópia do documento para cada usuário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top