• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
  • تعداد بازديد :
  • 6062
  • پنج شنبه 1383/2/31
  • تاريخ :

رمزنگاری


1- معرفی و اصطلاحات

رمزنگاری علم كدها و رمزهاست. یك هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی كه بین فرماندهان، جاسوسان،‌ عشاق و دیگران ردوبدل می‌شده، استفاده شده است تا پیغامهای آنها محرمانه بماند.

هنگامی كه با امنیت دیتا سروكار داریم، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و می‌توانند از رمزنگاری استفاده كنند.

اغلب این مساله باید تضمین شود كه یك پیغام فقط میتواند توسط كسانی خوانده شود كه پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی كه تامین كننده این مساله باشد "رمزنگاری" نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریكه هیچكس بغیر از دریافت كننده موردنظر نتواند محتوای پیغام را بخواند.

رمزنگاری مخفف‌ها و اصطلاحات مخصوص به خود را دارد. برای درك عمیق‌تر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( كه بعنوانplaintext شناخته می‌شود)، آنرا با استفاده از یك كلید (رشته‌ای محدود از بیتها) بصورت رمز در می‌آوریم تا كسی كه دیتای حاصله را می‌خواند قادر به درك آن نباشد. دیتای رمزشده (كه بعنوانciphertext شناخته می‌شود) بصورت یك سری بی‌معنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر می‌رسد. برای حصول متن اولیه دریافت‌كننده آنرا رمزگشایی می‌كند. یك شخص ثالت (مثلا یك هكر) می‌تواند برای اینكه بدون دانستن كلید به دیتای اصلی دست یابد، كشف رمز‌نوشته(cryptanalysis) كند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است.

رمزنگاری دو جزء اصلی دارد، یك الگوریتم و یك كلید. الگوریتم یك مبدل یا فرمول ریاضی است. تعداد كمی الگوریتم قدرتمند وجود دارد كه بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شده‌اند. كلید، یك رشته از ارقام دودویی (صفر و یك) است كه بخودی‌خود بی‌معنی است. رمزنگاری مدرن فرض می‌كند كه الگوریتم شناخته شده است یا می‌تواند كشف شود. كلید است كه باید مخفی نگاه داشته شود و كلید است كه در هر مرحله پیاده‌سازی تغییر می‌كند. رمزگشایی ممكن است از همان جفت الگوریتم و كلید یا جفت متفاوتی استفاده كند.

