
الگوریتم RSA: پایهای ترین سیستم رمزنگاری نامتقارن 🔐
الگوریتم RSA (مخفف Rivest-Shamir-Adleman) یک سیستم رمزنگاری کلید عمومی است که در سال ۱۹۷۷ توسط سه دانشمند MIT اختراع شد. این الگوریتم به عنوان اساسیترین روش رمزنگاری در اینترنت شناخته میشود و در پروتکلهای SSL/TLS، SSH، PGP و... استفاده میشود.
✅ کاربردهای RSA
-
امنیت ارتباطات (وب، ایمیل، پیامرسانی)
-
امضای دیجیتال
-
رمزگذاری فایلها
-
بلاکچین و ارزهای دیجیتال
⚙️ نحوه عملکرد RSA: از تئوری تا پیادهسازی
1. مراحل تولید کلیدها
import random
import math
def generate_keys():
# انتخاب دو عدد اول بزرگ
p = generate_large_prime()
q = generate_large_prime()
n = p * q
phi = (p-1)*(q-1)
# انتخاب e (عدد تصادفی نسبتاً اول با phi)
e = random.randrange(1, phi)
while math.gcd(e, phi) != 1:
e = random.randrange(1, phi)
# محاسبه d (معکوس ضربی e تحت mod phi)
d = pow(e, -1, phi)
return ((e, n), (d, n)) # (کلید عمومی, کلید خصوصی)
2. رمزگذاری و رمزگشایی
عملیات | فرمول | مثال |
---|---|---|
رمزگذاری | c = m^e mod n |
encrypt(123) → 456 |
رمزگشایی | m = c^d mod n |
decrypt(456) → 123 |
🔢 مثال عددی (با اعداد کوچک برای درک)
-
انتخاب اعداد اول:
-
p = 61
-
q = 53
-
-
محاسبه n و φ(n):
-
n = 61 × 53 = 3233
-
φ(n) = (61-1)×(53-1) = 3120
-
-
انتخاب کلید عمومی (e):
-
e = 17
(عدد تصادفی نسبتاً اول با 3120)
-
-
محاسبه کلید خصوصی (d):
-
d = 2753
(چون17 × 2753 ≡ 1 mod 3120
)
-
🔐 چرا RSA امن است؟
-
مشکل بودن تجزیه n به p و q: برای
n=3233
ساده است، اما اگرn
یک عدد ۱۰۲۴ بیتی باشد، حتی با ابررایانهها هم هزاران سال زمان نیاز است. -
حتی با دانستن e و n، محاسبه d بدون دانستن p و q غیرممکن است.
💻 پیادهسازی در پایتون
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# تولید کلید
key = RSA.generate(2048) # 2048-bit key
# ذخیره کلیدها
with open("private.pem", "wb") as f:
f.write(key.export_key())
with open("public.pem", "wb") as f:
f.write(key.publickey().export_key())
# رمزگذاری
message = b"Secret Message"
cipher = PKCS1_OAEP.new(key.publickey())
ciphertext = cipher.encrypt(message)
# رمزگشایی
cipher = PKCS1_OAEP.new(key)
plaintext = cipher.decrypt(ciphertext)
print(plaintext.decode()) # "Secret Message"
⚠️ محدودیتها و حملات بالقوه
-
حملات زمانبندی: اندازهگیری زمان عملیات برای حدس کلید
-
حمله با کامپیوتر کوانتومی: الگوریتم Shor میتواند RSA را بشکند (هنوز عملی نشده)
-
استفاده از کلیدهای کوتاه: کلیدهای ۱۰۲۴ بیتی امروزه ناامن هستند (حداقل ۲۰۴۸ بیت توصیه میشود)
📊 مقایسه RSA با الگوریتمهای دیگر
الگوریتم | نوع | سرعت | امنیت |
---|---|---|---|
RSA | کلید عمومی | متوسط | مبتنی بر تجزیه اعداد |
ECC | کلید عمومی | سریع | مبتنی بر منحنیهای بیضوی |
AES | متقارن | بسیار سریع | مبتنی بر جایگشت و جایگزینی |
🔮 آینده RSA
-
جایگزینی تدریجی با ECC (به دلیل کارایی بهتر)
-
مقاومسازی در برابر کامپیوترهای کوانتومی با RSA-PSS
-
استانداردهای جدید مانند CRYSTALS-Kyber
📚 منابع پیشنهادی
سوال: آیا فکر میکنید RSA در عصر کامپیوترهای کوانتومی زنده بماند؟ نظرات خود را با ما به اشتراک بگذارید!

نویسنده
سیدهادی موسوی
Tags: #علمی #برنامه_نویسی #مقاله #امنیت