صفحه اول > مقالات

 

رمزنگاري

۱- معرفي و اصطلاحات

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

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

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

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

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

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

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

 

۲- الگوريتم‌ها

طراحي الگوريتمهاي رمزنگاري مقوله‌اي براي متخصصان رياضي است. طراحان سيستمهايي که در آنها از رمزنگاري استفاده مي‌شود، بايد از نقاط قوت و ضعف الگوريتمهاي موجود مطلع باشند و براي تعيين الگوريتم مناسب قدرت تصميم‌گيري داشته باشند. اگرچه رمزنگاري از اولين کارهاي شانون (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‌ محکي براي ارزيابي ساير الگوريتمها باقي مانده است؛ حضور و بقاي نزديک به سه‌دهه از اين الگوريتم، تضميني در برابر ضعفهاي عمده بشمار مي‌رود.