62- الگوریتم رمزنگاریی متقارن و نا متقارن
ساعت ٤:۳۸ ‎ب.ظ روز ۱۳٩٢/۱۱/٦  کلمات کلیدی: رمزنگاریی متقارن و نا متقارن ، رمز نگاری
 الگوریتم رمزنگاریی متقارن و نا متقارن

الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته می‌شود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکل‌های رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.

در گذشته سازمان‌ها و شرکت‌هایی که نیاز به رمزگذاری یا سرویس‌های دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصربه‌فردی را طراحی می‌نمودند. به مرور زمان مشخص گردید که گاهی ضعف‌های امنیتی بزرگی در این الگوریتم‌ها وجود دارد که موجب سهولت شکسته شدن رمز می‌شود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شده‌است و در روش‌های جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شده‌است و آنچه پنهان است فقط کلید رمز است.

  

الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته می‌شود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکل‌های رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.

در گذشته سازمان‌ها و شرکت‌هایی که نیاز به رمزگذاری یا سرویس‌های دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصربه‌فردی را طراحی می‌نمودند. به مرور زمان مشخص گردید که گاهی ضعف‌های امنیتی بزرگی در این الگوریتم‌ها وجود دارد که موجب سهولت شکسته شدن رمز می‌شود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شده‌است و در روش‌های جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شده‌است و آنچه پنهان است فقط کلید رمز است.

رمزنگاری کلید متقارن Symmetric

 

یک الگوریتم متقارن از یک کلید برای رمزنگاری و ازهمان کلید برای رمزگشایی استفاده می‌کند. بیشترین شکل استفاده از این نوع رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد Data Encryption Algorithm یا DEA است که بیشتر بعنوان DESشناخته می‌شود. الگوریتم DES یک محصول دولت ایالات متحده است که امروزه بعنوان یک استاندارد بین‌المللی شناخته ‌شده و بطور وسیعی مورد استفاده قرار می گیرد. بلوکهای ۶۴ بیتی دیتا توسط یک کلید تنها که معمولا ۵۶ بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند. الگوریتم DES از نظر محاسباتی ساده است و به راحتی می‌تواند توسط پردازنده‌های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد. در دهه 60 میلادی، با رشد فزاینده فناوری کامپیوتر و نگرانی ها در مورد محرمانه و خصوصی بودن ارتباطات، علاقه به ایجاد یک استاندارد رمزنگاری ملی در آمریکا به شدت افزایش پیدا کرد. تلاشها در جهت ایجاد استانداردی بود که بتواند توسط کامپیوترها و شبکه های متفاوت دولتی در آمریکا مورد استفاده قرار گیرد و همچنین در سیستم های پیمانکاران دولتی نیز مفید واقع شود. تلاشهای مذکور منجر به ایجاد استاندارد رمزنگاری داده یا Data Encryption Standard )DES) گشت که امروزه به صورت وسیعی در رمزنگاری مورد استفاده قرار می گیرد.

در این قبیل سیستم‌ها، یا کلیدهای رمزگذاری و رمزگشایی یکسان هستند و یا با رابطه‌ای بسیار ساده از یکدیگر قابل استخراج می‌باشند و رمزگذاری و رمزگشایی اطلاعات نیز دو فرآیند معکوس یکدیگر می‌باشند.

واضح است که در این نوع از رمزنگاری، باید یک کلید رمز مشترک بین دو طرف تعریف گردد. چون کلید رمز باید کاملاً محرمانه باقی بماند، برای ایجاد و رد و بدل کلید رمز مشترک باید از کانال امن استفاده نمود یا از روش‌های رمزنگاری نامتقارن استفاده کرد. نیاز به وجود یک کلید رمز به ازای هر دو نفرِ درگیر در رمزنگاری متقارن، موجب بروز مشکلاتی در مدیریت کلیدهای رمز می‌گردد.

 

رمزنگاری DES

 

استاندارد رمزنگاری داده (DES) یک الگوریتمی ریاضی است که برای رمزنگاری و رمزگشایی اطلاعات کدشده باینری به کار می رود. رمزنگاری داده ها را تبدیل به داده های نامفهومی به نام cipher می کند. رمزگشایی از cipher آن را به داده های اصلی بازمی گرداند. الگوریتم مذکور هر دو عملیات رمزنگاری و رمزگشایی را بر اساس یک عدد باینری به نام کلید مشخص می سازد. داده ها تنها در صورتی قابل بازیابی از cipher هستند که دقیقاً از کلیدی که برای رمزنگاری استفاده شده برای رمزگشایی نیز استفاده شود.الگوریتم DES دارای دو جزء است:

  • الگوریتم رمزنگاری : الگوریتم DES منتشر شده شامل چندین تکرار از یک تغییر شکل ساده با استفاده از هر دو تکنیک جابجایی و جایگزینی است. این الگوریتم تنها از یک کلید برای رمزنگاری و رمزگشایی استفاده می کند و به همین جهت به آن رمزنگاری کلید اختصاصی نیز گفته می شود. در این حالت حفظ کلید به صورت محرمانه توسط فرستنده و گیرنده پیغام بسیار اهمیت دارد زیرا الگوریتم به صورت عمومی در اختیار همگان است و در صورت لو رفتن کلید، هر کسی می تواند پیغام محرمانه را ببیند. به همین جهت در رمزنگاری DES معمولاً عمر کلید به اندازه عمر تراکنش است.

 

  • کلید رمزنگاری : کلید DES یک توالی هشت بایتی است که هر بایت شامل یک کلید هفت بیتی و یک بیت توازن است. در حین رمزنگاری، الگوریتم DES متن اصلی را به بلوک های 64 بیتی می شکند. این الگوریتم در هر زمان بر روی یک بلوک کار می کند و آن را از نصف شکسته و کاراکتر به کاراکتر رمزنگاری می کند. کاراکترها 16 بار تحت نظارت کلید تغییر شکل پیدا کرده و در نهایت یک متن رمزنگاری شده 64 بیتی تولید می شود. کلید حاوی 56 بیت معنادار و هشت بیت توازن است.


 

