الگوريتم رمز گذاري

مقدمه
رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی استو برای قرنها بمنظورمحافظت از پیغامهایی که بین فرماندهان؛جاسوسان، عشاق و دیگران رد وبدل می شده،استفاده شده است تا پیغامهای آنها محرمانه بماند. به عبارت دیگر می توان گفت و رمزنگاری از دیر باز به عنوان یک ضرورت برای حفاظت از اطلاعات خصوصی در مقابل دسترسی های غیر مجاز در تجارت و سیاست و مسایل نظامی وجود داشته است. به طور مثال تلاش برای ارسال یک پیام سری بین دو هم پیمان به گونه ای که حتی اگر توسط دشمن دریافت شود قابل درک نباشد ، در رم نیز دیذه شده است. هنگامی که با امنیت دیتا سرو کار داریم ، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی ، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مردن قرار دارندو می توانند از رمز نگاری استفاده کنند.

اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شودکه پیغام برای آنها ارسال شده است و دیگران ابن اجازه را ندارند. روشی که تامین کننده این مساله باشد”رمزنگاری” نام دارد. رمز نگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس بغیر از دریافت کننده مورد نظر نتواند محتوای پیغام را بخواند.
رمزنگاری مخفف ها و اصطلاحات مخصوص به خود را دارد. برای درک عمیق تر بهمقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext شناخته می شود)،آنرا با استفاده از یک کلید ( رشته ای محدود از بیتها )بصورت رمز در می آوریم تا کسی که دیتای حاصله را می خواند قادر به در ک آن نباشد.

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

دیتای اویله اغلب قبل از رمز شدن بازچینی می شود، این عمل عموما بعنوان scrambling شناخته می شود. بصورت مشخص تر ، hash function ها بلوکی از دیتا را که ( که می تواند هر اندازه ای داشته باشد) به طول از پیش مشخص شده کاهش می دهد. البته دیتای اولیه نمی تواند از hashed value بازسازی شود. hash function ها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصه ای از پیغام (شامل مهم ترین قسمتها مانند شماره پیام ، تاریخ و ساعت، و نواحی مهم دیتا ) قبل از رمز نگاریخود پیام ،ساخته و hash می شود. یک چک تایید پیام (Message Authentication Check) یاMAC یک الگوریتم ثابت با تولید یک امضاء بر روی پیام با استفاده از یک کلید است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است . هنگامی که رمز نگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده می شود، منجر به ایجاد امضای دیچتال(digital signature) می شود. طراحی الگوریتمهای رمزنگاری مقوله ای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمز نگاری استفاده می شود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشندو برای تعییین الگوریتم مناسب قدرت تصمیم گیری داشته باشند. با وجود کثرت تعداد الگوریتمهای موجود، الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کرده اند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای بر پایه کارت هوشمند بسیار کم است. از آنجا که بحث و بررسی در خصوص امضای دیجیتال بدون نگاهی هر چند کوتاه بر رمز نگاری و سیستم ها و الگوریتمها ی مختلف مرتبط با آن غیر ممکن به نظر می رسد.

۱-۱- تاریخچه رمزنگاری و امضای دیجیتال
رمزنگاری ، علم رمزخارج کردن اطلاعات به سالهای ۱۹۰۰ پیش از میلاد بر می گردد؛زمانیکه یکی از کاتبین در مصر با اقتباس از علم تصاویر و مفاهیم آنها در آن دوره توانست پیامهای ارتباطی خود را ایجاد کند. افراد قابل ذکر بسیاری هستند که می توان در تحول علم رمزنگاری از آنها نام برد.برای مثال Julius Caesar (100-44 پیش از میلاد) از یک چایگزینی ساده در حروف الفبا استفاده کرد( تنها حرو ف را تعداد ثابتی جایجا می کرد) و در ارتباطات دولتی و نظامی برای انتقال پیام های محرمانه به ژنرال های خود از این سیستم ابداعی استفاده می کرد.

بعدها Francis Bacon در ۱۶۲۳ روش رمز کردنی را که امروزه نام خود وی بر روی آن است را مورد بحث و بررسی قرار داد. یک روش کد کردن ۲ حرفی که امروزه تحت عنوان رمزنگاری باینری۵ بیتی شناخته می شود. بعدها خود وی این روش را به عنوان یک وسیله استگانوگرافی توسعه داد.
Thomas Jeffersin در دهه ی ۱۷۹۰ روش رمز کردن چرخشی ای را ارائه داد که در جنگ جهانی دوتوسط ارتش آمریکا مورد استفاده قرار می گرفت. در اواخر دهه ۱۹۲۰ واوایل دهه ۱۹۳۰، FBI گروهی را تشکیل داد تا به بررسی استفاده از رمزنگاری توسط مجرمین بپردازند. در دهه ۱۹۷۰ دکتر Horst Feistel روش رمزنگاری Feistel را ارائه داد که به عنوان مقدمه ای بر DES3 امروزی شناخته می شود. در سپتامبر ۱۹۷۷ Riverst Shamir و Adleman رمزنگاری جهانی RSA خود را معرفی کردند که قابل اعمال بر رمزنگاری کلید عمومی و امضای دیجیتال می باشد. در سال ۱۹۹۰ ابداعی که توسط Xuejia Lai و James Massey انجام شد، یک رمزنگاری۱۲۸ بیتی خیلی قویتر را جایگزین استاندارد DES قدیمی کرد. در رو یارویی با افزایش رمزنگاری ، مجددا FBI تلاش خود برای دسترسی به پیا مهای ساکنین آمریکا را آغاز کرد. در پاسخ Phil Zimmerman اولین نسخه ازPGP را در سال ۱۹۹۱ به عنوان یک محصول رایگان ارائه که از الگوریتم IDEA استفاده می کند.PGP ، این برنامه رایگان که الگوریتمهای در رده ی نظامی را بر روی اینترنت ارائه می دهد ، به علت چنین کاربرد گستره ای به استاندارد کریپتوگرافی تبدیل شد. در سال ۱۹۹۴ پروفسورRon Riverst که یکی از ابداع کنندگان رمزنگاری RSA بود یک الگوریتم جدید با نام RC5 را بر روی اینترنت ارائه داد که با وجودیکه قویتر از RC5 می باشد، هنوز بعد از گذشت یک دهه نتوانسته جایگزین DES و RSA شود.

۲-۱- سیستمهای کلید متقارن
یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده میکنند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود داردdata encryption algorithm یا DEA است که بیشتر بعنوان DES محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بین المللی شتاخته می شود. بلوکهای ۶۴ بیتی دیتا توسط یک کلید تنها که معمولا ۵۶ بیتی طول دارد، رمزنگاری و رمزگشایی می شوند. DES از نظر محاسباتی ساده است و براحتی می تواند توسط پردازنده های کند

( بخصوص آناهایی که در کارتهای هوشند وجود دارند) انجام گیرد. این روش بستگی به مخفی بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلید ها می توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله می شوند که قبلا هویت یکدیگر را تایید کرده اند عمر کلیدها بیشتر از مدت تراکنش طول نمی کشد . رمزنگاری DES عموما برای حفاظت دیتااز شنود در طول انتقال استفاده می شود. کلیدهای DES 40 بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می شوند و بنابراین برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶ بیتی توسط سخت افزار یا شبکه های بخصوصی شکسته می شوند. رمزنگاری 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 متن کد شده ، Yمتن اصلی ، K کلید اختصاصی و R حاصل ضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده اند. در پیاده سازی این پروژه نیز از سیستم RSA استفاده شده و در فصل های بعدی به توضیح بیشتر در خصوص این الگوریمت پرداخته شده است. در این شکل محاسبات روی پردازنده های بایتی بخصوص روی ۸ بیتی های که در کارتها ی هوشمند استفاده می شود بسیار کند است است. بنابراین ، اگر چه RSA هم تصدیق هویت و هم رمزنگاری راممکن می سازد ، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می شود و برای نشان دادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی می شود. سایر سیستمهای کلید نا متقارن شامل سیستمهای لگاریتم گسسته می شوند مانند:
Elgamal Diffie – Hellman و سایر طرحهای چند جمله ای و منحنی های بیضوی بسیاری از این طرحها عملکرد ای یک طرفه ای دارند که اجازه تایید هویت را می دهند اما رمزنگاری ندارند. یک رقیب جدیدتر در این زمینه الگوریتم RPK است که از یک تولیدکننده مرکب برای تنظیم ترکیبی از کلید ها با مشخصات مورد نیاز استفاده می کند. RPK یک پروسه دو مرحله ای است:

بعد از فاز آماده سازی در رمزنگاری و رمزگشایی (برای یک طرح کلید عمومی ) رشته هایی از دیتا استثنایی کاراست و می تواند براحتی در سخت افزارهای رایج پیاده سازی شود. بنابراین بخوبی با رمزنگاری و تصدیق هویت در ارتباط سازگار است. طولهای کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA است که آنها برای استفاده در چیپ کارتها برای استفاده در چیپ کارتها مناسب تر است. اماRSA محکی برای ارزیابی سایر الگوریتمها باقی مانده است ؛ حضور و بقای نزدیک به سه دهه از این الگوریتم ، تضمینی در برابر ضعفهای عمده بشمار می ورد.

