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).) 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.
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.