badkeys؛ ابزاری برای شکار کلیدهای عمومیِ آسیبپذیر
خلاصهٔ کاملتر
badkeys یه ابزار و کتابخانهی متنبازه که کارش بررسی کلیدهای عمومیِ رمزنگاریه تا ببینه آسیبپذیریِ شناختهشدهای دارن یا نه. یه نسخهی وب هم رو badkeys.info موجوده که کار باهاش رو ساده میکنه.
این ابزار از طیف خوبی از فرمتها پشتیبانی میکنه: کلیدهای عمومی و خصوصی در فرمت PEM (هم PKCS #1 و هم PKCS #8)، گواهیهای X.509، درخواستهای امضای گواهی (CSR) و کلیدهای عمومی SSH. نکتهی راحتش اینه که خودش فرمت فایل رو تشخیص میده و لازم نیست دستی مشخصش کنی. بهطور پیشفرض فقط دربارهی کلیدهای آسیبپذیر خروجی میده، یعنی اگه مشکلی پیدا نشه سکوت میکنه.
یه بخش کاربردی دیگهاش قابلیت اسکن هاستهاست: badkeys میتونه هاستهای SSH و TLS رو اسکن کنه و کلیدهای عمومیشون رو خودکار بررسی کنه. بهصورت پیشفرض SSH رو رو پورت ۲۲ و TLS رو رو چند پورت رایج (مثل https، smtps، imaps و غیره) چک میکنه و میشه پورتهای دلخواه رو هم تنظیم کرد. البته خود مستندات میگه این حالتهای اسکن محدودیت دارن؛ مثلاً اسکن TLS بهخاطر محدودیت تابع ssl.get_server_certificate پایتون نمیتونه چند گواهی رو یه هاست (مثل ECDSA و RSA) رو همزمان تشخیص بده، و برای SSH هم به وابستگی paramiko نیاز داره. به همین خاطر اغلب بهتره کلیدها رو با ابزار دیگه جمع کرد و بعد محلی با badkeys بررسیشون کرد.
ابزار بهصورت یه ماژول پایتون هم قابلاستفادهست، ولی به گفتهی سازنده هنوز در وضعیت beta هست و APIش ممکنه مرتب تغییر کنه. کدهای خروجی خط فرمانش هم به شکل bitmask طراحی شدن تا بشه همزمان چند وضعیت (مثلاً «بعضی کلیدها آسیبپذیر و بعضی غیرقابلاسکن») رو منتقل کنن.
badkeys رو Hanno Böck نوشته و در سالهای اخیر با حمایت مالیِ نهادهایی مثل NLnet و پروژههای امنیتی توسعه پیدا کرده. برای تیمهایی که با گواهی و کلید سروکار دارن، میتونه یه ابزار سریع برای پیداکردن کلیدهای معیوب پیش از استفاده باشه.
نکات کلیدی:
- badkeys کلیدهای عمومی رمزنگاری رو برای آسیبپذیریهای شناختهشده بررسی میکنه
- پشتیبانی از PEM، X.509، CSR و کلیدهای SSH با تشخیص خودکار فرمت
- امکان اسکن هاستهای SSH و TLS، البته با محدودیتهای مشخص
- قابلاستفاده بهعنوان ماژول پایتون، ولی هنوز beta و با API متغیر
- نسخهی وب رو badkeys.info و متنباز، نوشتهی Hanno Böck