۴-۱- کلید عمومی
یکی از چالشهای اصلی که امروزه مشاوران فنی با آن مواجه هستند ، حفظ و نگهداری سطحی از دانش تکنولوژی ها و ایجاد وهدایت آنها در سطوح فراتر از سطوح محاوره ای و ظاهری می باشد. ما نیاز داریم که سطحی از درک را گسترش دهیم که به ما این اجازه را بدهد که بطور موثر بتوانیم هم با تولید کننده (عرضه کننده) و هم با معرفی کننده ارتباط برقرار کنیم . کاربرد کلید عمومی مدتی است که در این زمینه رواج یافته است. تحقیقات بسیاری در کشورهای مختلف ( به عنوان مثال IETF/PKIX و PKCS) در زمینه تعریف استاندارد ها و تکنولوژی های مرتبط با کلید عمومی انجام شده است . اما آیا می دانیم که واقعا کلید عمومی چیست؟ آیا می دانیم که چگونه کار می کند؟ در این بخش ما به بررسی ساختار های کلید عمومی و این که چگونه کار می کنند می پردازیم .

این مبحث نقطه شروعی برای درک عرصه وسیعی به نام PKI ( شالوده کلید عمومی) می باشد که شامل مکانیزمهای توصیف شده در این زمینه می باشد که عبارتنداز:مجموع نرم افزار ، سخت افزار، و پروسه هایی که به وسیله قوانین و استانداردهای هدایت و مدیریت می شوند که به سوی سطح بالایی از اطمینان مورد نیاز و مورد انتظار متمایل می شوند.

۱-۴-۱- کلید عمومی چیست؟
واژه کلید عمومی به مکانیزم سیستم به رمز در آوردن نوشته ها بر می گردد. این واژه به این کلید عمومی نامیده شده است که آن را از مکانیزم رمز گذاری سنتی متفاوت می نامید. رمز کردن به روش کلید متقارن مکانیزمی است که در آن از یک کلید هم برای به رمزنگاری و هم برای رمزگشایی استفاده می شود. این حالت بسیار به واقیعت نزدیک است چرا که شباهت آن با حالتی است که با کلید هم در را قفل می کنید و هم در را باز می کنید. این مشخصات نیاز به مکانیزیم های پیچیده ای برای اینکه کلید سری را به طور وخفی و سری به هر دو طرف ارتباطی منتقل کرد دارد. از طرفی کلید عمومی ، ایده ی جدیدی را شامل یک جفت کلید معرفی می کند: یکی برای به رمز در آرودن و دیگری برای رمز گشایی . این نظریه ، همان طور که در ادامه خواهید دید ، بسیار هوشمند و جذاب است. و مزایای بسیاری را در مقابل کلید متقارن فراهم میکنند که عبارتند از:

– تسهیل توزیع کلید ( تسهیل در ارسال و توزیع کلید)
– امضای دیجیتال
– به رمز در آوردن بلند مدت(رمز گذاری برای مدت طولانی )
به هر حال ، لازم به ذکر است که هنوز کلید متقارن نقش اصلی را در اجرای PKI ایفا می کند. معمولا کلید عمومی برای تشخیص روش به رمزگذاری مورد استفاده قرار می گیرد که یک جفت کلید غیر متقارن را مورد استفاده قرار می دهد : یک کلید عمومی و یک کلید خصوصی. روش رمزگذاری کلید عمومی از این جفت کلید برای به رمز در آوردن و رمزگشایی استفاده می کند. کلید عمومی به صورت عمومی تولید می شودو به صورت مجانی و وسیعی گسترش می یابد؛ در صورتیکه کلید خصوصی هرگز پخش نمی شود و باید به صورت مخفی نگه داشته شود. با داشتن یک جفت کلید داده شده، داده های رمز شده به کمک کلید عمومی ، فقط به وسیله کلید مخصوص خودش رمزگشایی می شود. این مشخصات ( ویژگی ها ) برای ایجاد رمزگذاری و امضای دیجیتال مورد استفاده قرار می گیرد.
۲-۴-۱- رمزگذاری و رمزگشایی
به رمزگذاری مکانیزمی است که در آن پیام به صورتی تغییر شکل پیدا می کندکه فقط فرستنده و گیرنده آن بتوانند آن را ببینند. به عنوان مثال ، فرض کنیدکه Alice می خواهد یک پیام خصوصی به Bob بفرستد. برای این کار ابتدا نیاز داشتن کلید عمومی Bob دارد، چون هر کسی می تواند کیلد عمومی را ببیند ، او می تواند آن را به تمام شبکه به طور واضح و بدون هیچ نگرانی ارسال نماید. وقتی Alice کلید عمومی Bob را داشته باشد، می تواند با استفاده از کلید عمومی Bob، پیغام را به رمز تبدیل کند و برای Bob پیغام را به رمز تبدیل کند و برای Bob بفرستد. Bob پیام Alice را دریافت میکند و با کمک کلید خصوصی خود ، آن را رمز گشایی می کند.

فصل دو م
امضای دیجیتال و مفاهیم مرتبط

۱-۲- امضای دیجیتال چیست؟
امضای دیجیاتل در حقیقت یک معادل برای امضای دستی است که اعتبار یک سند الکترونیکی را بررسی و تائید می کند. در حقیقت امضاهای دیجیتال امنیت را در سطحی بسیار بالاتر ار همتایان دستی خود ارائه می دهند.
برخی بانک ها از سیستمی برای ثبت الکترونیکی امضاهای دستی استفاده می کنند .برخی نیز فراتر رفته و از آنالیز های بیومتریک برای ثبت سرعت امضا و میزان فشاری که در زمان امضا کردن بر روی کاغذ می شود استفاده می کنند تااز اعتبار امضا مطمئن شوند . به هر حال هیچ یک از این دو مفهومی را که ما از ” امضای دیجیتال” انتظار داریم بر آورده نمی سازند.
امضای دیجیتال و تائید آن(Verification):
امضای دیجیتال مکانیزمی است که به وسیله آن پیام اعتبار پیام (Authenticate) ثابت می شود. یعنی مشخص می شود که پیام به طور موثر و کامل از طرف یک فرستنده داده مشخص ارسال شده است ، این مکانیزم بسیار شبیه امضایی که پائین مدارک کاغذی می باشد. به عنوان مثال : فرض کنید که Alice می خواهد یک پیام را به صورت دیجیتال برای این کار ، او با استفاده از کلید خصوصی خود ، پیام را به مرز تبدیل می کند ، سپس این پیام را با کمک کلید عمومی خود ارسال می کند. (نوعا ، کلید عمومی به پیام امضا شده ، متصل شده است ) ، چون کلید عمومی Alice تنها کلیدی است که می تواند آن پیام را رمز گشایی کند ، یک رمز گشایی موفق ، یک تائیدیه برای امضای دیجیتال را تشکیل می دهد، به این معنی که هیچ شکی نیست که کلید خصوصی Alice است که پیام را به رمز تبدیل کرده است.

دو پاراگراف قبلی، قواعد مربوط به رمز کردن- رمز گشایی- و امضای تائیدیه را به تصویر کشیدند . همچنین می توان رمز گذاری و امضای دیجیتال را با هم ترکیب کرد که در نتیجه هم امنیت و هم تائید اعتبار فراهم می شوند.

همان طور که قبلا اشاره شد ، کلید متقارن نقش اصلی را در رمز گذاری به وسیله کلید عمومی ایفا میکند. این بدان علت است که الگوریتمهای رمز گذاری کلید نا متقارن تا اندازه ای از الگوریتمهای کلید متقارن هستند. تکنیک دیگری که برای امضای دیجیتال مورد استفاده قرار میگیرد ” درهم سازی” (hashing)نام دارد. در هم سازی یک خلاصه از پیام را تولید می کند که منحصر به فرد است و بیانگر پیام کامل می باشد. الگوریتمهای hashing رمز گذاری یک طرفه است ، به این معنی که غیر ممکن است که پیام را بتوان از روی چکیده و خلاصه آن دست آورد ، دلایل اصلی را برای ایجاد خلاصه پیامها عبارتنداز :

– اصل تمامیت پیامی که فرستاده می شود، حفظ می گردد، هر گونه تغییر و دگرگونی در پیام بلافاصله مشخص می شد.
– امضای دیجیتال به خلاصه پیام اعمال می شود که معمولا به طور قابل ملاحظه ای کوچکتر از خود پیام است.
– الگوریتماهی hashing بسیار سریعتر از سایر الکوریتمهای رمز گذاری می باشند. ( متقارن یا نا متقارن )

در بخش های آتی اینکه در روال خلاصه سازی و امضا کردن یک پیام چه فرآیند هایی رخ می دهند را توضیح می دهیم . از طرفی بیام می کنیم که چگونه پیام رمز گشایی می شود و امضای آن تایید می گردد.
۱-۱-۲- مراحل امضا و به رمز در آوردن یک پیام :
شکل بعدی مجموعه ای از عملیاتی کردن که لازم است هنگامی که Alice می خواهد یک پیام علامت زده شده و رمز شده را برای Bob بفرستد، نشان می دهند:

۱)امضای پیام ، امضای دیجیتال شامل دو مرحله است:
الف) ارزیابی خلاصه پیام : هدف اصلی از ارزیابی خلاصه پیام این است که مطمئن شویم که پیام بدو ن تغییر باقی مانده است ، این ” تمامیت پیام ” نامیده می شود.
ب) امضای خلاصه پیام : یک امضاء اصل یک رمز گذاری است که با استفاده از کلید خصوصی فرستده ( در اینجا Alice) انجام می شود. همچنین امضاء شامل نام الگوریتم

