Puncte:0

Algoritm pentru calculul logaritmului discret în grupul de ordin $2^n$

drapel cn

În cursul meu de criptografie, profesorul nostru a spus că rezolvarea problemei logaritmului discret într-un grup de ordine $2^e$ este ușor și ne-a dat următorul algoritm:

Lăsa $G$ fie un grup ciclic cu $|G|=2^e$ și $g\în G$ un generator. Următorul algoritm calculează $x$ astfel încât $h=g^x$:

  • Precalcul: $g^{-1}=g^{n-1}$.

  • Inițializare: $x_0=0$, $b_0=h$, $m_0=\log_2(ord(h))$.

  • Iterații:
    in timp ce $m_i> 0$:
    $x_{i+1}=x_i+2^{e-m_i}$
    $b_{i+1}=b_i(g^{-1})^{2^{e-m_i}}$
    $m_{i+1}=\log_2(\text{ord}(b_{i+1}))$

  • Ieșire: $x=x_i$

Ce vreau să fac este să demonstrez că algoritmul se oprește, că $x$ este într-adevăr logaritmul discret și că funcționează în timp polinomial. Pentru ca algoritmul să se oprească, trebuie doar să verificăm asta $m_{i+1}<m_i~\forall~i$, ceea ce este echivalent cu a arăta că $\text{ord}(b_{i+1})<\text{ord}(b_i)$. Dacă $\text{ord}(b_i)=2^l$ atunci: $$b_{i+1}^{2^l}=(b_i(g^{-1})^{2^{e-m_i}})^{2^l}=b_i^{2^l} (g^{-1})^{2^{e-l}2^l}=1$$ ceea ce demonstrează că $\text{ord}(b_{i+1})\leq\text{ord}(b_i)$, dar nu reușesc să obțin inegalitatea strictă. Pentru celelalte două părți nu am nicio idee bună despre cum să o rezolv...

Sunt un matematician care este începător în criptografie, așa că nu mă deranjează dacă îți asumi cunoștințe de matematică, cu care sunt obișnuit. Multumesc pentru ajutor.

Sam Jaques avatar
drapel us
1) Cred că trebuie să presupunem, de asemenea, că $G$ este ciclic (pentru ca jurnalul discret să fie bine definit, $h$ trebuie să fie în subgrupul ciclic generat de $g$, deci aceasta nu este o restricție reală). Apoi încercați să arătați unele proprietăți ale elementelor cu ordinea 2. (2) Încercați să exprimați $b_i$ în termeni de $h$, $g$ și $x_i$.
Marcos avatar
drapel cn
@SamJaques ai dreptate, am uitat să spun că $G$ este ciclic, mulțumesc
Marcos avatar
drapel cn
@SamJaques Prin inducție am putut demonstra că $b_n=h(g^{-1})^{x_n}$, ceea ce implică desigur că dacă $m_n=0$ avem $b_n=1$ și deci $g ^{x_n}=h$. Acest lucru demonstrează că într-adevăr, atunci când algoritmul se termină, obținem logaritmul discret. Mulțumesc :), mă puteți ajuta să demonstrez că algoritmul rulează în timp polinomial?
kelalaka avatar
drapel in
Determinați dimensiunea de intrare; care este comun în numărul de biți. Apoi determinați numărul de operații. Sunteți sigur că $\log_2$ nu este acoperit?
Marcos avatar
drapel cn
@kelalaka Da, nu este acoperit, deoarece suntem într-un grup de ordin $2^e$, așa că teorema lui Lagrange ne spune că ordinea fiecărui element este un divizor al lui $2^e$ și deci $\log_2(\text{ord }(\cdot))$ va fi întotdeauna un număr întreg.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.