الگوریتمهای رمزنگاری و پنهان سازی (md5 - sha....)
نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: الگوریتمهای رمزنگاری و پنهان سازی (md5 - sha....)

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. ★ سحربلا ★ آواتار ها
    ★ سحربلا ★
    کاربر سایت
    Feb 2010
    5,629
    1,855
    تشکر شده : 2,196

    پیش فرض الگوریتمهای رمزنگاری و پنهان سازی (md5 - sha....)

    رمزنگاري Cryptography


    رمزنگاري دانش تغيير دادن متن پيام به كمك يك كليد رمزنگاري و يك الگوريتم رمزنگاري است بصورتي كه تنها شخصي كه از كليد و الگوريتم مطلع است قادر به استخراج متن اصلي از متن رمزشده باشد و شخصي كه از يكي يا هردوي آ نها اطلا عي ندارد نتواند به محتواي پيام دسترسي پيدا كند . رمزنگاري از طريق پنهان نگاه داشتن الگوريتم رمزنگاري منسوخ است . در روشهاي جديد رمزنگاري فرض بر آن است كه همگان الگوريتم رمزنگاري را ميدانند . آنچه پنهان است فقط كليد است .
    رمزنگاري علمي است كه به و سيله آن مي توان اطلاعات را بصورتي امن منتقل كرد حتي اگر مسير انتقال اطلاعات ( كانالهاي ارتباطي) ناامن باشد . در يافت كننده اطلاعات آنها را از حالت رمزخارج ميكند
    به اين عمل در واقع رمزگشائي ( Decrypting) گفته مي شود . توجه داشته باشيد كه رمزنگاري به تغيير ساده محتويات يك متن گفته ميشود و با كدگذاري(Coding) تفاوت دارد . در اينصورت تنها هر كاراكتر با يك نماد تغيير ميكند .
    كلمه Cryptography برگرفته از لغات يونانيkryptos به مفهوم " محرمانه " و Graphein به معناي نوشتن است
    قبل از هر چيز لازم است بين رمز و كد تفاوت قائل شو يم . رمز به مفهوم تبديل كاراكتر به كاراكتر يا بيت به بيت ؛ بدون تغيير محتو يات زبان شناختي آن است . در مقابل كد تبديلي است كه كلمه اي را با يك كلمه يا نماد ديگرجايگز ين ميكند . در بررسي نخستين استفاده كنندگان از عمل رمزنگاري به اشخاصي چون "سزار" امپراتور روم و نيز " الكندي" كه يك مسلمان است برميخوريم . از عمده ترين شيوه هاي رمزنگاريهاي ابتدايي پيچيدن نسخه اصلي پيام بر روي استوانه اي با قطر مشخص و نوشتن پيام بر روي متن استوانه اي است . بديهي است بدون درك ميزان قطر، خواندن پيام كار بسيار دشواري بود بعدها از اين روش به همراه موتورهاي الكتريكي براي رمزنگاري استفاده شد.

    رمزنگاري امروزه به طور خاص در علم مخابرات مورد استفاده قرار ميگيرد . از رمزنگاري ميتوان براي تأمين امنيت و تأمين اعتبار پيام به صورت جداگانه يا توامان استفاده كرد .
    منظور از تأمين امنيت پيام اين است كه به غير از گيرنده مجاز، شخص ديگر قادر به فهميدن متن پيام نباشد . همچنين منظور از اعتبار پيام اين است كه فرستنده واقعي پيام مشخص باشد . دانش رمزنگاري بر پايه مقدمات بسياري از قبيل تئوري اطلاعات، نظريه اعداد و آمار بنا شده است .
    الگوريتمهاي مختلفي (مانند md5 , sha) براي رمز كردن اطلاعات وجود دارد .

    معرفي رمزگذاري

    رمزگذاري يعني تبديل اطلاعات به يك شكل غير قابل فهم و انتقال آن و سپس برگرداندن اطلاعات رمز شده به حالت اوليه و قابل خواندن . عناصر مهمي كه در رمزگذاري مورد استفاده قرار ميگيرند به شرح زير مي باشد :

    Public Key يا كليد عمومي

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

    دو کلید با هم رابطه‌ای ریاضی دارند ولی عملاً کلید خصوصی از روی کلید عمومی محاسبه پذیر نیست.

    اعداد يا كلماتي كه با يك شخص يا سازمان در ارتباط مي باشد . كليد عمومي جزئي از جفت كليد عمومي/ خصوصي مي باشد وبه صورت عمومي در دسترس كساني كه قصد انتقال اطلاعات رمز شده را دارند، ميباشد .

    Private Key يا كليد خصوصي

    اعداد يا كلماتي كه با يك شخص يا سازمان در ارتباط مي باشد . كليد خصوصي جزئي از جفت كليد عمومي/ خصوصي مي باشد . كليد خصوصي فقط در دسترس مالك جفت كليد عمومي / خصوصي مي باشد و براي بازگشايي اطلاعاتي كه توسط كليد عمومي رمزگذاري شده استفاده ميشود.

    ايجادكنند ههاي جفت كليد

    براي ايجاد يك جفت كليد عمومي و خصوصي طبق يك الگوريتم رمزگذاري مشخص استفاده ميشود .

    Key Factories

    براي تبديل كليدهاي نامشخص به كليدهاي مشخص به كار مي رود .

    Key stores

    بانكي كه براي مديريت تعدادي از كليدها به كار مي رود .

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

    الگوريتمها و روشهايي كه براي رمزگذاري اطلاعات به كار ميرود
    DES و RSA نام دو تا از معروفترين الگوريتم ها مي باشد . البته الگوريتم هاي بسيار زيادي تا به امروز توسط
    متخصصين ايجاد و منتشر شده است اما در ادامه بدليل سادگي و در عين حال كاربردي بودن الگوريتم رمزنگاري RSA
    به بررسي اين الگوريتم پرداخته شود.

    روشهاي رمزگذاري

    روش متقارن Symmetric

    در اين روش هر دو طرفي كه قصد رد و بدل كردن اطلاعات را دارند از يك كليد مشترك براي رمزگذاري و نيز بازگشايي رمز استفاده ميكنند . در اين حالت بازگشايي و رمزگذاري اطلاعات دو فرآيند معكوس يكديگر مي باشند . مشكل اصلي اين روش اين است كه كليد مربوط به رمزگذاري بايد بين دو طرف به اشتراك گذاشته شود و اين سوال پيش مي آيد كه دو طرف چگونه مي توانند اين كليد را به طور امن بين يكديگر رد و بدل كنند . انتقال از طريق انترانت و يا به صورت فيزيكي تا حدي امن مي باشد اما انتقال آن در اينترنت به هيچ وجه درست نيست . در اين قبيل سيستمها، كليدهاي رمزنگاري و رمزگشايي يكسان هستند و يا رابطه اي بسيار ساده با هم دارند اين سيستم ها را سيستم هاي متقارن يا " تك كليدي " مي ناميم . به دليل ويژگي ذاتي تقارن كليد رمزنگاري و رمزگشايي، مراقبت و جلوگيري از
    افشاي اين سيستم ها يا تلاش در جهت امن ساختن آنها لازم است و در بر گيرنده " جلوگيري از استراق سمع " و " ممانعت از دستكاري اطلاعات " می باشد .

    روش نامتقارن Asymmetric

    اين روش براي حل مشكل انتقال كليد در روش متقارن ايجاد شد . در اين روش به جاي يك كليد مشترك از يك جفت كليد به نامهاي كليد عمومي و خصوصي استفاده ميشود . در اين روش از كليد عمومي براي رمزگذاري اطلاعات استفاده مي شود . طرفي كه قصد انتقال اطلاعات را به صورت رمزگذاري شده دارد اطلاعات را رمزگذاري كرده و براي طرفي كه مالك اين جفت كليد است استفاده ميشود . مالك كليد، كليد خصوصي را پيش خود به صورت محرمانه حفظ مي كند . در اين دسته، كليدهاي رمزنگاري و رمزگشايي متمايزند و يا اينكه چنان رابطه پيچيده اي بين آنها حكم فرماست كه كشف كليد رمزگشايي با در اختيار داشتن كليد رمزنگاري، عملا ناممكن است.

    مقايسه رمزنگاري الگوريتمهاي متقارن و الگوريتمهاي كليد عمومي بحث هاي زيادي شده كه كدام يك از اين الگوريتمها بهترند اما تا بحال جواب مشخصي داده نشده است؟؟ !! !. البته بررسي هايي روي اين سوال شده، به طور مثال Needham و Schroeder بعد از تحقيق به اين نتيجه رسيدند كه طول پيغامي كه با الگوريتمهاي متقارن ميتواند رمزنگاري شود از الگوريتمهاي كليد عمومي كمتر است و با تحقيق به اين نتيجه رسيدند كه الگوريتمهاي متقارن الگوريتمهاي بهينه تري هستند . اما وقتي كه بحث امنيت پيش مي آيد الگوريتمهاي كليد عمومي كارايي بيشتر يدارند . بطور خلاصه مي توان گفت كه الگوريتمهاي متقارن داراي سرعت بالاتر و الگوريتمهاي كليد عمومي داراي امنيت بهتري هستند . در ضمن گاهي از سيستم تركيبي از هردو الگوريتم استفاده مي كنند كه به اين الگوريتم ها الگوريتم هاي تركيبي ( Hybrid ) گفته مي شود . اگر به طور دقيق تر به اين دو نگاه كنيم آنگاه متوجه خواهيم شد كه الگوريتمهاي كليد عمومي و الگوريتمهاي كليد متقارن داراي دو ماهيت كاملاً متفاوت هستند و كار بردهاي متفاوتي دارند . به طور مثال در رمزنگاريهاي ساده كه حجم دادهها بسيار زياد است از الگوريتم متقارن استفاده ميشود زيرا دادهها با سرعت بالاتري رمزنگاري و رمزگشايي شوند اما در پروتكل هايي كه در اينترنت
    استفاده مي شود، براي رمز نگاري كليد هايي كه نياز به مديريت دارند از الگوريتمهاي كليد عمومي استفاده ميشود .
    #1 ارسال شده در تاريخ 27th March 2012 در ساعت 13:41

  2. ★ سحربلا ★ آواتار ها
    ★ سحربلا ★
    کاربر سایت
    Feb 2010
    5,629
    1,855
    تشکر شده : 2,196

    پیش فرض

    Key Agreement

    همانطور كه در بالا گفته شد به علت كند بودن و محدوديت رمزگذاري با روش نامتقارن از اين روش فقط براي رمزگذاري كليد مشترك استفاده ميشود . اما اين روش نيز يك مشكل دارد و مشكل عمده آن اين است كه هر شخص نياز به كليد عمومي و خصوصي مربوط به خود را دارد و بايد براي انتقال اطلاعات آن را براي طرف مقابل بفرستد . يك راه حل براي مشكل استفاده از كليد عمومي يك مكانيزم به نام Agreement Key مي باشد كه بر طبق آن يك توافق بر روي كليد مخفي بين طرفين به وجود مي آيد و به اين ترتيب نيازي به انتقال كليد نيست . وقتي كه يك بار بر روي يك كليد مشترك توافق حاصل شد از آن مي توان براي رمزگذاري و رمزگشايي اطلاعات مربوطه استفاده كرد . معمولاً در اين روش از الگوريتم DiffieHellman استفاده ميشود.

    مراحل انتقال اطلاعات از اين روش به صورت زير ميباشد :
    ۱ ) آغازگر ابتدا يك جفت كليد عمومي و خصوصي ايجاد كرده و كليد عمومي را همراه بامشخصات الگوريتم (Specification Algorithm) به سمت طرف مقابل مي فرستد .

    ۲ ) طرف مقابل نيز يك جفت كليد عمومي و خصوصي همراه با مشخصات الگوريتم آغازگرساخته و كليد عمومي را براي آغازگر مي فرستد .

    ۳ ) آغازگر يك كليد مخفي بر اساس كليد خصوصي خود و كليد عمومي طرف مقابل ايجاد ميكند .

    ۴ ) طرف مقابل نيز با استفاده از كليد خصوصي خود و كليد عمومي آغازگر يك كليد مخفيمي سازد.
    الگوريتم DiffieHellman تضمين ميكند كه كليد مخفي هر دو طرف يكسان مي باشد.

    امضاي ديجيتالي

    معرفي امضاي ديجيتالي

    براي اينكه هويت فرستنده سند تاييد شود و نيز براي اطمينان از اينكه سند در طول مدت انتقال به گيرنده دستكاري نشده است از امضاي ديجيتالي استفاده مي شود . مي توان كل يك سند و يا قسمتي از آن را امضا كرد . به طور كلي سه دليل براي استفاده از امضاي ديجيتالي وجود دارد كه شامل :

    ۱ ) استفاده از كليد عمومي اين اجازه را به هر شخصي مي دهد كه كليد خود را به سمت فرستنده اطلاعات بفرستد و سپس گيرنده پس از دريافت اطلاعا ت آن را توسط كليد خصوصي خود بازگشايي ميكند، بنابراين امضاي ديجيتالي اين امكان را مي دهد كه فرستنده يا گيرنده مطمئن شوند كه اطلاعات از محل يا شخص مورد نظر دريافت ميشود .

    ۲) اطلاعات در طول مدت انتقال ممكن است توسط ديگران دستكاري شود . براي اينكه از صحت اطلاعات رسيده مطمئن شويم نياز به يك امضاي ديجيتالي در اين حالت احساس مي شود .

    ۳ ) رد كردن اطلاعات فرستاده شده . گيرنده اطلاعات براي اينكه مطمئن شود فرستنده بعدا از اطلاعاتي كه فرستاده اعلام بي خبري نكند و آنها را رد نكند از فرستنده يك امضادرخواست ميكند تا شاهدي بر اين ادعا باشد .

    براي پياده سازي يك امضاي ديجيتالي نياز به سه الگو ر يتم داريم :

    ۱ ) يك الگوريتم براي ايجاد كليد
    ۲ ) الگوريتم براي ايجاد امضا
    ۳ ) الگوريتم براي تاييد امضا

    براي ايجاد يك امضاي ديجيتالي بايد يك عدد checksum براي سند مورد نظر محاسبه شود . فرض كنيد Bob قصد ارسال يك پيام به Alice را دارد . Bob پيام خود را همراه با امضاي ديجيتالي براي Alice مي فرستد . اين امضاي ديجيتالي توسط كليد خصوصي كه مالك آن Bob مي باشد ايجاد شده است . در سمت ديگر Alice با استفاده از الگوريتم تاييد امضا و كليد عمومي كه از Bob دريافت كرده صحت امضا و اينكه امضا از طرف Bob مي باشد را تاييد ميكند.

    كريپتوگرافي


    مقدمه اي بر سيستم كدگذاري RSA

    تابحال در وادي رمزنگاري اطلاعات حداقل دو سيستم عمومي زير بكار گرفته شده است:

    الگوريتم هاي متقارن(Symmetric algorithms) از يك كليد براي رمزگذاري و رمزگشايي استفاده ميكنند
    كه بعنوان Private Key System نيز معرفي مي شوند

    الگوريتم هاي نامتقارن (asymmetric algorithms)
    از يك جفت كليد براي كدگذاري و رمزگشايي استفاده مي كنند . اين دو كليد با روابط رياضي به هم مربوط مي شوند اما توليد يكي از ديگري بسيار مشكل است و بعنوان Public Key System نيز معرفي مي شوند

    اين روشها به شما اجازه مي دهند تا يك كليد را آزادانه منتشر كنيد (the "public" key) و كليد ديگر را نزد خود محفوظ نگه داريد . اين كليد مخفي عموما در كارتهاي هوشمند و يا وب سرورها و .... ذخيره مي شود . در اين روشها هر كسي مي تواند اطلاعات را با كليد عمومي منتشر شده كدگذاري نمايد اما تنها شما هستيد كه مي توانيد با استفاده از كليد خصوصي خود ، اين داده ها را رمزگشايي نماييد .
    بر عكس، شما مي توانيد پيغامي را با كليد مخفي خود كدگذاري نماييد و سپس كساني كه دسترسي به كليد عمومي دارند آنرا رمزگشايي كنند.

    الگوريتم RSA چگونه كار مي كند؟

    سال ۱۹۷۷ در دانشگاه MIT سه رياضيدان آمريكايي به نام هاي Leonard Adleman, Adi Shamir, Ronald L. Rivest
    پايه هاي اين الگوريتم را بنا نهادند .

    سه مرحله را براي اين الگوريتم مي توان متصور شد .
    ۱ . توليد كليدهاي عمومي و خصوصي براي كدگذاري
    ۲ .كدگذاري اطلاعات توسط كليد عمومي
    ۳ .رمزگشايي اطلاعات توسط كليد خصوصي

    الف ) توليد كليدهاي عمومي و خصوصي در الگوريتم آر . اس .آ بصورت زير انجام مي شود :

    دو عدد اول بزرگ را بطور تصادفي انتخاب كنيد - برای مثال q , p

    سپس بر اين اساس : .

    n = pq

    و

    (Phi = (p-1)(q-1

    محاسبه مي شوند .

    در ادامه عدد صحيح a را طوري انتخاب كنيد كه بزرگترين مقسوم عليه مشترك آن با Phi مساوي با عدد ۱ باشد
    عدد d را هم از معادله :

    ed mod phi =1 محاسبه نماييد . (همنهشتي دوره دبيرستان ) پس از انجام اين محاسبات داريم :
    e و n كليد عمومي را تشكيل مي دهند .
    d و n كليد عمومي را تشكيل مي دهند .

    معرفي سه اصطلاح در معادلات فو ق:
    1. به n د ر اينجا modulus گفته مي شود
    2. به e در محاسبات فوق public exponent گفته مي شود
    3. به d هم در محاسبات بالا secret exponent مي گويند


    ب ) كدگذاري اطلاعات :

    كليدهاي عموميn و e توسط شخص B در اختيار شخص A قرار داده مي شود .پيغام اصلي توسط شخص A بصورت يكي عدد صحيح مثبت درآورده شده و M ناميده مي شود . از معادله زيرعبارت كدگذاري شده C توليد مي شود :

    C = m ^ e mod n

    C محاسبه شده اكنون براي شخص B فرستاده مي شود . در اين معادله علامت ^ به معني توان است
    و توسط mod هم باقيمانده تقسيم محاسبه مي شود .

    ج) رمزگشايي اطلاعلات :

    شخص B پيغام رمزنگاري شده را دريافت كرده و با استفاده از كليدهاي خصوصي d و n که در اختيار دارد و توسط فرمول زير آنرا رمزگشايي مي كند m را بدست مي آورد :

    m = C ^ d mod n

    همانطور كه ملاحظه مي كنيد از رياضيات به ظاهر ساده اي استفاده مي كند اما يكي از قوي ترين الگوريتمهاي كدگذاري است كه تابحال ايجاد شده است.

    مثالي بسيار ساده از الگوريتمRSA

    انتخاب دو عدد اول بصورت q=13 , p =11

    n=pq =33و phi = (p-1)(q-1)= 10 * 2 = 20

    e را مساوي با ۳ انتخاب مي كنيم ( چون بزرگترين مقسوم عليه مشترك آن با phi برابر با یک است)
    عدد d را بايد از معادله ed mod phi =1 محاسبه کنیم . روشهاي محاسبه زيادي براي آن وجود دارد
    براي مثال d را بگونه اي محاسبه مي نماييم كه بر ed-1 بخشپذير باشد و يا راه ديگر d = e ^ -1 mod phi که در اینجا d=7 میشود.



    ۵) نتيجه حاصل بدست آمدن كليدهاي عمومي و خصوصي در اين مرحله مي باشد،

    يعني :

    Public key = (n , e) = (33 , 3)
    Private key = (n , d) = (33 , 7

    فرض كنيد پيغام m = 7 را ميخواهيم با اطلاعات فوق رمزنگاري كنيم :

    C = m ^ e mod n = 7 ^ 3 mod 33 = 343 mod 33 = 13

    و براي رمزگشايي آن داريم:

    m = c ^ e mod n = 13 ^ 7 mod 33= 7
    #2 ارسال شده در تاريخ 27th March 2012 در ساعت 13:41

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •