مقدمات رمزنگاری
96 صفحه در قالب word
رمزگذاری یعنی تبدیل اطلاعات به یک شکل غیر قابل فهم و انتقال آن و سپس برگرداندن اطلاعات رمز شده به حالت اولیه و قابل خواندن. عناصر مهمی که در رمزگذاری مورد استفاده قرار میگیرند به شرح زیر میباشد:
۱- معرفی و اصطلاحات
رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی که بین فرماندهان، جاسوسان، عشاق و دیگران ردوبدل میشده، استفاده شده است تا پیغامهای آنها محرمانه بماند.
هنگامی که با امنیت دیتا سروکار داریم، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و میتوانند از رمزنگاری استفاده کنند.
اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شود که پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی که تامین کننده این مساله باشد "رمزنگاری" نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس بغیر از دریافت کننده موردنظر نتواند محتوای پیغام را بخواند.
رمزنگاری مخففها و اصطلاحات مخصوص به خود را دارد. برای درک عمیقتر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext شناخته میشود)، آنرا با استفاده از یک کلید (رشتهای محدود از بیتها) بصورت رمز در میآوریم تا کسی که دیتای حاصله را میخواند قادر به درک آن نباشد. دیتای رمزشده (که بعنوان ciphertext شناخته میشود) بصورت یک سری بیمعنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر میرسد. برای حصول متن اولیه دریافتکننده آنرا رمزگشایی میکند. یک شخص ثالت (مثلا یک هکر) میتواند برای اینکه بدون دانستن کلید به دیتای اصلی دست یابد، کشف رمزنوشته (cryptanalysis) کند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است.
رمزنگاری دو جزء اصلی دارد، یک الگوریتم و یک کلید. الگوریتم یک مبدل یا فرمول ریاضی است. تعداد کمی الگوریتم قدرتمند وجود دارد که بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شدهاند. کلید، یک رشته از ارقام دودویی (صفر و یک) است که بخودیخود بیمعنی است. رمزنگاری مدرن فرض میکند که الگوریتم شناخته شده است یا میتواند کشف شود. کلید است که باید مخفی نگاه داشته شود و کلید است که در هر مرحله پیادهسازی تغییر میکند. رمزگشایی ممکن است از همان جفت الگوریتم و کلید یا جفت متفاوتی استفاده کند.
دیتای اولیه اغلب قبل از رمزشدن بازچینی میشود؛ این عمل عموما بعنوان scrambling شناخته میشود. بصورت مشخصتر، hash functionها بلوکی از دیتا را (که میتواند هر اندازهای داشته باشد) به طول از پیش مشخصشده کاهش میدهد. البته دیتای اولیه نمیتواند از hashed value بازسازی شود. Hash functionها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصهای از پیام (شامل مهمترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته و hash میشود.
- یک چک تایید پیام (Message Authentication Check) یا MAC یک الگوریتم ثابت با تولید یک امضاء برروی پیام با استفاده از یک کلید متقارن است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است. هنگامی که رمزنگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده میشود، منجر به ایجاد امضای دیجیتال (digital signature) میشود.
- Public Key یا کلید عمومی اعداد یا کلماتی که با یک شخص یا سازمان در ارتباط میباشد. کلید عمومی جزئی از جفت کلید عمومی/خصوصی میباشد وبه صورت عمومی در دسترس کسانی که قصد انتقال اطلاعات رمز شده را دارند، میباشد.
- Private Key یا کلید خصوصی اعداد یا کلماتی که با یک شخص یا سازمان در ارتباط میباشد. کلید خصوصی جزئی از جفت کلید عمومی/خصوصی میباشد. کلید خصوصی فقط در دسترس مالک جفت کلید عمومی/خصوصی میباشد و برای بازگشایی اطلاعاتی که توسط کلید عمومی رمزگذاری شده استفاده میشود.
- ایجادکننده های جفت کلید برای ایجاد یک جفت کلید عمومی و خصوصی طبق یک الگوریتم رمزگذاری مشخص استفاده میشود.
- Key Factories برای تبدیل کلید های نامشخص به کلیدهای مشخص به کار میرود.
- Keystores بانکی که برای مدیریت تعدادی از کلید ها به کار میرود.
- الگوریتم های رمزگذاری الگوریتم ها و روشهایی که برای رمزگذاری اطلاعات به کار میرود. RSA و DES نام دو تا از معروفترین الگوریتم ها میباشد.
۲- الگوریتمها
طراحی الگوریتمهای رمزنگاری مقولهای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمزنگاری استفاده میشود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیمگیری داشته باشند. اگرچه رمزنگاری از اولین کارهای شانون (Shannon) در اواخر دهه ۴۰ و اوایل دهه ۵۰ بشدت پیشرفت کرده است، اما کشف رمز نیز پابهپای رمزنگاری به پیش آمده است و الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کردهاند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای برپایه کارت هوشمند بسیار کم است.
۱-۲ سیستمهای کلید متقارن
یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده میکند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm یا DEA است که بیشتر بعنوان DES شناخته میشود. DES یک محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بینالمللی شناخته میشود. بلوکهای ۶۴بیتی دیتا توسط یک کلید تنها که معمولا ۵۶بیت طول دارد، رمزنگاری و رمزگشایی میشوند. DES از نظر محاسباتی ساده است و براحتی میتواند توسط پردازندههای کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد.
این روش بستگی به مخفیبودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها میتوانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله میشوند که قبلا هویت یکدیگر را تایید کردهاند عمر کلیدها بیشتر از مدت تراکنش طول نمیکشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده میشود.
کلیدهای DES ۴۰بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته میشوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶بیتی عموما توسط سختافزار یا شبکههای بخصوصی شکسته میشوند. رمزنگاری DESسهتایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES که در سه مرتبه انجام میگیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر) مطابق شکل زیر:
این عمل تاثیر دوبرابر کردن طول مؤثر کلید را دارد؛ بعدا خواهیم دید که این یک عامل مهم در قدرت رمزکنندگی است.
الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شدهاند. الگوریتمهایی مانند Blowfish و IDEA برای زمانی مورد استفاده قرار گرفتهاند اما هیچکدام پیادهسازی سختافزاری نشدند بنابراین بعنوان رقیبی برای DES برای استفاده در کاربردهای میکروکنترلی مطرح نبودهاند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده (AES) الگوریتم Rijndael را برای جایگزیتی DES بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish مشخصا برای پیادهسازی در پردازندههای توانـپایین مثلا در کارتهای هوشمند طراحی شد.
در ۱۹۹۸ وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمها Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیادهسازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود.
برای رمزنگاری جریانی (streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت میگیرد بجای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4 سرعت بالا و دامنهای از طول کلیدها از ۴۰ تا ۲۵۶ بیت فراهم میکند. RC4 که متعلق به امنیت دیتای RSA است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده میشود.
۲-۲ سیستمهای کلید نامتقارن
سیستمهای کلید نامتقارن از کلید مختلفی برای رمزنگاری و رمزگشایی استفاده میکنند. بسیاری از سیستمها اجازه میدهند که یک جزء (کلید عمومی یا public key) منتشر شود در حالیکه دیگری (کلید اختصاصی یا private key) توسط صاحبش حفظ شود. فرستنده پیام، متن را با کلید عمومی گیرنده کد میکند و گیرنده آن را با کلید اختصاصی خودش رمزنگاری میکند. بعبارتی تنها با کلید اختصاصی گیرنده میتوان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمیتواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هرگیرندهای بجز گیرنده مورد نظر فرستنده بیمعنی خواهد بود. معمولترین سیستم نامتقارن بعنوان RSA شناخته میشود (حروف اول پدیدآورندگان آن یعنی Rivest ، Shamir و Adlemen است). اگرچه چندین طرح دیگر وجود دارند. میتوان از یک سیستم نامتقارن برای نشاندادن اینکه فرستنده پیام همان شخصی است که ادعا میکند استفاده کرد که این عمل اصطلاحا امضاء نام دارد. RSA شامل دو تبدیل است که هرکدام احتیاج به بتوانرسانی ماجولار با توانهای خیلی طولانی دارد:
امضاء، متن اصلی را با استفاده از کلید اختصاصی رمز میکند؛ رمزگشایی عملیات مشابهای روی متن رمزشده اما با استفاده از کلید عمومی است. برای تایید امضاء بررسی میکنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید اختصاصی متناظر رمزشده است.
به بیان سادهتر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط کلید اختصاصی همان شخص است. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق میشود. افرادی که از کلید اختصاصی این فرد اطلاع ندارند قادر به ایجاد متن رمزشده نیستند بطوریکه با رمزگشایی توسط کلید عمومی این فرد به متن اولیه تبدیل شود.
اساس سیستم RSA این فرمول است: X = Yk (mod r)
که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شدهاند. برای اطلاع از جزئیات بیشتر میتوان به مراجعی که در این زمینه وجود دارد رجوع کرد. این شکل محاسبات روی پردازندههای بایتی بخصوص روی ۸ بیتیها که در کارتهای هوشمند استفاده میشود بسیار کند است. بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن میسازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده میشود و برای نشاندادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده میشود.
سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته میشوند مانند Diffie-Hellman، ElGamal و سایر طرحهای چندجملهای و منحنیهای بیضوی. بسیاری از این طرحها عملکردهای یکـطرفهای دارند که اجازه تاییدهویت را میدهند اما رمزنگاری ندارند. یک رقیب جدیدتر الگوریتم RPK است که از یک تولیدکننده مرکب برای تنظیم ترکیبی از کلیدها با مشخصات مورد نیاز استفاده میکند. RPK یک پروسه دو مرحلهای است: بعد از فاز آمادهسازی در رمزنگاری و رمزگشایی (برای یک طرح کلید عمومی) رشتههایی از دیتا بطور استثنایی کاراست و میتواند براحتی در سختافزارهای رایج پیادهسازی شود. بنابراین بخوبی با رمزنگاری و تصدیقهویت در ارتباطات سازگار است.
طولهای کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA است که آنها برای استفاده در چیپکارتها مناسبتر است. اما RSA محکی برای ارزیابی سایر الگوریتمها باقی مانده است؛ حضور و بقای نزدیک به سهدهه از این الگوریتم، تضمینی در برابر ضعفهای عمده بشمار میرود.
3- روشهای رمزگذاری
3-1 روش متقارن Symmetric در این روش هر دو طرفی که قصد رد و بدل اطلاعات را دارند از یک کلید مشترک برای رمزگذاری و نیز بازگشایی رمز استفاده میکنند.در این حالت بازگشایی و رمزگذاری اطلاعات دو فرآیند معکوس یکدیگر میباشند. مشکل اصلی این روش این است که کلید مربوط به رمزگذاری باید بین دو طرف به اشتراک گذاشته شود و این سوال پیش میآید که دو طرف چگونه میتوانند این کلید را به طور امن بین یکدیگر رد و بدل کنند. انتقال از طریق انترانت و یا به صورت فیزیکی تا حدی امن میباشد اما در انتقال آن در اینترنت به هیچ وجه درست نمیباشد.در این قبیل سیستم ها، کلید های رمزنگاری و رمزگشایی یکسان هستند و یا رابطه ای بسیار ساده با هم دارند .این سیستم ها را سیستم های متقارن یا " تک کلیدی " مینامیم. به دلیل ویژگی ذاتی تقارن کلید رمزنگاری و رمزگشایی، مراقبت و جلوگیری از افشای این سیستم ها یا تلاش در جهت امن ساخت آنها لازم است در بر گیرنده " جلوگیری از استراق سمع " و " ممانعت از دستکاری اطلاعات " باشد .
3-2 روش نامتقارن Asymmetric این روش برای حل مشکل انتقال کلید در روش متقارن ایجاد شد. در این روش به جای یک کلید مشترک از یک جفت کلید به نام های کلید عمومی و خصوصی استفاده میشود. در این روش از کلید عمومی برای رمزگذاری اطلاعات استفاده میشود. طرفی که قصد انتقال اطلاعات را به صورت رمزگذاری شده دارد اطلاعات را رمزگذاری کرده و برای طرفی که مالک این جفت کلید است استفاده میشود. مالک کلید، کلید خصوصی را پیش خود به صورت محرمانه حفظ میکند. در این دسته، کلید های رمزنگاری و رمزگشایی متمایزند و یا اینکه چنان رابطه پیچیده ای بین آنها حکم فرماست که کشف کلید رمزگشایی با در اختیار داشتن کلید رمزنگاری، عملا ناممکن است.
3-3 مقایسه رمزنگاری الگوریتم های متقارن و الگوریتم های کلید عمومی: بحث های زیادی شده که کدام یک از این الگوریتم ها بهترند اما جواب مشخصی ندارد. البته بررسی هایی روی این سوال شده به طور مثال Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی که با الگوریتم های متقارن میتواند رمزنگاری شود از الگوریتم های کلید عمومی کمتر است. و با تحقیق به این نتیجه ریسیدند که الگوریتم های متقارن الگوریتم های بهینه تری هستند. اما وقتی که بحث امنیت پیش می آید الگوریتم های کلید عمومی کارایی بیشتریدارند. و بطور خلاصه میتوان گفت که الگوریتم های متقارن دارای سرعت بالاتر و الگوریتم های کلید عمومی دارای امنیت بهتری هستند. در ضمن گاهی از سیستم ترکیبی از هردو الگوریتم استفاده میکنند که به این الگوریتم ها الگوریتم های ترکیبی (hybrid )گفته میشود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتم های کلید عمومی و الگوریتم های کلید متقارن دارای دو ماهیت کاملا متفاوت هستند و کار برد های متفاوتی دارند به طور مثال در رمزنگاری های ساده که حجم داده ها بسیار زیاد است از الگوریتم متقارن استفاده میشود زیرا داده ها با سرعت بالاتری رمزنگاری و رمزگشایی شوند. اما در پروتکل هایی که در اینترنت استفاده میشود، برای رمز نگری کلید هایی که نیاز به مدیریت دارند از الگوریتم های کلید عمومی استفاده میشود.
3-4 Key Agreement همانطور که در بالا گفته شد به علت کند بودن و محدودیت رمزگذاری با روش نامتقارن از این روش فقط برای رمزگذاری کلید مشترک استفاده میشود. اما این روش نیز یک مشکل دارد و آن اینست که هر شخص نیاز به کلید عمومی و خصوصی مربوط به خود را دارد و باید برای انتقال اطلاعات آنرا برای طرف مقابل بفرستد. یک راه برای حل مشکل استفاده از کلید عمومی و یک مکانیزم به نام Key Agreement میباشد که به طبق آن یک توافق بر روی کلید مخفی بین طرفین به وجود میآید و به این ترتیب نیازی به انتقال کلید نمیباشد. وقتی که یک بار بر روی یک کلید مشترک توافق حاصل شد از آن میتوان برای رمزگذاری و رمزگشایی اطلاعات مربوطه استفاده کرد. معمولا در این روش از الگوریتم Diffie-Hellman استفاده میشود. مراحل انتقال اطلاعات از این روش به صورت زیر میباشد: - آغازگر ابتدا یک جفت کلید عمومی و خصوصی ایجاد کرده و کلید عمومی را همراه با مشخصات الگوریتم (Algorithm Specification) به سمت طرف مقابل میفرستد. - طرف مقابل نیز یک جفت کلید عمومی و خصوصی همراه با مشخصات الگوریتم آغازگر ساخته و کلید عمومی را برای آغازگر میفرستد. - آغازگر یک کلید مخفی بر اساس کلید خصوصی خود و کلید عمومی طرف مقابل ایجاد میکند. - طرف مقابل نیز با استفاده از کلید خصوصی خود و کلید عمومی آغازگر یک کلید مخفی میسازد. الگوریتم Diffie-Hellman تضمین میکند که کلید مخفی هر دو طرف یکسان میباشد.
ممکن است هنگام انتقال از فایل ورد به داخل سایت بعضی متون به هم بریزد یا بعضی نمادها و اشکال درج نشود ولی در فایل دانلودی همه چیز مرتب و کامل است
متن کامل را می توانید در ادامه دانلود نمائید
چون فقط تکه هایی از متن برای نمونه در این صفحه درج شده است ولی در فایل دانلودی متن کامل همراه با تمام ضمائم (پیوست ها) با فرمت ورد word که قابل ویرایش و کپی کردن می باشند موجود است
مقدمات رمزنگاری 96 صفحه