🔵رمزنگاری-2🔵
موضوع: رمزنگاری نامتقارن
شاید مهمترین کاربرد رمزنگاری در انتقال محرمانه پیام ها باشد. شما هم ممکن است گاهی از رمزهای ساده برای ارتباط با دوستانتان استفاده کرده باشید. مثلا ممکن است قرارداد کرده باشید که هنگام استفاده از هر حرف در الفبا به جای اصل حرف، بعدی آن را استفاده کنید. مثلا "سلام" بشود: "شمبن". این روش البته بسیار ساده است اما صرفنظر از سادگی یا پیچیدگی روشی که استفاده میکنید شما همیشه یک قرارداد دارید که دو طرف از قبل باید با هم هماهنگ کرده باشند. فعلا اسم این قرار داد را "کلید رمزنگاری" میگذاریم. مشکلات زیادی در مورد این روش وجود دارد. مثلا اگر دو والی در یک مملکت در ایام قدیم می خواستند که با هم محرمانه پیام رد و بدل کنند مجبور بودند حداقل یک جلسه محرمانه بگذارند و کلید را رد و بدل کنند. ممکن است با خودتان فکر کنید که خوب همیشه همینطور است، شما همیشه نیاز دارید تا بدانید که فرد مقابلتان چه کلیدی استفاده میکنید که پیامش را قفل کند و شما باید با همان کلید( یا یک کپی از آن) پیام را باز کنید.
رمز نگاری نامتقارن یک روش بسیار زیرکانه برای دور زدن این مشکل است. در رمز نگاری نامتقارن بجای یک کلید دو کلید معرفی می شود. یک کلید برای قفل کردن پیام که به اسم کلید عمومی شناخته می شود و یک کلید برای باز کردن پیام که به اسم کلید خصوصی تعریف می شود. فرض کنید دو نفر به اسم شیرین و فرهاد می خواهند با هم پیام رمزی رد و بدل کنند. اما متاسفانه فاصله ی آن ها بسیار دور است و به هیچ کسی هم برای رد و بدل کردن کلید ها اعتماد ندارند. روش کار بدین قرار است: هم شیرین و هم فرهاد یک کلید خصوصی و یک کلید عمومی مختص به خود دارند. کلید عمومی همانطور که از نام آن پیداست کلیدی است که می تواند حتی به صورت رسمی اعلام شود. اما کلید خصوصی را فقط و فقط صاحب آن می داند. شیرین کلید عمومی اش را به فرهاد اعلام می کند. این میان افراد زیادی هم هستند که دوست دارند از مکالمه آن ها با خبر شوند پس آن ها هم کلید عمومی اعلام شده توسط شیرین را می بینند. فرهاد کلید عمومی را می بیند و با آن پیام خود را رمز می کند و به سمت شیرین می فرستد. در این میان هیچ کسی بجز شیرین نمی تواند آن پیام را باز کند. آن پیام تنها و تنها با کلید خصوصی شیرین باز می شود. شیرین پیام فرهاد را دریافت می کند و آن را با کلید خصوصی باز می کند و می خواند.
این کار را شیرین هم می تواند انجام دهد. یعنی او هم می تواند پیام خصوصی با کلید عمومی فرهاد رمز کند و برای فرهاد بفرستد و مطمئن باشد کسی در میانه نتواند آن را بخواند. تا این جا رمزنگاری نامتقارن بسیار موفق بوده است.
موضوع: رمزنگاری نامتقارن
شاید مهمترین کاربرد رمزنگاری در انتقال محرمانه پیام ها باشد. شما هم ممکن است گاهی از رمزهای ساده برای ارتباط با دوستانتان استفاده کرده باشید. مثلا ممکن است قرارداد کرده باشید که هنگام استفاده از هر حرف در الفبا به جای اصل حرف، بعدی آن را استفاده کنید. مثلا "سلام" بشود: "شمبن". این روش البته بسیار ساده است اما صرفنظر از سادگی یا پیچیدگی روشی که استفاده میکنید شما همیشه یک قرارداد دارید که دو طرف از قبل باید با هم هماهنگ کرده باشند. فعلا اسم این قرار داد را "کلید رمزنگاری" میگذاریم. مشکلات زیادی در مورد این روش وجود دارد. مثلا اگر دو والی در یک مملکت در ایام قدیم می خواستند که با هم محرمانه پیام رد و بدل کنند مجبور بودند حداقل یک جلسه محرمانه بگذارند و کلید را رد و بدل کنند. ممکن است با خودتان فکر کنید که خوب همیشه همینطور است، شما همیشه نیاز دارید تا بدانید که فرد مقابلتان چه کلیدی استفاده میکنید که پیامش را قفل کند و شما باید با همان کلید( یا یک کپی از آن) پیام را باز کنید.
رمز نگاری نامتقارن یک روش بسیار زیرکانه برای دور زدن این مشکل است. در رمز نگاری نامتقارن بجای یک کلید دو کلید معرفی می شود. یک کلید برای قفل کردن پیام که به اسم کلید عمومی شناخته می شود و یک کلید برای باز کردن پیام که به اسم کلید خصوصی تعریف می شود. فرض کنید دو نفر به اسم شیرین و فرهاد می خواهند با هم پیام رمزی رد و بدل کنند. اما متاسفانه فاصله ی آن ها بسیار دور است و به هیچ کسی هم برای رد و بدل کردن کلید ها اعتماد ندارند. روش کار بدین قرار است: هم شیرین و هم فرهاد یک کلید خصوصی و یک کلید عمومی مختص به خود دارند. کلید عمومی همانطور که از نام آن پیداست کلیدی است که می تواند حتی به صورت رسمی اعلام شود. اما کلید خصوصی را فقط و فقط صاحب آن می داند. شیرین کلید عمومی اش را به فرهاد اعلام می کند. این میان افراد زیادی هم هستند که دوست دارند از مکالمه آن ها با خبر شوند پس آن ها هم کلید عمومی اعلام شده توسط شیرین را می بینند. فرهاد کلید عمومی را می بیند و با آن پیام خود را رمز می کند و به سمت شیرین می فرستد. در این میان هیچ کسی بجز شیرین نمی تواند آن پیام را باز کند. آن پیام تنها و تنها با کلید خصوصی شیرین باز می شود. شیرین پیام فرهاد را دریافت می کند و آن را با کلید خصوصی باز می کند و می خواند.
این کار را شیرین هم می تواند انجام دهد. یعنی او هم می تواند پیام خصوصی با کلید عمومی فرهاد رمز کند و برای فرهاد بفرستد و مطمئن باشد کسی در میانه نتواند آن را بخواند. تا این جا رمزنگاری نامتقارن بسیار موفق بوده است.
روش های زیادی برای رمز نگاری نامتقارن وجود دارد که در اینجا مهمترین آن را بررسی می کنیم. این الگوریتم به اسم RSA شناخته می شود و در قلب مهمترین سیستم های رمزنگاری امروزی است.
اولین مرحله این الگوریتم تولید کلید های عمومی و خصوصی است. توجه کنید که کلید ها مثل پسورد نیستند که شما به صورت دلبخواه انتخاب کنید.(در این جا سبز نشان دهنده کلید عمومی و قرمز کلید خصوصی است)
اولین مرحله این الگوریتم تولید کلید های عمومی و خصوصی است. توجه کنید که کلید ها مثل پسورد نیستند که شما به صورت دلبخواه انتخاب کنید.(در این جا سبز نشان دهنده کلید عمومی و قرمز کلید خصوصی است)
تمام شد! کلید عمومی اینجا n و e است. و کلید خصوصی d
حالا چطور پیام ها را رمز کنیم و باز کنیم؟
برای رمز کردن پیام ابتدا فرهاد بعد از دیدن کلید عمومی شیرین که n و e است. پیام خود M را تبدیل به یک عدد مثل m می کند(مثلا کد ASCII که در کامپیوتر ها هم استفاده می شود) و سپس c را محاسبه می کند:
حالا چطور پیام ها را رمز کنیم و باز کنیم؟
برای رمز کردن پیام ابتدا فرهاد بعد از دیدن کلید عمومی شیرین که n و e است. پیام خود M را تبدیل به یک عدد مثل m می کند(مثلا کد ASCII که در کامپیوتر ها هم استفاده می شود) و سپس c را محاسبه می کند:
و سپس c که پیام رمزشده و ناخوانا برای غیر اس را می تواند با خیال راحت از یک کانال نا امن (مثل فریاد زدن آن!!) به شیرین برساند.
شیرین پس از دریافت c با ذوق و شوق تمام می تواند از کلید خصوصی خودش یعنی d استفاده کرده تا پیام فرهاد را باز بیابد.
شیرین پس از دریافت c با ذوق و شوق تمام می تواند از کلید خصوصی خودش یعنی d استفاده کرده تا پیام فرهاد را باز بیابد.
قدرت RSA بر این اساس است که شما نمی توانید صرفا با داشتن کلید عمومی کلید خصوصی را بدست بیاورید.
حتما شما هم متوجه شده اید مشکل بزرگی در رابطه با روش بالا وجود دارد. هر کسی می تواند خود را جای فرهاد جا بزند چون هر کسی می تواند با کلید عمومی یک پیام رمز کند و به شیرین بفرستد. در واقع روشی برای تعیین هویت وجود ندارد. در بخش بعد به این موضوع می پردازیم
حتما شما هم متوجه شده اید مشکل بزرگی در رابطه با روش بالا وجود دارد. هر کسی می تواند خود را جای فرهاد جا بزند چون هر کسی می تواند با کلید عمومی یک پیام رمز کند و به شیرین بفرستد. در واقع روشی برای تعیین هویت وجود ندارد. در بخش بعد به این موضوع می پردازیم
Forwarded from MatlabTips (Rohola Zandie)
مجموعه رمزنگاری که شروع کرده ایم سرآغازی است برای فهم بیت کوین که پس از یک پست دیگر به آن میرسیم
دوستان خود را فرا بخوانید @matlabtips
دوستان خود را فرا بخوانید @matlabtips
Honare Ketab Nakhandan_362388.pdf
274.1 KB
هنر کتاب نخواندن (بهاالدین خرمشاهی) ۱۲ صفحه
یک مقاله بسیار کوتاه درباب روشهای کتاب خواندن و نخواندن
یک مقاله بسیار کوتاه درباب روشهای کتاب خواندن و نخواندن
🔵رمزنگاری-3🔵
موضوع: امضای دیجیتال
همانطور که در بخش قبل هم متوجه شدید روش رمزنگاری ای که بیان شد یک مشکل بزرگ دارد و آن این است که چون کلید عمومی در دسترس همگان است همه می توانند برای شیرین پیام بفرستند هرچند تنها کسی که میتواند پیام ها را باز کند شیرین است. در واقع گویا هیچ راهی وجود ندارد که اصالت فرد مشخص شود. در دنیای واقعی برای اینکه متوجه بشویم یک پیام مربوط به شخص خاصی است از او میخواهیم که پای آن را امضا کند. همه می دانیم امضای هر شخص متعلق به خود اوست و باید طوری باشد که کپی کردن آن سخت باشد. هر چند، هرقدر هم امضای شما پیچیده باشد باز هم ممکن است افرادی باشند که با مهارت آن را جعل کنند. اما در دنیای دیجیتال چگونه میتوان امضا داشت؟
امضای دیجیتال روش های مختلفی دارد اما اینجا باز هم بر اساس الگوریتم RSA آن را توضیح می دهیم. در واقع برای امضای دیجیتال ما از چارچوب خود روش RSA خارج نمی شویم! فقط یک تفاوت کوچک وجود دارد. فرض کنید دو شخص به صورت مجزا برای شیرین پیام ارسال می کنند. شیرین پیام ها را باز میکند ولی نمی تواند متوجه شود که کدام یکی واقعا فرهاد است. از قضا هر دوی آن اشخاص از یک کلید عمومی استفاده می کنند.اما فقط یکی از آن ها می تواند واقعا ادعا کند که صاحب "کلید عمومی صحیح" است(فراموش نکنید دستیابی به کلید خصوصی از طریق کلید عمومی ناممکن است). کسی صاحب واقعی کلید عمومی است که کلید خصوصی جفت آن را هم داشته باشد. به همین خاطر شیرین از آن ها می خواهد برای اثبات ادعای خود یک پیام ساده مانند "من راست میگم" یا هر چیز دیگری که شیرین به آن ها دستور دهد را با کلید خصوصی خود رمز کنند بنابراین هر دو پیام خود را با کلید خصوصی خودشان رمز می کنند:
موضوع: امضای دیجیتال
همانطور که در بخش قبل هم متوجه شدید روش رمزنگاری ای که بیان شد یک مشکل بزرگ دارد و آن این است که چون کلید عمومی در دسترس همگان است همه می توانند برای شیرین پیام بفرستند هرچند تنها کسی که میتواند پیام ها را باز کند شیرین است. در واقع گویا هیچ راهی وجود ندارد که اصالت فرد مشخص شود. در دنیای واقعی برای اینکه متوجه بشویم یک پیام مربوط به شخص خاصی است از او میخواهیم که پای آن را امضا کند. همه می دانیم امضای هر شخص متعلق به خود اوست و باید طوری باشد که کپی کردن آن سخت باشد. هر چند، هرقدر هم امضای شما پیچیده باشد باز هم ممکن است افرادی باشند که با مهارت آن را جعل کنند. اما در دنیای دیجیتال چگونه میتوان امضا داشت؟
امضای دیجیتال روش های مختلفی دارد اما اینجا باز هم بر اساس الگوریتم RSA آن را توضیح می دهیم. در واقع برای امضای دیجیتال ما از چارچوب خود روش RSA خارج نمی شویم! فقط یک تفاوت کوچک وجود دارد. فرض کنید دو شخص به صورت مجزا برای شیرین پیام ارسال می کنند. شیرین پیام ها را باز میکند ولی نمی تواند متوجه شود که کدام یکی واقعا فرهاد است. از قضا هر دوی آن اشخاص از یک کلید عمومی استفاده می کنند.اما فقط یکی از آن ها می تواند واقعا ادعا کند که صاحب "کلید عمومی صحیح" است(فراموش نکنید دستیابی به کلید خصوصی از طریق کلید عمومی ناممکن است). کسی صاحب واقعی کلید عمومی است که کلید خصوصی جفت آن را هم داشته باشد. به همین خاطر شیرین از آن ها می خواهد برای اثبات ادعای خود یک پیام ساده مانند "من راست میگم" یا هر چیز دیگری که شیرین به آن ها دستور دهد را با کلید خصوصی خود رمز کنند بنابراین هر دو پیام خود را با کلید خصوصی خودشان رمز می کنند:
اینجا امضا صرفا یک عدد است. d1 کلید خصوصی واقعی فرهاد است و d2 کلید خصوصی مهاجم است که جعلی است. حالا شیرین می تواند با استفاده از کلید عمومی آنها متوجه شود که کدامیک راست میگویند برای این کار او به سادگی می تواند محاسبه کند که آیا امضا به توان کلید عمومی با عدد پیامی که به آن ها گفته بود هم نهشت هست یا خیر:
همانطور که میبینید شخص دوم دروغ گفته بود او واقعا کلید خصوصی مربوط به آن کلید عمومی که ادعا می کرد را نداشت چون امضایش با کلید عمومی ادعاییش نمیخواند.
گیج نشوید: دقت کنید که اینجا تفاوت ظریفی بین رمزنگاری و امضای دیجیتال وجود دارد. در رمزنگاری پیام ها با کلید عمومی رمز می شدند و با کلید خصوصی باز می شدند اما در امضای دیجیتال پیام ها با کلید خصوصی امضا می شوند و با کلید عمومی تایید می شوند.
باز هم یک جای داستان بالا میلنگد.فرض کنید هر کدام از اشخاص بالا از کلید عمومی متفاوتی استفاده کنند. اینجا هیچ راهی برای شیرین وجود ندارد که بداند کلید عمومی فرهاد کدام است. تنها چیزی که شیرین می تواند بفهمد این است که با فرض دانستن کلید عمومی فرهاد(به هر طریقی) می تواند آن را با حقه امضای دیجیتال تایید کند.
برای حل کردن این مشکل "زیرساخت کلید عمومی" (Public key infrastructure) پیشنهاد شده است. به عبارتی سازمان هایی در دنیا وجود دارند که به افراد، شرکت ها و بانک ها، گواهی دیجیتال (Digital certificate) می دهند. این سازمان ها در واقع مشخص می کنند هر کس چه کلید عمومی دارد. به این ترتیب شما به راحتی می توانید بروید و ببینید برای مثلا فرهاد چه کلید عمومی ثبت شده است. در یک مثال واقعی تر شما به دنبال مطمئن بودن کلید عمومی درگاه بانک هستید. برای این کار کافی است به گواهی دیجیتال آن سر بزنید و ببینید برای آن بانک چه کلید عمومی ثبت شده است. امروزه این کار به صورت اتوماتیک توسط مرورگر شما انجام می شود. شما هم ممکن است حالت های زیر را در مرورگر خود دیده باشید
گیج نشوید: دقت کنید که اینجا تفاوت ظریفی بین رمزنگاری و امضای دیجیتال وجود دارد. در رمزنگاری پیام ها با کلید عمومی رمز می شدند و با کلید خصوصی باز می شدند اما در امضای دیجیتال پیام ها با کلید خصوصی امضا می شوند و با کلید عمومی تایید می شوند.
باز هم یک جای داستان بالا میلنگد.فرض کنید هر کدام از اشخاص بالا از کلید عمومی متفاوتی استفاده کنند. اینجا هیچ راهی برای شیرین وجود ندارد که بداند کلید عمومی فرهاد کدام است. تنها چیزی که شیرین می تواند بفهمد این است که با فرض دانستن کلید عمومی فرهاد(به هر طریقی) می تواند آن را با حقه امضای دیجیتال تایید کند.
برای حل کردن این مشکل "زیرساخت کلید عمومی" (Public key infrastructure) پیشنهاد شده است. به عبارتی سازمان هایی در دنیا وجود دارند که به افراد، شرکت ها و بانک ها، گواهی دیجیتال (Digital certificate) می دهند. این سازمان ها در واقع مشخص می کنند هر کس چه کلید عمومی دارد. به این ترتیب شما به راحتی می توانید بروید و ببینید برای مثلا فرهاد چه کلید عمومی ثبت شده است. در یک مثال واقعی تر شما به دنبال مطمئن بودن کلید عمومی درگاه بانک هستید. برای این کار کافی است به گواهی دیجیتال آن سر بزنید و ببینید برای آن بانک چه کلید عمومی ثبت شده است. امروزه این کار به صورت اتوماتیک توسط مرورگر شما انجام می شود. شما هم ممکن است حالت های زیر را در مرورگر خود دیده باشید