Pelo isomorfismo do gráfico, sabemos que dois gráficos A e B são isomórficos se houver uma matriz de permutação P tal que
Portanto, para resolver o problema, se dois gráficos são isomórficos, precisamos encontrar uma matriz de permutação P. Acredita-se que o problema seja NP (e NP completo para o caso do isomorfismo do subgrafo). No entanto, encontrei um exemplo para resolver P que parecia promissor para mim e pode ser encontrado em http://en.wikipedia.org/wiki/Permutation_matrix na seção: resolvendo para P.
A confusão que tenho agora é: isso funciona para matrizes maiores? muito grande? Estou certo que a equação acima é difícil de resolver e pode ser candidata a um sistema criptográfico?
Respostas:
O isomorfismo dos grafos foi bem estudado. Um breve resumo: não se sabe que o problema do isomorfismo gráfico está em P (não há algoritmos de tempo polinomial conhecidos), mas não se acredita que esteja completo em NP. Existem algoritmos heurísticos para o isomorfismo de grafos que funcionam extremamente bem na maioria dos casos que surgem na prática. Leia a página da Wikipedia sobre isomorfismo gráfico para obter mais informações.
Quanto à sua abordagem proposta em particular: a página da Wikipedia à qual você vinculou já explica por que esse método não funciona em geral. Esse método funciona apenas se não houver autovalores repetidos na matriz correspondentes ao gráfico de adjacência. Portanto, ele falhará nos gráficos em que existem autovalores repetidos. Esses gráficos não podem ser ignorados. Consequentemente, esse método pode funcionar para alguns gráficos, mas falhará (ou funcionará mal) em outros gráficos, portanto, não é uma solução geral.
O isomorfismo de grafos não é um bom candidato para uma base para um sistema criptográfico, por duas razões. Primeiro, os algoritmos heurísticos existentes são muito bons para resolver o problema na prática e não está claro como gerar instâncias rígidas de isomorfismo de gráfico. Segundo, e mais seriamente, para ser útil para criptografia, precisamos não apenas ter um problema difícil; precisamos ter um "alçapão oculto" que o criador da chave pública possa incorporar, o que facilita o problema para o criador, mas difícil para qualquer outra pessoa detectar. Ninguém sabe como incorporar um "alçapão escondido" no problema de isomorfismo gráfico.
fonte
Como DW observa corretamente, não se sabe que o isomorfismo do gráfico esteja em P e se acredita que não seja NP-hard. Além disso, muitos acreditam que seja no BQP, mas isso não foi comprovado. Isso o coloca na mesma categoria de outros problemas nos quais os sistemas de criptografia normalmente dependem para sua segurança, como fatoração principal e o problema de log discreto, ambos conhecidos por estarem no BQP. (Não sei onde fica o problema de multiplicação inversa da curva elíptica ou o que quer que seja chamado com relação ao BQP, mas não me surpreenderia nem um pouco se todos esses problemas criptograficamente úteis fossem equivalentes em algum sentido).
É verdade que não conhecemos problemas de isomorfismo gráfico, para os quais a solução é "difícil". No entanto, vamos supor por um momento que fizemos. Então sim, você pode usá-lo para criptografia.
Como exemplo, vejamos um sistema de chaves à prova de zero conhecimento com base no isomorfismo do gráfico.
A chave privada de Alice é um gráfico rotulado (os rótulos podem ser apenas números inteiros), que foi construído de forma que é "difícil" verificar o isomorfismo de um gráfico e contém um ciclo hamiltoniano que é "difícil" de encontrar. Sua chave pública é apenas o gráfico rotulado, sem informações sobre o ciclo hamiltoniano. Observe que a derivação da chave privada da chave pública exige a solução do problema do ciclo hamiltoniano, que é difícil para NP e, assumimos, difícil para esse gráfico em particular.
Alice quer convencer Bob de que conhece um ciclo hamiltoniano no gráfico, sem realmente dar a ele o ciclo hamiltoniano. Aqui está como ela faz isso.
Alice envia a Bob um gráfico não marcado. Ela oferece uma escolha: ou ela revelará os rótulos ou um ciclo hamiltoniano no gráfico. Bob joga uma moeda (ou toma uma decisão por outros meios) sobre qual deles ele quer, e Alice faz o que quer que seja que ele pede.
Se Bob pediu que os rótulos fossem revelados, ele pode facilmente verificar (em tempo linear) que o gráfico marcado como novo resultado é o mesmo da chave pública de Alice, mas não consegue encontrar um ciclo hamiltoniano, porque isso seria difícil para o NP. Se, por outro lado, Bob pediu o ciclo Hamiltoniano, ele pode facilmente verificar (novamente, em tempo linear) que o gráfico não rotulado resultante realmente contém um ciclo Hamiltoniano, mas ele não pode verificar se é o gráfico de chave pública de Alice, porque o isomorfismo do gráfico é (presumivelmente) difícil.
Do ponto de vista de Bob, Alice poderia ter tentado enganar Bob, fornecendo um gráfico que possui um ciclo hamiltoniano conhecido, mas que não é isomórfico para sua chave pública, ou fornecendo a ele seu gráfico de chave pública com os rótulos removidos, mas sem conhecer o Ciclo Hamiltoniano. Ela apostaria em Bob fazendo a escolha errada. Supondo que Bob realmente fez sua escolha aleatoriamente, esse truque teria 50% de chance de sucesso.
Portanto, a troca acima é repetida com um gráfico não marcado diferente. Depois den rodadas do protocolo, a probabilidade de Alice enganar Bob com êxito em todas as rodadas é 2- n , que converge muito rapidamente para "tão certo quanto você precisa".
É claro que isso não está nem perto de um sistema prático como está. Além disso, existem algumas coisas óbvias que você pode fazer para torná-lo mais seguro. Por exemplo, em vez de Alice enviar a Bob um gráfico não rotulado, ela poderia apenas enviar um hash. Quando Bob responde, ela pode enviar o gráfico e Bob pode verificar se o gráfico corresponde.
No entanto, você pode criar um sistema de criptografia a partir dele, em princípio, mesmo que não seja muito útil.
fonte