hashing که توسط فرستنده مورد استفاده قرار می گیرد ، می باشد. همچنین کلید عمومی فرستنده به امضاء پیوست شده است. با انجام این کار ، هر کسی می تواند با استفاده از کلید عمومی فرستنده و الگوریتم hashing ، امضاء را رمز گشایی و شنایایی و تائید نماید. با دانستن مشخصات رمزگذاری کلید عمومی و الگوریتمهای گیرنده در می یابد که :
I. کلید خصوصی فرستنده خلاصه پیام را به روز درآورده است.
II. پیام در مقابل هر گونه تغییری حفاظت شده است.

۲) به رمز در آوردن پیام ( رمزگذاری): به رمز در آوردن شامل سه مرحله زیر است:
الف) ساخت یک کلید رمز گذاری/ رمز گشایی متقارن تک زمانه ( one time):
به یاد داشته باشید که الگوریتمهای رمز گذاری و رمز گشایی که از کلید های نا متقارن استفاده می کنند ، برای پیامهای طولانی بسیار کند عمل میکنند ؛ در پاره ای موارد الگوریتم های کلید متقارن بسیار مفید هستند و به همین دلیل هنوز هم مورد استفاده قرار میگیرند.
ب)رمز گذاری پیام : kکلی
کل پیام ( خود پیام و امضا ) با استفاده از Symk متقارن که دربالا معرفی شد ؛ رمز گذاری می شود.
ج) رمز گذاری با کلید متقارن:
همچنین Symk توسط گیرنده برای رمز گشایی پیام مورد استفاده قرار می گیرد در نتیجه Symk باید فقط در دسترس گیرنده (Bob)باشد. برای پنهان کرند Symk از هر کس به جز گیرنده باید آن را با استفاهد از کلید عمومی گیرنده به رمز تبدیل کنیم . چون Symk قطعه کوچکی از اطلاعات است با پیام ( که می تواند بسیار طولانی باشد) مقاسیه می شود؛ خطای عملکرد مربوط به ناکار آمد بودن الگوریتمهای کلید نا متقارن ، قابل چشم پوشی می باشد .نکته جالبی که در این جا باید به آن اشاره شود این است که اگر Alice بخواهد همان پیام را به بیش از یک گیرنده ارسال نماید ، به عنوان مثال Bob و John در یافت خواهند کرد به صورت زیر خواهد بود:
Message+{digest} prke+…
Symk یکسانی توسط Bob و John برای رمز گشایی پیام مورد استفاده قرار می گیرد.

۲-۴-۱: مراحل رمز گشایی و verify کردن اضمای پیام ( تایید امضای پیام )
شکل زیر مجموعه ای از عملیاتی را که لازم است تا (Bob)پیامی را که از طرف Alice فرستاده شده است رمز گشایی و verify نماید ، نشان می دهد.

رمز گشایی پیام، شامل مراحل زیر است:
الف) رمزگشایی با کلید متقارن: کلید متقارن تک زمانه (one time) برای رمزگذاری پیام مورد استفاده قرار گرفته است. این کلید (Symk) با استفاهد از کلید عمومی گیرنده (Bob)به رمز تبدیل شده است. تنها Bob می توان Symk را رمزگشایی کند و با استفاده از آن پیام را رمز گشایی نماید.
ب) رمز گشایی پیام : پیام را که شامل خود پیام و امضا می باشد با استفاده از Symk رمز گشایی می شود.
۲- تائید امضاء شامل سه مرحله زیر می باشد:
الف) رمزگشایی چکیده پیام : با استفاده از کلید خصوصی فرستنده Alice چکیده پیام به رمز تبدیل می شود اکنون چکیده پیام بوسیله کلید عمومی فرستند که پیام گنجانده شده است، رمز گشایی می شود.

ب) ارزیابی چکیده پیام: چون Hashing یک پروسه یک طرفه است به این معنی که خود پیام از روی چکیده آن به دست نمی آید ، گیرنده باید دوباره چکیده پیام را دقیقا به کمک همان الگوریتم Hashing که فرستنده مورد استفاده قرار داده است ارزیابی کند.
ج) مقایسه چکیده ها: چکیده ای که در قسمت الف رمزگشایی شده است با چکیده ای که در قسمت (ب) رمز گشایی شده است ، با هم مقایسه می شوند ، اگر با هم مطابقت داشته باشند ، امضاء Verify (تائید) می شود و گیرنده می تواند پیام را که بدو نتغییر از طرف فرستنده آمده قبول کند. اگر با هم تطابق نداشته باشند این بدا ن معنی است که :
I: پیام بوسیله فرستنده علامت گذاری نشده است یا ( ثبت نشده است ).

II: پیام تغییر کرده است.
III: در هر دوحالت پیام نباید پذیرفته شود .
هویت و کلید ها:
تا به حال در این مورد بحث کردیم که کلید ها برای رمز گذاری و رمزگشایی و امضای دیجیتال / تائید به Bob و Alice مورد استفاده قرار میگیرند. حال چگونه می توان فهمید که Alice ، Aice واقعی است؟ و همچنین Alice چگونه میتواند مطمئن باشد که فقط Bob چیزی را به رمز در آورده است؟ تا به حال تنها چیزی که ما می دانیم ، این است که استفاده کنندگان از یک جفت کلید داده شده ، پیام را امضا کرده و به رمز تبدیل کرده اند . ولی آیا Bob مالک واقعی است ؟ به عنوان مثال ممکن است Eve پیام را برای Bob فرستاده باشد و این طور وانمود کرده باشد که او Alice پیام را فرستاده است یا Eve حالت مشابهی هم در مورد کلید عمومی Bob مطرح می شود. این مورد با استفاهد از گواهی نامه ها ( Certificate) حل خواهد شد.
۲-۲: گواهینامه دیجیتالی چیست؟
سوال دیگری که در بحث امضای دیجیتال ممکن است پیش بیاید این است که اگر بخواهیم امضای شخصی را که نمی شناسی تائید کنیم و یا از مالکیت کلید اطمینان پیدا کنیم چه باید کرد؟ در این مرحله گواهینامه های دیجیتال وارد عمل می شوند. توضیح را با روشی که PGP ارائه می دهد شروع می کنیم :کارول که ادعا میکند یکی از آشنایان باب است پیامی را به آلیس می فرستد . کارول پیام را با کلید خصوصی خودش امضا کرده که این کلید توسط باب به صورت دیجیتالی امضا شده است؛ (و لزوما می گوید : من مطمئنم که این کلید معتبر است و امیدواریم شما نیز به این موضوع اطمینان کنید.)

چون آلیس کلید باب را می شناسد و بنابراین به امضای وی اطمینان دارد ، پس می تواند ب هاینکه کلید کارول معتبر است مطمئن باشد. بنابراین شخصی که ادعا میکند کارول است با اطمینان کارول در نظر گرفته می شود. از این به بعد چون آلیس کلید کارول را شناخته می تواند آن را امضا کند وکسی که به آلیس اطمینان دارد می تواند به کارول نیز اطیمنان کند و به این ترتیب شبکه ای از اعتماد و اعتبار را خواهیم داشت. این توضیح مقدمه ای بود برای اینکه ” گواهینامه های دیجیتال” را معرفی کرده و به بحث در خصوص نحوه عملکرد آنها بپردازیم.

گواهینامه ها و امضای دیجیتال
Certificate تکراری از اطلاعات است که درستی هویت مالک کلید عمومی را تائید می کند همانند گذرنامه Certificate ، هویت و یا مالکیت شخص را مشخص می کند. Certificate ها به وسیله یک طرف ( شخص) سوم قابل اطمینانی به طور سری و مخفی مشخص و ارسال می شوند که Certificate Authority (CA) اعتماد داشته باشند، می توانند مطمئن باشندکه کلید ها متعلق به اشخاصی است که آنها انتظارش دارند( که ادعا می کنند).
یک Certificate شامل موارد دیگری نیز می باشد که عبارتند از :
۱- هویت CA
2- هویت مالک
۳- کلید عمومی
۴- تاریخ انقضای Certificate
5- امضای CA مربوط به Certificate
6- سایر اطلاعاتی که فراتر از بحث این مقاله است.
با داشتن Certificate به جای کلید عمومی ، اکنون گیرنده می تواند موارد بیشتری را در مورد فرستنده تائید نماید تا مطمئن شودکه Certificateصیحی(اعتبار دارد) Valid است و متعلق به شخصی است که ادعای مالکیت آن را می کند:
۱-مقایسه هویت مالک
۲-تائید این که Certificate هنوز معتبر است.
۳- تائید این که Certificate توسط یک CA قابل اعتماد تعیین و مشخص شده است ( ثبت شده است)
۴- تائید امضای Certificate فرستنده ، که در نتیجه مطمئن می شود که تغییر نکرده است.
اکنون Bob می تواند Certificate متعلق به Alice را تائید کند و مطمئن باشد که کلید خصوصی Alice است که برای پیام به کار رفته است . Alice باید خیلی مواظب کلید خصوصی خود باشد و نباید افشاء کند که چگونه به آن دست یافته است ، با انجام این کار او مسئول تمام مواردی که مربوط به امضای دیجیتال او می شود، می باشد. توجه داشته باشید که Certificate ها به وسیله CA تعیین و ثبت می شوند و این بدان معنی است که نمی توانند تغییر کنند ، در عوض ، امضای CA با استفاده از Certificate متعلق به CA می تواند تائید شود.

