DataNetSec-Dousti-05-PublicKeyCrypto-v3.pdf

‫دانشگاه صنعتی شریف‬
‫دانشکده مهندسی کامپیوتر‬
‫آزمایشگاه امنیت داده و شبکه‬
‫‪http://dnsl.ce.sharif.edu‬‬
‫رمزنگاری نامتقارن (کلید عمومی)‬
‫محمد صادق دوستی‬
‫‪1 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مبانی رمزنگاری کلید عمومی‬
‫• مقایسه با رمزنگاری سنتی و متقارن‬
‫• کاربردهای رمزنگاری کلید عمومی‬
‫• الگوریتم رمز ‪RSA‬‬
‫• الگوریتم دیفی‪-‬هلمن‬
‫• الگوریتم رمز الجمل (‪)ElGamal‬‬
‫‪2 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبانی رمزنگاری کلید عمومی‬
‫‪ ‬دیفی و هلمن اولین راه حل را در ‪ 1976‬ارائه دادند‪.‬‬
‫‪ ‬کاربردهای مهم‪:‬‬
‫‪‬حل مسأله توزیع کلید در روشهای رمزنگاری متقارن‬
‫‪‬امضای دیجیتال‬
‫‪Martin Edward Hellman‬‬
‫) – ‪(1945‬‬
‫‪3 / 57‬‬
‫امنیت داده و شبکه‬
‫‪Bailey Whitfield Diffie‬‬
‫) – ‪(1944‬‬
‫محمد صادق دوستی‬
‫رمزنگاری کلید عمومی‬
‫‪ ‬کلیدهای رمزگذاری و رمزگشایی متفاوت اما مرتبط هستند‪.‬‬
‫‪ ‬رسیدن به کلید رمزگشایی از کلید رمزگذاری از لحاظ محاسبباتی‬
‫ناممکن است‪.‬‬
‫‪( ‬در حفظ محرمانگی) رمزگذاری امری همگانی است و اساساً نیازی‬
‫به اشتراک گذاشتن اطالعات محرمانه ندارد‪.‬‬
‫‪( ‬در حفظ محرمانگی) رمزگشایی از طرف دیگبر امبری اصتصاصبی‬
‫بوده و محرمانگی پیامها محفوظ میماند‪.‬‬
‫‪4 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نمادها و قراردادها‬
‫‪ ‬کلید عمومی‪ :‬کلید رمزگذاری (در حفظ محرمانگی)‬
‫‪‬ایببن کلیببد را بببرای شبب‬
‫‪ A‬بببا ‪ PUa‬نشببان مببیدهببیم‪.‬‬
‫‪ ‬کلید خصوصی‪ :‬کلید رمزگشایی (در حفظ محرمانگی)‬
‫‪‬این کلید را برای ش‬
‫‪5 / 57‬‬
‫‪ A‬با ‪ PRa‬نشان میدهیم‪.‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نیازمندیهای «دستوری» رمزنگاری کلید عمومی‬
‫‪ ‬از نظر محاسبباتی ببرای طبرف ‪ ،A‬تولیبد یب‬
‫زو کلیبد (کلیبد‬
‫عمومی ‪ PUa‬و کلید صصوصی ‪ )PRa‬آسان باشد‪.‬‬
‫‪ ‬برای فرستنده‪ ،‬تولید متن رمز آسان باشد‪:‬‬
‫) ‪E PU a (M‬‬
‫‪C‬‬
‫‪ ‬برای گیرنده‪ ،‬رمزگشایی متن با استفاده از کلید متنبارر آن آسبان‬
‫باشد‪:‬‬
‫]) ‪D PRa [E PU a (M‬‬
‫‪6 / 57‬‬
‫امنیت داده و شبکه‬
‫) ‪D PRa (C‬‬
‫‪M‬‬
‫محمد صادق دوستی‬
‫نیازمندیهای «امنیتی» رمزنگاری کلید عمومی‬
‫‪ ‬از نظر محاسباتی‪ ،‬تولید کلید صصوصی )‪ (PRa‬ببا دانسبتن کلیبد‬
‫عمومی )‪ (PUa‬غیر ممکن باشد‪.‬‬
‫‪PR a‬‬
‫‪PU a‬‬
‫‪ ‬بازیابی پیام ‪ ،M‬با دانستن ‪ PUa‬و ‪ C‬غیرممکن باشد‪.‬‬
‫‪M‬‬
‫‪7 / 57‬‬
‫‪C , PU a‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مراحل رمزنگاری کلید عمومی‬
‫‪ ‬هر کاربر ی‬
‫زو کلید عمومی و صصوصی تولید میکند‪.‬‬
‫‪ ‬کاربران کلید عمومی صود را به صبورت عمبومی اعبالن مبیکننبد‬
‫درحالی که کلید صصوصی م فی میباشد‪.‬‬
‫‪ ‬همگان قادر به ارسال پیام رمبز شبده ببرای هبر کباربر دل بواه ببا‬
‫استفاده از کلید عمومی او هستند‪.‬‬
‫‪‬‬
‫هر کاربر میتواند با کم‬
‫کلید صصوصی پیامهبایی کبه ببا کلیبد‬
‫عمومی او رمز شده رمزگشایی کند‪.‬‬
‫‪8 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫رمزگذاری و رمزگشایی با کلید عمومی‬
‫‪9 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مبانی رمزنگاری کلید عمومی‬
‫• مقایسه با رمزنگاری سنتی و متقارن‬
‫• کاربردهای رمزنگاری کلید عمومی‬
‫• الگوریتم رمز ‪RSA‬‬
‫• الگوریتم دیفی‪-‬هلمن‬
‫• الگوریتم رمز الجمل (‪)ElGamal‬‬
‫‪10 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مقایسه رمزنگاری متقارن و رمزنگاری کلید عمومی‬
‫‪ ‬مشکل مدیریت کلیدها در رمزنگاری متقارن‬
‫‪‬نیاز به توافق بر روی کلید پیش از برقراری ارتباط‬
‫𝑛‬
‫کلید احتیا داریم‪.‬‬
‫‪‬برای ارتباط ‪ n‬نفر باهم به‬
‫‪2‬‬
‫‪ ‬عدم پشتیبانی رمزنگاری متقارن از امضای رقمی (دیجیتال)‬
‫‪ ‬با این وجود الگبوریتمهبای رمزنگباری متقبارن بسییار سبریع تبر‬
‫هستند‪.‬‬
‫‪11 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫جایگزینی یا تکمیل؟‬
‫‪ ‬رمزنگاری کلید عمومی ‪ ‬مکمل رمزنگاری متقارن‬
‫‪ ‬تولید کلید نشست برای رمزنگاری متقارن‬
‫‪ ‬اشتراک کلید نشست توسط رمزنگاری نامتقارن‬
‫‪ ‬رمزگذاری و رمزگشایی پیامهای نشست توسط کلید نشست‬
‫‪12 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫سوء برداشت!‬
‫‪ ‬دو تصور اشتباه درباره الگوریتمهای کلید عمومی‬
‫‪‬رمزنگاری با کلید عمومی امنتر است!‬
‫‪‬مسئله توزیع کلید در رمزنگاری با کلید عمومی برطرف شده است!‬
‫• چگونه مطمئن شویم کلید عمومی لزوماً متعلق به ش‬
‫است؟!‬
‫• توزیع کلید عمومی آسانتر است‪ ،‬ولی بدیهی و بدون مشکل نیست‪.‬‬
‫ادعا کننده‬
‫‪13 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مبانی رمزنگاری کلید عمومی‬
‫• مقایسه با رمزنگاری سنتی و متقارن‬
‫• کاربردهای رمزنگاری کلید عمومی‬
‫• الگوریتم رمز ‪RSA‬‬
‫• الگوریتم دیفی‪-‬هلمن‬
‫• الگوریتم رمز الجمل (‪)ElGamal‬‬
‫‪14 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کاربردهای رمزنگاری کلید عمومی‬
‫‪ ‬رمزگذاری‪ /‬رمزگشایی‪ :‬برای حفظ محرمانگی‬
‫‪ ‬امضای رقمی‪ :‬برای حفظ صحت پیام و معبین نمبودن فرسبتنده‬
‫پیام (پیوند دادن پیام با امضا کننده) یا همان عدم انکار‬
‫‪ ‬توزیع کلید‪ :‬برای توافق طرفین روی کلید م فی نشست‪ ،‬قبل از‬
‫برقراری ارتباط‬
‫‪15 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫جایگاه عملی رمزنگاری کلید عمومی‬
‫‪ ‬کلیدهای این نوع از الگوریتمها‪ ،‬بسیار طوالنیتبر از الگبوریتمهبای‬
‫رمز متقارن هستند‪.‬‬
‫‪‬الگوریتم ‪ RSA‬با پیمانه ‪ 1024‬بیتی‪ ،‬امنیتی در حد الگوریتمهای‬
‫متقارن با کلیدهای ‪ 87‬بیتی دارد‪.‬‬
‫‪ ‬سرعت الگوریتمهبای کلیبد عمبومی از الگبوریتمهبای رمزگبذاری‬
‫متقارن پایینتر است‪.‬‬
‫‪ RSA ‬تقریباً چندین هزار بار کندتر از رمزهای متقارن (با امنیبت‬
‫یکسان) است‪.‬‬
‫‪16 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمالت به رمزنگاری کلید عمومی‬
‫‪ ‬جستجوی جامع )‪(Brute force‬‬
‫‪ ‬محاسبه کلید صصوصی از کلید عمومی (یا‪ :‬محاسببه پیبام از روی‬
‫متن رمز ‪ +‬کلید عمومی)‬
‫‪‬اثبات نشده که غیر ممکن است‪.‬‬
‫‪‬بر مبنای ی‬
‫‪17 / 57‬‬
‫یا چند فرض (معقول) استوار است‪.‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مبانی رمزنگاری کلید عمومی‬
‫• مقایسه با رمزنگاری سنتی و متقارن‬
‫• کاربردهای رمزنگاری کلید عمومی‬
‫• الگوریتم رمز ‪RSA‬‬
‫• الگوریتم دیفی‪-‬هلمن‬
‫• الگوریتم رمز الجمل (‪)ElGamal‬‬
‫‪18 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کلیات الگوریتم رمزنگاری ‪RSA‬‬
‫‪ ‬ارائه توسط رایوست (‪ ،)R‬شامیر (‪ )S‬و ادلمن (‪ )A‬در سال ‪1978‬‬
‫‪ ‬مشهورترین و پرکاربردترین الگوریتم رمزگذاری کلیدعمومی‬
‫‪ ‬مبتنی بر توان رسانی پیمانهای با پیمانه صیلی بزرگ‬
‫‪ ‬امنیت مبتنی بر دشواری تجزیه اعداد بزرگ‬
‫‪Leonard Adleman‬‬
‫) – ‪(1945‬‬
‫‪19 / 57‬‬
‫‪Adi Shamir‬‬
‫) – ‪(1952‬‬
‫امنیت داده و شبکه‬
‫‪Ronald Linn Rivest‬‬
‫) – ‪(1947‬‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪1 -‬‬
‫‪ : ℤ𝑛 ‬مجموعه اعداد نامنفی کمتر از ‪n.‬‬
‫‪ : ℤ∗𝑛 ‬مجموعه اعداد طبیعی کمتر از ‪ n‬و اول نسبت به آن‪.‬‬
‫‪ ‬مثال‪:‬‬
‫‪ 0,1, 2, 3, 4, 5, 6, 7, 8, 9,10,11‬‬
‫‪ 1, 5, 7,11‬‬
‫‪20 / 57‬‬
‫امنیت داده و شبکه‬
‫‪12‬‬
‫*‬
‫‪12‬‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪2 -‬‬
‫‪ ‬تابع )‪ (n‬اویلر‪ :‬تعداد اعضای 𝑛∗‪ℤ‬‬
‫‪ ‬مثال‪φ 12  4 :‬‬
‫‪ ‬اگر ‪ n‬عددی اول باشد‪φ  n   n 1 :‬‬
‫‪ ‬اگر ‪ n‬حاصل ضرب دو عدد اول ‪ p‬و ‪ q‬باشد‪:‬‬
‫‪φ  n   φ  pq    p  1 q  1‬‬
‫‪21 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪3 -‬‬
‫‪ ‬قضیه کوچ‬
‫فرما (‪:)Fermat‬‬
‫‪ p‬عددی اول و ‪ a‬عددی صحیحی که مضرب ‪ p‬نیست‪:‬‬
‫‪ mod p ‬‬
‫‪a p 1  1‬‬
‫‪ ‬مثال‪:‬‬
‫‪a7‬‬
‫‪p  11,‬‬
‫‪7111  282475249‬‬
‫‪ 25679568 11  1‬‬
‫‪ mod 11‬‬
‫‪22 / 57‬‬
‫امنیت داده و شبکه‬
‫‪1‬‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪4 -‬‬
‫‪ ‬قضیه اویلر (تعمیم قضیه فرما)‪:‬‬
‫‪‬اگر ‪ a‬و ‪ n‬اعداد طبیعی و نسبت به هم اول باشند‪:‬‬
‫‪ mod n ‬‬
‫‪1‬‬
‫‪φ n ‬‬
‫‪a‬‬
‫‪ ‬مثال‪:‬‬
‫‪a7‬‬
‫‪n  12,‬‬
‫‪ mod 12‬‬
‫‪1‬‬
‫‪7φ12  74‬‬
‫‪ 2401  200 12  1‬‬
‫‪23 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نمادگذاری ‪RSA‬‬
‫‪ :n ‬پیمانه عمومی (‪)Public Modulus‬‬
‫‪‬حاصل ضرب دو عدد اول ‪ p‬و ‪ q‬بسیار بزرگ‬
‫‪ :e ‬نمای عمومی (‪)Public Exponent‬‬
‫‪ :d ‬نمای صصوصی (‪)Private Exponent‬‬
‫‪‬داریم‪ mod φ(n)  :‬‬
‫‪d  e 1‬‬
‫عدد صحیح ‪ k‬وجود دارد که‪:‬‬
‫‪𝑒𝑑 = 𝑘𝜑 𝑛 + 1‬‬
‫‪ :m ‬پیام‪ ،‬عددی متعلق به 𝑛‪ℤ‬‬
‫‪ ‬تابع ‪ :RSA‬تابع یکطرفه ‪ mod n ‬‬
‫‪c  me‬‬
‫‪ ‬تابع معکوس‪ mod n  :‬‬
‫‪m  cd‬‬
‫‪24 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
RSA ‫مثال از‬
p  61, q  53
n  pq  3233
φ(n)  (61  1)(53  1)  3120
e  17 
  ed  1
d  2753 
 mod φ  n  
m  65
c  E  m   6517  mod 3233   2790
c  2790
m  D  c   27902753  mod 3233   65
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
25 / 57
‫چرا ‪ RSA‬درست کار میکند؟‬
‫‪ ‬اگر 𝑛∗‪ 𝑚 ∈ ℤ‬باشد‪ ،‬قضیه اویلر کار میکند‪:‬‬
‫‪ m mod n  mod n ‬‬
‫‪d‬‬
‫‪e‬‬
‫‪ mod n  ‬‬
‫‪d‬‬
‫‪c‬‬
‫‪ med  mod n ‬‬
‫‪ m kφ n 1  mod n ‬‬
‫‪ m1  mod n ‬‬
‫‪m‬‬
‫‪ ‬حالت کلی‪𝑚 ∈ ℤ𝑛 :‬‬
‫‪‬استفاده از قضیه فرما (تمرین)‬
‫‪26 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روند تولید کلید در ‪RSA‬‬
‫‪ ‬ابتدا دو عدد اول بزرگ و تقریباً هم اندازه ‪ p‬و ‪ q‬را به طور تصادفی‬
‫انت اب کن به گونهای که ‪.p ≠ q‬‬
‫‪ ‬عدد ‪ n‬و )‪ φ(n‬را محاسبه کن‪.‬‬
‫‪ ‬عدد صحیح ‪ e‬کبوچکتر از )‪ φ(n‬را ببه گونبهای انت باب کبن کبه‬
‫نسبت به )‪ φ(n‬اول باشد‪.‬‬
‫‪ d ‬را محاسبه کن (معکوس ‪ e‬به پیمانه )‪.)φ(n‬‬
‫‪PU = (e, n) ‬‬
‫‪27 / 57‬‬
‫و‬
‫)‪PR = (d, n‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مربعسازی و ضرب (‪)Square & Multiply‬‬
‫‪ ‬چگونگی توان رسانی سریع (محاسبه ‪ )ab‬با اسبتفاده از دو عمبل‬
‫پایه‪:‬‬
‫‪‬مربع کردن و‬
‫ضرب در ‪a‬‬
‫‪ ‬مثال‪ :‬کد به زبان پایتون‬
‫‪28 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫توانرسانی پیمانهای سریع‬
‫‪ ‬هدف‪ :‬محاسبه سریع 𝑛 ‪.𝑎𝑏 mod‬‬
‫‪ ‬برصی از الگوریتمها‪:‬‬
‫‪‬روش کالسی ‪« :‬مربعسازی و ضرب» با ‪ mod‬گرفتن در هر گام‬
‫‪‬روش مونتگومری (‪)Montgomery‬‬
‫‪‬روش بارِت (‪)Barrett‬‬
‫‪https://en.wikipedia.org/wiki/Montgomery_reduction‬‬
‫‪https://en.wikipedia.org/wiki/Barrett_reduction‬‬
‫‪29 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
)Pentium III( ‫سرعت سه الگوریتم توانرسانی پیمانهای‬
M. Johnson, B. Phung, T. Shackelford, S. Rueangvivatanakij.
Modular Reduction of Large Integers Using Classical,
Barrett, Montgomery Algorithms, Tech. Report, 2002.
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
30 / 57
‫انتخاب نمای عمومی (‪ )e‬در ‪RSA‬‬
‫‪ ‬با توجه به الگوریتم توانرسانی سریع‪ ،‬بهترین «نمبا» عبددی اسبت‬
‫که کمترین ‪ 1‬را در نمایش بیتی صود داشته باشد‪( .‬چرا؟)‬
‫‪ ‬در ‪ ،RSA‬عدد ‪ e‬حتماً مقداری فرد است (چرا؟)‬
‫‪ ‬بنابراین در نمایش بیتی ‪ e‬حداقل دو بیت ‪ 1‬است (چرا؟)‬
‫‪ ‬معموالً ‪ e‬را برابر عدد ‪k‬اُم فرما قرار میدهند (‪+ 1‬‬
‫‪ ‬اعداد صفرم تا سوم فرمبا (‪ )257 ،17 ،5 ،3‬کوچب‬
‫𝑘‪2‬‬
‫‪.)𝐹𝑘 = 2‬‬
‫هسبتند و ببه‬
‫آنها حمله وارد است ‪ ‬استفاده بسیار متداول از عدد چهارم فرما‬
‫(‪.)65537‬‬
‫‪31 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
)OpenSSL ‫ (توسط نرمافزار‬RSA ‫تولید کلید‬
> openssl genrsa -out rsa1024.pem 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
....++++++
............................................++++++
e is 65537 (0x10001)
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
32 / 57
)OpenSSL ‫ (توسط نرمافزار‬RSA ‫خواندن کلید‬
> openssl rsa -text -in rsa1024.pem
Private-Key: (1024 bit)
modulus:
00:bf:6b:7a:8b:2d:a4:19:33:1d:72:81:1d:26:4e:
73:cb:95:17:db:11:d1:d2:46:ad:6e:ac:6f:26:52:
c8:fa:0a:07:a7:7f:86:fd:22:e8:0b:d1:b4:fc:32:
7f:33:6e:de:5f:c3:6a:11:2e:bb:ef:cf:83:e7:83:
0b:95:02:3b:72:15:03:18:38:24:e8:31:7d:b4:5c:
a8:f5:2d:c6:84:e2:18:f8:a6:3b:65:96:eb:e4:07:
71:5e:3f:79:18:52:8d:a6:ec:10:d7:b0:61:fc:6f:
7d:90:c6:04:73:d9:f7:e6:1f:c9:61:c1:8e:48:76:
95:97:ac:b7:92:60:cc:ca:9f
publicExponent: 65537 (0x10001)
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
... ‫صروجی ادامه دارد‬
33 / 57
‫نسبت اندازه اعداد در مثال قبلی‬
p = 0xE670E1AF4273ED120BAEBE947D5015F264889145B4237DFEA173
F49348E542115B4A19E643C8BE65F950C7B0607696E0AEDFECD2
FC4FB79F97D04C230D55A61D (512 bits)
q = 0xD4A6A2B20ABB7D00115D1D9CA4C32D1B36A6BCC06F74265B810B
C66AA414F31E235FD4DC9FFA368EE43458779C73CD96D00F108E
668BC923EEE97ED3F38926EB (512 bits)
e = 0x010001 (24 bits)
1024 bits
d = 0x196333D989B01DF77D8C563B7B7D2436780BB5EE6319B46E0423
B28A2EA8A120FB6AE7AB0B9FB98EF7BD3D45A541390F1D3C59B0
F5B5CF5482760E175727F8A22A0AE88CB207BBCB35426E260237
401FE29EF5A7FA9CD4EC21053B55D2339C4984A560C7C96BBE1E
3163DA17A75E96FB313245E5CB5CA42DBC39BBCFCFA54CE1
1024 bits
n = 0xBF6B7A8B2DA419331D72811D264E73CB9517DB11D1D246AD6EAC
6F2652C8FA0A07A77F86FD22E80BD1B4FC327F336EDE5FC36A11
2EBBEFCF83E7830B95023B721503183824E8317DB45CA8F52DC6
84E218F8A63B6596EBE407715E3F7918528DA6EC10D7B061FC6F
7D90C60473D9F7E61FC961C18E48769597ACB79260CCCA9F
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
34 / 57
‫حمالت علیه ‪RSA‬‬
‫‪ ‬در صورتی که پارامترهای ‪ RSA‬به درستی انت اب شوند‪...‬‬
‫‪‬بهترین حمله علیه ‪ ،RSA‬تجزیه ‪ n‬است‪.‬‬
‫‪ ‬بهترین الگوریتم تجزیه برای عدد دلخواه‪ GNFS ،‬نام دارد‪.‬‬
‫‪Number Field Sieve‬‬
‫‪ General‬‬
‫‪ ‬پیچیدگی تجزیه توسط ‪ GNFS‬برای عدد ‪:n‬‬
‫‪1‬‬
‫‪2 ‬‬
‫‪  64‬‬
‫‪‬‬
‫‪exp   3‬‬
‫‪ o(1)  (ln n) 3 (ln ln n) 3 ‬‬
‫‪‬‬
‫‪‬‬
‫‪9‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪35 / 57‬‬
‫امنیت داده و شبکه‬
‫𝑥 𝑒 = 𝑥 ‪exp‬‬
‫محمد صادق دوستی‬
‫پیچیدگی تجزیه (امنیت) و سرعت ‪( RSA‬کد‪)PyCrypto :‬‬
‫‪ ‬صرف نظر از مقدار )‪ o(1‬در فرمول ‪:GNFS‬‬
‫زمان هزار‬
‫حدود زمان هزار زمان هزار‬
‫حدود‬
‫رمزنگاری‬
‫پیچیدگی رمزگذاری رمزگشایی‬
‫عدد ‪n‬‬
‫(ثانیه)‬
‫تجزیه‬
‫(ثانیه) ‪Blowfish-160‬‬
‫‪287 21024‬‬
‫‪0/07‬‬
‫‪2117 22048‬‬
‫‪2156 24096‬‬
‫‪3‬‬
‫‪0/002‬‬
‫‪0/25‬‬
‫‪12‬‬
‫‪0/004‬‬
‫‪0/85‬‬
‫‪76‬‬
‫‪0/006‬‬
‫‪ ‬به همین دلیل میگیوییم‪ :‬الگبوریتم ‪ RSA‬ببا پیمانبه ‪ 1024‬بیتبی‪،‬‬
‫امنیتی در حد الگوریتمهای متقارن با کلیدهای ‪ 87‬بیتی دارد‪.‬‬
‫‪36 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمالت کانال جانبی (‪)Side-Channel Attacks‬‬
‫‪ ‬حمالتی با دسترسی به اطالعات جانبی (تبوان محاسبباتی ‪ /‬زمبان‬
‫محاسبه) از ‪CPU‬ای که رمزنگاری روی آن انجام میشود‪.‬‬
‫‪ ‬هنگام توان رسانی سبریع در ‪ ،RSA‬بیتهبایی از ‪ d‬کبه ‪ 1‬هسبتند‬
‫زمان ‪ /‬توان بیشتری مصرف میکنند‪.‬‬
‫‪ ‬راههای مقابله‬
‫‪‬استفاده از توان رساندن با زمان ثابت محاسباتی‬
‫‪‬اضافه کردن تأصیرهای تصادفی‬
‫‪‬قرار دادن اعمال اضافی و گمراه کننده در بین محاسبات‬
‫‪37 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫قطعی بودن ‪RSA‬‬
‫‪ RSA ‬سنتی (معروف به ‪ )Textbook RSA‬قطعی است‪.‬‬
‫‪‬رمز پیام ‪ ،m‬همواره ی‬
‫‪ c‬ثابت است‪.‬‬
‫‪ ‬ایراد‪ :‬مهاجم تکرار شدن پیام را میفهمد‪.‬‬
‫‪ ‬راهکار‪ :‬استفاده از ی‬
‫‪ Padding‬تصادفی برای پیامها‬
‫‪‬استاندارد ‪ :PKCS #1 v2‬روش ‪ Padding‬به نام ‪OAEP‬‬
‫‪PKCS: Public-Key Cryptography Standards‬‬
‫‪OAEP: Optimal Asymmetric Encryption Padding‬‬
‫‪38 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫خاصیت همریختی ‪Textbook RSA‬‬
‫‪ RSA ‬سنتی‪ ،‬همری ت (‪ )Homomorphic‬است‪:‬‬
‫‪ mod n ‬‬
‫‪ mod n ‬‬
‫‪m  m1  m2‬‬
‫) ‪RSA  m   RSA(m1 )  RSA( m2‬‬
‫‪ ‬میصواهیم ‪ c = c1  c2‬را رمزگشایی کنیم‪.‬‬
‫‪ ‬استفاده از حمله متن رمز منتخب‪:‬‬
‫‪ c1‬و ‪ c2‬را به رمزگشا میدهیم و ‪ m1‬و ‪ m2‬را میگیریم‪.‬‬
‫‪‬متن آشکار معادل ‪ c‬برابر است با ‪.m1  m2‬‬
‫‪ RSA ‬با ‪ OAEP‬این مشکل را ندارد‪.‬‬
‫‪39 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مبانی رمزنگاری کلید عمومی‬
‫• مقایسه با رمزنگاری سنتی و متقارن‬
‫• کاربردهای رمزنگاری کلید عمومی‬
‫• الگوریتم رمز ‪RSA‬‬
‫• الگوریتم دیفی‪-‬هلمن‬
‫• الگوریتم رمز الجمل (‪)ElGamal‬‬
‫‪40 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪1 -‬‬
‫‪ ‬فرض کنید ‪ p‬عددی اول باشد‪.‬‬
‫‪ ‬مجموعه توانهای م تلف عدد ‪ a‬به پیمانبه ‪ p‬را ببا ‪ <a>p‬نمبایش‬
‫میدهیم‪.‬‬
‫‪ ‬مثال‪.p = 7 :‬‬
‫‪ 1, 3, 2, 6, 4, 5‬‬
‫‪ g ‬را ی‬
‫‪3‬‬
‫مولد (‪ )Generator‬برای 𝑝∗‪ ℤ‬میصوانیم اگر‪:‬‬
‫*‬
‫‪p‬‬
‫‪41 / 57‬‬
‫‪7‬‬
‫‪2 7  1, 2, 4‬‬
‫‪‬‬
‫‪p‬‬
‫‪g‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪2 -‬‬
‫‪ ‬قضیه ‪ ℤ∗𝑝 :1‬حتماً مولد دارد‪.‬‬
‫‪ ‬قضیه ‪ :2‬مولد 𝑝∗‪ ℤ‬الزاماً یکتا نیست‪.‬‬
‫‪ ‬عدد اول ‪ p‬و مولد دل واه ‪ g‬از 𝑝∗‪ ℤ‬را در نظر بگیرید‪.‬‬
‫‪ ‬عدد ‪ ‬را به تصادف از 𝑝‪ ℤ‬انت اب کنید‪.‬‬
‫‪ ‬مسئله لگاریتم گسسته (‪ :)DL‬پیدا کردن ‪ ‬با داشتن مقادیر‪:‬‬
‫‪ mod p ‬‬
‫‪42 / 57‬‬
‫‪α‬‬
‫‪p, g , g‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪3 -‬‬
‫‪ ‬اعداد ‪  ،‬و ‪ ‬به تصادف از 𝑝‪ ℤ‬انت اب میشوند‪.‬‬
‫‪ ‬همه محاسبات به پیمانه ‪ p‬انجام میشود‪.‬‬
‫‪ ‬مسئله دیفی‪-‬هلمن محاسباتی (‪:)CDH‬‬
‫‪‬محاسبه 𝛽𝛼𝑔 با داشتن‪p, g , g α , g β :‬‬
‫‪ ‬مسئله دیفی‪-‬هلمن تصمیمی (‪:)DDH‬‬
‫‪‬تمیز دادن دو زو ‪:‬‬
‫‪‬‬
‫‪αβ‬‬
‫‪β‬‬
‫‪α‬‬
‫‪g, g , g , g‬‬
‫‪g, g α , g β , g γ ‬‬
‫‪43 / 57‬‬
‫امنیت داده و شبکه‬
‫‪ p,‬‬
‫‪ p,‬‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪4 -‬‬
‫‪ ‬مسأله ‪ DDH‬به گونهای که بیان شد به سادگی قابل حل است‪.‬‬
‫‪‬تمیز دادن دو زو با استفاده از مفهومی به نام «نماد لژاندر»‬
‫‪ ‬الزم است مسأله ‪ DDH‬را با فرضهای زیر اصالح کنیم‪:‬‬
‫‪‬فرض کنیم ∗𝑝‪ 𝑔 ∈ ℤ‬به گونهای باشد که 𝑞 =‬
‫𝑝‬
‫𝑔 ‪.‬‬
‫‪‬میتوان ثابت کرد که ‪.𝑞|𝑝 − 1‬‬
‫‪‬فرض کنیم ‪ q‬اول بوده و همه محاسبات به پیمانه ‪ p‬انجام شود‪.‬‬
‫‪‬اعداد ‪  ،‬و ‪ ‬به تصادف از 𝑞‪ ℤ‬انت اب میشوند‪.‬‬
‫‪44 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبانی ریاضی ‪5 -‬‬
‫‪ ‬فرض‪ :‬برای ‪ p‬و ‪ q‬صیلی بزرگ‪ ،‬مسائل ‪ CDH ،DL‬و ‪ DDH‬دشبوار‬
‫هستند‪.‬‬
‫‪ ‬پیچیدگی بهترین الگوریتمی که ‪ DL‬به پیمانه ‪ p‬را میشکند برابر 𝑝‬
‫است‪.‬‬
‫‪‬مثال‪ :‬برای امنیت معادل ‪ 128‬بیبت (‪ ،)2128‬انبدازه ‪ p‬بایبد ‪ 256‬بیبت‬
‫باشد (‪.)2256‬‬
‫‪ ‬شکستن ‪ CDH‬سادهتر از ‪ DL‬اسبت (اگبر ‪ DL‬بشبکند‪ CDH ،‬هبم‬
‫میشکند)‪.‬‬
‫‪ ‬شکستن ‪ DDH‬ساده تر از ‪ CDH‬است (اگبر ‪ CDH‬بشبکند‪DDH ،‬‬
‫هم میشکند)‪.‬‬
‫‪45 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫الگوریتم دیفی‪-‬هلمن‬
‫‪ ‬توسط ‪ Diffie‬و ‪ Hellman‬در سال ‪ 1976‬ارائه شد‪.‬‬
‫‪ ‬برای تبادل کلید مورد استفاده قرار میگیرد‪.‬‬
‫‪ ‬کلید نشست باید غیر قابل تمایز از ی‬
‫مقدار تصادفی باشد‪.‬‬
‫‪ ‬امنیت روش مبتنی بر دشواری شکستن ‪ DDH‬است‪.‬‬
‫‪ ‬طرفین از قبل روی مقادیر ‪ q ،p‬و ‪ g‬توافق میکنند‪.‬‬
‫‪‬کلیه محاسبات به پیمانه ‪p‬‬
‫‪46 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تبادل کلید دیفی‪-‬هلمن‬
‫‪p, q, g‬‬
‫‪B‬‬
‫انت اب مقدار‬
‫تصادفی ‪ ‬از ‪ℤq‬‬
‫‪gα‬‬
‫‪β‬‬
‫‪g‬‬
‫کلید نشست‪:‬‬
‫‪αβ‬‬
‫‪47 / 57‬‬
‫‪A‬‬
‫انت اب مقدار‬
‫تصادفی ‪ ‬از ‪ℤq‬‬
‫‪g‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمله مرد میانی‬
‫‪ ‬با فرض دشواری ‪ ،DDH‬پروتکل دیفبی‪-‬هلمبن در براببر حمبالت‬
‫منفعالنه (‪ )passive‬امن است‪.‬‬
‫‪ ‬اما این پروتکل در برابر حمالت فعال (‪ )active‬امن نیست‪.‬‬
‫‪ ‬حمله مرد میانی (‪)MITM‬‬
‫‪‬مهاجم برای ‪ A‬وانمود میکند که ‪ B‬است‪.‬‬
‫‪‬مهاجم برای ‪ B‬وانمود میکند که ‪ A‬است‪.‬‬
‫‪48 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمله مرد میانی‬
‫‪g‬‬
‫‪ge‬‬
‫‪B‬‬
‫‪A‬‬
‫‪E‬‬
‫‪g‬‬
‫‪βe‬‬
‫‪K2  g‬‬
‫‪ B‬گمان میکند‬
‫کلید ‪ K2‬را با ‪ A‬به‬
‫اشتراک گذاشته‬
‫است‪.‬‬
‫‪49 / 57‬‬
‫‪ge‬‬
‫‪αe‬‬
‫‪ A ‬پیامهای به مقصد ‪ B‬را با‬
‫‪ K1‬رمز میکند‪.‬‬
‫‪ B ‬پیامهای به مقصد ‪ A‬را با‬
‫‪ K2‬رمز میکند‪.‬‬
‫‪ E ‬میتواند همه پیامها را‬
‫ب واند‪ ،‬و با کلید مناسب‬
‫برای فرد منظور رمز نماید‪.‬‬
‫امنیت داده و شبکه‬
‫‪K1  g‬‬
‫‪ A‬گمان میکند‬
‫کلید ‪ K1‬را با ‪B‬‬
‫به اشتراک‬
‫گذاشته است‪.‬‬
‫محمد صادق دوستی‬
‫رفع مشکل تبادل کلید دیفی‪-‬هلمن‬
‫‪ ‬طرفین باید قبل از شروع پروتکل‪ ،‬ی‬
‫کلید طوالنی مدت (‪)LTK‬‬
‫را به اشتراک گذاشته باشند‪.‬‬
‫‪ LTK‬میتواند متقارن یا نامتقارن باشد‪.‬‬
‫‪‬در حالت نامتقارن‪ ،‬طرفین کلید عمومی یکدیگر را دارند‪.‬‬
‫‪ ‬از ‪ LTK‬برای حفظ صحت ‪ g‬و ‪ g‬استفاده میشود‪.‬‬
‫‪)ADH( Authenticated Diffie–Hellman‬‬
‫‪‬در صورت حفظ صحت‪ ،‬مهاجم نمیتواند ‪ MITM‬را اجرا کند‪.‬‬
‫‪50 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫خاصیت محرمانگی پیشرو (‪)Forward Secrecy‬‬
‫‪ ‬گاه به آن ‪ PFS‬هم گفته میشود (‪.)Perfect Forward Secrecy‬‬
‫‪ ‬تعریف‪ :‬در صورت لو رفتن ‪ LTK‬در زمان ‪ ،T‬کلیبدهای نشسبتی‬
‫که قبل از زمان ‪ T‬تبادل شدهاند امن بمانند‪.‬‬
‫‪ ADH ‬دارای صاصیت ‪ PFS‬است‪.‬‬
‫‪‬از ‪ LTK‬فقط برای حفظ صحت و نه محرمانگی استفاده میشود‪.‬‬
‫‪‬محرمانگی کلید نشست وابسته به ‪ LTK‬نیست‪.‬‬
‫‪51 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫• مبانی رمزنگاری کلید عمومی‬
‫• مقایسه با رمزنگاری سنتی و متقارن‬
‫• کاربردهای رمزنگاری کلید عمومی‬
‫• الگوریتم رمز ‪RSA‬‬
‫• الگوریتم دیفی‪-‬هلمن‬
‫• الگوریتم رمز الجمل (‪)ElGamal‬‬
‫‪52 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫رمز الجمل (‪)ElGamal‬‬
‫‪ ‬اببداع توسبط الجمبل‪ ،‬رمزنگبباری مصبری‪-‬آمریکبایی‪ ،‬در سببال‬
‫‪1985‬‬
‫‪‬در ایران بیشتر با نام «الجمال» شناصته میشود‪.‬‬
‫‪‬الجمال دانشجوی دکترای هلمن در دانشگاه استنفورد بود‪.‬‬
‫‪ ‬امنیت رمز الجمل مبتنی بر دشواری ‪DDH‬‬
‫طاهر الجمل‬
‫(‪) – 1955‬‬
‫‪53 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تولید کلید الجمل‬
‫‪ ‬انت اب عدد اول بزرگ ‪p‬‬
‫‪ ‬انت اب 𝑝∗‪ 𝑔 ∈ ℤ‬به گونهای که 𝑞 =‬
‫𝑝‬
‫𝑔 ‪.‬‬
‫‪ q‬باید اول و بزرگ باشد‪.‬‬
‫‪‬کلیه محاسبات به پیمانه ‪.p‬‬
‫‪ ‬انت اب عدد تصادفی ‪ ‬از ‪ ℤq‬و محاسبه ‪.h = g‬‬
‫‪ q ،p ‬و ‪ g‬پارامترهای عمومی (همه مقادیر آنها را میدانند)‪.‬‬
‫‪  ‬کلید صصوصی و ‪ h‬کلید عمومی‪.‬‬
‫‪54 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫رمزگذاری و رمزگشایی الجمل‬
‫‪ ‬رمزگذاری عدد‬
‫𝑝‬
‫𝑔 ∈ 𝑚‪:‬‬
‫‪‬انت اب عدد تصادفی ‪ r‬از ‪.ℤq‬‬
‫‪‬مقدار رمز عبارت است از زو ‪.c = (gr, mhr) :‬‬
‫‪ ‬رمزگشایی از زو (‪ c = )c1, c2‬با استفاده از کلید صصوصی ‪:‬‬
‫‪α‬‬
‫‪55 / 57‬‬
‫‪c2‬‬
‫‪ c1 ‬‬
‫‪m‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫خاصیت همریختی رمز الجمل‬
‫‪ ‬رمز الجمل بر صالف ‪ ،Textbook RSA‬رمزی قطعی نیست‪.‬‬
‫‪ ‬اگر پیامی چند بار رمبز شبود‪ ،‬هبر ببار مبتن رمبز جدیبدی تولیبد‬
‫میشود‪.‬‬
‫‪ ‬با این حال‪ ،‬رمز الجمل نیز همری ت است‪.‬‬
‫‪ mod q ‬‬
‫‪ mod q ‬‬
‫‪m  m1  m2‬‬
‫) ‪ElGamal  m   ElGamal(m1 )  ElGamal(m2‬‬
‫‪ ‬مشابه ‪ ،Textbook RSA‬رمز الجمل نیز در برابر حمله متن رمز‬
‫انت ابی شکننده است‪.‬‬
‫‪56 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پایان‬
‫صفحه درس‪:‬‬
‫‪http://ce.sharif.edu/courses/94-95/1/ce442-1/‬‬
‫مراجعه حضوری جهت رفع اشکال‪ :‬شنبهها ‪ 15‬الی ‪16‬‬
‫(طبقه پنجم دانشکده‪ ،‬درب شیشهای جنب آسانسور)‬
‫یا در زمانهای دیگر با قرار قبلی‬
‫یا به وسیله رایانامه‪dousti@ce :‬‬
‫‪57 / 57‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