Transcript A  B

‫امضاء رقمي و‬
‫پروتكلهاي احراز اصالت‬
‫بهروز تركالداني‬
‫‪[email protected]‬‬
‫‪1‬‬
‫فهرست مطالب‬
‫• امضاء رقمي‬
‫• پروتكلهاي احراز اصالت‬
‫• آسيب پذيري پروتكل هاي رمزنگاري نسبت به حمالت‬
‫‪2‬‬
‫امضاء رقمي‬
‫• چرا به امضاء رقمي نياز داريم؟‬
‫– جعل توسط گيرنده ‪ :‬گيرنده مي تواند يك پيغام جعلي را بسازد(با‬
‫استفاده از كليد توافق شده) و آنرا به فرستنده نسبت دهد!‬
‫– انكار توسط فرستنده ‪ :‬فرستنده مي تواند سناريوي فوق را بهانه‬
‫قرار دهد و پيغام فرستاده شده را منكر شود!‬
‫‪3‬‬
‫امضاء رقمي‬
‫• ويژگيها ‪:‬‬
‫– امكان تصديق هويت فرستنده‪ ،‬زمان و تاريخ ارسال‬
‫– تصديق محتويات پيغام‬
‫– امكان تصديق توسط طرف سوم(در صورت بروز اختالف)‬
‫‪4‬‬
‫امضاء رقمي‬
‫• نيازمنديها ‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫‪5‬‬
‫رشته بيتي توليد شده وابسته به پيام اصلي باشد‪.‬‬
‫از اطالعات منحصر به فرستنده استفاده شود(جلوگيري از جعل‬
‫و انكار)‬
‫به سادگي محاسبه شود‬
‫تشخيص و تاييد(‪ )verify‬آن آسان باشد‬
‫جعل آن از نظر محاسباتي دست نيافتني باشد‬
‫امكان ذخيره آن روي فضاي ديسك وجود داشته باشد‪.‬‬
‫امضاء رقمي‬
‫• مولفه ها ‪:‬‬
‫– الگوريتم توليد کليد(‪)Key Generation Alg‬‬
‫• بصورت تصادفی يک زوج کليد عمومی توليد می کند‪.‬‬
‫– الگوريتم توليد امضاء(‪)Signature Alg‬‬
‫• پيغام و کليد خصوصی فرستنده را به عنوان ورودی می گيرد و امضاء‬
‫را توليد می کند‪.‬‬
‫– الگوريتم تاييد امضا (‪)Signature Verification Alg‬‬
‫• امضاء و کليد عمومی فرستنده را به عنون ورودی می گيرد و تاييديه‬
‫امضاء را به عنوان خروجی برمی گرداند‪.‬‬
‫‪6‬‬
‫نمونه امضاء رقمي‬
‫‪7‬‬
‫امضاء رقمي‬
‫• انواع‬
‫– مستقيم(‪: )Direct‬‬
‫• ضعف ‪ :‬به امنيت كليد خصوصي فرستنده وابسته است‬
‫– فرستنده می تواند ارسال پيغام را انکار کند‬
‫– استفاده از ‪ timestamp‬به تنهايی کافی نيست‪ .‬ممکن است در زمان ‪ ،T‬کليد خصوصی‬
‫فرستنده لو رفته باشد‪.‬‬
‫– باواسط(‪)Arbitrated‬‬
‫• وجود يك سوم شخص مشكل تعلق پيغام به فرستنده را برطرف ميكند‬
‫• امکان مراجعه به آن در صورت بروز اختالف‬
‫‪8‬‬
‫امضاء رقمي با واسط‬
‫• سناريوي اول (رمز متقارن‪ ،‬واسط پيام ها را مي بيند)‪:‬‬
‫‪XA : M, {IDX, h(M)}Kxa‬‬
‫‪AY : {IDX, M, {IDX, h(M)}Kxa, T}Kay‬‬
‫• عدم رعايت محرمانگي پيغام‬
‫– امکان تبانی واسط با فرستنده يا گيرنده‬
‫‪9‬‬
‫امضاء رقمي با واسط‬
‫• سناريوي دوم (رمز متقارن‪ ،‬واسط پيام ها را نمي بيند)‪:‬‬
‫‪XA : IDX, {M}Kxy , {IDX, h({M}Kxy)}Kxa‬‬
‫‪AY : {IDX, {M}Kxy, {IDX, h({M}Kxy)}Kxa, T}Kay‬‬
‫– امکان تبانی واسط با فرستنده يا گيرنده‬
‫‪10‬‬
‫امضاء رقمي با واسط‬
‫• سناريوي سوم (رمز نامتقارن‪ ،‬واسط پيام ها را نمي بيند)‪:‬‬
‫‪XA : IDX, {IDX, {{M}KRx}KUy}KRx‬‬
‫‪AY : {IDX, {{M}KRx}KUy , T}KRa‬‬
‫– نياز به هيچ توافقي قبل از ارتباط نيست‬
‫– در صورت لو رفتن كليد خصوصي ‪ ،x‬برچسب زماني درست است‬
‫– متن پيام در معرض ديد واسط يا شخص ديگر نيست‪.‬‬
‫‪11‬‬
‫پروتكلهاي احراز اصالت‬
‫• احراز اصالت دو طرفه‬
‫– هر دو طرف ارتباط بايد از هويت همديگر مطلع شوند‪.‬‬
‫• احراز اصالت يک طرفه‬
‫– الزم است تنها يک طرف ارتباط هويت خود را اثبات کند‪.‬‬
‫– مورد استفاده ‪ :‬يک شخص يک پيام را در يک گروه عمومی منتشر می‬
‫کند‪.‬‬
‫‪12‬‬
‫پروتكلهاي احراز اصالت‬
‫• احراز اصالت مقدمه تبادل كليدهاي نشست است‬
‫• محرمانگي و صحت زماني دو نياز اصلي پروتكل هاي تبادل‬
‫كليد است‪.‬‬
‫• دو خطر اساسی تبادل امن کليدهای نشست را تهديد می کند‪:‬‬
‫– شنود‬
‫– حمالت جعل و تكرار‬
‫‪13‬‬
‫پروتكلهاي احراز اصالت‬
‫انواع حمالت جعل و تكرار (‪)Replay Attacks‬‬
‫• ‪ : Simple Replay‬گرفتن پيغام و ارسال آن بعد از مدتي‬
‫• ‪ : Logged Replay‬گرفتن پيغام و ارسال قبل از اتمام “پنجره زماني”‬
‫• ‪ : Undetected Replay‬پيغام اصلي نمي رسد و فقط پيغام جعلي مي رسد‬
‫• ‪ : Backward Replay‬پاسخ به پيغام ارسالي بجاي گيرنده‬
‫– وقتي اتفاق مي افتد كه از رمزنگاري مرسوم استفاده مي كنيم و تفاوت بين پيغامهاي ارسالي و‬
‫دريافتي با مقايسه محتواي آنها ممكن نيست‬
‫‪14‬‬
‫پروتكلهاي احراز اصالت‬
‫روشهاي پايه مقابله با حمالت جعل و تكرار‬
‫‪V‬‬
‫– استفاده از اعداد متوالي(‪)Sequence Number‬‬
‫– استفاده از برچسب زماني(‪)TimeStamp‬‬
‫‪V‬‬
‫)‪EK(Seq‬‬
‫)‪EK(T‬‬
‫‪P‬‬
‫‪P‬‬
‫– ‪ : Challenge/Response‬قبل از ارسال هر‬
‫پيغام‪ ،‬فرستنده يک ‪ Nonce‬ارسال می کند و‬
‫انتظار دارد که گيرنده به آن پاسخ دهد‪.‬‬
‫‪15‬‬
‫‪N‬‬
‫‪V‬‬
‫)‪EK(N‬‬
‫‪P‬‬
‫احراز اصالت و تبادل كليد‬
‫•‬
‫استفاده از رمزنگاري متقارن‬
‫–‬
‫–‬
‫سلسله مراتب دو اليه اي كليدها (‪)Session & Master keys‬‬
‫مركز توزيع كليد (‪ )KDC‬مطمئن‬
‫•‬
‫•‬
‫•‬
‫‪16‬‬
‫هر شخص كليد اصلي خود را با ‪ KDC‬به اشتراك مي گذارد‬
‫‪ KDC‬كليد جلسه را توليد مي كند‬
‫كليدهاي اصلي براي انتقال كليد جلسه به طرفين بكار مي رود‬
‫يك مثال‬
Needham-Schroeder ‫پروتكل‬
1.
2.
3.
4.
5.
A→KDC:
KDC→A:
A→B:
B→A:
A→B:
•
IDA , IDB , N1
{Ks, IDB, N1 ,{Ks , IDA}Kb,kdc }Ka,kdc
{Ks , IDA}Kb,kdc
{N2}Ks
{f(N2)}Ks
17
‫پروتكل ‪Needham-Schroeder‬‬
‫•‬
‫پروتكل فوق نسبت به ‪ Replay Attack‬آسيب پذير است‬
‫–‬
‫ممکن است کليد جلسه قبلی لو رفته باشد و بتوان جلسه جديدی تشکيل داد‪.‬‬
‫• راه حل ‪ :‬اضافه كردن برچسب زماني‬
‫‪1. A→KDC: IDA , IDB‬‬
‫‪2. KDC→A: {Ks , IDB ,T ,{Ks ,IDA ,T}Kb,kdc }Ka,kdc‬‬
‫‪3. A→B:‬‬
‫‪{Ks ,IDA ,T}Kb,kdc‬‬
‫‪4. B→A:‬‬
‫‪{N2}Ks‬‬
‫‪5. A→B:‬‬
‫‪{f(N2)}Ks‬‬
‫‪18‬‬
‫پروتكلهاي احراز اصالت‬
‫• استفاده از رمزنگاري نامتقارن‬
‫– طرفين نياز به دانستن كليد عمومي فعلي همديگر ندارند‬
‫– كارگزار شناسايي(‪ )AS‬عالوه بر توزيع کليد جلسه‪ ،‬وظيفه ايجاد‬
‫گواهي كليد عمومي را بر عهده دارد‬
‫– مانند رمزنگاري مرسوم‪ ،‬مي توان از برچسب زماني يا ‪ nonce‬استفاده‬
‫كرد‬
‫‪19‬‬
‫پروتكلهاي احراز اصالت‬
‫كليد عمومي و برچسب زماني‬
‫‪1. A→AS : IDA , IDB‬‬
‫‪2. AS→A : {IDA ,KUa ,T }KRas , {IDB ,KUb ,T }KRas‬‬
‫‪3. A→B : {IDA,KUa,T}KRas ,{IDB,KUb,T}KRas,{{Ks,T}KRa }KUb‬‬
‫مشكل ‪ :‬سنكرون بودن زمان سيستم هاي طرفين‬
‫‪20‬‬
‫پروتكلهاي احراز اصالت‬
)Woo-Lam ‫ (پروتكل‬nonce ‫• كليد عمومي و‬
1. A→KDC : IDA , IDB
2. KDC→A : {IDb ,KUb }KRkdc
3. A→B
4. B→KDC
5. KDC→B
6. B → A
7. A → B
: {Na ,IDA }KUb
: IDB , IDA , {Na }KUkdc
: {IDA ,KUa}KRkdc , { {Na, KS, IDA ,IDB}KRkdc }KUb
: { {Na ,KS, IDA ,IDB}KRkdc , Nb}KUa
: {Nb}Ks
21
‫پروتكلهاي احراز اصالت‬
‫• احراز اصالت يكطرفه‬
‫– نمونه اي از مورد كاربرد ‪E-mail :‬‬
‫– نيازمنديها ‪:‬‬
‫• احراز اصالت(فرستنده)‬
‫• محرمانگي‬
‫– راه حل‬
‫• رمزنگاري مرسوم‬
‫• رمزنگاري با كليد عمومي‬
‫‪22‬‬
‫پروتكلهاي احراز اصالت‬
‫• استفاده از رمزنگاري متقارن‬
A  KDC: IDA ,IDB , NA
KDC  A: {KS ,IDB ,NA ,{KS ,IDA}KB,kdc }KA,kdc
A  B: {KS, IDA }K
B,kdc
, {M}KS
23
‫پروتكلهاي احراز اصالت‬
‫استفاده از كليد عمومي‬
‫•‬
‫–‬
‫هدف ‪ :‬محرمانگي‬
‫–‬
‫هدف ‪ :‬احراز هويت‬
‫–‬
‫احراز هويت ‪ ،‬بدون اطالع طرفين از كليد عمومي يكديگر‬
‫‪A  B : {KS }KUb , {M}KS‬‬
‫‪A  B: M , {h(M)}KRA‬‬
‫‪A  B: M , {h(M) }KRA , {T ,IDA ,KUA}KRAS‬‬
‫‪24‬‬
‫پروتكلهاي احراز اصالت‬
‫‪ ‬يك پروتكل سادة احراز اصالت دو طرفه‬
‫‪NA‬‬
‫‪2‬‬
‫‪B‬‬
‫‪N B , N A K AB‬‬
‫‪AB‬‬
‫‪25‬‬
‫‪1‬‬
‫‪NB K‬‬
‫‪A‬‬
‫‪3‬‬
‫رخنه پذيري پروتكلهاي احراز اصالت‬
Oracle Session Attack :‫ يك حملة نمونه‬
1
N1
N2 , N1K AB
N2
A
2’
2
1’
N3 , N2 K AB E
B
EA
B
3
N2 K
AB
26
‫رخنه پذيري پروتكلهاي احراز اصالت‬
‫‪‬اصالح پروتكل ساده احراز اصالت دو طرفه‬
‫‪NA‬‬
‫‪B‬‬
‫‪2‬‬
‫‪AB‬‬
‫‪1‬‬
‫‪N AK ,NB K‬‬
‫‪AB‬‬
‫‪NB‬‬
‫‪A‬‬
‫‪3‬‬
‫! ‪Parallel session attack‬‬
‫! ‪Offset attack‬‬
‫‪27‬‬
‫انواع رخنهها در طراحي پروتكلها‬
‫• كلمات عبور قابل حدس)‪(Password guessing flaws‬‬
‫– كاربران كلمات عبور به اندازة كافي بزرگ يا تصادفي انتخاب‬
‫نميكنند‪.‬‬
‫• مثل پروتكل ‪( Kerberos‬نشست بعدي) يا پروتكلهاي ‪login‬‬
‫• رخنه ناشي از تازه نبودن اجزاء)‪(Freshless flaws‬‬
‫– نفوذي ميتواند بجاي يك عامل ديگر ايفاي نقش نمايد‪.‬‬
‫• مثل پروتكل ‪NSSK‬‬
‫• رخنه هاي اُراكل )‪(Oracle flaws‬‬
‫–استفاده از يك عامل مجاز براي انجام برخي محاسبات و سوء استفاده از‬
‫آنها‬
‫• مثل پروتكل ‪( 3Pass‬نشست بعدي)‬
‫‪28‬‬
‫انواع رخنهها در طراحي پروتكلها‬
‫• رخنه هاي نوع )‪(Type flaws‬‬
‫– تعابير مختلف از رشتههاي بيتي در پروتكل‬
‫•مثل پروتكل ‪Newman-Stabelbine‬‬
‫• رخنه هاي مربوط به زمان )‪(Timing flaws‬‬
‫– ساعت هاي غير همزمان‬
‫• مثل پروتكل ‪Kerberos‬‬
‫• رخنه هاي مربوط به سيستم رمز )‪(Cryptosystem flaws‬‬
‫• مثل پروتكل ‪3Pass‬‬
‫‪29‬‬
‫رخنة نوع‬
‫• ضعف عوامل دريافت كننده پيام در تشخيص و تميز بين‬
‫پيامهاي دريافتي‪ ،‬عدم توانايي آنها در تطبيق پيام دريافتي با‬
‫وضعيت خاصي از پروتكل يا ضعف در فرضيات مربوط‬
‫به نحوة تطبيق پيام با وضعيت هاي خاص پروتكل‬
‫– شناسايي پيام هاي پروتكل هاي مختلف در محيط اجراي چندين پروتكل‬
‫– تشخيص پيام هاي مربوط به اجرا هاي مختلف يك پروتكل‬
‫– تشخيص و شناسايي پيام هاي ارسالي در قدم هاي مختلف يك پروتكل‬
‫– تشخيص و تفاوت قائل شدن بين تكه هاي پيام در يك قدم انتقال از پروتكل‬
‫– تشخيص نوع پيام هاي اتميك از طريق انتساب هر كلمه مجزا به نوع خود‬
‫‪30‬‬
‫رخنة نوع‬
Newman-Stabelbine ‫• پروتكل احراز اصالت و توزيع كليد‬
1. A B: A, N a
2 . B  S : B ,  A , Na , Tb kbs , Nb
3 . S  A : B , N a , kab , Tb kas ,  A , kab , Tb kbs , Nb
4. A  B :
 A , kab , Tb kbs , Nb kab
31
‫رخنة نوع‬
‫• حمله به اين پروتكل بر اثر وجود رخنة نوع‬
‫– جعل اصالت ‪ A‬براي ‪ B‬و مشترك شدن يك كليد با وي توسط نفوذي‬
‫‪1 . EA  B : A , Na‬‬
‫‪2 . B  ES : B , { A , Na , Tb }kbs , Nb‬‬
‫حذف ‪3.‬‬
‫) ‪4 . EA  B : { A , Na ( = kab ) , Tb }kbs , { Nb }Na( = kab‬‬
‫‪32‬‬
‫رخنة اراكل‬
Needham-Schroeder
‫• پروتكل كليد عمومي‬
A -> B: {Na, A}PUB
B -> A: {Na, Nb}PUA
A -> B: {Nb}PUB
‫ كليد عمومي هستند‬PUB ‫ و‬PUA ‫ نانس و‬Nb ‫ و‬Na •
33
‫رخنة اراكل‬
Session 1: A to X
Session 2: X (as A) to B
A -> X: {Na, A}PUX
A(X) -> B: {Na, A}PUB
B -> A(X): {Na, Nb}PUA
X -> A: {Na, Nb}PUA
A -> X: {Nb}PUX
A(X) -> B: {Nb}PUB
34
‫پروتكل ‪Three pass‬‬
‫• پروتكل ‪Three pass‬‬
‫– ‪ A‬و ‪ B‬مي خواهند يك مقدار مخفي را با يكديگر مبادله كنند‬
‫بدون اينكه از قبل كليد مشتركي داشته باشند‪.‬‬
‫–فرض بر اين است كه تابع رمز مورد استفاده جابجائي پذير‬
‫است يعني‪:‬‬
‫‪35‬‬
Three pass ‫پروتكل‬
:Three pass ‫• مشكل پروتكل‬
36