1
امضاء رقمی و پروتکلهای احراز اصالت
فهرست مطالب
امضاء رقمی
پروتکلهای احراز اصالت
آسیب پذیری پروتکل های رمزنگاری نسبت به حملات
امضاء رقمی
چرا به امضاء رقمی نیاز داریم؟
جعل توسط گیرنده : گیرنده می تواند یک پیغام جعلی را بسازد(با استفاده از کلید توافق شده) و آنرا به فرستنده نسبت دهد!
انکار توسط فرستنده : فرستنده می تواند سناریوی فوق را بهانه قرار دهد و پیغام فرستاده شده را منکر شود!
امضاء رقمی
ویژگیها :
امکان تصدیق هویت فرستنده، زمان و تاریخ ارسال
تصدیق محتویات پیغام
امکان تصدیق توسط طرف سوم(در صورت بروز اختلاف)
امضاء رقمی
نیازمندیها :
رشته بیتی تولید شده وابسته به پیام اصلی باشد.
از اطلاعات منحصر به فرستنده استفاده شود(جلوگیری از جعل و انکار)
به سادگی محاسبه شود
تشخیص و تایید(verify) آن آسان باشد
جعل آن از نظر محاسباتی دست نیافتنی باشد
امکان ذخیره آن روی فضای دیسک وجود داشته باشد.
امضاء رقمی
مولفه ها :
الگوریتم تولید کلید(Key Generation Alg)
بصورت تصادفی یک زوج کلید عمومی تولید می کند.
الگوریتم تولید امضاء(Signature Alg)
پیغام و کلید خصوصی فرستنده را به عنوان ورودی می گیرد و امضاء را تولید می کند.
الگوریتم تایید امضا (Signature Verification Alg)
امضاء و کلید عمومی فرستنده را به عنون ورودی می گیرد و تاییدیه امضاء را به عنوان خروجی برمی گرداند.
نمونه امضاء رقمی
امضاء رقمی
انواع
مستقیم(Direct) :
ضعف : به امنیت کلید خصوصی فرستنده وابسته است
فرستنده می تواند ارسال پیغام را انکار کند
استفاده از timestamp به تنهایی کافی نیست. ممکن است در زمان T، کلید خصوصی فرستنده لو رفته باشد.
باواسط(Arbitrated)
وجود یک سوم شخص مشکل تعلق پیغام به فرستنده را برطرف می کند
امکان مراجعه به آن در صورت بروز اختلاف
امضاء رقمی با واسط
سناریوی اول (رمز متقارن، واسط پیام ها را می بیند):
XA : M, {IDX, h(M)}Kxa
AY : {IDX, M, {IDX, h(M)}Kxa, T}Kay
عدم رعایت محرمانگی پیغام
امکان تبانی واسط با فرستنده یا گیرنده
امضاء رقمی با واسط
سناریوی دوم (رمز متقارن، واسط پیام ها را نمی بیند):
XA : IDX, {M}Kxy , {IDX, h({M}Kxy)}Kxa
AY : {IDX, {M}Kxy, {IDX, h({M}Kxy)}Kxa, T}Kay
امکان تبانی واسط با فرستنده یا گیرنده
امضاء رقمی با واسط
سناریوی سوم (رمز نامتقارن، واسط پیام ها را نمی بیند):
XA : IDX, {IDX, {{M}KRx}KUy}KRx
AY : {IDX, {{M}KRx}KUy , T}KRa
نیاز به هیچ توافقی قبل از ارتباط نیست
در صورت لو رفتن کلید خصوصی x، برچسب زمانی درست است
متن پیام در معرض دید واسط یا شخص دیگر نیست.
پروتکل های احراز اصالت
احراز اصالت دو طرفه
هر دو طرف ارتباط باید از هویت همدیگر مطلع شوند.
احراز اصالت یک طرفه
لازم است تنها یک طرف ارتباط هویت خود را اثبات کند.
مورد استفاده : یک شخص یک پیام را در یک گروه عمومی منتشر می کند.
پروتکل های احراز اصالت
احراز اصالت مقدمه تبادل کلیدهای نشست است
محرمانگی و صحت زمانی دو نیاز اصلی پروتکل های تبادل کلید است.
دو خطر اساسی تبادل امن کلیدهای نشست را تهدید می کند:
شنود
حملات جعل و تکرار
پروتکل های احراز اصالت
انواع حملات جعل و تکرار (Replay Attacks)
Simple Replay : گرفتن پیغام و ارسال آن بعد از مدتی
Logged Replay : گرفتن پیغام و ارسال قبل از اتمام “پنجره زمانی”
Undetected Replay : پیغام اصلی نمی رسد و فقط پیغام جعلی می رسد
Backward Replay : پاسخ به پیغام ارسالی بجای گیرنده
وقتی اتفاق می افتد که از رمزنگاری مرسوم استفاده می کنیم و تفاوت بین پیغامهای ارسالی و دریافتی با مقایسه محتوای آنها ممکن نیست
پروتکل های احراز اصالت
روشهای پایه مقابله با حملات جعل و تکرار
استفاده از اعداد متوالی(Sequence Number)
استفاده از برچسب زمانی(TimeStamp)
Challenge/Response : قبل از ارسال هر پیغام، فرستنده یک Nonce ارسال می کند و انتظار دارد که گیرنده به آن پاسخ دهد.
N
P
EK(N)
V
P
EK(Seq)
V
P
EK(T)
V
احراز اصالت و تبادل کلید
استفاده از رمزنگاری متقارن
سلسله مراتب دو لایه ای کلیدها (Session & Master keys)
مرکز توزیع کلید (KDC) مطمئن
هر شخص کلید اصلی خود را با KDC به اشتراک می گذارد
KDC کلید جلسه را تولید می کند
کلیدهای اصلی برای انتقال کلید جلسه به طرفین بکار می رود
یک مثال
پروتکل Needham-Schroeder
1. A→KDC: IDA , IDB , N1
2. KDC→A: {Ks, IDB, N1 ,{Ks , IDA}Kb,kdc }Ka,kdc
3. A→B: {Ks , IDA}Kb,kdc
4. B→A: {N2}Ks
5. A→B: {f(N2)}Ks
پروتکل 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
پروتکلهای احراز اصالت
استفاده از رمزنگاری نامتقارن
طرفین نیاز به دانستن کلید عمومی فعلی همدیگر ندارند
کارگزار شناسایی(AS) علاوه بر توزیع کلید جلسه، وظیفه ایجاد گواهی کلید عمومی را بر عهده دارد
مانند رمزنگاری مرسوم، می توان از برچسب زمانی یا nonce استفاده کرد
پروتکلهای احراز اصالت
کلید عمومی و برچسب زمانی
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
مشکل : سنکرون بودن زمان سیستم های طرفین
پروتکلهای احراز اصالت
کلید عمومی و nonce (پروتکل Woo-Lam)
1. A→KDC : IDA , IDB
2. KDC→A : {IDb ,KUb }KRkdc
3. A→B : {Na ,IDA }KUb
4. B→KDC : IDB , IDA , {Na }KUkdc
5. KDC→B : {IDA ,KUa}KRkdc , { {Na, KS, IDA ,IDB}KRkdc }KUb
6. B → A : { {Na ,KS, IDA ,IDB}KRkdc , Nb}KUa
7. A → B : {Nb}Ks
پروتکلهای احراز اصالت
احراز اصالت یکطرفه
نمونه ای از مورد کاربرد : E-mail
نیازمندیها :
احراز اصالت(فرستنده)
محرمانگی
راه حل
رمزنگاری مرسوم
رمزنگاری با کلید عمومی
پروتکلهای احراز اصالت
استفاده از رمزنگاری متقارن
A KDC :IDA ,IDB , NA
KDC A: {KS ,IDB ,NA ,{KS ,IDA}KB,kdc }KA,kdc
A B: {KS, IDA }KB,kdc , {M}KS
پروتکلهای احراز اصالت
استفاده از کلید عمومی
هدف : محرمانگی
A B : {KS }KUb , {M}KS
هدف : احراز هویت
A B: M , {h(M)}KRA
احراز هویت ، بدون اطلاع طرفین از کلید عمومی یکدیگر
A B: M , {h(M) }KRA , {T ,IDA ,KUA}KRAS
پروتکل های احراز اصالت
یک پروتکل ساده احراز اصالت دو طرفه
رخنه پذیری پروتکل های احراز اصالت
یک حمله نمونه: Oracle Session Attack
رخنه پذیری پروتکل های احراز اصالت
اصلاح پروتکل ساده احراز اصالت دو طرفه
Parallel session attack !
Offset attack !
انواع رخنه ها در طراحی پروتکل ها
کلمات عبور قابل حدس(Password guessing flaws)
کاربران کلمات عبور به اندازه کافی بزرگ یا تصادفی انتخاب نمی کنند.
مثل پروتکل Kerberos (نشست بعدی) یا پروتکل های login
رخنه ناشی از تازه نبودن اجزاء(Freshless flaws)
نفوذی می تواند بجای یک عامل دیگر ایفای نقش نماید.
مثل پروتکل NSSK
رخنه های اُراکل (Oracle flaws)
استفاده از یک عامل مجاز برای انجام برخی محاسبات و سوء استفاده از آنها
مثل پروتکل 3Pass (نشست بعدی)
انواع رخنه ها در طراحی پروتکل ها
رخنه های نوع (Type flaws)
تعابیر مختلف از رشته های بیتی در پروتکل
مثل پروتکل Newman-Stabelbine
رخنه های مربوط به زمان (Timing flaws)
ساعت های غیر همزمان
مثل پروتکل Kerberos
رخنه های مربوط به سیستم رمز (Cryptosystem flaws)
مثل پروتکل 3Pass
رخنه نوع
ضعف عوامل دریافت کننده پیام در تشخیص و تمیز بین پیامهای دریافتی، عدم توانایی آنها در تطبیق پیام دریافتی با وضعیت خاصی از پروتکل یا ضعف در فرضیات مربوط به نحوه تطبیق پیام با وضعیت های خاص پروتکل
شناسایی پیام های پروتکل های مختلف در محیط اجرای چندین پروتکل
تشخیص پیام های مربوط به اجرا های مختلف یک پروتکل
تشخیص و شناسایی پیام های ارسالی در قدم های مختلف یک پروتکل
تشخیص و تفاوت قائل شدن بین تکه های پیام در یک قدم انتقال از پروتکل
تشخیص نوع پیام های اتمیک از طریق انتساب هر کلمه مجزا به نوع خود
رخنه نوع
پروتکل احراز اصالت و توزیع کلید Newman-Stabelbine
رخنه نوع
حمله به این پروتکل بر اثر وجود رخنه نوع
جعل اصالت 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 )
رخنه اراکل
پروتکل کلید عمومی Needham-Schroeder
A -> B: {Na, A}PUB
B -> A: {Na, Nb}PUA
A -> B: {Nb}PUB
Na و Nb نانس و PUA و PUB کلید عمومی هستند
رخنه اراکل
پروتکل Three pass
پروتکل Three pass
A و B می خواهند یک مقدار مخفی را با یکدیگر مبادله کنند بدون اینکه از قبل کلید مشترکی داشته باشند.
فرض بر این است که تابع رمز مورد استفاده جابجائی پذیر است یعنی:
پروتکل Three pass
مشکل پروتکل Three pass: