
رمزگشایی انیگما: ماشینی که تاریخ جنگ جهانی دوم را تغییر داد 🔍🖥️
در طول جنگ جهانی دوم، آلمانها از یک دستگاه رمزنگاری به نام انیگما (Enigma) برای ارتباطات نظامی استفاده میکردند. این ماشین، پیامها را به شکلی غیرقابلخواندن تبدیل میکرد و متفقین را با چالش بزرگی روبرو کرده بود. اما تلاشهای آلن تورینگ و تیمش در بلچلی پارک منجر به شکستن رمز انیگما شد و به گفته بسیاری، جنگ را زودتر پایان داد.
🔹 انیگما چگونه کار میکرد؟
انیگما یک دستگاه الکترومکانیکی بود که از چند بخش تشکیل شده بود:
-
صفحهکلید (Keyboard) → برای وارد کردن حروف.
-
روتورها (Rotors) → ۳ تا ۵ روتور که حروف را جایگزین میکردند.
-
برد ارتباطی (Plugboard) → جابجایی اضافی حروف.
-
بازتابدهنده (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) استفاده میشود که بسیار امنتر است.
اگر به تاریخ رمزنگاری یا هوش مصنوعی علاقه دارید، داستان انیگما یکی از جذابترین موارد است! 🚀

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