[Álgebra aplicada] Resolva o problema MQ com o solucionador SMT

Resolvendo problemas MQ com solucionadores SMT


Resolver o problema MQ com SAT tornou-se uma das principais ideias para resolver o problema MQ, mas sua complexidade variável é alta, então eu coloco meus olhos no solucionador SMT com uma teoria de descrição mais forte e dou uma implementação preliminar;


problema MQ

A unidirecionalidade de mapas polinomiais multivariados é que é computacionalmente difícil encontrar soluções para equações polinomiais multivariadas (o problema MP); em particular, se os polinômios multivariados envolvidos no problema MP consistem apenas em polinômios quadráticos, o problema é chamado de problema MQ (para Muitos problemas MQ equivalentes a protocolos criptográficos também podem limitar coeficientes e soluções em F 2 \mathbb{F}_2F2superior):

f 1 ( x 1 , … , xn ) = ∑ 1 ≤ i ≤ j ≤ naij ( 1 ) xixj + ∑ 1 ≤ i ≤ nbi ( 1 ) xi + c ( 1 ) = d 1 , f 2 ( x 1 , … , xn ) = ∑ 1 ≤ i ≤ j ≤ naij ( 2 ) xixj + ∑ 1 ≤ i ≤ nbi ( 2 ) xi + c ( 2 ) = d 2 , ⋮ fm ( x 1 , … , xn ) = ∑ 1 ≤ i ≤ j ≤ naij ( m ) xixj + ∑ 1 ≤ i ≤ nbi ( m ) xi + c ( m ) = dm , \begin{aligned} f_{1}\left(x_{1}, \ldots, x_{ n}\right) &=\sum_{1 \leq i \leq j \leq n} a_{ij}^{(1)} x_{i} x_{j}+\sum_{1 \leq i \leq n } b_{i}^{(1)} x_{i}+c^{(1)}=d_{1}, \\ f_{2}\left(x_{1}, \ldots, x_{n} \right) &=\sum_{1 \leq i \leq j \leq n} a_{ij}^{(2)} x_{i} x_{j}+\sum_{1 \leq i \leq n} b_ {i}^{(2)} x_{i}+c^{(2)}=d_{2}, \\ & \vdots \\ f_{m}\left(x_{1}, \ldots, x_ {n}\direita) &=\sum_{1 \leq i \leq j \leq n} a_{ij}^{(m)} x_{i} x_{j}+\sum_{1 \leq i \leq n} b_{i}^{(m)} x_{i}+c^{(m)}=d_{m}, \end{alinhado}f1( x1,,xn)f2( x1,,xn)fm( x1,,xn)=1 i j naeu j( 1 )xeuxj+1 i nbeu( 1 )xeu+c( 1 )=d1,=1 i j naeu j( 2 )xeuxj+1 i nbeu( 2 )xeu+c( 2 )=d2,=1 i j naeu j( m )xeuxj+1 i nbeu( m )xeu+c( m )=dm,

O significado de resolver o problema MQ : MPKC (PKC baseado em multivariada), uma criptografia de chave pública baseada na dificuldade do problema MQ (quadrática multivariada), é considerada mais rápida do que muitos outros concorrentes e, portanto, tornou-se um hotspot de pesquisa na comunidade de criptografia pós-quântica. Ataques algébricos A ideia principal é descrever as atividades de criptografia intrínsecas do sistema criptográfico como um sistema de equações multivariadas entre a entrada (chave) e a saída, e recuperar a chave resolvendo a sobredeterminação de baixa ordem ou sistema de equações esparsas (isto é, para resolver o problema MQ), que é necessário para lidar com a dificuldade computacional de resolver equações multivariadas esparsas sobredeterminadas de baixa ordem em larga escala; porque tal método algébrico para descrever protocolos criptográficos tem boa versatilidade , a pesquisa de métodos para resolver problemas de MQ é de grande valia para a criptoanálise.


solucionador SMT

Fornecemos uma introdução inicial aos solucionadores SMT na postagem do blog Introdução ao SMT;

A base do problema SMT (Satisfability Modulo Theories) é a fórmula lógica de primeira ordem, que complementa termos e quantificadores com base na lógica proposicional. A função e os símbolos predicados na fórmula precisam ser explicados com a teoria de fundo correspondente. Normalmente , a fórmula SMT é palavra infinita (existe ∃ \existe、 qualquer∀ \forall ) da fórmula lógica de primeira ordem (fórmula livre de quantificador), o problema de determinar a satisfatibilidade da fórmula é chamado de problema SMT. A capacidade de solução é bastante aprimorada e, claro, a complexidade do problema também aumenta.

insira a descrição da imagem aqui
Do clássico solucionador SMT T \mathcal{T}Pode-se ver no algoritmo de T -DPLL que o solucionador SMT é uma combinação do solucionador SAT e do solucionador teórico SMT; o solucionador teórico SMT é responsável por analisar os conflitos ou conexões entre cláusulas lógicas para introduzir contradições ou aprender novas cláusulas , para melhorar a eficiência da solução, a essência desse efeito é que ele introduz a lógica de primeira ordem, que é a maior diferença entre o solucionador SMT e o solucionador SAT;


Solução SMT do problema MQ

Suponha que o problema MQ a ser resolvido seja o seguinte:

# ---------------- EQUATIONS ------------------------------
t1*t7 + t2*t8 + t2*t9 + t7*t11 + t4*t12 + t10*t13 + t6*t14 + t11*t14 + t10*t15 + t11*t15 + t1*t16 + t11*t16 + t3 + t6 + t9 + t14 = 0;
t2*t6 + t1*t7 + t4*t7 + t3*t10 + t9*t10 + t9*t11 + t2*t12 + t1*t14 + t9*t14 + t9*t15 + t10*t15 + t4*t16 + t13 + 1 = 0;
t1*t4 + t1*t6 + t5*t6 + t1*t8 + t7*t9 + t2*t10 + t6*t10 + t8*t10 + t1*t11 + t4*t11 + t2*t12 + t9*t12 + t15*t16 = 0;
t1*t6 + t3*t6 + t5*t6 + t4*t8 + t4*t9 + t5*t10 + t7*t10 + t7*t11 + t4*t13 + t11*t14 + t3*t15 + t6*t15 + t7*t15 + t10*t16 + t15*t16 + t8 = 0;
t1*t2 + t5*t7 + t3*t8 + t4*t8 + t6*t8 + t2*t9 + t5*t9 + t9*t14 + t4*t15 + t13*t15 + t5*t16 + t15*t16 + t3 + t5 + t9 + t15 = 0;
t1*t4 + t4*t15 + t6*t16 + t12*t16 + t14*t16 = 0;
t1*t4 + t2*t5 + t2*t7 + t1*t8 + t2*t8 + t3*t9 + t5*t9 + t7*t9 + t8*t12 + t3*t13 + t4*t13 + t10*t13 + t13*t14 + t1*t15 + t12*t15 + t1 + t6 + 1 = 0;
t6*t8 + t5*t10 + t7*t10 + t2*t12 + t6*t12 + t9*t12 + t11*t13 + t8*t14 + t10*t14 + t4*t15 + t11*t16 = 0;
t1*t2 + t1*t4 + t3*t6 + t1*t7 + t2*t9 + t1*t10 + t9*t10 + t3*t13 + t8*t13 + t11*t15 + t1*t16 + t12*t16 + t2 + t10 + t16 = 0;
t1*t6 + t2*t6 + t4*t6 + t6*t7 + t3*t8 + t7*t9 + t6*t10 + t3*t12 + t8*t14 + t4*t16 + t7*t16 + t5 + t9 + t12 + t15 = 0;
t5*t6 + t2*t7 + t6*t8 + t7*t8 + t8*t12 + t5*t14 + t13*t14 + t4*t15 + t10 = 0;
t3*t4 + t2*t6 + t6*t7 + t2*t8 + t5*t9 + t2*t11 + t8*t13 + t9*t13 + t13*t15 + t4*t16 + t9*t16 + t3 + t11 = 0;
t5*t7 + t7*t10 + t2*t11 + t7*t11 + t3*t13 + t10*t13 + t11*t13 + t8*t14 + t1*t15 + t9*t15 + t14*t15 + t1*t16 + t2*t16 + t6*t16 + t2 + t8 + t12 + 1 = 0;
t1*t3 + t1*t5 + t2*t8 + t7*t9 + t1*t10 + t3*t10 + t4*t10 + t5*t14 + t14*t15 + t5*t16 + t6*t16 + t14*t16 + t12 + 1 = 0;
t2*t4 + t8*t9 + t2*t11 + t9*t11 + t9*t12 + t6*t13 + t4*t15 + t5*t15 + t13*t15 + t7*t16 + t13*t16 + t3 + t4 = 0;
t2*t3 + t5*t8 + t8*t9 + t2*t10 + t2*t11 + t2*t13 + t12*t13 + t5*t14 + t10*t14 + t7*t15 + t2*t16 + t5*t16 + t10*t16 + t11*t16 + 1 = 0;
t1*t4 + t4*t6 + t6*t9 + t5*t11 + t8*t12 + t1*t15 + t5*t15 + t6*t16 + t7 + t8 + t13 = 0;
t2*t5 + t2*t6 + t5*t6 + t2*t9 + t2*t11 + t7*t13 + t1*t14 + t1*t15 + t5*t15 + t8*t15 + t12*t15 + t1*t16 + t7*t16 + t7 + t10 + t11 + t13 = 0;
t3*t7 + t4*t10 + t3*t13 + t10*t13 + t1*t14 + t5*t14 + t13*t14 + t10*t16 + t12 = 0;
t1*t4 + t1*t7 + t7*t9 + t4*t10 + t6*t11 + t8*t11 + t8*t12 + t9*t13 + t10*t13 + t6*t14 + t10*t14 + t1*t15 + t2*t16 + t10*t16 = 0;
t4*t5 + t4*t8 + t5*t9 + t6*t11 + t4*t12 + t5*t13 + t9*t13 + t3*t14 + t8*t16 + t1 + t6 + 1 = 0;
t1*t2 + t4*t7 + t7*t8 + t2*t11 + t8*t12 + t12*t13 + t6*t14 + t7*t14 + t9*t14 + t13*t14 + t3*t15 + t7*t15 + t4*t16 + t6 + t7 = 0;
t1*t4 + t2*t7 + t4*t7 + t1*t8 + t10*t12 + t11*t16 + t6 = 0;
t3*t6 + t4*t6 + t1*t8 + t6*t8 + t3*t9 + t4*t10 + t2*t11 + t8*t11 + t9*t11 + t2*t12 + t3*t12 + t6*t12 + t2*t13 + t10*t13 + t6*t15 + t1*t16 + t8*t16 = 0;
t4*t5 + t9*t10 + t3*t11 + t5*t12 + t9*t15 + t6*t16 + t7 + t11 + t14 = 0;
t1*t3 + t3*t7 + t5*t7 + t6*t7 + t7*t9 + t1*t10 + t7*t11 + t3*t12 + t4*t13 + t7*t13 + t5*t15 + t13*t16 + t16 + 1 = 0;
t3*t4 + t3*t6 + t1*t8 + t4*t8 + t6*t8 + t8*t9 + t5*t10 + t10*t11 + t2*t12 + t11*t13 + t2*t14 + t13*t14 + t2*t15 + t10*t15 + t3*t16 + t15*t16 + t9 + t16 + 1 = 0;
t2*t5 + t6*t7 + t4*t10 + t5*t11 + t6*t11 + t9*t11 + t1*t12 + t9*t12 + t4*t15 + t10*t15 + t12*t15 + t14 + t15 = 0;
t1*t3 + t3*t4 + t2*t5 + t3*t9 + t3*t12 + t6*t12 + t9*t13 + t3*t15 + t12*t15 + t15 = 0;
t1*t2 + t6*t8 + t3*t9 + t8*t9 + t6*t10 + t7*t10 + t8*t10 + t1*t11 + t2*t11 + t4*t12 + t7*t12 + t8*t12 + t6*t13 + t9*t13 + t10*t13 + t12*t13 + t13*t15 + t12*t16 + t15*t16 + t2 = 0;
t1*t5 + t4*t5 + t6*t7 + t6*t8 + t8*t9 + t6*t12 + t11*t13 + t3*t14 + t8*t14 + t13*t14 + t6*t15 + t12*t15 + t3 + t10 + t13 = 0;
t6*t8 + t2*t10 + t3*t10 + t3*t11 + t4*t13 + t3*t14 + t2*t15 + t3 + t10 = 0;

