Am o sarcină în criptografie și am nevoie de un indiciu (VA ROG NU SOLUȚIE).
Sarcina este:
Pot trimite mesaje (numere digitale) la un container Docker. Răspunsul sunt valorile p,q,g,z1,s,r și hashvalue(m+z1). Deci... când introduc numărul 1 primesc valorile DSA folosite pentru semnare.
Necunoscută este valoarea lui k, z2 și x (cheia privată)
Se știe că p,q,g,z1,z2 sunt fixe pentru fiecare mesaj. Deci sunt la fel de fiecare dată.
Se știe că valoarea lui k se calculează:
k = g^(valoare hash + z2) mod q
deci - după înțelegerea mea: Pentru a afla valoarea lui k, trebuie să găsesc 2 mesaje care folosesc același k. Dacă am reușit, pot calcula cheia cu
k = (M1 - M2) / (s1 - s2)
Dar cum pot afla că 2 mesaje folosesc același k cu valorile date?
Ce fac de fapt:
Am scris un program Python care iterează prin fiecare mesaj, începând de la mesaj = 0. Apoi calculând k cu formula și ignorând z2 (ceea ce cred că este absolut greșit...). Salvarea valorilor din k calculat într-o matrice. Apoi ridicați mesajul += 1 și procedați la fel. După aceea, compar k din mesajul real cu valorile salvate din mesajele de dinainte, dacă este același. Dar acum sunt la mesajul 2000000. Deci - cred că fac lucrurile greșite.
Sunt total pe drumul greșit?
Pot extrage mai multe valori cu alte mesaje dacă este necesar. Ma poate ajuta cineva?