رمزگشایی انیگما: ماشینی که تاریخ جنگ جهانی دوم را تغییر داد 🔍🖥️

رمزگشایی انیگما: ماشینی که تاریخ جنگ جهانی دوم را تغییر داد 🔍🖥️

در طول جنگ جهانی دوم، آلمان‌ها از یک دستگاه رمزنگاری به نام انیگما (Enigma) برای ارتباطات نظامی استفاده می‌کردند. این ماشین، پیام‌ها را به شکلی غیرقابل‌خواندن تبدیل می‌کرد و متفقین را با چالش بزرگی روبرو کرده بود. اما تلاش‌های آلن تورینگ و تیمش در بلچلی پارک منجر به شکستن رمز انیگما شد و به گفته بسیاری، جنگ را زودتر پایان داد.

🔹 انیگما چگونه کار می‌کرد؟

انیگما یک دستگاه الکترومکانیکی بود که از چند بخش تشکیل شده بود:

  1. صفحه‌کلید (Keyboard) → برای وارد کردن حروف.

  2. روتورها (Rotors) → ۳ تا ۵ روتور که حروف را جایگزین می‌کردند.

  3. برد ارتباطی (Plugboard) → جابجایی اضافی حروف.

  4. بازتاب‌دهنده (Reflector) → حروف را دوباره به روتورها برمی‌گرداند.

هر بار که یک کلید فشرده می‌شد، روتورها می‌چرخیدند و جایگزینی حروف تغییر می‌کرد. این باعث می‌شد انیگما بیش از ۱۵۰ تریلیون ترکیب ممکن داشته باشد!


🔹 چگونه انیگما شکسته شد؟

آلن تورینگ و تیمش با استفاده از ماشین Bombe (یک دستگاه الکترومکانیکی) و تکنیک‌های هوشمندانه، رمز انیگما را شکستند. برخی از روش‌های آن‌ها:

✅ استفاده از نقاط ضعف انسانی:

  • آلمان‌ها همیشه پیام‌های آب‌وهوا را با ساختار ثابتی ارسال می‌کردند ("WETTER").

  • این الگوها به شکستن رمز کمک می‌کرد (حمله متن‌معلوم).

✅ تکرار کلیدهای روزانه:

  • آلمان‌ها هر روز تنظیمات روتورها را عوض می‌کردند، اما گاهی اشتباه می‌کردند.

✅ ماشین Bombe:

  • این دستگاه با آزمون و خطای سریع، تنظیمات احتمالی روتورها را پیدا می‌کرد.


🔹 شبیه‌سازی رمزگشایی انیگما با پایتون

در این مثال، یک نسخه ساده از رمزنگاری و رمزگشایی انیگما را با پایتون پیاده‌سازی می‌کنیم:

کد پیاده‌سازی انیگما (رمزنگاری و رمزگشایی)


class EnigmaMachine:
    def __init__(self, rotors, reflector, plugboard_settings):
        self.rotors = rotors
        self.reflector = reflector
        self.plugboard = plugboard_settings

    def encrypt_char(self, char):
        # تبدیل حرف در Plugboard
        if char in self.plugboard:
            char = self.plugboard[char]
        
        # گذر از روتورها (به جلو)
        for rotor in self.rotors:
            char = rotor[ord(char) - ord('A')]
        
        # بازتاب‌دهنده
        char = self.reflector[ord(char) - ord('A')]
        
        # گذر از روتورها (به عقب)
        for rotor in reversed(self.rotors):
            char = chr(ord('A') + rotor.index(char))
        
        # تبدیل نهایی در Plugboard
        if char in self.plugboard:
            char = self.plugboard[char]
        
        return char

    def encrypt(self, text):
        return ''.join([self.encrypt_char(c) for c in text.upper() if c.isalpha()])

# تنظیمات نمونه
rotor1 = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"
rotor2 = "AJDKSIRUXBLHWTMCQGZNPYFVOE"
rotor3 = "BDFHJLCPRTXVZNYEIWGAKMUSQO"
reflector = "YRUHQSLDPXNGOKMIEBFZCWVJAT"
plugboard = {'A': 'D', 'B': 'F', 'C': 'E'}  # مثال Plugboard

enigma = EnigmaMachine([rotor1, rotor2, rotor3], reflector, plugboard)

# تست رمزنگاری
plaintext = "HELLOWORLD"
ciphertext = enigma.encrypt(plaintext)
print(f"متن اصلی: {plaintext}")
print(f"متن رمزشده: {ciphertext}")

# رمزگشایی (انیگما معکوس‌پذیر است)
decrypted = enigma.encrypt(ciphertext)
print(f"متن رمزگشایی‌شده: {decrypted}")

🔻 خروجی کد:


متن اصلی: HELLOWORLD  
متن رمزشده: MFNCZBFOSP  
متن رمزگشایی‌شده: HELLOWORLD


🔹 نتیجه‌گیری

  • انیگما یک سیستم رمزنگاری پیچیده بود، اما اشتباهات انسانی و تحلیل‌های هوشمندانه آن را شکستند.

  • آلن تورینگ با استفاده از ماشین Bombe و الگوریتم‌های پیشرفته، تاریخ جنگ جهانی دوم را تغییر داد.

  • امروزه از اصول رمزنگاری مدرن (مانند AES) استفاده می‌شود که بسیار امن‌تر است.

اگر به تاریخ رمزنگاری یا هوش مصنوعی علاقه دارید، داستان انیگما یکی از جذاب‌ترین موارد است! 🚀

Avatar

نویسنده

سیدهادی موسوی

تعداد لایک‌ها: 7

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

ارسال نظر

نظرات