A solução desse sistema de equações é:

{
    
    t1: 0, t2: 0, t3: 1, t4: 0, t5: 1, t6: 1, t7: 1, t8: 0, t9: 1, t10: 1, t11: 1, t12: 1, t13: 0, t14: 0, t15: 1, t16: 0}

套用LA ( Z ) \mathcal{LA}(\mathbb{Z})L A ( Z ) teoria (consulte "SMT Solvers-Teoria e prática [Clark Barrett]" para obter detalhes), então a cláusula de entrada do solucionador SMT é realmente (aqui também podemos colocar o símbolo original t 1 , . .. , t 16 t_1,..., t_{16}t1,... ,t16Substituído por c 0 , . . . , c 15 c_0,...,c_{15}c0,... ,c15):

∀ ci , 0 ≤ ci ≤ 1 , ci ∈ N \forall c_i, 0\le c_i \le 1,c_i \in \mathbb{N}ceu,0ceu1 ,ceuN

As cláusulas de qualificação para cada equação são:

∃ c 0 , . . . , c 15 , fj ( c 0 , . . . , c 15 ) ≡ 0 mod 2 \exist c_0,...,c_{15},f_j(c_0,...,c_{15}) \equiv 0 \ texto{ mod }2c0,... ,c15,fj( c0,... ,c15)0  modo  2

Em seguida, use o pacote z3-solver do Python3.6 para resolver:

... ... # 导入包和读取方程组的函数...
SMT_SOLVER = Solver();
MAX_USED_VARS = 16;
ITEMS_VAR_USED = ITEMS_ALL[0:MAX_USED_VARS];
EQUATIONS_MQ = mq_coeff_2_poly("mq20.coeff",MAX_USED_VARS,ITEMS_VAR_USED);

for MONOMIAL in ITEMS_VAR_USED:
    SMT_SOLVER.add(MONOMIAL<=1);SMT_SOLVER.add(MONOMIAL>=0);

for EQUATION in EQUATIONS_MQ:
    SMT_SOLVER.add(EQUATION%2 == 0);

print(SMT_SOLVER.check());
print(SMT_SOLVER.model());

Obtenha o resultado:

sat
[c9 = 1,c15 = 0,c10 = 1,c3 = 0,c6 = 1,c5 = 1,c14 = 1,c0 = 0,c13 = 0,c4 = 1,c7 = 0,c8 = 1,c1 = 0,c11 = 1,c2 = 1,c12 = 0]
[Finished in 1.6s]

Também descobri que quando o número de argumentos n > 16 n> 16n>O solucionador foi paralisado às 16 horas, e as razões específicas ainda estão sendo consideradas, e mais experimentos são necessários para explicar esse fenômeno;

Acho que você gosta

Origin blog.csdn.net/hanss2/article/details/122225153
Recomendado
Clasificación