امضاء رقمي و پروتكلهاي احراز اصالت امضاء رقمي و پروتكلهاي احراز اصالت بهروز تركلاداني ladani@eng.ui.ac.ir 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 : پاسخ به پيغام ارسالي بجاي گيرنده وقتي اتفاق مي افتد كه از رمزنگاري مرسوم استفاده مي كنيم و تفاوت بين پيغامهاي ارسالي و دريافتي با مقايسه محتواي آنها ممكن نيست
پروتكلهاي احراز اصالت P EK(Seq) V روشهاي پايه مقابله با حملات جعل و تكرار استفاده از اعداد متوالي(Sequence Number) استفاده از برچسب زماني(TimeStamp) Challenge/Response : قبل از ارسال هر پيغام، فرستنده يک Nonce ارسال می کند و انتظار دارد که گيرنده به آن پاسخ دهد. EK(T) P V N P V EK(N)
احراز اصالت و تبادل كليد استفاده از رمزنگاري متقارن سلسله مراتب دو لايه اي كليدها (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
پروتكلهاي احراز اصالت يك پروتكل سادة احراز اصالت دو طرفه A 3 2 1 B
رخنه پذيري پروتكلهاي احراز اصالت يك حملة نمونه: Oracle Session Attack 2 1 B EA A EB 1’ 2’ 3
رخنه پذيري پروتكلهاي احراز اصالت اصلاح پروتكل ساده احراز اصالت دو طرفه A 3 2 1 B 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
رخنة نوع حمله به اين پروتكل بر اثر وجود رخنة نوع 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 كليد عمومي هستند
رخنة اراكل Session 1: A to X A -> X: {Na, A}PUX X -> A: {Na, Nb}PUA A -> X: {Nb}PUX Session 2: X (as A) to B A(X) -> B: {Na, A}PUB B -> A(X): {Na, Nb}PUA A(X) -> B: {Nb}PUB
پروتكل Three pass پروتكل Three pass A و B مي خواهند يك مقدار مخفي را با يكديگر مبادله كنند بدون اينكه از قبل كليد مشتركي داشته باشند. فرض بر اين است كه تابع رمز مورد استفاده جابجائي پذير است يعني:
پروتكل Three pass مشكل پروتكل Three pass: