"ریاضیات عبارت است از  اثبات بدیهی ترین چیز  به نا بدیهی ترین روش ممکن "
جورج پوليا


در پست قبلی به ارائه توضیحاتی پیرامون مفهوم کلید عمومی پرداختیم در این پست به توضیح مسئله تایید هویت که در حقیقت مکملی برای تامین کامل  امنیت  پیغام ارسالی در روش کلید عمومی است می پردازیم.

2.1.  تایید هویت

در طرح کلید عمومی مشکلی وجود داشت ، از آنجا که کلید عمومی واقعاً در دسترس عموم قرار می گیرد ، هر کسی می تواند یک پیام جعلی را برای شما بفرستد .  بنابراین دشمنان می توانند وانمود کنند که دوست شما هستند و  پیامی کاملا مشابه با پیام دوستان شما برایتان بفرستند زیرا هم دوستان و هم دشمنان شما به کلید عمومی دسترسی دارند . اطلاعات نادرست دشمن می تواند شما را کاملا گمراه کند .بنابراین چگونه می توان مطمئن شد که متنی که ادعا دارد که از طرف دوست شما رسیده واقعاً از طرف دوست شما رسیده باشد .
حال برای انجام این کار روشی را مطرح میکنیم :
فرض کنید شما و دوستتان همانطور که قبلا اشاره داشتیم کلید های عمومی و خصوصی Eb،Ea و Db ، Da را دراختیار داشته باشید . حال فرض کنید شما می خواهید پیامی را به دوستتان بفرستید به طوری که دوستتان از هویت واقعی شما در پیام اطمینان پیدا کند.
ابتدا فرض میکنید اسم خودتان یک متن رمزگذاری شده است ، سپس آن با استفاده از Da رمزگشایی میکنید . شما تنها کسی هستید که می توانید این کارا انجام دهید زیرا تنها فردی که Da را میداند شما هستید . سپس این متن رمز گذاری شده (که همان امضای دیجیتال نامه است ) را در کنار متن اصلی که می خواهید آنرا برای دوستتان ارسال کنید ، قرار میدهید ، و پس از انجام این کار تمامی متن بدست آمده را با استفاده از Eb رمزگذاری می کنیم یعنی کلید عمومی ای که کلید خصوصی آن تنها در دست دوست شماست.
وقتی دوست شما پیغام را دریافت میکند ، ابتدا آنرا با استفاده از Db رمزگشایی میکند و بنابراین او متنی خواهد داشت که دارای قسمتی الحاقی است که این قسمت دارای مفهوم خاصی نیست . این کاراکتر های نا منظم همان اسم شما است که با کلید عمومی خودتان رمزگذاری کرده بودید بنابراین او براحتی میتواند این کاراکتر های نامنظم را با استفاده از Ea رمزگذاری کند و با این کار به اسم شما برسد و از هویت واقعی شما اطمینان پیدا کند.

این کار به این دلیل قابلیت اجرایی دارد که :
 تنها کسی که میداند چگونه متنی تولید کند که در هنگام رمزگذاری به اسم شما تبدیل شود ، خود شما هستید ، به همین خاطر دوست شما می تواند اطمینان پیدا کند که این پیغام از جانب شماست.

شما هر متنی را می توانید برای تایید هویت رمزگذاری کنید که این متن رمز گشایی شده با کلید خصوصی ( یا به عبارتی رمزگذاری شده با کلید خصوصی )در واقع همان امضای دیجیتال شماست و تقریبا باید در هر پیام این متن عوض شود که کار بسیار ساده ای است. متن پیغام شما به این صورت خواهد بود :

«هنگام طلوع صبح حمله می کنیم !!!.رمز گشایی شده رشته کاراکتر "ABCDEFG" رشته کاراکتر "JDLEODK" است.»

برای مطمئن بودن از امنیت نامه ها در هر بار " ABCDEFG " و متن رمزگشایی شده مشتق از آن " JDLEODK " در هر پیغام عوض می شود.

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

برای جلوگیری از این اتفاق سعی می شود امضای ما به نوعی به کل نامه برگردد . در عمل کل نامه امضا نمی شود بلکه از تابع هش (hash) استفاده می شود که بطور خلاصه به این معنی است که رشته بلندی از اطلاعات را توسط تابعی با رشته کوچکی جایگزین کنیم ( البته تابعی با شرایطی خاص ) سپس امضا روی این تکه انجام شود . بنابراین حتی اگر شخص نفوذ کننده امضای نامه نیز پیدا کند نمی تواند متن دلخواه خود را جایگزین متن اصلی کند و عملا بنابر ویژگی های ساختاری الگوریتم هش پیدا کردن متنی که داراری خروجی هش یکسان باشند غیر ممکن است. به این ترتیب نامه ای با امضای دیجیتالی در اختیار داریم که همچون اثر انگشت متعلق به خود همان نامه است.
البته توضیح و  ارائه نمونه هایی از الگوریتم های هش خود نیازمند به مقاله ای جدا گانه است که انشاء ا.. در یکی از پست های بعدی به آن خواهیم پرداخت.

در پست بعدی یکی از الگوریتم های متداول رمزنگاری را ارائه می دهیم که بر پایه کلید عمومی استوار است.

کلید واژه ها : تایید هویت  امضای دیجیتال  تابع هش  Certification   Digital Signatures  Hash Function ّ