معتبر سازی Certificate اضافه شده به پروسه :
هنگامی که Alice یک پیام را برای Bob به رمز تبدیل می کند، او از Certificate متعلق به Bob استفاده می نماید قبل از استفاده از کلید عمومی که در Certificate متعلق به Bob گنجانده شده است مه برخی مراحل اضافی برای ( تائید صحت) Certificate معتبر سازی ( اعتبار بخشیدن) مربوط به Bob انجام می شود:
۱- دوره صحت( اعتبار) Certificate مربوط به Bob
2- Certificate متعلق به Bob
3- Certificate مربوط به Bob تغییر نکرده است.
۴- Certificate مربوط به Bob توسط یک CA مورد اعتماد تعیین شده است.
برخی از مراحل اضافی نیاز خواهد بود برای اعتبار یخشیدن به Certificate مربوط به CA در موردی که Alice به CA مربوط به Bob اعتماد نداشته باشد. این مراحل برای تمامی کسانی که می خواهدن صحت Certificate مربوط به Bob را مشخص کنند،یکسان است . در مثال زیر فرض بر آن است که هم Bob و هم Alice به آن CA اعتماد دارند. در شکلی که در ادامه می بینید، مراحل تائید اعتبار Certificate به آنچه در شکل های قبلی نشان داده شد، اضافه شده است. تنها مواردی که برای تائید Certificate لازم است ، نشان شده است.

Alice می خواهد مطمئن شود که Pukb متعلق به Bobاست و هنوز اعتبار دارد. فیلد ID را چک می کند و Bobld را پیدا می کند ، که هویت Bob است در نتیجه تنها چیزی که واقعا او میداند این است که این Certificate به نظر میرسد که متعق به Bob باشد. سپس او فیلدهای اعتبارات را چک می کند و متوجه می شود که تاریخ و زمان مورد نظر درباره اعتبار قرار داد و هنوز معتبر است . تا اینجا به نظر می رسد که Certificate متعلق به Bob است و معتبر هم می باشد. تائید نهایی با تائید امضای Certb با استفاده از کلید عمومی CA انجام می گیرد ( PukCA در CertCAموجود است ) اگر امضای Certb صحیح بود به این معنا است که :

الف) Certificate متعلق به Bob توسط CA تعیین و ثبت شده است که هر دوی آلیس و Bob به آن اعتماد دارند.
ب) درستی و تمایمت Certificate متعلق به Bob تائید شده و ثابت می شود که به هیچ وجه تغییر نیافته است.
ج)هویت Bob ثابت می شود و کلید عمومی که در Certificate قرار دارد هنوز معتبر است و متعلق به Bob می باشد ، در نتیجه آلیس می تواند پیام را به رمز در آورد و مطمئن باشد که فقط Bob قادر به خواندن آن خواهد بود.

مراحل مشابهی توسط Bob بر روی Certificate متعلق به آلیس قبل از تائید امضاء Alice انجام خواهد شد.
با توجه به توضیحات این بخش دریافتیم که یک گواهیناهم دیجیتالی یک فایل دیجیتالی است که به صورت رمزگذاری شده ای حاوی اطلاعاتی از قبیل کلید عمومی و سایر اطلاعات دارنده خود است. میتواند یک شخص ، یک شرکت ، یک سایت و یا یک نرم افزار باشد. مانند یک گواهینامه رانندگی که عکس صاحب خود را به همراه سایر اطلاعات در مورد دارنده آن ، شامل میشود. یک گواهینامه دیجیتالی نیز یک کلید عمومی را به اطلاعاتی در مورد دارنده آن متصل میکند.

در کلام دیگر گواهینامه دیجیتالی آلیس تصدیق میکند که کلید عمومی به او و تنها او متعلق دارد. به همراه کلید عمومی یک گواهینامه دیجیتالی حاوی اطلاعاتی در مورد شخص حقیقی یا حقوقی دارنده آن میباشد که برای شناسایی دارنده و ( بر این اساس که گواهینامه ها محدود میباشد)، تاریخ ابطال آن را نمایش میدهد. دفاتر ثانویه مطمئن صادر کننده گواهینامه هویت شخص دارنده گواهینامه را قبل از آنکه تصدیق کنند ، چک میکند. بخاطر اینکه گواهینامه دیجیتالی اکنون یک فایل اطلاعاتی کوچک است، اصل بودن آن توسط امضای دیجیتالی خودش قابل بررسی است. لذا به همان صورتی که یک امضای دیجیتالی را تایید میکنیم به همان صورت از صحت امضای دیجیتالی به اصل گواهینامه پی خواهیم برد.
۱-۲-۲: ثبت نام برای یک گواهینامه دیجیتالی
کاربران می توانند از طریق وب برای یک گواهینامه دیجیتالی ثبت نام کنند. پس از کامل شدن فرمهای مورد نیاز ، مرورگر اینترنت کاربر یک جفت کلید عمومی درست میکند. نیمی از کلید عمومی به دفاتر صدور گواهینامه برای درج مشخصات دارنده آن ارسال میشود. در حالیکه کلید خصوصی کاربر بر روی کامپیوتر او در جایی امن ( هارد دیسک ، فلاپی درایو و…) نگهداری خواهدشد.
دفاتر صدور گواهینامه در ابتدا ملزم به تایید اطلاعات ارسال شده توسط کلید عمومی کاربر میباشند. اینکار از جا زدن کس دیگر ئ احتمال وقوع تبادلات نا مشروع و غیر قانونی جلوگیری میکند. اگر اطلاعات ارسال شده درست باشد، دفتر صادر کننده گواهیناهم ، یک گواهینامه دیجیتالی برای متقاضی خود صادر میکند. بمحض صدور ، دفتر صادر کننده گواهینامه امضای دیجیتالی را دریک بایگانی عمومی نگهداری میکند.

۲-۲-۲: پخش کردن گواهینامه دیجیتای
در حالیکه گواهینامه دیجیتالی در یک بایگانی عمومی ذخیره شده است، نیز میتواند با استفاده از امضای دیجیتالی پخش گردد. به طور مثال زمانیکه آلیس نامه ای را برای باب به صورت دیجیتایل امضا میکند، او همچنین خود را به آن نامه پیوست میکند. لذا همزمان با دریافت نامه دیجیتالی باب میتواند معتبر بودن گواهینامه آلیس رانیز بررسی کند. اگر موفقیت تایید شد ، هم اکنون باب کلید عمومی آلیس را دارد ونیز میتواند اعتبار نامه ارسالی از طرف آلیس را بررسی کند.

۳-۲-۲-: انواع مختلف گواهینامه دیجیتالی
برحسب نوع استفاده از گواهینامه دیجیتالی ، چند نمونه مختلف از آن موجود میباشد.
شخصی: قابل استفاده توسط اشخاص حقیقی برای امضای ایمیل و تبادلات مالی
سازمانها: قابل استفاده توسط اشخاص حقوقی برای شناساندن کارمندان برای ایمیل های محفوظ و تبادلات تحت اینترنت
سرور: برای اثبات مالکیت یک دامین اینترنتی
تولید کنندگان : بای اثبات حق تالیف و حفظ حقوق آن برای نشر برنامه نرم افزاری
۴-۲-۲-:سطوح مختلف گواهینامه های الکترو نیکی
گواهینامه های دیجیتالی در سطوح مختلفی بسته به میزان و سطح اطمینان خواسته شده از طرف متقاضی ، توسط دفاتر صدور گواهینامه موجود میباشند. در زبان ساده هر چه سطح گواهینامه بالاتر باشدبه میزان بیشتری دارنده آن را تایید میکند، یک گواهینامه سطح بالا میتواند به این معنی باشد که گواهینامه میتواند برای کارهای حساس تری مانند بانکداری آنلاین و معرفی هویت یک نفر برای تبادلات مالی و تجارت الکترونیکی ، مورد استفاده قرار بگیرد. سطح گواهینامه ارتباط نزدیکی با نوع گواهینامه دارد. سطوح پایین شامل اطلاعات شخصی کمتری و یا بدون اطلاعات شخصی میباشند( به طور مثال فقط یک آدرس ایمیل). گواهینامه های متعلق به چنین سطحی میتوانند برای ارسال ایمیل حفاظت شده بکار بروند، در حالیکه برای اثبات گواهیناهم یک موسسه و یا یک سازمان نیاز به اطلاعات بیشتری و در نتیجه سطح بالاتری از گواهینامه است.

تا این قسمت به بررسی جزئیات عملکرد کلید عمومی مرتبط با رمزگذاری و امضای دیجیتال پرداختیم . همچنین نظریه Certificate Authority ارائه شد. در واقع می توان گفت که CA قلب زیر بنای کلید عمومی (PKI ) است. در فصل بعدی به معرفیPKI خواهیم پرداخت.
۳-۲: PKI چیست؟
یک PKI ترکیبی از نرم افزار ئ روالهایی است که به منظور مدیریت کلید ها و Certificate ها و استفاهد مفید و موثر از آنها مدیریت و استفاده می شوند. توصیف عملکرد های پیچیده ای که پیش از این آورده شد فقط برای این بود که دیدی نسبت به لزوم ایجاد پشتیبانی مناسب نرم افزار برای امضای دیجیتال و رمز گذاری داشته باشیم. و لی تا کنون هنوز صحبتی در مورد مدیریت آن به میان نیامده است.

به عبارت دیگر می توان گفت PKI باز میگردد به تکنولوژی ، مراحل عملیاتی و خط مشیی که مجموعه محیطی را برای مقاصد تامین امنیت فراهم میکند و به مردم و تجار این امکان را میدهد که از نر افزارها و ابزارهای امن اینترنتی بهره ببرند. به طور مثال ترکیب قانونی و امن ایمیل و تبادلات مالی و انتقال خدمات ، تماما در سایه PKI تحقق مییابد.