ستاره های آسمان

ریاضی ابزار شناخت جهان هستی

ستاره های آسمان

ریاضی ابزار شناخت جهان هستی

ستاره های آسمان
مطالب پربحث‌تر

۵ مطلب با موضوع «رمزنگاری» ثبت شده است

سلام

با خودم قرار گذاشتم هم برای اینکه وبلاگ از این حالت راکد خارج بشه و هم کار مفیدی کرده باشم دوره‌های آموزش رمزنگاری رو ضبط کنم و اینجا بذارم.

لینک دریافت جلسه اول رمزنگاری

۲ جلسه اول رایگان خواهد بود و بقیه جلسات هزینه خواهد داشت.

برای دریافت جلسات هزینه‌دار، باید با تلگرامتون به ID تلگرام @mshjk پیام بدین تا لینک دانلود براتون ارسال بشه.

(دقت کنید چون لینک در secret chat ارسال میشه، باید از نسخه گوشی تلگرام استفاده کنید نه از لپتاپ)

  • محمد اسماعیل حسنی

سلام

کتاب «پروتکلهای احراز و بنای  کلید» را می‌توانید از این لینک دریافت کنید.

برای باز کردن فایلهای 7z از نرم‌افزار Winrar یا 7-zip استفاده کنید.

------------------------------------------

For download "Protocols for Authentication and Key Establishment" click on this link

Authers: Colin Boyd & Anish Mathuria

  • محمد اسماعیل حسنی

سلام

مطلب جالبی که سرکلاس رمزنگاری شنیدم ولی هنوز مطمئن نیستم درسته یا نه:
اگه یه سیستم رمزنگاری داشته باشیم که از هر متن رمز شده دقیقا یک بیت رو بشه رمزگشایی کرد کل پیام رو بازسازی کرد!

اگه این درسته باشه نشت فقط یه بیت که کمترین نشت ممکن اطلاعات از یه سیستم با امنیت ناقص هست هم قابل گذشت نمیشه!!

  • محمد اسماعیل حسنی

سلام

فردی به نام الف قصد ارسال نامه‌ای به شخص ب را دارد ولی به پستچی بین خودش و ب اعتمادی ندارد. تمام دارایی الف یک یک قفل و کلیدش و یک صندوق است که میتواند نامه را داخل آن بگذارد و قفلش کند. ب هم فقط یک قفل و کلیدش را دارد. پستچی هر تعداد دلخواه می‌تواند بین این دو فرد در رفت و آمد باشد. سوال این است که چگونه نامه الف به ب برسد بدون اینکه پستچی بتواند نامه را بخواند؟

دقت کنید اگر کلید به پستچی تحویل داده شود حتی اگر قفل مربوط به آن کلید روی جعبه نباشد وی می‌تواند به کلیدسازی مراجعه کند و برای روز مبادا یک کلید کپی کند پس کلید هرگز به پستچی تحویل داده نمیشود

  • محمد اسماعیل حسنی

سلام

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

\[ K_{AS} \]

برای رمزنگاری مبادله شده است)

1. علی به سرور میگویدA, Z (یعنی علی هستم و میخوام با زهرا نشست برقرار کنم)

2. سرور یک کلید K تولید میکند و به حسن میگوید:

\[ \{ K \}_{AS} , \{ K \}_{ZS} \]

(یعنی کلید K را با کلیدهای بین خودش و اعضای A و Z رمز میکند تا شنودگر نتواند آنها را تشخیص دهد)

3. علی به زهرا میگوید:

\[A , {K}_{ZS} \]

یعنی علی هستم و با این کلید می‌خواهم با تو نشستی برقرار کنم.

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

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

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

برخلاف تصور اولیه با این مفروضات مهاجم، بزرگنمایی نشده است. مثلا نه فقط یک مهندس شبکه بلکه حتی خیل عظیمی از علاقه‌مندان به کامپیوتر با پروتکلهای مختلف VPN آشنایی دارند و جزئیات PP2P و L2TP را میدانند، با یک دستگاه ساده چندصدهزارتومانی به آنتن وایرلس شما دسترسی دارند تا قادر باشند متنهایی رمز شده‌ای که نامه شما از سایتهای سرویس دهنده پست الکترونیکی مثل چاپار یا رایانامه را ببینند -البته به متن رمزنگاری شده دسترسی خواهد داشت نه متن اولیه- حتی سیستم رمزنگاری اکثر سایتهای پست الکترونیکی مثل gmail و yahoo پروتکل httpsی است که به راحتی میتوانید با یک جست و جو در اینترنت به جزئیات آن دست پیدا کند. پس برای مهاجم تنها چیزی که باقی‌می‌ماند کلیدی است که به طور خودکار بین سیستم شما و سایت چاپار به اشتراک گذاشته شده تا ایمیل شما رمزنگاری شود و به سایت سرویس‌دهنده ارسال گردد.

حداقل چیزهایی که در امنیت یک سیستم میخواهیم این است که:

1. کسی نتواند با هویتی جعلی وارد نشست شود.

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

3. فرد مهاجم نتواند خودش برای نشستها کلید تعریف کند.

4. مهاجم نتواند هیچ عملیات مخربی که موجب نشت نامه‌های قبلی، فعلی یا آتی مبادل شده بین طرفین نشست شود را انجام دهد.

صداقت:

1.  اگر کسی اطلاعاتی دریافت کرد مطمئن باشد که این اطلاعات از طرف کیست و مطمئن باشد که ارسال کننده نامه نمی‌تواند منکر ارسال این اطلاعات شود.

خاطرجمعی:

1. افراد از ارسال درست نامه‌ها مطمئن باشند. یعنی در پایان نشست هر کس مطمئن باشد هر نامه‌ای فرستاده به دست طرف مقابل رسیده و طرف مقابل هم میداند که این نامه از طرف اوست.

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

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

برای اینکه بتوان یک پروتکل خوب ساخت نخست باید انواع نقصهای ممکن یک پروتکل را شناخت و سپس از اتفاق افتادن آنها جلوگیری کرد. حال که تعدادی از نقصها را می‌شناسیم برای رفع آنها تلاش میکنیم و ابزارآلات لازم برای مقابله با این مشکلات را می‌سازیم:

امکان انکار ارسال درخواست نشست توسط علی:

برای اینکه علی مطمئن شود که زهرا کلید را دریاف کرده است: زهرا یک عدد تصادفی بزرگ که احتمال انتخاب آن نزدیک به صفر است را برای علی ارسال میکند به این عدد nonce میگویند و در واقع به این معناست که پیام شما دریافت شد. البته از nonce برای احراز تازگی پیام نیز می‌توان استفاده کرد. مثلا علی کنار پیام خود یک

\[ N_A \]

می‌فرستد که اگر زهرا همین عدد را برگرداند علی متوجه میشود که زهرا پیام وی را دیده است. پروتکل به شکل زیر تغییر می‌یابد:

1. علی به سرور:

\[ A, Z]

2. سرور به علی:

\[ \{ K \}_{AS} , \{ K \}_{ZS} \]

3. علی به زهرا:

\[ \{ K \}_{ZS} , N_A \]

4. زهرا به علی:

\[ N_A \]

البته هنوز بسیاری از نقصها باقیست که هیچ یک نقص دیگر هم اضافه شد! در گام ۴ مهاجم به جای زهرا می‌تواند پاسخ دهد. هرچند امکان دسترسی به K را ندارد ولی می‌تواند علی را فریب دهد تا نامه‌های ارسالی به دست زهرا نرسد. برای حل این مشکل و رفع مشکل هویت زهرا، علی

\[ N_A ]\

را با کلید K رمز می‌کند تا زهرا پس از باز کردن بسته حاوی کلید بتواند nonce علی را برگرداند

1. علی به سرور:

\[ A, Z ]\

2. سرور به علی:

\[ \{K\}_{AS} , \{K\}_{ZS} \]

3. علی به زهرا:

\[ \{ K \}_{ZS} , \{N_A \}_K

4. زهرا به علی:

\[ \{N_A-1 \}_K \]

پرسش: چرا در  گام چهار زهرا

\[ \{N_A-1 \}_K \]

را برگرداند؟ میتوانست از کلید استفاده نکند؟ یا تفریق انجام شده برای چه بود؟ آیا الآن علی می‌تواند مطمئن باشد که زهرا کلید را دریافت کرده و نه اینکه مهاجمی قصد فریب وی را دارد؟

دقت کنید که پروتکلهای عمدتا کوتاه و حداکثر در حالات استثناء به ۸ یا ۹ گام می‌رسند و پروتکلهای طولانی پروتکلهای مناسبی نیستند. هر چه تعداد خطوط یک پروتکل بیشتر امکان وجود یک نقص در آن نیز بیشتر خواهد بود.

سعی کنید پروتکلهایی طراحی کنید که همه مشکلات پروتکل ما را مرتفع سازند و سپس سعی کنید به پروتکل خودتان حمله کنید!غیر از nonce برخی ابزارآلاتی که در پروتکل‌سازی استفاده می‌شوند استفاده از امضای دیجیتال، توابع hash -اثرانگشتی-، MAC و... است می‌توانید از چنین ابزارهایی هم استفاده کنید.

  • محمد اسماعیل حسنی