گواهینامه های دیجیتالی - ایجاد یک ارتباط ایمن در برنامه های وب ( بخش دوم )

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

  • الگوریتم های محدود : در این نوع الگوریتم ها ، محور امنیت اطلاعات بر محرمانه نگه داشتن الگوریتم استفاده شده در فرآیند رمزنگاری استوار است .
  • الگوریتم های مبتنی بر کلید : در این نوع الگوریتم ها ، کلید محرمانه تلقی شده و الگوریتم می تواند در دسترس عموم باشد . در این رابطه از دو مدل رمزنگاری عمده استفاده می گردد : 
    کلید خصوصی ( متقارن ) : فرستنده و گیرنده از یک کلید یکسان به منظور رمزنگاری و رمزگشائی استفاده می نمایند . 
    کلید عمومی ( نامتقارن ) : به ازای هر کاربر از دو کلید استفاده می شود. یکی از کلیدها عمومی بوده و در دسترس همگان قرار داشته و کلید دوم بصورت محرمانه می باشد.

ویژگی مدل رمزنگاری کلید خصوصی

  • رمزنگاری و رمزگشائی داده با استفاده از کلید یکسانی انجام می شود .
  • تمامی کاربرانی که در یک گروه عضویت داشته و قصد اشتراک داده را بین خود دارند ، می بایست دارای کلید یکسانی باشند .
  • در صورتیکه یک کلید د چار مشکل گردد ( لورفتن ) ، تمامی کلید ها می بایست تعویض و با کلیدی جدید جایگزین گردند .
  • مهمترین مسئله در ارتباط با این مدل رمزنگاری ، عدم وجود امنیت لازم به منظور توزیع کلید است .

ویژگی مدل رمزنگاری کلید عمومی

  • عدم استفاده از کلیدهای مشابه
  • هر کاربر دارای یک زوج کلید ( عمومی ، خصوصی ) می باشد . از کلید عمومی به منظور رمزنگاری داده و از کلید خصوصی به منظور رمزگشائی داده استفاده می گردد.
  • این مدل رمزنگاری تقریبا" 500 مرتبه کندتر از رمزنگاری کلید خصوصی ( متقارن ) است .
  • از مدل رمزنگاری عمومی به منظور مبادله کلید خصوصی و امضای دیجیتال استفاده می شود .
  • شکل زیر ، فرآیند رمزنگاری مبتنی بر کلید عمومی بین دو کاربر را نشان می دهد :

Hash  
یک Hash  که به آن Checksum ، پیام Digest و یا اثرانگشت ، نیز گفته می شود ، فرآیندی است که بصورت ریاضی حجم یک جریان از داده را به یک طول ثابت کاهش می دهد ( معمولا" 128 و یا 160 بیت ) .  عملکرد hash ، مشابه اثرانگشت یک شخص می باشد. اثرانگشت ، پارامتری منحصربفرد به منظور تشخیص هویت افراد بوده و در ادامه با استفاده از آن امکان دستیابی به سایر مشخصات افراد نظیر : رنگ چشم ، قد ، جنسیت و سایر موارد دلخواه ، فراهم می گردد . اکثر توابع Hash از لحاظ رمزنگاری دارای عملکردی مشابه توابع رمزنگاری  می باشند . در حقیقت ، برخی توابع hash صرفا" تغییرات اندکی را در توابع رمزنگاری ایجاد نموده اند . اکثر عملیات با دریافت یک بلاک  از داده  شروع و در ادامه با استفاده از یک فرآیند تکرارشونده و بکارگیری یک الگوریتم رمزنگاری ، تغییرات لازم در ارتباط با بیت ها ، اعمال می شود. hash ، دارای ویژگی های مهم زیر می باشد :

  • امکان استنتاج ورودی از طریق خروجی وجود ندارد .
  • نمی توان دو ورودی را پیدا کرد که به ازای آنان خروجی یکسانی تولید گردد : احتمال تولید مقادیر Hash یکسان برای دو مجموعه متفاوت از داده ها کمتر از   001 . /  درصد است .

الگوریتم های hashing  ، از یک تابع ایمن رمزنگاری نظیر  Message Digest 5)MD5)  و یا Secure Hash Algoritm)SHA) به منظور تولید یک مقدار Hash  مرتبط با  داده ورودی استفاده می نمایند . Hash ، یک نوع خاص از رمزنگاری یک طرفه است . برخی افراد ، hashing  را به عنوان یک مدل رمزنگاری تلقی می نمایند . Hashing عملا" یک مدل رمزنگاری نمی باشد چراکه Hash نمی تواند رمزگشائی گردد ( بدست آوردن مقدار ورودی با اسنتاد و آنالیز مقدار خروجی ) . شکل زیر ، نحوه عملکرد الگوریتم SHA-1 ( نسخه شماره یک ، پیاده سازی شده در سال  1994 ) را  نشان می دهد :

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

فرآیند امضای داده توسط فرستنده پیام  :

  • دریافت پیام اولیه و محاسبه یک مقدار Hash با استفاده از یک الگوریتم hashing
  • رمزنگاری Hash توسط یک تابع رمزنگاری و اعمال کلید خصوصی توسط فرستنده پیام ( پیام اولیه به همراه مقدار Hash رمز شده ، یک پیام دیجیتالی امضاء شده را تشکیل می دهند ) .
  • ارسال پیام دیجیتالی امضاء شده برای گیرنده

فرآیند بررسی صحت امضاء ارسالی همراه داده  :

  • پس از دریافت پیام توسط گیرنده ، در ابتدا ، Hash رمز شده با استفاده از کلید عمومی فرستنده رمزگشائی می گردد ( Hash رمزگشائی شده ) .
  • محاسبه محلی مقدار Hash پیام ارسالی با استفاده از یک الگوریتم Hashing
  • مقایسه نتایج بدست آمده در مراحل قبل : Hash رمزگشائی شده با مقدارمحلی Hash مقایسه و در صورتیکه نتیجه یکسان باشد ، صحت و اعتبار پیام ارسال شده توسط فرستنده تائید می گردد .

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

گواهینامه دیجیتال 
قبل از اینکه کاربر B پیامی شامل امضای دیجیتال مربوط به کاربر A را قبول نماید ( پذیرش ) ، می بایست اطمینان لازم در خصوص تعلق کلید عمومی به کاربرA را کسب نموده و مطمئن گردد که  شخص دیگری خود را به عنوان کاربر A ، وانموده نکرده باشد. یکی از روش های موجود به منظور حصول اطمینان از ارسال پیام توسط کاربر A ، استفاده از یک مرکز معتبر به منظور تائید تعلق کلید عمومی به کاربر A ، می باشد. چنین مراکزی CA) Certification Authority) نامیده می شوند. پس از تائید هویت کاربر A ، مرکز صدور گواهینامه های دیجیتال ، پیامی شامل نام و کلید عمومی A صادر می نماید . این پیام ، گواهینامه دیجیتال نامیده می شود. گواهینامه دیجیتال ، یک فایل الکترونیکی است که بصورت منحصربفرد افراد و یا  وب سایت ها را بر روی اینترنت شناسائی و امکان ارتباطات ایمن و محرمانه را فراهم می نماید.عملکرد گواهینامه  دیجیتال ، مشابه کارت شناسائی و یا گواهینامه رانندگی است . کارت های شناسائی با توجه به مجوزهای یک سازمان مسئول ، صادر می گردند . زمانیکه یک فرد درخواست یک کارت ملی را می نماید ، یک موسسه  مسئول ، بررسی لازم در ارتباط با هویت فرد متقاضی را انجام و پس از طی مراحل قانونی ( و ملزم نمودن متقاضی به تبعیت از قوانین موجود ) ، کارت شناسائی وی صادرمی گردد . زمانیکه یک کارت شناسائی نظیر یک گواهینامه رانندگی صادر و به دیگران ارائه می گردد ، آنان قادر به شناسائی مالک آن می باشند. این نوع کارت ها دارای مزایای امنیتی زیر می باشند :

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