رمز نگاری روش نامتقارن Asymmetric

 

الگوریتم‌های رمزنگاری با کلید نامتقارن از کلیدهای مختلفی برای رمزنگاری و رمزگشایی استفاده می‌کنند. بسیاری از سیستمها اجازه می‌دهند که یکی از کلیدها کلید عمومی یا (public key) منتشر شود در حالی که دیگری کلید خصوصی یا (private key) توسط صاحبش حفظ می‌شود. فرستنده پیام، متن را با کلید عمومی گیرنده، کد می‌کند و گیرنده آن را با کلید اختصاصی خود رمزگشایی می‌کند. بعبارتی تنها با کلید خصوصی گیرنده می‌توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی ‌تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هر گیرنده‌ای، به جز گیرنده مورد نظر فرستنده، بی ‌معنی خواهد بود. 
معمول ترین سیستم نامتقارن به عنوان RSA شناخته می‌شود. (این حروف اول نام پدید آورندگان آن یعنی Rivest ،Shamir و Adlemen است) این الگوریتم در سال 1978 در دانشگاه MIT ایجاد شده است و تأیید هویت (روشی برای مطمئن شدن از هویت ارسال کننده پیغام) را به خوبی رمزنگاری انجام می‌دهد. الگوریتم RSA از دو کلید برای رمزنگاری استفاده می‌کند: کلید خصوصی و کلید عمومی. در الگوریتم مذکور تفاوتی بین توانایی عملیاتی کلید عمومی و خصوصی وجود ندارد و یک کلید می‌تواند هم به عنوان کلید خصوصی به کار رود و هم به عنوان کلید عمومی.کلیدهای RSA با استفاده از روش های ریاضی و با ترکیب اعداد اول تولید می‌شوند. بزرگترین عددها با ضرب اعداد کوچک به دست می آیند و این اعداد کوچک از لحاظ ریاضی به هم وابسته هستند و دانستن یکی از آن‌ها منجر به شناسایی دیگر اعداد اول به کار رفته در کلید می‌شود. این وضعیتی است که در استفاده از کلید های عمومی و خصوصی مورد نظر است. البته در صورتی که عدد خیلی بزرگ باشد، این کار به راحتی قابل انجام نیست و وضعیت های گمراه کننده بسیاری وجود دارند.

 

مقایسه رمزنگاری الگوریتم‌های متقارن ونامتقارن

 

بحثهای زیادی شده که کدام یک از این الگوریتم‌ها بهترند اما جواب مشخصی‌ ندارد. البته بررسی‌ هایی‌ روی این ‏سوال شده به طور مثال دونفر به نامهای Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی‌ که با الگوریتم‌های متقارن ‏میتواند رمزنگاری شود از الگوریتم‌های نامتقارن کمتر است و با تحقیق به این نتیجه رسیدند که الگوریتم‌های ‏متقارن الگوریتم‌های بهینه تری هستند. اما وقتی‌ که بحث امنیت پیش می‌ آید الگوریتم‌های نامتقارن کارایی‌ بیشتری ‏دارند. به طور خلاصه می‌توان گفت که الگوریتم‌های متقارن دارای سرعت بالاتر و الگوریتم‌های نامتقارن دارای ‏امنیت بهتری هستند. در ضمن گاهی‌ از سیستم ترکیبی‌ از هر دو الگوریتم استفاده می‌کنند که به این الگوریتم‌ها الگوریتم ‏های ترکیبی‌ (hybrid) گفته می‌شود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتم‌های نامتقارن و الگوریتم‌های ‏کلید متقارن دارای دو ماهیت کاملاً متفاوت هستند و کاربردهای متفاوتی‌ دارند به طور مثال در رمزنگاریهای ساده که ‏حجم داده‌ها بسیار زیاد است از الگوریتم متقارن استفاده می‌شود زیرا داده‌ها با سرعت بالاتری رمزنگاری و ‏رمزگشایی‌ می‌شوند. اما در پروتکل هایی‌ که در اینترنت استفاده می‌شود، برای رمز نگری کلید هایی‌ که نیاز به مدیریت ‏دارند از الگوریتم‌های نامتقارن استفاده می‌شود.