رمز نویسی و رمز گشایی

پس از هشت هزار ساعت محاسبه، از راه تقسیم بیست و شش روز کار بین چهار صد کامپیوتر در امریکا، اروپا، و استرالیا، سرانجام توانستند دریابند که عدد صد رقمی
پنجشنبه، 3 بهمن 1392
تخمین زمان مطالعه:
موارد بیشتر برای شما
رمز نویسی و رمز گشایی
رمز نویسی و رمز گشایی

 

تألیف و ترجمه: حمید وثیق زاده انصاری
منبع: راسخون



 
پس از هشت هزار ساعت محاسبه، از راه تقسیم بیست و شش روز کار بین چهار صد کامپیوتر در امریکا، اروپا، و استرالیا، سرانجام توانستند دریابند که عدد صد رقمی 9412343607359262946971172136294514357528981378983082541347532211942640121301590698634089611468911681 فقط دو عامل اول دارد، یکی عدد شصت رقمی 108488104853637470612961399842972948409834611525790577216753، و دیگری عدد چهل و یک رقمی 86759222313428390812218077095850708048977.
رمز نویسی و رمز گشایی متن‌های بسیار محرمانه، دقیقاً موکول به آن است که بتوان عددهای بزرگ را به عامل‌های اول تجزیه کرد. این که برای تجزیه‌ی یک عدد صد رقمی، هشت هزار ساعت کار و بیست و شش روز بهره گیری از چهار صد کامپیوتر لازم می‌آید مشکلی است که بسیاری از متخصصان رمز در سازمان‌های اطلاعاتی و ضد اطلاعاتی (از قبیل KGB، GRU، MOSSAD، IS، DGSE، DST، و غیره) حوصله‌ی تحمل آن را نخواهند داشت.
در ابتدا ممکن است که موضوع عجیب به نظر برسد؛ رمز نگاری غالباً یا از راه تغییر وضع صورت می‌گیرد – بر حسب کلمه‌ی کلید رمز، متن را به ستون‌هایی تبدیل و آن گاه آن را در سطرهایی باز نویسی می‌کنند – یا از راه جا به جایی حرف‌ها انجام می‌شود – جدول الفبایی از گونه‌ی ویژنر (Vigenere) را تشکیل می‌دهند،
ABCDEFGHIJKLM-
BCDEFGHIJKLMN-
CDEFGHIJKLMNO-
و بر حسب حرف‌های کلید رمز، که یک کلمه یا یک عبارت است، هر حرف متن را با حرف دیگری جانشین می‌کنند. برای مثال، اگر کلمه‌ی fil کلید رمز باشد، برای تبدیل به رمز کلمه‌‌ی bac، حرف واقع در ستون B و در سطر F از جدول را به جای b، و حرف واقع در ستون A و سطر I از جدول را به جای a، وحرف واقع در ستون C و سطر L از جدول را به جای c قرار می‌دهند. به این ترتیب کلمه‌ی bac با کلید رمز fil به کلمهی gin تبدیل می‌شود. حتی اگر کلید رمز، یک عبارت کامل یا این که بخشی از خود متن باشد، رمز گشایی به ندرت کاری دشوار یا ناممکن خواهد بود. در عمل، متخصصان دو روش تغییر وضع و جا به جایی حرف‌ها را توأماً به کار می‌برند تا موضوع را باز هم پیچیده‌تر سازند. با وجود این، چنین پیام رمزی نیز کلاً غیر قابل گشایش نخواهد بود. فردی حرفه‌ای که بداند در نوشتن متن چه زبانی به کار رفته است و موضوع آن در چه زمینه‌ای است به سادگی می‌تواند به اصل پیام پی ببرد.
رمز نویسی و رمز گشایی
به همین خاطر بود که در سال 1977 میلادی، رِی وست، شامیر، و آدِلمن از انستیتو تکنولوژی ماساچوست فرایندی کاملاً عددی را برای رمز نگاری اختراع کردند که بر پایه‌ی تجزیه‌ی عددهای بزرگ به عامل‌های اول استوار است و عملاً غیر قابل گشایش است. این روش که (با انتخاب حرف‌های اول نام‌های مخترعان آن) به RSA مشهور شده است امروزه تقریباً در همه‌ی کشورها به کار می‌رود. با وجود این، درک اصولی آن چندان ساده نیست.
نخستین مرحله را مفهوم‌هایی از علم حساب تشکیل می‌دهد که هر دانش آموزی با آن‌ها آشنایی دارد. سادگی این مقدمات را نباید به عنوان سادگی خود نظریه تلقی کرد. در دنباله‌ی عددهای طبیعی
1 2 3 4 5 . . . 16 17 . . . 1000 . . . 100000 . . .
بعضی از عددها مانند 2، 4، 6، 8، . . . زوج هستند و بعضی مانند 1، 3، 5، 7، . . . فرد هستند. از این رو مجموعه‌ی عددهای طبیعی به دو زیر مجموعه‌ جدا از هم تقسیم می‌شود. با بررسی دقیق‌تری معلوم می‌شود که تقسیم بندی دیگری نیز در مجموعه‌ی عددهای طبیغی وجود دارد؛ بعضی از عددهای طبیعی مرکب (= تجزیه پذیر) هستند، مانند 30 و 114 (15×2=30 و 19×6=114) و غیره. و بعضی دیگر از عددهای طبیعی جز بر یک و بر خودشان بر عدد طبیعی دیگری بخش پذیر نیستند، مانند 7، 11، 23، 10007، و غیره. این گونه عددها را اول می‌نامند. به سادگی ثابت می‌شود که دنباله‌ی عددهای اول بی پایان است. هر عدد غیر اول به حاصل ضرب چند عدد اول تجزیه می‌شود، که در این تجزیه ممکن است بعضی از عامل‌ها تکرار شوند (مثلاً 11×3×3=99 و 5×3×2=30). ثابت می‌شود که تجزیه‌ی هر عدد غیر اول به عامل‌های اول یک تا است، یعنی به هر روشی که انجام گیرد همان عامل‌ها به دست می‌آیند. تجزیه (عددهای کوچک) مسأله‌ای ساده از حساب دوره‌ی ابتدایی است و هر کس در این دوره از تحصیلات خود این عمل و عمل‌های تعیین بزرگ‌ترین مقسوم علیه مشترک و کوچک‌ترین مضرب مشترک را انجام داده است.
هم نِهِشتی مفهوم دیگری از علم حساب است که کم‌تر آشنا است. این نظریه را نابغه‌ی واقعی، کارل فردریک گاوس، در سال 1800 میلادی ابداع کرد. تعریف هم نهشتی بسیار ساده است: دو عدد a و b به پیمانه‌ی n (پیمانه = سنج = modulo) هم نهشت نامیده می‌شوند هر گاه a-b بر n بخش پذیر باشد. این مفهوم به صورت فرمول چنین نوشته می‌شود:
a ≡ b (mod n)
برای مثال، دو عدد 2 و 23 به پیمانه‌ی 7 هم نهشت هستند:
23 ≡ 2 (mod 7)
زیرا 21=2-23 بر 7 بخش پذیر است. هر عددی که از افزودن مضربی از 7 به 23، یا کم کردن مضربی از 7 از 23 به دست آید همین ویژگی را دارد، یعنی به پیمانه‌ی 7 با 2 هم نهشت است، مانند عددهای 9، 16، 23، 30، 37، و غیره، زیرا چون 2 از هر یک از این اعداد کم شود باقی مانده مضرب 7 خواهد بود. بنا بر این هم نهشتی به پیمانه‌ی 7 رده‌ای هم ارزی را در مجموعه عددهای طبیعی پدید می‌آورد. مفهوم هم نهشتی هر چند که انتزاعی به نظر می‌رسد اما در نظریه‌ی اعداد کاربرد و اهمیت زیادی دارد. حساب ساعتی، گونه‌ای کار برد هم نهشتی است؛ دوره‌ی بیست و چهار ساعتی که کامل شود دو باره از صفر آغاز می‌شود. نسبت به یک مبدأ، ساعتی که اعلام می‌شود با تقریب 24 ساعت است. به عبارت دیگر:
(به پیمانه‌ی 24) ساعت اعلام شده ≡ ساعت حقیقی
اکنون با سه مفهوم تجزیه‌ی عددها، عددهای اول، و هم نهشتی مجهز هستیم تا شناسایی دستگاهی بسیار مطمئن از رمز نگاری را آغاز و ملاحظه کنیم که چرا آن چه از نظر ریاضی دانان یک زور آزمایی و مبارزه طلبی است برای اسرار دولت‌ها یک تهدید به شمار می‌آید. نخست باید به این نکته توجه کنیم که عددها مگر آن که کوچک باشند سهل العمل نیستند. روی کامپیوترهای شخصی با عددهای با بیش از بیست رقم، و روی کامپیوترهای بزرگ با بیش از چهل رقم، و روی کامپیوترهای بسیار بزرگ با عددهای با بیش از صد رقم به آسانی نمی‌توان کار کرد. اَبَر کامپیوترهایی هم که ساخته شده‌اند دشواری‌های ویژه‌ی مربوط به عددها را به سادگی نمی‌توانند پاسخ گو باشند. این دشواری‌ها بر دو گونه‌‌اند: یکی آن که معلوم شود عددی اول است یا نه، دیگر آن که اگر عدد اول نیست عامل‌های اول آن کدام‌اند. در باره‌ی عددهای کاملاً کوچک، دشواری وجود ندارد؛ خیلی آسان معلوم می‌شود که عدد 389 اول است، که عدد 391 اول نیست و به حاصل ضرب دو عامل اول 17 و 23 تجزیه می‌شود.
آن گاه که عددی صد رقمی در کار باشد و کامپیوترهای غول آسا در دسترس باشند شاید با سادگی نسبی بتوان معلم کرد که آن عدد اول است یا نه. اما اگر اول نباشد دشواری‌ای که باقی می‌ماند عبارت است از به دست آوردن عامل‌های اول آن. این عمل تقریباً نا ممکن است، و رمز نکاری RSA به چنین عملی وابسته است.
فرض کنیم T متنی باشد که باید به رمز در آید. نخست با یک روش آن را به عدد تبدیل می‌کنیم. یک روش کاملاً ساده می‌تواند چنین باشد: 01=A، 02=B، 03=C، . . . ، 24=X، 25=Y، 26=Z، . . . 31=1، 32=2، . . . . پس از آن، یک عدد بزرگِ حاصل ضرب دو عامل اول را انتخاب می‌کنیم. این عدد را از کتاب «عددهای اول و روش‌های کامپیوتری تجزیه»، تألیف هانسریسل، به عاریت می‌گیریم: 63978486879527143858831415041=N. عدد N حاصل ضرب دو عامل اول p و q است: 440334654777631=p و 145295143558111=q. بر حسب این دو عدد و با استفاده از نظریه‌ی اعداد و نظریه‌ی گروه‌ها، مجموعه‌ای از جفت‌های عددی مناسب و کاملاً اختصاصی را فراهم می‌کنیم. مثلاً 1193=k و 595869301290179363220947=k'. دو عدد N و k را برای کسی می‌فرستیم که باید پیام رمز را دریافت دارد و این دو عدد در واقع کلید رمز را تشکیل می‌دهند، و عدد k' را نزد خود نگاه می‌داریم. اگر دو عدد N و k به دست دشمن بیافتد اهمیت ندارد؛ این دو عدد برای رمز نگاری به کار رفته‌اند، اما برای رمز گشایی به تنهایی قابل استفاده نیستند، مگر آن که دو عامل اول N مشخص شوند، که این هم عملاً ناممکن است.
رمز نویسی و رمز گشایی
متن T را که به عدد تبدیل کرده‌ایم عددی بزرگ مانند 19030905140500052000220905 حاصل شده است. این عدد را به دسته‌هایی تقسیم می‌کنیم که تعداد رقم‌های هر دسته کم‌تر از تعداد رقم‌های N باشد. عدد N انتخابی ما 29 رقمی است، پس هر دسته از عددها را 28 رقمی می‌گیریم. در این صورت از متن T دنباله‌ای از عددهای 28 رقمی T1، T2، T3، . . . . به دست می‌آید. اکنون با استفاده از هم نهشتی می‌دانیم که C و T به توان K،به پیمانه‌ی N هم نهشت هستند. هر یک از عددهای Ti را به عدد جدیدی تبدیل می‌کنیم، به این صورت که هر یک از آن‌ها را به توان k (در مثال ما 1193 = k) می‌رسانیم و حاصل را بر N تقسیم کرده و مانده‌ی تقسیم را اختیار می‌کنیم. مانده‌ی تقسیم یعنی Ci، حداکثر 29 رقمی است و اگر تعداد رقم‌هایش کم‌تر از 29 باشد در سمت چپ آن آن اندازه صفر می‌گذاریم تا 29 رقمی شود. عددهایی که به این ترتیب به دست می‌آیند به ترتیب به دنبال هم ردیف می‌شوند و پیام رمز را تشکیل می‌دهند. این پیام، حتی اگر همراه با کلیدهای k و N به دست دشمن بیافتد غیر قابل گشایش باقی خواهد ماند؛ برای دست یابی به متن T، باید ریشه‌ی kام (به پیمانه‌ی N) هر یک از Ciها حساب شود، عملی که بالقوه غیر ممکن است، زیرا N که غیر اول باشد برای انجام دادن چنین عملی در زمان مناسب، الگوریتمی وجود ندارد.
بر عکس، اکر N و k به روشی مناسب انتخاب شده باشند، آن گاه m = k' وجود دارد که توان mام C به پیمانه‌ی N برابر T باشد. گیرنده‌ی پیام، تنها کسی که k' را می‌شناسد، می‌تواند عمل بالا را به ترتیب در باره‌ی C1، C2، C3، . . . . انجام دهد و T1، T2، T3، . . . . را باز یابد. بنا بر این وی تنها کسی است که می‌تواند پیام دریافتی را رمز گشایی کند. در پایان مبادله‌ی پیام، کسی که آن را به رمز برگردانده و متن را به یاد نداشته باشد نمی‌تواند فقط با در اختیار داشتن k و N آن را بازیابد.
تجزیه‌ی N، یعنی یافتن عامل‌های اول آن، تنها راه حل است. از این رو، امنیت دستگاه رمز موکول به آن است که عمل تجزیه‌ی N عملاً ممکن نباشد، و این در صورتی است که عدد N «به اندازه‌ی کافی» بزرگ باشد. «اندازه‌ی کافی» به توان کامپیوتر مورد استفاده بستگی دارد. تجزیه‌ی عدد 29 رقمی مثال ما، خارج از توان کامپیوترهای اداری است، اما یک کامپیوتر بزرگ‌تر به سادگی می‌تواند دو عامل اول آن، p و q، و در نتیجه k و k' را حساب کند. برای تجزیه‌ی یک عدد بیش از شصت رقمی، بهره گیری از یک اَبَر کامپیوتر لازم است. این نکته هم یاد آوری شود که بدون به کار گیری کامپیوتر، امکان تجزیه‌ی عدد تا 15 رقمی کاملاً عملی است. فعلاً با همه‌ی امکانات موجود، تجزیه‌ی عدد صد رقمی مصون از تعرض به نظر می‌رسد. همان گونه که در آغاز نوشتار یاد آوری شد، عمل تجزیه‌ی چنین عددی آن چنان دشوار است که همکاری گروه زیادی از ریاضی دانان و به موازات آن، به کار گیری چهار صد کامپیوتر بزرگ را ایجاب کرد.
در آغاز کار فقط تجزیه‌ی عدد 1 به اضافه‌ی 11 به توان 104 مطرح بود که متخصصان عالی مقام علم حساب را به مبارزه می‌طلبید. بخش پذیری این عدد بر 2 و بر 17 مسلم بود. سپس با به کار گیری یک کامپیوتر معمولی، عامل سوم آن، 6304673، نیز به دست آمد. عددی صد رقمی، همانی که در اول مقاله معرفی شد باقی ماند. با استفاده از امکانات یک کامپیوتر بزرگ و مجهز به سادگی توانستند معلوم کنند که این عدد صد رقمی اول نیست – به سادگی، از این نظر که از کامپیوتری بزرگ استفاده شد، و گر نه، بدون استفاده از ماشین می‌بایست قرن‌ها انتظار کشیده می‌شد – تا آن وقت کسی به تجزیه‌ی عددی صد رقمی توفیق نیافته بود. از یک اَبَر کامپیوتر که می‌خواستند برای تجزیه‌ی آن استفاده کنند می‌بایست بیش از هشت هزار ساعت، کمی نزدیک به یک سال، وقت صرف کنند، با این فرض که هیچ وقفه‌ای در کار نباشد. مارک ماناس امریکایی و آرین لنشترا هلندی فکر بکری به خاطرشان رسید؛ ایشان پیشنهاد کردند که تقسیمِ کار انجام گیرد و از صدها کامپیوتر بزرگ واقع در امریکا، اروپا، و استرالیا، هم زمان استفاده شود.
استفاده از کامپیوترهای بزرگی مطرح بود که به مقاطعه‌کاران تعلق داشتند و کرایه‌ی ساعتی آن‌ها سرسام آور بود. یک راه چاره این بود که از این کامپیوترها در موقعی از شبانه روز استفاده شود که وقت آزاد داشته باشند (چه چند دقیقه، چه چند ساعت) و کاری دیگر به آن‌ها محول نشده باشد. از هر کدام از چهار صد کامپیوتر بزرگ، روزانه به طور متوسط یک ساعت استفاده شد که روی هم رفته روزانه چهار صد ساعت محاسبه انجام گرفت و بیست و شش روز طول کشید تا کار محاسبه پایان یافت.
یاد آوری می‌شود که لنشترا و ماناس از بزرگ‌ترین متخصصان نظریه‌ی اعداد بودند. در این زمینه، هر چند پی یر دو فرما در سال 1630 میلادی راه را هموار ساخته بود، اما لنشترا، آتکینس، و پومرانس، برای عملیات سریع‌تر و گسترده‌تر مربوط به تشخیص عددهای اول و تجریه‌ی اعداد، فرمول‌ها و الگوریتم‌های جدیدی را پدید آوردند. این شخصیت‌ها با دیگر دانشمندان علم حساب مراوده‌ی دائم داشتند و از این رو برای آنان مشکل نبود که ده‌ها ریاضی دان را به همکاری دعوت کنند که هر کدام از آن‌ها به ده‌ها کامپیوتر بزرگ دسترسی داشته باشند. وانگهی، اینان توانسته بودند که تجزیه‌ی عددی 96 رقمی را در مدتی سه هفته زودتر از مدت زمانی انجام دهند که پیش از آنان ریاضی دان هلندی، ریل، برای تجزیه‌ی عددی 92 رقمی صرف کرده بود.
نخست به نظر می‌رسید که تجزیه‌ی عدد صد رقمی و تجزیه‌ی عدد 96 رقمی از لحاظ دشواری تفاوت چندانی با هم نداشته باشند. اما در واقع باید خاطر نشان کرد که تفاوت دو عدد 10 به توان 96 و 10 به توان 100، عبارت است از عدد نود و نُه رقمی 999ر9 ضرب در 10 به توان 99، درست همان گونه که تفاوت 1000 و 100000 برابر با عدد پنج رقمی 99000 = 10000 × 9ر9 است. از این رو، تجزیه‌ی عدد صد رقمی، در مقایسه با تجزیه‌ی عدد نود و شش رقمی، رکود چشم گیری به حساب می‌آمد، به ویژه که روش‌های تجزیه بدون کار آمدی بیش‌تر باقی مانده بودند.
الگوریتمی که برای تجزیه به کار می‌رفت غربال چندگان نام داشت که چند سال پیش از آن، کارل پومرانس از دانشگاه جورجیا، آن را اختراع کرده بود. از یک جهت جای تأسف است که رکورد تجزیه‌ی عدد صد رقمی بر پایه‌ی روش‌های جدیدتر انجام نگرفت، و از جهت‌ دیگر، باید اذعان کرد که پیش رفت‌ها در علم حساب به کندی صورت می‌گیرند. این شاخه از ریاضیات همواره با مسأله‌هایی رام نشده دست به گریبان بوده است.
روش اختراعی پومرانس را به گونه‌های متعدد می‌توان به کار برد، اما همه‌ی این گونه‌ها قابلیت‌های عملی هم ارز دارند. والاترین امتیاز روش غربال چندگان در این است که بر پایه‌ی آن می‌توان یک مسأله‌ی مطلقاً غول آسا را به تعداد زیادی مسأله‌های با جثه‌ی ضعیف‌تر تقسیم و آن‌ها را مستقل از یک دیگر و به ترتیب دل خواه تجزیه و تحلیل کرد.
بنا بر گفته‌ی پروفسور لنشترا، استراتژی به کار رفته عبارت بود از محاسبه‌ی یک ماتریس (= جدول) عددی شامل پنجاه هزار سطر و پنجاه هزار ستون؛ عدد واقع در هر خانه‌ی ماتریس با اطلاعاتی نظیر می‌شد که به راه حل مسأله می‌انجامید. می‌شد که ماتریس را به ماتریس‌های مربع کوچک‌تری تقسیم کرد و محاسبه‌ی هر کدام را به یک کامپیوتر سپرد. اما گروه عملاً بیش از چهار صد کامپیوتر در اختیار نداشت. با وجود این، وضعیت زیاد هم بد نبود. رمز موفقیت در این بود که از این کامپیوترها هم زمان و به موازات یک دیگر استفاده می‌شد، یعنی همه‌ی آن‌ها با هم کار می‌کردند و هر کدام جزئی از مسأله را انجام می‌دادند. هر کامپیوتر، مربعی از ماتریس را بیرون می‌کشید، روی آن محاسبه می‌کرد، و پیش از آن که به مربع بعدی بپردازد، جواب را در اختیار سایر کامپیوترها قرار می‌داد، و خودش هم نتیجه‌ی محاسبه‌ی دیگر ماشین‌ها را دریافت می‌داشت. روش تجزیه‌ی مسأله‌ی بزرگ به مسأله‌های کوچک‌تری که به موازات هم حل شوند، امکان این عملیات را فراهم آورده بود.
مثالی مشابه، موضوع را واضح‌تر می‌سازد. فرض کنیم یک محموله‌ی بزرگ پستی شامل تعداد بسیار زیادی پاکت‌هایی است که در تعدادی از آن‌ها، در هر کدام، جمله‌ای از یک نامه، و در بقیه‌ی پاکت‌ها جمله‌هایی بی ربط نوشته شده است. هر گاه یک نفر بخواهد به تنهایی همه‌ی پاکت‌ها را باز کند و جمله‌های با معنی را جدا و ردیف کند، وقت زیاد و توانی طاقت فرسا باید صرف این کار نماید. اما اگر چهار صد نفر با هم کار کنند و هر کدام جمله‌ای با معنی را که می‌یابد به دیگران اعلام کند، خیلی زودتر می‌شود متن نامه را به دست آورد.
رمز نویسی و رمز گشایی
روش فعالیت‌های موازی، زمان محاسبه را به میزان معتنا بهی کاهش می‌دهد. پس از آن که هر کدام از دست اندر کاران سهم خود را در محاسبه به انجام رساند، موقع آن می‌رسد که همه‌ی نتایج به دست آمده را یک جا و با هم بررسی، و آن هایی که تکراری یا زیادی است را حذف کنند. برای حذف، روش کلاسیک منسوب به گاوس را به کار می‌برند که فرایند حذف به پیمانه‌ی x نام دارد. این روش همانند روش کلاسیک حذف متغیرها در عبارت‌های جبری است.
در تجزیه‌ی عدد صد رقمی، بیست و شش روز صرف محاسبه‌های موازی شد. پس از آن، چهار روز دیگر برای هم بندی نتیجه‌های به دست آمده و حذف تکراری‌ها و زایدها لازم شد. از این رو برای تجزیه‌ی عدد یک ماه وقت صرف گردید. این نکته هم باید یاد آوری شود که برای تجزیه‌ی هر عدد صد رقمی چنین وقتی لازم نمی‌شود. ممکن است که عدد صدرقمی انتخابی بر عددهای اول 3، 5، 7، 11، 13، 17، . . . بخش پذیر باشد. بخش پذیری بر این عددها، و بر هر عدد اول کوچک‌تر از یک میلیون را به کمک یک کامپیوتر کوچک‌ به آسانی می‌توان تحقیق کرد. عددی صد رقمی را که تجزیه‌ی آن بسیار دشوار باشد به ندرت می‌توان به دست آورد. آن عددهایی که برای به رمز درآوردن پیام‌های محرمانه به کار می‌برند از جمله‌ی چنین عددهایی هستند. جامعه‌ی رمز نگاران و دست اندر کاران پیام‌های رمزی به خوبی واقفند که فعلاً باید از انتخاب کلیدهای رمز کم‌تر از صد رقمی پرهیز کنند، نه از این جهت که تجزیه‌ی آن‌ها ساده است، بلکه از لحاظ حفظ اسرار دولتی. آن چه را که یک گروه از ریاضی دانان بتوانند انجام دهند، گروهی دیگر از آنان نیز می‌توانند انجام دهند.
پروفسور لنشترا امیدوار بود که به عددی صد و شش رقمی دست یابد که تجزیه‌ی آن به الگوریتم‌های کارآتری احتیاج داشته باشد. پیش از این گفته شد که کشفیات بزرگ در علم حساب انگشت شمار هستند، هر چند که در سال‌های اخیر کششی به سمت افزایش داشته‌اند. تا پیش رفت چشم گیری در این زمینه حاصل نشود، متخصصان رمز نگاری به روش RSA آسوده خاطر خواهند بود. آنان می‌توانند تعداد رقم‌های کلید رمز را تا صد و پنجاه یا دویست بالا ببرند تا محاسبه‌های موازی لازم برای تجزیه‌ی آن‌ها هر چه بیش‌تر دشوار شود.
در مقام مقایسه، اگر برای تجزیه‌ی یک عدد هفتاد رقمی ده ساعت وقت لازم باشد، زمان لازم برای تجزیه‌ی عدد صد رقمی نُه هزار ساعت خواهد بود، برای اولی مدتی کم‌تر از نصف شبانه روز، و برای دومی مدت یک سال. زمان محاسبه به صورت نمایی افزایش می‌یابد. و این همان چیزی است که مخترعان رمز نگاری به روش RSA را اطمینان می‌بخشد؛ روش رمز نویسی و رمز گشایی بر پایه‌ی تجزیه‌ی عددهای بسیار بزرگ.
آن چه که بیش‌تر اهمیت دارد رکوردی است که در ریاضیات، و به ویژه به کمک وسیله‌های معمولی، به دست آمد. در ارتباط بین چهار صد کامپیوتر، تنها از خطوط معمولی تلفن استفاده شد، و خط‌های ویژه‌ی تبادلِ داده‌ها که در ارتباط‌های بین کامپیوتری مورد استفاده قرار می‌گیرند، به علت هزینه‌ی گزاف بهره گیری از آن‌ها، مورد استفاده نبوده‌اند. برخورد با مسأله، برای ریاضی دانان یک زور آزمایی تازه بود و برای اَسرار دولت‌ها ضربه‌ای هشدار دهنده.
روش RSA در رمز نگاری: این روش بر پایه‌ی تجزیه‌ی عددهای بسیار بزرگ استوار است، اما اصول آن، چه برای عددهای بزرگ و چه برای عددهای کوچک، یکی است. برای شناساندن اصول ریاضی این روش، که حتی دانش آموزان دبیرستانی نیز می‌توانند آن را دریابند، مثالی با یک عدد کوچک را در نظر می‌گیریم. مسئول رمز، عدد 391 = N را به عنوان کلید رمز و عامل 3 = k را به مأموران خود می‌سپارد. عدد 391 غیر اول و حاصل ضرب دو عدد اول 17 و 23 است. بزرگ‌ترین مقسوم علیه مشترک دو عدد 16 = 1 – 17 و 22 = 1 – 23 برابر با 2، و کوچک‌ترین مضرب مشترک این دو عدد، که آن را L (N) می‌گیریم، می‌شود: L (N) = (16 ×22) / 2 = 176. اکنون عددهایی در نظر گرفته می‌شوند که به پیمانه‌ی L (N) هم نهشت با 1 باشند. اگر m عددی صحیح باشد، این عددها به صورت m . L (N) + 1 هستند: 1 × L (N) + 1 = 177 , 2 2 × L (N) + 1 = 353 , . . . . این عددها تجزیه می‌شوند؛ عدد 177 حاصل ضرب 59 × 3، و عدد 353 اول است. عدد 59 × 3 = 177 که عامل 3 = k را در بر دارد عددی مناسب است و 59 = k' را به دست می‌دهد.
مسئول رمز که دو عدد 391 = N و 3 = k را در اختیار مأموران خود گذاشته است عدد 59 = k' را نزد خود نگاه می‌دارد. این شخص با در نظر گرفتن جدول تبدیل حرف به عدد، مثلاً 00 = جا خالی ، 01 = a، 02 = b، . . . ، پیامی کاملاً محرمانه را که می‌خواهد بفرستد به عدد تبدیل می‌کند. به فرض: 0118180922050012050038. این عدد به بخش‌هایی تقسیم می‌شود که تعداد رقم‌های آن‌ها کم‌تر از تعداد رقم‌های کلید رمز باشد. چون کلید رمز، 391، سه رقمی است، پس عدد بالا به بخش‌های دو رقمی تقسیم می‌شود: . . . ، 09، 18، 18، 01. هر یک از این عددهای دو رقمی یک متغیر متن T را تشکیل می‌دهد. اکنون مقدار C از فرمول (391 mod) T3 ≡ C به ازای هریک از متغیرهای T حساب می‌شود و حاصل به صورت عددی سه رقمی نوشته می‌شود: (391 mod) 001 ≡ 1 = 3(01)، (391 mod) 358 ≡ 5832 = 3(18)، و به همین ترتیب برای سایر عددها. در نتیجه‌ی این عمل‌ها، پیام رمز عبارت می‌شود از 132...001358358338091.
مسئول رمز، متن اصلی پیام را از بین می‌برد. هر گاه خواسته باشد آن را باز یابد، چون 59 = k' را در اختیار دارد از فرمول (391 mod) 59C ≡ T استفاده می‌کند و عددهای 01، 18، . . . . ، و از روی آن‌ها متن T را به دست می‌آورد. البته همه‌ی این عمل‌ها به وسیله‌ی کامپیوتر انجام می‌گیرد.
رمز نویسی و رمز گشایی
فرض کنیم که شخصی نامحرم، هم پیام رمز و هم کلید رمز 391 = N و عامل 3 = k را به چنگ آورد .چون 59 = k' را نمی‌داند نمی‌تواند کشف رمز کند مگر این که عدد 391 = N را تجزیه کند. این عدد کوچک به سادگی تجزیه می‌شود، اما اگر 150 یا 200 رقمی باشد تجزیه‌ی آن به این سادگی‌ها میسر نیست. شخصی که از تجزیه‌ی 391، عامل‌های اول 17 و 23 را به دست آورد، عددهای m.L (N) = 1 و بر پایه‌ی آن‌ها و با توجه به 3 = k عدد 59 = k' را می‌یابد.
تأکید می‌کنیم که انتخاب عددهای N، k و k' سرسری انجام نمی‌گیرد. برای آن که رمز نگاری با اطمینان کامل انجام گیرد این سه عدد باید دقیقاً در شرط‌هایی از علم حساب صدق کنند به گونه‌ای که با دشواری بسیار بتوان k' را از روی N و k به دست آورد – همان گونه که دانستید با بهره گیری از تعداد زیادی از کامپیوترهای بزرگ – از این رو، اداره‌های رمز بر توانایی بهترین کامپیوترها و بر آخرین اطلاعات از علم حساب تأکید دارند. هر پیش رفتی در هر یک از این دو زمینه ایجاب می‌کند که کلید رمز را بزرگ‌تر برگزینند. در هر حال، اسرار محرمانه بر تکنیک تکیه دارند؛ تجزیه‌ی عددی شصت رقمی به کمک یک کامپیوتر اداری غیر عملی است، اما به کمک یک اَبَر کامپیوتر به سادگی انجام می‌شود.
در روش RSA از هم نهشتی اعداد استفاده می‌شود. اقسام کامپیوترها به محاسبه‌ی توان‌های به پیمانه‌ی Z توانایی دارند. در مورد مثالی که آوردیم، برنامه‌ی محاسبه‌ی توان 59‌ام به پیمانه‌ی 391 به زبان برنامه نویسی پاسکال، بیش از شش سطر نخواهد داشت. در محاسبه‌های هم نهشتی فقط باقی مانده‌های تقسیم‌ها وارد عملیات می‌شوند و علاوه بر آن فقط عددهای صحیح دخالت دارند. یک معادله‌ی هم نهشتی مانند x ≡ 3 (mod 5) همه‌ی عددهای صحیحی را به دست می‌دهد که چون بر 5 تقسیم شوند باقی مانده‌ی 3 داشته باشند، مانند عددهای 8، 13، 18، و غیره. از این رو روش RSA در دست افرادی می‌چرخد که هم در نظریه‌ی اعداد و هم در برنامه نویسی برای کامپیوتر دارای اطلاعات کافی باشند: افرادی که کلید رمز آن را بر گزینند.



 

 



نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط