RSA şifrələnmə metodu
RSA şifrələnmə açıq açar (asimmetrik) əsaslı kriptoqrafiya sistemlərinə aid edilir. Başlıq, üç soyadın (Rivest, Shamir və Adleman) baş hərflərindən götürülmüş qısaltmadır.
Şəkildə soldan sağa: Adi Shamir, Ron Rivest and Len Adleman
Əvvəldən başlayaq :
Yolladığımız məlumatın şifrələnməsi sadə amma deşifrələnməsi çox mürəkkəb olması şərti ilə prosesi realizə etməliyik. Əvvəlcə bizim bildiklərimizi nəzərdən keçirək :
Şifrələnmə zamanı modula qalıqlı bölünmədən (modulo operation) istifadə ediləcək.
Ətraflı baxaq : 313 mod 17 = 12 .
Misalı təsvir edək : 313 – ün 17 – yə bölünməsindən alınan qalıq 12 yə bərabərdir .
Davam edək, şifrələnmə zamanı me (mod n) = c funksiyasından istifadə edirik, prosses sadə yerinə yetirilir, amma deşifrələnmə əməliyyatının çətin yerinə yetirilməsi şərtdir. Biz funksiyanı ? e (mod n) = c formada yollasaq m dəyişənin dəyərini tapmaq çətin olacaq və bu çətin deşifrələnmə şərtinin ödənilməsi deməkdir.
Ətraflı baxaq :
Biz A istifadəçisiyik və funksiyanı ? e (mod n) formada yollayırıq, şifrələnəcək məlumat isə m dəyişənidir. B, mdəyişənini me (mod n) = c funksiyasının köməyi ilə şifrələyib c dəyişənini A istifadəçisinə (bizə) geri yollayır. Bizə tələb olunan m dəyişənini deşifrələyib məlumatı əldə etməkdir, öz növbəmizdə c dəyişənini müəyyən d dəyişəninə qüvvətə yüksəldib modul riyazi əməliyyatını yerinə yetirməliyik ki, me (mod n) = c funksiyasını ləğv edib mdəyişəninin dəyərini geri alaq. Yəni, cd (mod n) = m. Bu halı nəzərə alsaq med (mod n) = m funksiyanın doğru hesab edilir.
Şifrələnmə zamanı sadə vuruqlara ayırmadan istifadə edilir. Daha geniş başlıq versək Euler Phi funksiyasından əsasən söhbət gedəcək.
Ətraflı baxaq :
Niyə RSA şifrələnmə zamanı sadə vuruqlara ayırma zərurət kəsb edir ?
Sadə ədəd (prime number) – özünə və yalnız 1 – ə bölünən ədədlərdir. Sadə ədədlərə ayırmaqdan (prime factorization) söhbət getdikdə isə sadə vuruqlara ayırma anlamı nəzərdə tutulur.
İki sadə ədədi ölçüləri böyük olduğunda belə bir-birinə vurmaq asan əməliyyat olduğuna baxmayaraq sadə vuruqlara ayırma daha çətin əməliyyat hesab edilir.
Euler Phi funksiyası Φ(n) , n – dən kiçik və ya n – ə bərabər amma n ilə ortaq böləni olmayan rəqəmlərin sayı nəzərdə tutulur. Yəni, Φ(8) = 4 . Misalı təsvir etsək : 1,3,5,7 – bu rəqəmlərin 8 ilə heç bir ortaq böləni yoxdur və bu rəqəmlərin sayı 4 – ə bərabərdir.
Phi funksiyası sadə ədədlərdə n-1 kimi dəyər qaytarır.
Yəni, sadə ədədlərin 1 və özündən başqa böləni olmadığına görə sadə ədədin phi funksiyası Φ(n-1) qaytaracaq.
Əlavə olaraq isə Phi funksiyası multiplikativ hesab edilir.
Ətraflı baxaq :
Multiplikativ funksiya – ƒ(xy) istənilən qarşılıqlı sadə (comprime integers) x və y dəyişənləri üçün ƒ(x)*ƒ(y)funksiyası doğru hesab edilir.
Qarşılıqlı sadə ədədlər isə 1 – dən artıq böləni olmayan ədədlərdir (a,b) = 1.
Yəni, 8, 15, 49 bu rəqəmlər qarşılıqlı sadə hesab edilir.
Qeydlərdən istifadə edərək Phi funksiyasını sadə ədədlər üçün Φ(n*m) = Φ(n-1) * Φ(m-1) kimi yazmaq olar.
Phi funksiyasının köməyi ilə deşifrələnmə əməliyyatının çətin olması şərtini ödəyirik.
Ətraflı baxaq :
N = P1 * P2
Φ(N) = Φ(P1-1) * Φ(P2-1)
P1 və P2 dəyişənlərinin dəyəri məlum olmadıqda Φ(N) funksiyası çətin hesab edilir.
Fermanın kiçik teoreminə (Fermat`s little theorem) müraciət etsək p – sadə ədəd və a – natural rəqəmini istifadə etsək a p-1 = 1 (mod p) funksiyası doğru hesab edilir.
Ətraflı baxaq :
a=2, p=7
26=64 64-1=63 7*9=63
a p-1 (26) – in p (7) – yə bölünməsi 1 qalıq qaytarır.
Ferma teoremindən istifadə edib phi funksiyasına tətbiq etsək aΦ(p) = 1 (mod p) funksiyasının doğruluğunu əldə edirik. Bərabərliyin sol və sağ tərəflərini k qüvvətə yüksəldib daha sonra m – ə vursaq m*mk*Φ(n) = m*1k (mod n)- bərabərliyini alırıq. Bu bərabərliyi daha da sadələşdirsək mk*Φ(n)+1 = m (mod n) belə bir nəticə əldə etmiş olacağıq.
Digər bərabərliyə nəzər salaq : me*d = m (mod n).
Mövcut iki me*d = m (mod n) və mk*Φ(n)+1 = m (mod n) bərabərliklərini uyğunlaşdırsaq
e*d = k* Φ(n) + 1 bərabərliyini əldə etmiş oluruq.
d = k* Φ(n) + 1 / e – aldığımız bu nəticədə d dəyişəni şifrələnmə zamanı istidafə olunan bağlı açardır. Biz ddəyişəninin dəyərindən şifrələnmiş məlumatı deşifrələmək üçün istifadə edəcəyik.
Sonluq olaraq isə iki istifadəçi arasında məlumat bölgüsünü RSA şifrələnmə metodikasından istifadə edərər praktik göstərək :
Biz A istifadəçisiyik və B istifadəçisi ilə məlumat bölgüsü yerinə yetiriləcək.
Əvəlcə iki sadə P1 (53) və P2 (59) ədədləri seçirik
n=53*59 = 3127
Φ(n) = Φ(P1-1)*Φ(P2-1)=52*58 = 3016
İndi isə e dəyişəni seçməliyik amma şərtimizə əsasən e -dəyişəni tək olmalı və Φ(n) – lə heç bir ortaq böləni olmamalıdır.
e=3
d = k* Φ(n) + 1 / e – bərabərliyindən istifadə edərək ( k – ya istəlnilən dəyər vermək olar )
d = 2*3016 +1 / 3 = 2011
d – dəyişəni bizim bağlı açardır. n və e dəyişənləri isə açıq açarlardır.
Biz B istifadəçisinə n və e açıq açarlarını yollayırıq. B isə öz növbəsində şifrələyəcəyi
məlumatı (misal üçün m dəyişəninin dəyərini 89 götürək)
me (mod n) = c
Ətraflı baxaq: 893 (mod 3127) = 1394
Nəticə olaraq şifrələnmiş c dəyişəninin 1394 dəyərini alırıq. B is c dəyişənini A istifadəçisinə (bizə) geri yollayır.
A istifadəçisi (biz) müəyyən edilmiş bağlı d açarından istifadə edib, alınmış c dəyişənindən istifadə edərəkm dəyişəninə məxsus məlumatı deşifrə etməlidir. Əvvəldə göstərilmiş qedlərə əsasən şifrələnmə me (mod n) = cfunksiyanın köməyi ilə yerinə yetirilib tələb olunan isə müəyyən edilmiş d qüvvətə yüksəldib şifrələnmə funksiyasını ləğv edib m dəyişəninin dəyərini deşifrələmə əməliyyatını yerinə yetirməklə əldə etmək olacaq.
Ətraflı baxaq :
Deşifrələnmə cd (mod n) = m – funksiyasının icrası ilə yerinə yetirilir. Funksiyaya uyğun olaraq
13942011 = m ( mod 3127 ) prosesi icra etsək m dəyişəninin dəyərini deşifrə etmiş oluruq.
Şərhlər ( 2 )
Hüseyn Əliyev, gözəl məqalə üçün təşəkkürlər.
Diqqətə görə çox sağol