الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته میشود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکلهای رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.
در گذشته سازمانها و شرکتهایی که نیاز به رمزگذاری یا سرویسهای دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصربهفردی را طراحی مینمودند. به مرور زمان مشخص گردید که گاهی ضعفهای امنیتی بزرگی در این الگوریتمها وجود دارد که موجب سهولت شکسته شدن رمز میشود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شدهاست و در روشهای جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شدهاست و آنچه پنهان است فقط کلید رمز است.
یک الگوریتم متقارن از یک کلید برای رمزنگاری و ازهمان کلید برای رمزگشایی استفاده میکند. بیشترین شکل استفاده از این نوع رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد Data Encryption Algorithm یا DEA است که بیشتر بعنوان DESشناخته میشود. الگوریتم DES یک محصول دولت ایالات متحده است که امروزه بعنوان یک استاندارد بینالمللی شناخته شده و بطور وسیعی مورد استفاده قرار می گیرد. بلوکهای ۶۴ بیتی دیتا توسط یک کلید تنها که معمولا ۵۶ بیت طول دارد، رمزنگاری و رمزگشایی میشوند. الگوریتم DES از نظر محاسباتی ساده است و به راحتی میتواند توسط پردازندههای کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد. در دهه 60 میلادی، با رشد فزاینده فناوری کامپیوتر و نگرانی ها در مورد محرمانه و خصوصی بودن ارتباطات، علاقه به ایجاد یک استاندارد رمزنگاری ملی در آمریکا به شدت افزایش پیدا کرد. تلاشها در جهت ایجاد استانداردی بود که بتواند توسط کامپیوترها و شبکه های متفاوت دولتی در آمریکا مورد استفاده قرار گیرد و همچنین در سیستم های پیمانکاران دولتی نیز مفید واقع شود. تلاشهای مذکور منجر به ایجاد استاندارد رمزنگاری داده یا Data Encryption Standard )DES) گشت که امروزه به صورت وسیعی در رمزنگاری مورد استفاده قرار می گیرد.
در این قبیل سیستمها، یا کلیدهای رمزگذاری و رمزگشایی یکسان هستند و یا با رابطهای بسیار ساده از یکدیگر قابل استخراج میباشند و رمزگذاری و رمزگشایی اطلاعات نیز دو فرآیند معکوس یکدیگر میباشند.
واضح است که در این نوع از رمزنگاری، باید یک کلید رمز مشترک بین دو طرف تعریف گردد. چون کلید رمز باید کاملاً محرمانه باقی بماند، برای ایجاد و رد و بدل کلید رمز مشترک باید از کانال امن استفاده نمود یا از روشهای رمزنگاری نامتقارن استفاده کرد. نیاز به وجود یک کلید رمز به ازای هر دو نفرِ درگیر در رمزنگاری متقارن، موجب بروز مشکلاتی در مدیریت کلیدهای رمز میگردد.
الگوریتمهای رمزنگاری با کلید نامتقارن از کلیدهای مختلفی برای رمزنگاری و
رمزگشایی استفاده میکنند. بسیاری از سیستمها اجازه میدهند که یکی از
کلیدها کلید عمومی یا (public key) منتشر شود در حالی که دیگری کلید خصوصی
یا (private key) توسط صاحبش حفظ میشود. فرستنده پیام، متن را با کلید
عمومی گیرنده، کد میکند و گیرنده آن را با کلید اختصاصی خود رمزگشایی
میکند. بعبارتی تنها با کلید خصوصی گیرنده میتوان متن کد شده را به متن
اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام
مطلع است اما نمی تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام
کدشده برای هر گیرندهای، به جز گیرنده مورد نظر فرستنده، بی معنی خواهد
بود.
معمول ترین سیستم نامتقارن به عنوان RSA شناخته میشود. (این حروف اول نام
پدید آورندگان آن یعنی Rivest ،Shamir و Adlemen است) این الگوریتم در
سال 1978 در دانشگاه MIT ایجاد شده است و تأیید هویت (روشی برای مطمئن شدن
از هویت ارسال کننده پیغام) را به خوبی رمزنگاری انجام میدهد. الگوریتم
RSA از دو کلید برای رمزنگاری استفاده میکند: کلید خصوصی و کلید عمومی.
در الگوریتم مذکور تفاوتی بین توانایی عملیاتی کلید عمومی و خصوصی وجود
ندارد و یک کلید میتواند هم به عنوان کلید خصوصی به کار رود و هم به عنوان
کلید عمومی.کلیدهای RSA با استفاده از روش های ریاضی و با ترکیب اعداد اول
تولید میشوند. بزرگترین عددها با ضرب اعداد کوچک به دست می آیند و این
اعداد کوچک از لحاظ ریاضی به هم وابسته هستند و دانستن یکی از آنها منجر
به شناسایی دیگر اعداد اول به کار رفته در کلید میشود. این وضعیتی است که
در استفاده از کلید های عمومی و خصوصی مورد نظر است. البته در صورتی که عدد
خیلی بزرگ باشد، این کار به راحتی قابل انجام نیست و وضعیت های گمراه
کننده بسیاری وجود دارند.
بحثهای زیادی شده که کدام یک از این الگوریتمها بهترند اما جواب مشخصی ندارد. البته بررسی هایی روی این سوال شده به طور مثال دونفر به نامهای Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی که با الگوریتمهای متقارن میتواند رمزنگاری شود از الگوریتمهای نامتقارن کمتر است و با تحقیق به این نتیجه رسیدند که الگوریتمهای متقارن الگوریتمهای بهینه تری هستند. اما وقتی که بحث امنیت پیش می آید الگوریتمهای نامتقارن کارایی بیشتری دارند. به طور خلاصه میتوان گفت که الگوریتمهای متقارن دارای سرعت بالاتر و الگوریتمهای نامتقارن دارای امنیت بهتری هستند. در ضمن گاهی از سیستم ترکیبی از هر دو الگوریتم استفاده میکنند که به این الگوریتمها الگوریتم های ترکیبی (hybrid) گفته میشود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتمهای نامتقارن و الگوریتمهای کلید متقارن دارای دو ماهیت کاملاً متفاوت هستند و کاربردهای متفاوتی دارند به طور مثال در رمزنگاریهای ساده که حجم دادهها بسیار زیاد است از الگوریتم متقارن استفاده میشود زیرا دادهها با سرعت بالاتری رمزنگاری و رمزگشایی میشوند. اما در پروتکل هایی که در اینترنت استفاده میشود، برای رمز نگری کلید هایی که نیاز به مدیریت دارند از الگوریتمهای نامتقارن استفاده میشود.
منابع: wikipedia www.itpro.ir
سلام ممنون از وبلاگ زیباتون خیلی استفاده کردم امیدوارم موفق باشید
سلام
از نظر دلگرم کنندتون خیلی خیلی ممنونم.
از اطلاعاتی که در خدمتم قرار دادین واقعا ممنون اقا محمد
با سلام.خوشحال میشم تو این محیط ماهم مطلبی هر چند کوچیک در اختیار دوستان قرار بدم.
سلاااام
خیلی خیلی ممنونم .
امیدوارم همیشه موفق باشید .
بازم ممنون
سلام.خیلی مچکرم.شماهم همینطور
ممنون بابت جمع آوری مطالب مفیدتان
خواهش میکنم