4 svar
489 visningar
KriAno 434
Postad: 9 mar 2020 20:00 Redigerad: 9 mar 2020 21:15

RSA-kryptering

Hej!

Jag undrar om jag kan bestämma den privata nyckeln d såhär:

Dekrypterat meddelande: x=yd (mod n) 

Krypterat meddelande: y=xe (mod n)

 Jag vet att e=169, n=100619 (offentliga nycklar).

n  = p*q , där p och q är två stora primtal. Det ger p=239 och q=421.

a: (p-1)*(q-1)= 99 960

Sedan bestäms den privata nyckeln d: e × d ≡ 1 (mod a)

Det ger den diofantiska ekvationen:

d= 99 960×m +1169

Om m = 459 är d=271 489. 

Detta verkar stämma.

Ex. Om meddelandet i klartext är "72", så ger det det krypterade meddelandet y=72169 (mod 100619)= 27565.

Det dekrypterade meddelandet blir: x=27565271489 (mod 100619) = 72

Men kan jag vara säker på att d verkligen är 271 489? Diofantiska ekvationen kan väl ha fler lösningar? Kan det finns fler privata nycklar? Kan d vara negativ?

Mvh KriAno

Snerf 24 – Fd. Medlem
Postad: 9 mar 2020 21:15 Redigerad: 9 mar 2020 21:17

Enligt länk ska 1<d<a. Därför är d=271489 >99960 större än vad vi söker. Just denna diofantiska ekvation kommer ha oändligt antal lösningar enligt Bézouts identitet och utökade Euklides algoritm. Kan förklara varför om det önskas. Enligt WolframAlpha är den generaliserade lösningen d=99960n+71569 och m= 169n+121för alla heltal n. För att hitta detta behöver man använda utökningen av Euklides algoritm. Alltså kan d vara negativt men det är inte vad vi söker.

KriAno 434
Postad: 9 mar 2020 21:29
Snerf skrev:

Enligt länk ska 1<d<a. Därför är d=271489 >99960 större än vad vi söker. Just denna diofantiska ekvation kommer ha oändligt antal lösningar enligt Bézouts identitet och utökade Euklides algoritm. Kan förklara varför om det önskas. Enligt WolframAlpha är den generaliserade lösningen d=99960n+71569 och m= 169n+121för alla heltal n. För att hitta detta behöver man använda utökningen av Euklides algoritm. Alltså kan d vara negativt men det är inte vad vi söker.

Tack för svar! 

Skulle vara jättesnällt om du kunde förklara!

Snerf 24 – Fd. Medlem
Postad: 9 mar 2020 23:02 Redigerad: 9 mar 2020 23:04

Bézouts identitet säger att om ax+by=gcd(a,b) där a,b är heltal kan man alltid hitta ett heltalspar (x0,y0) som uppfyller ax0+by0=gcd(a,b).  Bevis finns till detta men jag utelämnar det för enkelhetens skull. Vi kan hitta en lösning genom att använda Euklides algortim baklänges. Algoritmen förklaras mycket bra i denna video https://youtu.be/FjliV5u2IVw

 

Om (x0,y0) är en lösning till ax+by=gcd(a,b) så är alla heltalslösningar på formen x=x0+n·bgcd(a,b), y=y0-n·agcd(a,b).

Bevis:

Givet lösningen (x0,y0) då är

ax+by=ax0+by0a(x-x0)=-b(y-y0)agcd(a,b)(x-x0)=-bgcd(a,b)(y-y0)

Eftersom agcd(a,b) och bgcd(a,b) är relativt prima finns det  n så att x-x0=n·bgcd(a,b) och y-y0=n·-agcd(a,b),

vi kan lösa för x och y vilket slutför beviset. 

 

Om du vill kan du nu testa att komma fram till en allmän lösning till din diofantiska ekvation, 169d-99960m=1.

KriAno 434
Postad: 10 mar 2020 18:21 Redigerad: 10 mar 2020 18:25
Hur Snerf skrev:

Enligt länk ska 1<d<a. Därför är d=271489 >99960 större än vad vi söker. Just denna diofantiska ekvation kommer ha oändligt antal lösningar enligt Bézouts identitet och utökade Euklides algoritm. Kan förklara varför om det önskas. Enligt WolframAlpha är den generaliserade lösningen d=99960n+71569 och m= 169n+121för alla heltal n. För att hitta detta behöver man använda utökningen av Euklides algoritm. Alltså kan d vara negativt men det är inte vad vi söker.

Hur kommer det sig att jag får rätt när d > a? Då d=99960n+71569, betyder det att det finns flera privata nycklar och inte bara 1 som fungerar?

Svara
Close