IRCAR201002051
رمزنگاري، شيوه باستاني حفاظت از اطلاعات است كه سابقه آن به حدود 4000 سال پيش از ميلاد باز مي گردد. امروزه رمزنگاري در دنياي مدرن از اهميت ويژه اي برخوردار است، به طوري كه به عنوان يك روش مؤثر براي حفاظت از اطلاعات حساس مانند اطلاعات طبقه بندي شده نظامي، اطلاعات حساس مؤسسات مالي، كلمات عبور ذخيره شده بر روي سيستم هاي كامپيوتري و داده هاي منتشر شده بر روي اينترنت و يا از طريق امواج راديويي به كار مي رود.
در سري مقاله هاي رمزنگاري مفاهيم اوليه رمزنگاري را شرح خواهيم داد. لازم به ذكر است كه رمزنگاري يك مبحث بسيار پيچيده است و در اينجا ما قصد توضيح پايه هاي رياضي الگوريتمهاي رمزنگاري يا باز كردن تمام جزئيات را نداريم و تنها به معرفي كليات اين مقوله خواهيم پرداخت. براي دريافت اطلاعات و جزئيات بيشتر مي توانيد به كتابهايي كه در اين زمينه نگارش شده اند مراجعه فرماييد.
در قسمتهاي قبلي تاريخچه مختصري از رمزنگاري ، مفاهيم اوليه آن و كليدهاي رمزنگاري را توضيح داديم. در اين قسمت الگوريتم هاي رمزنگاري با استفاده از كليد متقارن و در قسمت بعدي الگوريتم هاي رمزنگاري با استفاده از كليد نامتقارن را شرح و بسط خواهيم داد.
الگوريتم هاي رمزنگاري متقارن
يك الگوريتم متقارن از يك كليد براي رمزنگاري و رمزگشايي استفاده ميكند. بيشترين شكل استفاده از رمزنگاري كه در كارتهاي هوشمند و البته در بيشتر سيستمهاي امنيت اطلاعات وجود دارد data encryption algorithm يا DEA است كه بيشتر بعنوان DES شناخته ميشود. الگوريتم DES يك محصول دولت ايالات متحده است كه امروزه بعنوان يك استاندارد بينالمللي شناخته شده و بطور وسيعي مورد استفاده قرار مي گيرد. بلوكهاي ۶۴ بيتي ديتا توسط يك كليد تنها كه معمولا ۵۶بيت طول دارد، رمزنگاري و رمزگشايي ميشوند. الگوريتم DES از نظر محاسباتي ساده است و به راحتي ميتواند توسط پردازندههاي كند (بخصوص آنهايي كه در كارتهاي هوشمند وجود دارند) انجام گيرد. در دهه 60 ميلادي، با رشد فزاينده فناوري كامپيوتر و نگراني ها در مورد محرمانه و خصوصي بودن ارتباطات، علاقه به ايجاد يك استاندارد رمزنگاري ملي در آمريكا به شدت افزايش پيدا كرد. تلاشها در جهت ايجاد استانداردي بود كه بتواند توسط كامپيوترها و شبكه هاي متفاوت دولتي در آمريكا مورد استفاده قرار گيرد و همچنين در سيستم هاي پيمانكاران دولتي نيز مفيد واقع شود. تلاشهاي مذكور منجر به ايجاد استاندارد رمزنگاري داده يا Data Encryption Standard (DES) گشت كه امروزه به صورت وسيعي در رمزنگاري مورد استفاده قرار مي گيرد. در سال 1965 موسسه ملي استانداردها و فناوري آمريكا كه امروزه با نام NIST شناخته مي شود، مسئوليت تعيين استانداردهاي محافظت از سيستم هاي كامپيوتري را بر عهده گرفت. موسسه مذكور در فاصله سالهاي 1968 تا 1971 به مطالعه و تحقيق در مورد نيازهاي امنيتي سيستم هاي كامپيوتري دولتي پرداخت كه در نهايت منجر به تهيه يك استاندارد رمزنگاري شد. موسسه NIST با همكاري NSA يا آژانس امنيت ملي آمريكا، نخستين برنامه رمزنگاري را توليد كرد. در اوايل كار هدف ايجاد يك استاندارد واحد براي محافظت از داده هاي طبقه بندي شده دولتي و اطلاعات حساس بخش خصوصي بود كه از طرفي بتواند بين 10 تا 15 سال دوام آورد (هدفي كه DES بسيار پيشتر از آن رفت) و از طرفي نيز قابل استفاده در انواع سيستم هاي مختلف حتي سيستم هاي كند باشد. در آگوست 1974، NSA از توليد كنندگان الگوريتم هاي رمزنگاري براي بار دوم دعوت كرد تا روش هاي خود را اعلام كنند تا شايد در ايجاد يك استاندارد رمزنگاري عمومي با كيفيت بالا مورد استفاده قرار گيرد. در اين زمان IBM الگوريتمي را ارائه كرد كه مورد قبول NSA واقع شد. در شركت IBM تا قبل از آن كارهايي براي توسعه چندين الگوريتم متفاوت رمزنگاري انجام شده بود. يكي از آنها يك الگوريتم 64 بيتي بود كه براي محافظت از تراكنش هاي مالي به كار مي رفت و ديگري يك الگوريتم 128 بيتي به نام Lucifer بود. آژانس امنيت ملي آمريكا در آن زمان از طرفي IBM را تشويق به ثبت الگوريتم Lucifer كرد و از طرف ديگر به متخصصان خود اجازه داد تا سعي كنند ارتباطات رمزنگاري شده توسط الگوريتم مذكور را بشكنند. لذا الگوريتم مذكور بعد از بررسي پايه هاي رياضي و سعي در شكستن آن، دچار تغييرات و اصلاحاتي شد (براي مثال طول كليد از 128 بيت به 56 بيت كاهش يافت و تغييراتي در توابع جايگزيني انجام شد) تا به تولد DES منجر شد. بالاخره در سال 1977 اين الگوريتم به عنوان استاندارد رمزنگاري داده منتشر شد و به عنوان روشي رسمي در محافظت از داده هاي طبقه بندي نشده در مؤسسات دولتي آمريكا مورد استفاده قرار گرفت. در عين حال NSA موظف شد تا هر پنج سال يك بار اين الگوريتم را مورد مطالعه قرار دهد و تأييد كند كه هنوز مي تواند به عنوان استاندارد به كار رود. قابل ذكر است كه اين روش بستگي به مخفيبودن كليد دارد. بنابراين براي استفاده در دو موقعيت مناسب است: هنگامي كه كليدها ميتوانند به يك روش قابل اعتماد و امن توزيع و ذخيره شوند يا جايي كه كليد بين دو سيستمي مبادله ميشود كه قبلا هويت يكديگر را تاييد كردهاند. عمر كليدها بيشتر از مدت تراكنش طول نميكشد. رمزنگاري DES عموما براي حفاظت ديتا از شنود در طول انتقال استفاده ميشود.
استاندارد رمزنگاري يا DES چيست؟
در FIPS PUB 46 تعريف DES اينگونه آمده است:
استاندارد رمزنگاري داده (DES) يك الگوريتمي رياضي است كه براي رمزنگاري و رمزگشايي اطلاعات كدشده باينري به كار مي رود. رمزنگاري داده ها را تبديل به داده هاي نامفهومي به نام cipher مي كند. رمزگشايي از cipher آن را به داده هاي اصلي بازمي گرداند. الگوريتم مذكور هر دو عمليات رمزنگاري و رمزگشايي را بر اساس يك عدد باينري به نام كليد مشخص مي سازد ... داده ها تنها در صورتي قابل بازيابي از cipher هستند كه دقيقاً از كليدي كه براي رمزنگاري استفاده شده براي رمزگشايي نيز استفاده شود.
الگوريتم DES داراي دو جزء است: يك الگوريتم رمزنگاري و كليد. الگوريتم DES منتشر شده شامل چندين تكرار از يك تغيير شكل ساده با استفاده از هر دو تكنيك جابجايي و جايگزيني (به رمزنگاري چيست مراجعه كنيد) است. اين الگوريتم تنها از يك كليد براي رمزنگاري و رمزگشايي استفاده مي كند و به همين جهت به آن رمزنگاري كليد اختصاصي نيز گفته مي شود. همان طور كه در مقاله كليدهاي رمزنگاري توضيح داديم در اين حالت حفظ كليد به صورت محرمانه توسط فرستنده و گيرنده پيغام بسيار اهميت دارد زيرا الگوريتم به صورت عمومي در اختيار همگان است و در صورت لو رفتن كليد، هر كسي مي تواند پيغام محرمانه را ببيند. به همين جهت در رمزنگاري DES معمولاً عمر كليد به اندازه عمر تراكنش است.
كليد DES يك توالي هشت بايتي است كه هر بايت شامل يك كليد هفت بيتي و يك بيت توازن است. در حين رمزنگاري، الگوريتم DES متن اصلي را به بلوك هاي 64 بيتي مي شكند. اين الگوريتم در هر زمان بر روي يك بلوك كار مي كند و آن را از نصف شكسته و كاراكتر به كاراكتر رمزنگاري مي كند. كاراكترها 16 بار تحت نظارت كليد تغيير شكل پيدا كرده و در نهايت يك متن رمزنگاري شده 64 بيتي توليد مي شود. كليد حاوي 56 بيت معنادار و هشت بيت توازن است.
در سال 1997 در يك تلاش همگاني و با استفاده از 14 هزار رايانه يك پيغام رمزنگاري شده توسط DES شكسته شد كه البته چندان باعث نگراني نيست. زيرا در بيشتر انتقال پيغام ها، به خصوص در نقل و انتقالات مالي، يك بازه زماني وجود دارد كه در آن اطلاعات بايد كاملاً محرمانه نگه داشته شود و بعد از آن فاش شدن آنها چندان اهميت نخواهد داشت.
بعد از سقوط DES بسياري از مؤسسات از DES سه گانه استفاده كردند كه به عنوان 3DES شناخته مي شود و در آن DES سه بار تكرار مي شود(دو مرتبه با استفاده از يك كليد به سمت جلو (رمزنگاري) و يك مرتبه به سمت عقب (رمزگشايي) با يك كليد ديگر). به اين صورت طول كليد به طرز مؤثري افزايش پيدا مي كند و منجر به ارتقاي امنيت مي شود، هر چند كه هيچ كس مطمئن نيست اين روش تا كي جواب مي دهد.
به هرحال DES به حيات خود ادامه مي دهد زيرا اولاً هر كسي مي تواند به راحتي از آن استفاده كند و ثانياً قابليت حفظ محرمانگي را براي مدت كوتاهي دارد كه براي بسياري از برنامه هاي كاربردي، زمان مناسبي محسوب مي شود.
رمزنگاري DES چهار مد مجزا را فراهم مي كند كه از لحاظ پيچيدگي و موارد كاربرد متفاوت هستند. در زير هر كدام از مد ها به صورت خلاصه شرح داده شده اند:
- ECB
اين مد همان Electronic Codebook است و براي هر بلوك از داده مشخص و يك كليد مشخص، همواره يك متن رمزنگاري شده ثابت توليد مي شود. از مد ECB براي رمزنگاري كليدها استفاده مي شود. - CBC
اين مد Cipher Block Chaining است كه مد ارتقايافته ECB است. در اين مد بلوك هاي رمزنگاري شده به هم زنجير مي شوند. برخلاف مد ECB كه در آن بلوك هاي ورودي يكسان خروجي يكساني داشتند و ممكن بود منجر به افشاي الگو شوند، در اينجا CBC هر بلوك را با استفاده از متن اصلي، كليد و يك مقدار سوم رمزنگاري مي كند كه وابسته به بلوك قبلي است و لذا تكرار رمزنگاري كه به آن زنجيرسازي گفته مي شود منجر به پنهان سازي الگوهاي تكراري مي شود. - CFB
مد Cipher Feedback از متوني كه قبلاً رمزنگاري شده اند به عنوان ورودي DES براي توليد شبه تصادفي خروجي استفاده مي كند. اين خروجي با متن اصلي تركيب شده تا متن رمزنگاري شده را توليد كند. از اين مد براي رمزنگاري كاراكترهاي تنها استفاده مي شود. - OFB
مد Output Feedback بسيار شبيه به CFB است ولي مانند آن به زنجير كردن متون رمزنگاري شده نمي پردازد و به جاي آن يك سري پردازش ديگر بر روي متن اصلي انجام مي دهد. از اين مد براي رمزنگاري ارتباطات ماهواره اي استفاده مي شود.
مدهاي CBC و CFB تأييد پيغام و رمزنگاري را تؤاماً انجام مي دهند. تأييد پيغام جهت اطمينان از مطابقت متن ارسال شده و متن دريافت شده است. در هنگام رمزنگاري DES بلوك هاي متن به هم لينك مي شوند، در مدهاي CFB و CBC رمزنگاري هر بلوك وابسته به رمزنگاري بلوك قبل از آن است. به علت وجود همين اتصال، در صورت ايجاد تغيير حتي در يك كاراكتر، بلوك نهايي رمزنگاري شده نيز تغيير خواهد كرد. لذا بلوك آخر به عنوان يك كد تأييد هويت كار مي كند و از يك cryptographic checksum براي آزمايش دقت انتقال و تشخيص دستكاري پيغام استفاده مي شود.
كليدهاي DES ۴۰بيتي امروزه در عرض چندين ساعت توسط كامپيوترهاي معمولي شكسته ميشوند و بنابراين نبايد براي محافظت از اطلاعات مهم و با مدت اعتبار طولاني استفاده شود. كليد ۵۶ بيتي عموما توسط سختافزار يا شبكههاي بخصوصي شكسته ميشوند.
استاندارد پيشرفته رمزنگاري يا AES چيست؟
مؤسسه NIST سالها با گروههاي رمزنگاري همكاري كرد تا استاندارد رمزنگاري پيشرفته اي را تدوين نمايد. هدف كلي توسعه استانداردي بود كه توانايي محافظت از اطلاعات حساس را براي حداقل يك دهه دارا باشد. مسابقات بسياري انجام شد تا الگوريتمي كه بايد پايه استاندارد رمزنگاري پيشرفته (AES) باشد، معين گردد. بالاخره در سال 1999، بين پنج الگوريتمي كه به فاينال رسيدند، الگوريتم Rijndael انتخاب شد كه توسط Joan Daemon و Vincent Rijmen نوشته شده بود. الگوريتم هايي كه به فاينال راه پيدا كرده بودند عبارتند از: MARS، RC6، Rijndael، Serpent و Twofish. استاندارد FIPS-197 در همين رابطه تهيه شده است و الگوريتم مذكور را به عنوان يك رمزنگاري متقارن تعريف مي كند كه سازمان هاي دولتي آمريكا بايد با استفاده از آن، اطلاعات حساس را رمزنگاري كنند. از آنجايي كه اثبات قابل اعتماد بودن الگوريتم مذكور كار بسيار دشواري بود، بسياري از كشورها و مليت هاي ديگر نيز به پروژه AES پيوستند و به آزمايش اين الگوريتم پرداختند و از آنجايي كه مشكلي در اين مورد پيدا نشد، الگوريتم مذكور روز به روز قابليت اعتماد بيشتري را كسب كرد.
طرز كار AES
الگوريتم Rijndael بايت به بايت كار مي كند و ورودي اصلي را با كليد رمزنگاري در يك ماتريس 4×4 جفت مي كند. كليد، به طريقي تقسيم يا برنامه ريزي شده است كه بتواند در مراحل مختلف تكرار به تدريج تزريق شود. اولين قسمت كليد قبل از شروع پروسه 10 مرحله اي تزريق مي شود. در هر كدام از اين مراحل، بايتها جابجا مي شوند، رديف ها شيفت پيدا مي كنند و ستونها تركيب مي شوند.
- SubBytes
در پروسه جابجايي، بايت هاي متن ورودي در يك جعبه جابجايي به نام S-box قرار مي گيرند كه يك ماتريس 16×16 است. هر بايت در يك تقاطع سطر و ستون اين ماتريس جا مي گيرد. براي پيدا كردن جاي هر بايت اولين عدد صحيح مبناي 16 (nibble) در يك بايت متن اصلي گرفته شده و از آن براي مشخص كردن سطر S-box استفاده مي شود و سپس از دومين nibble براي مشخص كردن ستون استفاده مي شود. كاراكتري كه در تقاطع سطر و ستون انتخاب شده ذخيره مي گردد به عنوان SubByte براي متن اصلي شناخته مي شود. اين پروسه براي هر 16 بايت در ماتريس تكرار مي شود. - شيفت رديف و تركيب ستونها
بايت هايي كه بايد رمزنگاري شوند، توسط جايگذاري تعويض مي شوند وسپس رديف ها شيفت پيدا مي كنند. براي مثال اولين رديف دست نخورده باقي مي ماند، رديف دوم يك محل به راست جابجا مي شود، سومين رديف دو محل جابجا مي شود و آخرين رديف نيز سه محل جابجا مي شود. اين پروسه توسط يك فاز تركيب ستونها دنبال مي شود كه در آن هر ستون از ماتريس در يك ماتريس ديگر ضرب مي شود تا موقعيت ستون تغيير پيدا كند. - كليدهاي Round
در مرحله بعدي يك كليد round به هر ستون اضافه مي شود. اين كليد در واقع يك تكه كوچك از يك كليد محرمانه است كه براي مراحل بعدي رمزنگاري تزريق مي شود. - تكرار
اين تبديل ها 9 بار ديگر تكرار مي شوند. در تكرار آخر تركيب ستون ها وجود ندارد و با اضافه كردن كليد round متن رمزنگاري شده به دست مي آيد. كليد نيز به نوبه خود شيفت پيدا مي كند، گرد مي شود و به خودش اضافه مي شود.
- 26