نکته ای در رابطه با پسوردهای لو رفته کارتهای بانکی

تصویر مهدی

احتمالا خبر لو رفتن اطلاعات سه میلیون کارت بانکی و پخش اونها در یک وبلاگ رو شنیدین. همونطور که انتظار میرفت بانک مرکزی هم خبر لو رفتن اطلاعات رو شایعه دونسته و گفته صرفا به خاطر ارتقای سطح امنیتی بعضی از کارتها قفل شدن. البته از اونجا که ما به مسوولین کشورمون اعتماد کامل داریم، من که دو تا از کارتهام به همراه رمزش در اون لیست بوده، دارم دروغ میگم!
به هر حال چیزی که برای من در این ماجرا جالب بود و اینجا دربارش میخوام صحبت کنم، ادعای آقای خسرو زارع فرید (کسی که اطلاعات رو منتشر کرده) مبنی بر قابل استفاده نبودن این اطلاعات بود که اصلا منطقی نیست.

ایشون ادعا کردن که چون رمز رو در یک عدد 14 رقمی پنهان کردن و همینطور بعد از 3 بار اشتباه در ورود رمز کارت قفل میشه، دیگه رمز قابل استفاده نیست. در مورد اینکه بعد از 3 بار رمز غلط کارت قفل میشه یا نه من زیاد مطمئن نیستم ولی اصلا مهم نیست و فرض میکنم همینطور باشه. در مورد شیوه پنهان کردن رمز در عدد 14 رقمی، روش کار به این صورت بوده که تعداد تصادفی عدد در ابتدا و انتهای رمز اضافه شده. یعنی به عنوان مثال اگر رمز کارت 1234 بوده، ممکنه عددی مثل این به عنوان رمز در وبلاگ ایشون نوشته شده باشه: 56912348542541 که تعداد اعداد تصادفی قبل و بعد از پسورد هم مشخص نیست. حالا مساله اینجاست که واقعا چقدر میتونه این روش امنیت داشته باشه؟ (البته با فرض اینکه الگوریتم ایجاد عدد شبه تصادفی امنیت کافی داشته باشه)

برای پیدا کردن میزان امنیت این روش یک محاسبه ساده انجام میدم. از اونجا که 4 عدد رمز حتما پشت سر هم هستن، کلا 11 حالت ممکن برای پسورد وجود داره. با توجه به اینکه فرض کردیم 3 بار فرصت امتحان پسورد رو داشته باشیم، احتمال پیدا کردن رمز 3/11 هست. این عدد برای کسی که با امنیت آشنا باشه عدد وحشتناکی هست و عملا به معنی عدم وجود امنیت هست. برای اینکه شدت حاد بودن موضوع رو نشون بدم، بهتره این عدد رو کمی تفسیر کنم! حدود 3 میلیون کارت به همراه پسوردش وجود داره که من فرض میکنم فقط بخوایم 10 تا از کارتها رو امتحان کنیم (و نه همه 3 میلیون کارت رو). همونطور که دیدم احتمال فهمیدن پسورد یک کارت 3/11 هست. حالا احتمال اینکه با امتحان فقط 10 تا از این کارتها بتونیم پسورد یک کارت رو پیدا کنیم چقدر هست؟ اگر با اصول اولیه احتمال آشنا باشیم میدونیم که این احتمال برابر هست با: ‎p=1-(7/11)10=0.989
یا به عبارت دیگه تقریبا 99% احتمال داره که با امتحان کردن فقط 10 کارت، پسورد یکی از اونها رو پیدا کنیم!

هدف من از این پست فقط ذکر همین نکته بود و ذکر اینکه در این مورد ایشون دروغ گفته بودن. در مورد اینکه بقیه صحبتهای ایشون تا چه حد صحت داره، بهتره خودتون تصمیم بگیرین و نظر من هم برای خودم میمونه!

بعد التحریر:
همونطور که در نظرات مشخص هست، بعضی از دوستان اشاره کردن که برای این کار نیاز به وجود خود کارت هم هست در حالی که اینطور نیست! اگر اینطور بود، خود آقای زارع هم موقعی که از کارشون دفاع میکردن بهش اشاره میکردن در حالی که ایشون هم فقط به همین مورد استناد کردن. قضیه اینجاست که اگر کسی پروتکل ارتباطی دستگاههای POS رو بدونه (که بدست آوردنش برای یک مهندس الکترونیک یا کامپیوتر اصلا کار سختی نیست) بدون وجود کارت هم میتونن از همین پسوردها استفاده کنن.
از طرف دیگه من تخصصی در این مورد ندارم ولی از دوستان متخصصم در این مورد شنیدم که کارتها هم قابل کپی کردن هستند که منطقی هم هست و من هیچ وقت درباره سیستم امنیتی این کارتها برای جلوگیری از کپی شدن چیزی نشنیدم.

بعد التحریر2:
یکی از دوستان گفته بود که شاید رقمهای پسوردها چسبیده به هم نباشن (مثلا رقم اول در موقعیت 3 و رقم دوم در موقعیت 7 و الی آخر...). هر چند که مواردی که من دیدم و شنیدم همه ارقام همیشه به هم چسبیده بودند ولی به عنوان زنگ تفریح میخوام فرض کنم که این ارقام الزاما پشت سر هم نباشن و در این حالت احتمال سوء استفاده از پسورد رو محاسبه کنم.
در این حالت تعداد حالتهای ممکن برای انتخاب پسورد خیلی بیشتر از 11 حالت میشه. تعداد در این حالت میشه انتخاب 4 عضو از 14 عضو (ترکیبهای 4 تایی از 14 عضو) که برابر با 1001 میشه.

انتخاب 4 از 14

پس احتمال پیدا کردن پسورد یک کارت 3/1001 و احتمال غلط بودن هم 998/1001 هست. مسلما در این حالت با امتحان کردن 10 کارت به نتیجه خوبی نمیرسیم. پس بیاین اینجا فرض کنیم مهاجم از مثلا 1000 کارت استفاده میکنه. احتمال در این حالت میشه: ‎p=1-(998/1001)1000=0.95
همونطور که مشخصه اگر رمز در بین 14 رقم پخش شده باشه، با امتحان کردن 1000 کارت میشه با احتمال 95% رمز یک کارت رو به دست آورد.