دیتای اولیه اغلب قبل از رمزشدن بازچینی می‌شود؛این عمل عموما بعنوانscrambling شناخته می‌شود. بصورت مشخص‌تر،hash functionها بلوكی از دیتا را (كه می‌تواند هر اندازه‌ای داشته باشد) به طول از پیش مشخص‌شده كاهش می‌دهد. البته دیتای اولیه نمی‌تواند ازhashed value بازسازی شود.Hash functionها اغلب بعنوان بخشی از یك سیستم تایید هویت مورد نیاز هستند؛ خلاصه‌ای از پیام (شامل مهم‌ترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته ‌وhash می‌شود.

یك چك تایید پیام(Message Authentication Check)یاMACیك الگوریتم ثابت با تولید یك امضاء برروی پیام با استفاده از یك كلید متقارن است. هدف آن نشان دادن این مطلب است كه پیام بین ارسال و دریافت تغییر نكرده است. هنگامی كه رمزنگاری توسط كلید عمومی برای تایید هویت فرستنده پیام استفاده می‌شود، منجر به ایجاد امضای دیجیتال(digital signature) می‌شود.

2- الگوریتم‌ها

طراحی الگوریتمهای رمزنگاری مقوله‌ای برای متخصصان ریاضی است. طراحان سیستمهایی كه در آنها از رمزنگاری استفاده می‌شود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیم‌گیری داشته باشند. اگرچه رمزنگاری از اولین كارهای شانون(Shannon)در اواخر دهه40 و اوایل دهه50 بشدت پیشرفت كرده است، اما كشف رمز نیز پابه‌پای رمزنگاری به پیش آمده است و الگوریتمهای كمی هنوز با گذشت زمان ارزش خود را حفظ كرده‌اند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای كامپیوتری عملی و در سیستمهای برپایه كارت هوشمند بسیار كم است.

1-2 سیستمهای كلید متقارن

یك الگوریتم متقارن از یك كلید برای رمزنگاری و رمزگشایی استفاده می‌كند. بیشترین شكل استفاده از رمزنگاری كه در كارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود داردdata encryption algorithmیاDEAاست كه بیشتر بعنوانDES‌ شناخته می‌شود.DESیك محصول دولت ایالات متحده است كه امروزه بطور وسیعی بعنوان یك استاندارد بین‌المللی شناخته ‌می‌شود. بلوكهای64بیتی دیتا توسط یك كلید تنها كه معمولا56بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند.DES‌ از نظر محاسباتی ساده است و براحتی می‌تواند توسط پردازنده‌های كند (بخصوص آنهایی كه در كارتهای هوشمند وجود دارند) انجام گیرد.

این روش بستگی به مخفی‌بودن كلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی كه كلیدها می‌توانند به یك روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی كه كلید بین دو سیستم مبادله می‌شوند كه قبلا هویت یكدیگر را تایید كرده‌اند عمر كلیدها بیشتر از مدت تراكنش طول نمی‌كشد. رمزنگاریDES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می‌شود.

كلیدهایDES چهل بیتی امروزه در عرض چندین ساعت توسط كامپیوترهای معمولی شكسته می‌شوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. كلید 56بیتی عموما توسط سخت‌افزار یا شبكه‌های بخصوصی شكسته می‌شوند. رمزنگاریDESسه‌تایی عبارتست از كدكردن دیتای اصلی با استفاده از الگوریتمDES‌ كه در سه مرتبه انجام می‌گیرد. (دو مرتبه با استفاده از یك كلید به سمت جلو (رمزنگاری)و یك مرتبه به سمت عقب (رمزگشایی) با یك كلید دیگر) مطابق شكل زیر:

این عمل تاثیر دوبرابر كردن طول مؤثر كلید را دارد؛ بعدا خواهیم دید كه این یك عامل مهم در قدرت رمزكنندگی است.

الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شده‌اند. الگوریتمهایی مانندBlowfish وIDEA برای زمانی مورد استفاده قرار گرفته‌اند اما هیچكدام پیاده‌سازی سخت‌افزاری نشدند بنابراین بعنوان رقیبی برای DESبرای استفاده در كاربردهای میكروكنترلی مطرح نبوده‌اند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده(AES) الگوریتمRijndael را برای جایگزیتیDES بعنوان الگوریتم رمزنگاری اولیه انتخاب كرده است. الگوریتمTwofish مشخصا برای پیاده‌سازی در پردازنده‌های توان‌ـ‌پایین مثلا در كارتهای هوشمند طراحی شد.

در 1998 وزارت دفاع ایالات متحده تصمیم گرفت كه الگوریتمهاSkipjack و مبادله كلید را كه در كارتهایFortezza استفاده شده بود، از محرمانگی خارج سازد. یكی از دلایل این امر تشویق برای پیاده‌سازی بیشتر كارتهای هوشمند برپایه این الگوریتمها بود.

برای رمزنگاری جریانی(streaming encryption)(كه رمزنگاری دیتا در حین ارسال صورت می‌گیرد بجای اینكه دیتای كدشده در یك فایل مجزا قرار گیرد) الگوریتمRC4‌ سرعت بالا و دامنه‌ای از طول كلیدها از 40 تا 256  بیت فراهم می‌كند.RC4 كه متعلق به امنیت دیتایRSA‌ است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده می‌شود.

2-2 سیستمهای كلید نامتقارن

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

امضاء، متن اصلی را با استفاده از كلید اختصاصی رمز می‌كند؛رمزگشایی عملیات مشابه‌ای روی متن رمزشده اما با استفاده از كلید عمومی است. برای تایید امضاء بررسی می‌كنیم كه آیا این نتیجه با دیتای اولیه یكسان است؛ اگر اینگونه است، امضاء توسط كلید اختصاصی متناظر رمزشده است.

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

اساس سیستمRSAاین فرمول است:X = Yk(modr)

كهX متن كد شده،Y متن اصلی،k كلید اختصاصی وr حاصلضرب دو عدد اولیه بزرگ است كه با دقت انتخاب شده‌اند. برای اطلاع از جزئیات بیشتر می‌توان به مراجعی كه در این زمینه وجود دارد رجوع كرد. این شكل محاسبات روی پردازنده‌های بایتی بخصوص روی ? بیتی‌ها كه در كارتهای هوشمند استفاده می‌شود بسیار كند است. بنابراین، اگرچهRSA هم تصدیق هویت و هم رمزنگاری را ممكن می‌سازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در كارتهای هوشمند استفاده می‌شود و برای نشاندادن عدم تغییر پیام در طول ارسال و رمزنگاری كلیدهای آتی استفاده می‌شود.

سایر سیستمهای كلید نامتقارن شامل سیستمهای لگاریتم گسسته می‌شوند مانندDiffie-Hellman،ElGamal و سایر طرحهای چندجمله‌ای و منحنی‌های بیضوی. بسیاری از این طرحها عملكردهای یك‌ـ‌طرفه‌ای دارند كه اجازه تاییدهویت را می‌دهند اما رمزنگاری ندارند. یك رقیب جدیدتر الگوریتمRPK‌ است كه از یك تولیدكننده مركب برای تنظیم تركیبی از كلیدها با مشخصات مورد نیاز استفاده می‌كند.RPKیك پروسه دو مرحله‌ای است: بعد از فاز آماده‌سازی در رمزنگاری و رمزگشایی (برای یك طرح كلید عمومی) رشته‌هایی از دیتا بطور استثنایی كاراست و می‌تواند براحتی در سخت‌افزارهای رایج پیاده‌سازی شود. بنابراین بخوبی با رمزنگاری و تصدیق‌هویت در ارتباطات سازگار است.

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

برگرفته از سایت www.ircert.com

UserName