RSA Sındırmaq Mümkündür? Assimetrik Şifrələmə (Praktiki İzahla)
Kriptoqrafiya nədir? Kriptoqrafiyanın əsasları nələrdir? Hashing nədir? Hashing əsasları nələrdir?Alqoritm nədir?RSA nədir? Asimmetrik Şifrələmə nədir? Şifrələmə nədir?
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
Asimmetrik Şifrələmə
Asimmetrik Şifrələmə – Kiber təhlükəsizlik sahəsində möcüzəvi ixtiralardan biridir.Məsələn: Onun sayəsində biz internet üzərindən təhlükəsiz bir şəkildə SSL/TLS yardımı ilə əlaqə qururuq. HTTPS (indiki zamanda default olaraq TLS istifadə olunur)- bizim baxacağımız praktiki məsələlərdən sadəcə biridir.Həmçinin biz bu paylaşımdan bizə lazım olan informasiyaları öyrənib tətbiq edə biləcəyik. Əvvəlki simmetrik şifrələmə paylaşımında bir açar ilə həm şifrələməni və deşifrələməni öyrəndik. Bu paylaşımda isə biz iki açardan istifadə edəcəyik.
İndiki dövrdə bir çox sistemlər və protokollar bu tip şifrələməni tətbiq edirlər. Məsələn: SSH, TLS, SFTP və digərləri. Bunlar aydındır, paylaşımın davamında biz asimmetrik şifrələmə ilə məlumatları necə şifrələcəyimiz praktiki olaraq yerinə yetirəcəyik.
Elliot Darlinə elektron məktub göndərmək istəyir və məlumatlarını əvvəlki paylaşımda gördüyümüz AES ilə şifrələmək istəyir. Elliot effektiv ə təhlükəsiz şəkildə açarı necə göndərə bilər?
Bu halda Elliot Darlindən onun açıq (public) açarını istəyir və Darlin bu açarı ona göndərir.
Beləliklə Elliot əldə etdiyi public açar ilə məlumatı şifrələyir və Darlinə şifrələnmiş məlumatı göndərir. Əlavə olaraq AES açıq açarının şifrələnmiş kopiyasınıda paylaşır.
İndiki halda məlumatları paylaşmaq təhlükəsizdir.Darlin şifrələnmiş məlumatı və AES açıq açarını şifrələnmiş kopiyasını əldə edir.Daha sonra Darlin məlumatların deşifrələnməsi üçün özünün gizli (private) açarından istifadə edərək göndərilən AES açarını əldə edir. Deşifrə etdiyimi AES açarı ilə adi qaydada məlumatları deşifrələyərək əldə edir.
Belə halda siz sual verə bilərsiniz ki, Nəyə görə Elliot Asimmetrik şifrələmə yerinə Simmetrik şifrələmədən istifadə etdi?Nəyə görə o sadəcə private və public açarlardan adi asimmetrik şifrələmə üçün istifadə etmədi? Bir çox protokolların məsələn: TLS işləmə prinsipi məhz bu mexanizm üzrədir. Səbəb isə ondadır ki, assimetrik şifrələmə əməliyyatların yerinə yetirilməsinə daha çox zaman tələb edir.
Asimmetrik şifrələmədən biz öyrəndik:
- Ümumi (Public) açar – göndəriləcək olan məlumatları şifrələyir.
- Gizli (Private) açar – şifrələnmiş məlumatları deşifrələyir.
Bu tip şifrələmə əməliyyatlarını yerinə yetirmək üçün RSA alqoritmindən istifadə olunur və onun 2048 və 4096 bit versiyalarından istifadə təhlükəsizliyi maksimuma çatdırır.Açarların uzunluğu o qədər böyükdürki, heç kəs onu sındıra bilməz. (Təbii ki paylaşımın sonunda istisna olacaqdır)
RSA Alqoritmi
Rivest Shamir Adleman (RSA) – Asimmetrik şifrələminin həyata keçirilməsində populyar alqoritmlərdən biridir.RSA əməliyyatın Python üzərində həyata keçirmək həqiqətən asimmetrik şifrələməni öyrənmək üçün əla bir tapşırıqdır.RSA haqqında paylaşımı bitirdikdən sonra özünüz RSA şifrələməsi həyata keçirə biləcəksiniz.

İlkin olaraq RSA aləti public və private açarları generasiya edir. Yaradılan açarlar fərqli fayllarda saxlanılır və onların uzantısı .pem olacaqdır.
Şifrələmə prosesi isə açıq mətn məlumatı yüklənir və bu məlumatlar public açar ilə şifrələnir. Şifrələnmiş məlumat hədəf göndərilir.
Deşifrələmə prosesi zamanı şifrələnmiş məlumatlar əvvəlcədən yaradılmış private açar ilə deşifrələnir. Ümumi alqoritmi anladığımıza görə Python proqramlaşdırma dilində kodu yaza bilərik.
Bunun üçün cryptography kitabxanası quraşdırılmalıdır.
pip install cryptography
Kod:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
import os
# 🔐 Açar cütü yarat və fayla yaz (əgər artıq yoxdursa)
def generate_keys():
if not os.path.exists("private.pem") or not os.path.exists("public.pem"):
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()
with open("private.pem", "wb") as f:
f.write(private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption()
))
with open("public.pem", "wb") as f:
f.write(public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
))
print("[+] RSA açar cütü yaradıldı.")
else:
print("[i] Açar faylları artıq mövcuddur.")
# 🔐 Şifrələmə funksiyası (public.pem ilə)
def encrypt_message(message: str) -> bytes:
with open("public.pem", "rb") as f:
public_key = serialization.load_pem_public_key(f.read())
ciphertext = public_key.encrypt(
message.encode(),
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
return ciphertext
# 🔓 Deşifrə funksiyası (private.pem ilə)
def decrypt_message(ciphertext: bytes) -> str:
with open("private.pem", "rb") as f:
private_key = serialization.load_pem_private_key(f.read(), password=None)
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
return plaintext.decode()
# 🧪 Test (main blok)
if __name__ == "__main__":
generate_keys()
mesaj = "Salam, XAKER.AZ! Bu RSA ilə şifrələndi."
print("\nMesaj:", mesaj)
encrypted = encrypt_message(mesaj)
print("\n🔐 Şifrələnmiş mesaj:", encrypted.hex())
decrypted = decrypt_message(encrypted)
print("\n🔓 Deşifrə olunmuş mesaj:", decrypted)
Nəticəsi:
└─# python3 rsa.py
[i] Açar faylları artıq mövcuddur.
Mesaj: Salam, XAKER.AZ! Bu RSA ilə şifrələndi.
🔐 Şifrələnmiş mesaj: a0840ee9093623d1d544aee3ebc41f3073b6940ee4d5410bb24db0d3603ed3065d54d5a16c34b3c1749aaa369170ce5b5d87e87f95b608ea81a42d8161704ac75894fe9ac42afbc16c55b2a9fa52a2f40d5183ff30ba487ddcdf639939eed95f6d988a2853e9eedf84d7f44565bfa4d7b592f7d2a0ce24a016e7b215bb2763426bd52fc9f9fd7209387e0c125fe26317c8efaeadbadf1e5ea148e9696ac5fa64a4bcf0fa5a2ad4081a7c305472f76dddfba738218144e65c3e3ae69ebe27f18032a50930cdcacfad58ab40be2b8993c2b1c8cf7960859118bc4355d8323e2b9a3130f75cbb1eaea2edc417fda3f073e2a2793b61a2fbdc929650fa6298e12996
🔓 Deşifrə olunmuş mesaj: Salam, XAKER.AZ! Bu RSA ilə şifrələndi.
RSA Sındırmaq
RSA-nın əsas zəif nöqtələrindən biri modul n-in faktorizasiyasıdır. Fermat faktorizasiyası isə bu zəiflik üzərində qurulan sadə, lakin məhdud sındırma metodudur. Təhlükəsizlik baxımından real sistemlərdə bu üsulun qarşısını almaq üçün güclü açar uzunluğu və balanssız p,q seçimi tövsiyə olunur.
2023-cü ilin əvvəlində Çinli alimlər 2048-bit RSA açarının sındırılması ilə bağlı bir elmi məqalə dərc etdilər. Bu məqalədə quantum kompüter + hybrid klassik alqoritm ilə böyük açarların faktorizasiyası iddia edilirdi.
Xeyr. Çox önəmli detal budur:
- Onlar real 2048-bit RSA açarını deyil,
- bu ölçüdə olan sintetik, sadələşdirilmiş nümunələri faktorizasiya etməyə çalışıblar.
- İddialar təcrübədə tam təsdiq olunmayıb, çünki istifadə olunan quantum hardware (10 qubit ətrafı) çox zəifdir.
Nəticə və Tövsiyə
- RSA hələ ki təhlükəsizdir, xüsusilə 2048 bit və yuxarısı.
- Amma quantum dövrü yaxınlaşır, bu səbəbdən:
- Post-quantum algoritmlər (məsələn, NTRU, Kyber) öyrənilməli və tətbiq olunmalıdır.
- Şəbəkə protokolları (TLS, SSH) kvant təhlükəsinə qarşı yenilənməlidir.
Ümid varam faydalı olmuşdur! Oxuduğunuz üçün təşəkkürlər!
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat