Uma criptografia totalmente homomórfica pode ser usada para execução de código inconsciente?

22

Depois de ler esta resposta há algum tempo, me interessei pela criptografia totalmente homomórfica. Depois de ler a introdução da tese de Gentry, comecei a me perguntar se o esquema de criptografia dele poderia ser usado para a execução de código inconsciente, conforme definido no terceiro parágrafo.

Em um esquema de criptografia totalmente homomórfica, geralmente criptografamos alguns dados, enviando-os para um ambiente hostil onde uma determinada função é computada nos dados, cujo resultado é então enviado de volta (criptografado), sem que o adversário descubra quais são os dados recebidos ou o resultado da função é

Com a execução de código inconsciente, quero dizer que criptografamos um código projetado para resolver algum problema e o enviamos para um ambiente hostil. O adversário quer usar para resolver , mas não queremos que ele saiba como funciona. Se ele tiver uma entrada para , ele poderá criptografar e, em seguida, usar (algum esquema de criptografia) com , que retornará a saída (a solução de para a entrada I ) (não criptografada).CPCPCIPICIOPI) O esquema de criptografia garante que o adversário nunca descubra como o código funciona, ou seja, para ele funciona como um oráculo.

O principal uso prático (eu posso pensar) para esse esquema de criptografia seria tornar a pirataria mais difícil ou até impossível.

A razão pela qual acho que isso pode ser possível usando um esquema de criptografia totalmente homomórfica é porque podemos executar circuitos arbitrários em dados criptografados, em particular uma máquina de Turing universal. Poderíamos então criptografar o código como se fossem dados e, em seguida, usar o circuito para uma máquina de Turing universal nesses dados criptografados para executar o código.

Faço isso como uma pergunta aqui, porque não sei se essa idéia é utilizável: nunca fui muito além da introdução da tese de Gentry, e meu conhecimento sobre criptografia é limitado. Além disso, não sei se já existe um termo frequentemente usado para execução de código inconsciente: tentei pesquisar no Google pela ideia, mas sem saber o termo adequado, não encontrei nada.

Posso pensar em vários problemas que podem causar problemas com essa abordagem. Primeiramente, se usarmos uma criptografia totalmente homomórfica sem modificação, o resultado da computação ( ) será criptografado. Seria, portanto, inútil para o adversário que pretenda utilizar o seu código para resolver P . Embora isso ainda possa ser útil para, digamos, a computação em nuvem, não é isso que eu quero alcançar.OP

Em segundo lugar, porque estamos usando circuitos e não máquinas de Turing arbitrárias, não podemos usar quantidades arbitrárias de memória: estamos limitados a uma quantidade predeterminada de memória. Isso significa que, se quisermos executar um programa dessa maneira, o espaço ocupado pela memória será sempre o mesmo, ou seja, o pico de uso da memória.

Por fim, as constantes envolvidas quase certamente eliminariam qualquer uso prático desse sistema, mas acho que a idéia é interessante.

Alex ten Brink
fonte
você tem certeza do termo "execução de código inconsciente"? Eu procurei por um tempo e não consegui nada!
Deyaa
Nem um pouco: eu mesmo criei o termo, pois não sabia o termo adequado para ele. Ocultação e ofuscação são aparentemente os termos regulares para o conceito.
Alex10 Brink

Respostas:

17

Infelizmente, há um resultado que proíbe teoricamente a "execução de código inconsciente":

Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan e Ke Yang. Sobre a (im) possibilidade de programas ofuscantes , AVANÇOS NA CRIPOLOGOLOGIA - CRYPTO 2001.

Aqui estão os links:

O resumo diz:

