A execução remota de um algoritmo nos dados e a garantia de resposta não foram adulteradas


8

Estou pensando nesse problema de computação / criptografia / banco de dados há anos e só quero saber se já existem soluções para ele. Para ser sincero, nem sei a que campo exatamente esse problema pertence.

Em poucas palavras: a pessoa A tem uma lista de dados, outra pessoa (B) possui um algoritmo que atribui uma pontuação a cada item dessa lista e depois soma todas essas pontuações para fornecer uma pontuação geral para toda a lista. Como podemos executar o algoritmo na lista de dados para que os dados sejam mantidos extremamente seguros (de preferência nunca deixando a pessoa A), mas para que a pessoa B possa ter certeza de que o algoritmo foi executado corretamente e não foi adulterado.

Aqui está um exemplo: Anna e Bob moram em uma grande vila. Anna tem uma lista em seu computador de todas as coisas que ela fez na aldeia, boas e más. Bob criou um algoritmo de pontuação muito simples para essas listas, que é executado em cada item da lista e dá uma pontuação e, em seguida, adiciona todos esses números para dar a Anna uma pontuação final. Essa pontuação permite que Bob saiba como Anna é benéfica para a comunidade da vila e é específica para a opinião de Bobs. (Isso é mais do que um exemplo, pois esse é realmente o sistema que eu quero criar)

No entanto, Anna não quer dar a Bob sua lista, pois ele tem acesso a informações potencialmente embaraçosas (todos têm esqueletos em seu armário). Bob, no entanto, não confia em Anna para executar seus algoritmos, pois ela pode apenas mentir e dizer a Bob que a pontuação foi muito alta para que Bob tenha mais chances de ajudá-la.

Existem algumas soluções em que eu já pensei, mas todas têm problemas:

A. Encontre uma pessoa aleatória para pegar os dados, execute o algoritmo e envie a pontuação de volta, mas pode ser difícil garantir que essa pessoa aleatória não conheça Anna e tente ajudá-la ou fazer uma cópia dos dados e tente mais tarde rastrear de volta e chantagear Anna.

B. Deixe Anna executar o algoritmo, mas de alguma forma codifique um código de verificação nas pontuações, por exemplo, em vez de classificar um evento como 1 classifique-o como 1.0000000000797, de modo que Bob possa usá-lo posteriormente como um código de verificação para verificar se o dado pontuação está correta. No entanto, essa verificação também pode ser mal utilizada por Bob para indicar quais coisas específicas Anna fez. Também posso imaginar que esse sistema seria trivial para fazer engenharia reversa, para que Anna possa dar uma pontuação falsa com um código de verificação correto, considerando que Anna deve ter acesso total ao algoritmo de Bob para executá-lo.

C. A vila cria um servidor seguro para pegar esses dados e algoritmos e executá-los juntos. No entanto, Anna e Bob realmente não confiam em ninguém o suficiente para fazer isso e não fazem uma cópia dos dados ou modificam as pontuações, a menos que haja alguma arquitetura fundamentalmente segura para isso. Também eu preferiria que este seja um sistema P2P.


E se o algoritmo de pontuação de Bob for, por exemplo, a representação binária de se Anna fez ou não fez cada uma das coisas da lista? (Então 1 * <Anna fez a coisa 1> + 2 * <Anna fez a coisa 2> + 4 * <Anna fez a coisa 3> ...) Então Bob terá acesso aos dados de Anna apenas com base na saída do algoritmo de pontuação.
TLW 15/10

1
Gostaria de saber se a criptografia homomórfica tem algum jogo aqui? Porém, ele resolve o problema inverso - permite que outro sistema calcule os dados sem aprender os valores com os quais está trabalhando.
Alan Wolfe

@TLW Não tenho certeza se entendi o que você está dizendo ... quem está executando o algoritmo nessa situação e ainda como podemos ter certeza de que o valor final não é interceptado e adulterado?
Robin A

Respostas:


9

Na comunidade de criptografia, essa tarefa é conhecida como computação delegada ou delegação verificável. Você deseja permitir que o servidor (a "nuvem") faça o trabalho por você, mas também deseja que a nuvem forneça alguma prova de que ele realmente executou o cálculo (e não apenas produziu uma saída aleatória e fugiu com o seu dinheiro).

Um ponteiro, em cima da minha cabeça, é "Delegando a computação: provas interativas para trouxas" (Goldwasser, Kalai e Rothblum, J. ACM (62), 2015). Provavelmente existem outras soluções, olhe para dentro.


1

Há um novo campo de criptografia homomórfica que geralmente atende aos seus requisitos:

A criptografia homomórfica é uma forma de criptografia que permite que os cálculos sejam realizados no texto cifrado, gerando um resultado criptografado que, quando descriptografado, corresponde ao resultado das operações executadas no texto sem formatação.

A entidade de processamento não pode saber "nada" sobre o texto cifrado, apenas aparece como dados aleatórios, apenas pode corromper a computação e o cliente precisa de alguma maneira de detectar / defender dados / cálculos corrompidos. isso pode ser feito com resumos de mensagens e computação tolerante a falhas .

A criptografia homomórfica só foi demonstrada como teoricamente possível um pouco recentemente, portanto, está mais em estágios conceituais e parece não ter sido implementada muito na prática até agora, mas, eventualmente, a idéia é que ela possa aparecer como uma capacidade (por exemplo, semelhante a outros serviços padrão como virtualização) em grandes clusters de computação padronizados, como Amazon ECC ou Google Compute Engine .


Isso não responde à pergunta que foi feita. A criptografia homomórfica não permite (por si só) que B verifique se o algoritmo foi executado corretamente e se os dados não foram violados. A criptografia homomórfica garante apenas confidencialidade, não integridade, mas a questão é sobre integridade.
DW

a pergunta é sobre "executar um algoritmo em dados remotamente", que é a razão de ser da criptografia homomórfica, e a resposta aborda isso diretamente junto com as preocupações extras de adulteração que digere as mensagens e as técnicas de computação tolerantes a falhas.
vzn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.