گواهینامه های دیجیتال توسط مراکز مجاز و معتبر ( CA) صادر و از آنان به منظور حصول اطمینان از شناسائی online موجودیت های متفاوت نظیر افراد ، سایت ها و یا کامپیوترها ، استفاده می گردد . یک گواهینامه دیجیتال شامل اطلاعات متفاوتی در ارتباط با  تشخیص هویت مالک آن بوده تا بتواند وی را به عنوان یک موجودیت بر روی شبکه ، شناسائی نماید . گواهینامه دیجیتال یک ساختمان داده تعریف شده بر اساس استاندارد X.509 می باشد . در این ساختمان داده اطلاعات متنوعی ذخیره می گردد. یک CA ، از کلید خصوصی خود به منظور شناسائی و تائید گواهینامه های صادر شده توسط خود ، استفاده می نماید . یکی از اطلاعات مهمی که در ساختمان داده فوق ، قرار می گیرد ، امضای دیجیتال مربوط به CA می باشد . CA ، یک مقدار Hash را در ارتباط با گواهینامه صادر شده ، ایجاد و آن را با استفاده از کلید خصوصی خود رمز و در نهایت آن را  در گواهینامه صادر شده قرار می دهد . هر یک از کاربران می توانند به منظور اطمینان از معتبر بودن گواهینامه دیجیتالی صادر شده ، از تابع hash به همراه کلید عمومی CA استفاده نمایند. PKI ( زیرساخت کلید عمومی ) ، از فرمت X.509 نسخه شماره سه گواهینامه دیجیتال استفاده می نماید . شکل زیر ساختار اطلاعات موجود در گواهنیامه دیجیتال را با استفاده از فرمت X.509 نشان می دهد .

  • شماره نسخه : شماره نسخه فرمت گواهینامه را نشان می دهد ( مثلا" نسخه شمار ه سه )
  • شماره سریال گواهنیامه : یک شماره سریال منحصربفرد که توسط CA ، در نظر گرفته شده تا در ادامه امکان ردیابی آن و باطل نمودن آن وجود داشته باشد.
  • شناسه الگوریتم گواهینامه : الگوریتم های رمزنگاری کلید عمومی  و hashing که مراکز CA از آنان به منظور تائید دیجیتالی گواهینامه ها استفاده می نمایند .
  • مرکز صادر کننده : نام مرکز صادرکننده CA  را مشخص می نماید.
  • مدت اعتبار : تاریخ شروع و سررسید گواهینامه را مشخص می نماید .
  • Subject : نام مالک گواهینامه را مشخص می نماید.
  • اطلاعات کلید عمومی subject : کلید عمومی و لیستی از الگوریتم های رمزنگاری کلید عمومی را مشخص می نماید .
  • شناسه منحصربفرد صادرکننده : اطلاعات اختیاری که در صورت ضرورت بصورت منحصربفرد اطلاعات صادرکننده را مشخص می نماید .
  • شناسه منحصربفرد مالک گواهینامه : اطلاعات اختیاری که در صورت ضرورت بصورت منحصربفرد اطلاعات صاحب گواهینامه  را مشخص می نماید .
  • ضمائم : اطلاعات اضافه ای که زیر ساخت PKI درصورت ضرورت استفاده می نماید.
  • امضای دیجیتال مجاز گواهینامه : امضای دیجیتالی CA  که در آخرین مرحله ایجاد گواهینامه ، تولید می گردد .

استفاده از گواهینامه های دیجیتال ، اعتبار یک کلید عمومی و انتساب آن به یک فرد معتبر را امکان پذیر می نماید. بدین ترتیب وضعیت مدیریت کلید بهبود یافته و گیرندگان گواهینامه های دیجیتال قادر به تائید CA ، با توجه به آگاهی از کلید عمومی آن می باشند. گیرندگان گواهینامه های دیجیتال ، در مقابل اینکه از کلیدهای عمومی متعلق به تمامی کاربران آگاهی داشته باشند ، با آگاهی از صرفا" یک کلید عمومی (مربوط به CA ) ، قادر به تائید هویت ارسال کنندگان اطلاعات ،خواهند بود. 

مراکز CA ، دارای ویژگی های زیر می باشند :

  • در صورت تائید CA  صادرکننده گواهینامه توسط کاربر ،  امکان تائید گواهینامه نیز وجود خواهد داشت .
  • مسئولیت تائید و معتبرسازی تمامی مشترکین
  • مسئولیت صدور و مدیریت گواهینامه ها  ( درخواست های ارسالی توسط  نامه الکترونیکی و یا اینترفیس های وب ) .
  • مسئولیت ابطال و یا تمدید گواهینامه های صادر شده
  • مسئولیت ایجاد سیاست ها و رویه ها
  • چندین CA می تواند در یک ساختار سلسله مراتبی  وجود داشته باشد. در صورتیکه  CA ریشه معتبر شناخته گردد، هر یک از مراکز CA در سطوح پائین تر نیز معتبر شناخته خواهند ش.د

مشاهده گواهینامه های دیجیتال 
برای مشاهده آخرین وضعیت گواهینامه های دیجیتال بر روی سیستم خود ، برنامه IE را فعال نموده و از طریق منوی Tools گزینه Internet Options را فعال  و درادامه با انتخاب Content Tab و فعال نمودن Certificate می توان از وضعیت گواهینامه های دیجیتال ، آگاهی یافت .
در بخش سوم این مقاله به بررسی پروتکل  SSL ، خواهیم پرداخت .

http://www.srco.ir/Articles/DocView.asp?ID=214

/ 0 نظر / 104 بازدید