رمزنگاری،
شیوه باستانی حفاظت از اطلاعات است که سابقه آن به حدود 4000 سال پیش از
میلاد باز می گردد. امروزه رمزنگاری در دنیای مدرن از اهمیت ویژه ای
برخوردار است، به طوری که به عنوان یک روش مؤثر برای حفاظت از اطلاعات حساس
مانند اطلاعات طبقه بندی شده نظامی، اطلاعات حساس مؤسسات مالی، کلمات عبور
ذخیره شده بر روی سیستم های کامپیوتری و داده های منتشر شده بر روی
اینترنت و یا از طریق امواج رادیویی به کار می رود.
در سری مقاله های
رمزنگاری مفاهیم اولیه رمزنگاری را شرح خواهیم داد. لازم به ذکر است که
رمزنگاری یک مبحث بسیار پیچیده است و در اینجا ما قصد توضیح پایه های ریاضی
الگوریتمهای رمزنگاری یا باز کردن تمام جزئیات را نداریم و تنها به معرفی
کلیات این مقوله خواهیم پرداخت. برای دریافت اطلاعات و جزئیات بیشتر می
توانید به کتابهایی که در این زمینه نگارش شده اند مراجعه فرمایید.
در
قسمتهای قبلی تاریخچه مختصری از رمزنگاری، مفاهیم اولیه آن ، کلیدهای
رمزنگاری و الگوریتم های رمزنگاری با استفاده از کلید متقارن را توضیح
دادیم. در این قسمت الگوریتم های رمزنگاری با استفاده از کلید نامتقارن را
شرح و بسط خواهیم داد.
الگوریتم های رمزنگاری با کلید نامتقارن
در
قسمت قبلی در مورد الگوریتم های رمزنگاری متقارن DES و AES توضیح دادیم که
از یک کلید برای رمزنگاری و رمزگشایی استفاده می کنند. در الگوریتم های
مذکور در صورتی که کلید رمزنگاری به سرقت رود محرمانگی اطلاعات نیز از بین
خواهد رفت.
الگوریتم های رمزنگاری با کلید نامتقارن از کلیدهای مختلفی
برای رمزنگاری و رمزگشایی استفاده میکنند. بسیاری از سیستمها اجازه
میدهند که یکی از کلیدها (کلید عمومی یا public key) منتشر شود در حالی که
دیگری (کلید خصوصی یا private key) توسط صاحبش حفظ می شود. فرستنده پیام،
متن را با کلید عمومی گیرنده، کد میکند و گیرنده آن را با کلید اختصاصی
خود رمزگشایی می کند. بعبارتی تنها با کلید خصوصی گیرنده میتوان متن کد
شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای
اصلی پیام مطلع است اما نمی تواند از متن کدشده به متن اصلی دست یابد،
بنابراین پیام کدشده برای هر گیرندهای، به جز گیرنده مورد نظر فرستنده، بی
معنی خواهد بود.
معمول ترین سیستم نامتقارن بعنوان RSA شناخته
میشود (این حروف، اول نام پدید آورندگان آن یعنی Rivest، Shamir و Adlemen
است). این الگوریتم در سال 1978 در دانشگاه MIT ایجاد شده است و تأیید
هویت (روشی برای مطمئن شدن از هویت ارسال کننده پیغام ) را به خوبی
رمزنگاری انجام می دهد. الگوریتم RSA از دو کلید برای رمزنگاری استفاده می
کند: کلید خصوصی و کلید عمومی. در الگوریتم مذکور تفاوتی بین توانایی
عملیاتی کلید عمومی و خصوصی وجود ندارد و یک کلید می تواند هم به عنوان
کلید خصوصی به کار رود و هم به عنوان کلید عمومی.
کلیدهای RSA با
استفاده از روش های ریاضی و با ترکیب اعداد اول تولید می شوند. بزرگترین
عددها با ضرب اعداد کوچک به دست می آیند و این اعداد کوچک از لحاظ ریاضی به
هم وابسته هستند و دانستن یکی از آنها منجر به شناسایی دیگر اعداد اول به
کار رفته در کلید می شود. این وضعیتی است که در استفاده از کلید های عمومی و
خصوصی مورد نظر است. البته در صورتی که عدد خیلی بزرگ باشد، این کار به
راحتی قابل انجام نیست و وضعیت های گمراه کننده بسیاری وجود دارند. تنها
ترکیب درست از اعداد اول موجود در کلید رمزنگاری، قادر به رمزگشایی پیغام
است. امنیت الگوریتم RSA و الگوریتم های مشابه آن وابسته به استفاده از
اعداد خیلی بزرگ است و بیشتر نسخه های RSA از اعداد 154 رقمی یا 512 بیتی
به عنوان کلید استفاده می کنند. دسترسی به فاکتورهای اعداد اول اعداد خیلی
بزرگ که بیش از 100 رقم دارند کار بسیار مشکلی است. البته برخی از محققان
توانسته اند با تلاش بسیار اعداد بزرگ را بشکنند ولی این کار برای هکرها
برای ورود به یک سیستم یا سر در آوردن از یک پیغام مقرون به صرفه نمی باشد.
اساس سیستم RSA این فرمول است: X = Yk (mod r)
که
X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ
است که با دقت انتخاب شدهاند. برای اطلاع از جزئیات بیشتر میتوان به
مراجعی که در این زمینه وجود دارند رجوع کرد. این شکل محاسبات روی
پردازندههای بایتی بخصوص روی ۸ بیتیها که در کارتهای هوشمند استفاده
میشود بسیار کند است. بنابراین، اگرچه RSA هم تأیید هویت و هم رمزنگاری را
ممکن میسازد، معمولاً تنها برای تایید هویت منبع پیام از این الگوریتم در
کارتهای هوشمند استفاده میشود.
میتوان از یک سیستم نامتقارن
برای نشان دادن اینکه فرستنده پیام همان شخصی است که ادعا میکند استفاده
کرد که این عمل در اصطلاح امضاء نام دارد.
-
فرستنده متن اصلی را با استفاده از کلید اختصاصی خود رمز میکند؛ این فرآیند امضا نام دارد.
-
رمزگشایی عملیات مشابهی روی متن رمزشده اما با استفاده از کلید عمومی فرستنده است. برای تایید امضاء بررسی میکنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید خصوصی متناظر رمز شده است.
به بیان ساده تر
چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان
متن اما رمز شده توسط کلید خصوصی همان شخص است. حال اگر متن رمزشده توسط
کلید عمومی آن شخص که شما از آن مطلعید رمز گشایی شود، مطابقت متن حاصل و
متن اصلی نشان دهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق
میشود. سایر افراد که از کلید خصوصی این فرد اطلاع ندارند قادر به ایجاد
متن رمزشده ای نیستند که با رمزگشایی توسط کلید عمومی این فرد به متن
اولیه تبدیل شود.
سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم
گسسته میشوند مانند Diffie-Hellman، ElGamal و سایر طرحهای چندجمله ای و
منحنی های بیضوی. بسیاری از این طرحها عملکردهای یک طرفهای دارند که
اجازه تایید هویت را می دهند اما رمزنگاری ندارند.
یک رقیب جدیدتر
الگوریتم RPK است. الگوریتم رمزنگاری RPK یک سیستم رمزنگاری نسبتاً جدید
بر پایه کلید عمومی است که مبتنی بر ریاضیاتی است که امروزه به صورت گسترده
در رمزنگاری استفاده می شود. این الگوریتم برای کاربردهای تجاری طراحی شده
است و نیاز به مطالعات و تحقیقات گسترده در زمینه های جدید ریاضی ندارد.
مطالعه بر روی این زمینه ها مانند سیستم رمزنگاری منحنی های بیضوی (ECC)،
گاهی اوقات چندین سال به طول می انجامد. رمزنگاری RPK تمهیداتی را برای
رمزنگاری در انتقال اطلاعات در شبکه های با سرعت بالا، کارت های هوشمند و
برنامه های مبتنی بر ارتباطات بی سیم اندیشیده است. این الگوریتم برای
استفاده در پروسه های نرم افزاری حجیم مانند تراکنش های کارت های اعتباری
نیز مناسب است.
در هسته RPK یک ابداع به نام Mixture Generator وجود
دارد و در پیاده سازی آن سه شیفت رجیستر خطی وجود دارند. این ماشین وضعیت
دو حالت عملیاتی دارد. یک حالت از شیفت رجیسترها برای به توان رسانی
استفاده کرده و دیگری به عنوان یک تولید کننده جریان تصادفی از بیت ها برای
کاربرد در فاز ترکیب رمزنگاری به کار می رود. سیستم RPK دو مرحله پرهزینه
به توان رسانی کل پیغام را به طور مؤثر کاهش داده است زیرا موتور هسته آن
برای قراردادن سیستم در وضعیت اولیه امن به کار رفته و سپس بین دو حالتی که
در بالا توضیح داده شد برای اجرای رمزنگاری سریع سوئیچ می کند.
طول
کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در
RSA است که آنها برای استفاده در چیپ کارتها مناسب تر است. اما RSA
محکی برای ارزیابی سایر الگوریتمها باقیمانده است؛ حضور و بقای نزدیک به سه
دهه این الگوریتم، تضمینی در برابر ضعفهای عمده به شمار میرود.