Informalmente, um ofuscador é um "compilador" (eficiente, probabilístico) que recebe como entrada um programa (ou circuito) P e produz um novo programa O ( P ) que tem a mesma funcionalidade que P e ainda é "ilegível" em algum sentido . Os ofuscadores, se existirem, teriam uma ampla variedade de aplicativos criptográficos e teóricos da complexidade, desde a proteção de software à criptografia homomórfica até os análogos teóricos da complexidade do teorema de Rice. A maioria dessas aplicações é baseada na interpretação da condição de "ilegibilidade" na ofuscação, significando que O ( P )OPO(P)PO(P)é uma "caixa virtual negro", no sentido de que nada se pode de forma eficiente calcular dada , pode-se também de forma eficiente computar dado acesso oráculo para P .O(P)P

Neste trabalho, iniciamos uma investigação teórica de ofuscação. Nosso principal resultado é que, mesmo sob formalizações muito fracas da intuição acima, a ofuscação é impossível. Provamos isso construindo uma família de funções que são inerentemente imperceptíveis no seguinte sentido: existe um predicado π tal que (a) dado qualquer programa que calcule uma função f em F , o valor π ( f ) pode ser calculado com eficiência , (b) dado acesso do Oracle a uma função (selecionada aleatoriamente) f em F , nenhum algoritmo eficiente pode calcular π ( f )FπfFπ(f)fFπ(f) muito melhor do que adivinhação aleatória.

TC 0 0

MS Dousti
fonte
Bem, isso meio que amortece as coisas. Acabei de ler como eles provaram seus resultados: fiquei particularmente perplexo quando li que se supõe que o ofuscador tenha acesso ao código fonte do programa adversário! (embora eu poderia apenas ter entendido mal o papel)
Alex ten Brink
5
Entendo que esses resultados se aplicam apenas ao modelo "antigo" (sem êxito) de ofuscação usando caixas-pretas virtuais, e que agora os pesquisadores da área buscam adotar uma noção mais fraca de ofuscação com a esperança de que algumas garantias possam ser obtidas. Uma das direções da pesquisa é adotar a criptografia totalmente homomórfica, e assim diria que a questão está aberta. Lembro-me de ter participado de uma palestra da Microsoft Research neste verão sobre ofuscadores de ponto fixo e caixas pretas virtuais em que o pesquisador fez exatamente esse ponto.
Ross Snider
3
Um pesquisador da área (ou um dos nomes impressionantes da lista de autores) pode comentar?
Ross Snider
1
@Ross: Sim, eu gostaria outros pesquisadores no campo de comentário, bem ...
MS Dousti
@ Ross, Sadeq: Alguns dos autores visitam o site de tempos em tempos, espero que eles notem a etiqueta. Ter a pergunta nas páginas de perguntas em destaque também pode ajudar.
Kaveh
15

De fato, embora a criptografia totalmente homomórfica seja muito útil para executar código entre várias partes não confiáveis ​​(veja, por exemplo, este documento ), você precisa de algum tipo de interação, quando a parte que calcula a saída criptografada a envia para a parte que conhece a chave secreta .

A noção que você procura parece suspeitamente próxima à ofuscação do software, pela qual provamos um resultado impossível, mencionado acima. Também escrevi uma vez uma visão geral informal desse artigo, que algumas pessoas podem achar útil.

Dado esse resultado de impossibilidade, há duas maneiras (não disjuntas) de relaxar a definição: restringindo as classes de programas / funções, é necessário que você ofusque ou dando uma noção mais vaga de segurança.

A segunda abordagem talvez seja possível, e comentamos sobre algumas noções fracas do tipo ofuscação em nosso artigo. No entanto, observe que nosso ataque recupera completamente o código fonte original de algum programa, não importa como ele seja ofuscado. Então, você teria que, de alguma forma, fazer uma definição de segurança que trivialize para o caso de nossos contra-exemplos.

A primeira abordagem foi feita para todas as funcionalidades restritas (por exemplo, funções pontuais), mas, novamente, é preciso garantir que a classe não contenha nosso contra-exemplo, o que significa aproximadamente que ela não deve conter funções pseudo-aleatórias.

Boaz Barak
fonte