تأیید امضاهای APK: چگونه از ایمن بودن برنامه خود مطمئن شویم
Sideloading برنامهها در Android آزادی و انعطافپذیری را ارائه میدهد، اما با یک خطر بزرگ همراه است: برنامه های دستکاری شده. عوامل مخرب اغلب برنامههای محبوب را تغییر میدهند تا نرمافزارهای جاسوسی یا ابزارهای تبلیغاتی مزاحم را قبل از توزیع مجدد آنها در سایتهای غیررسمی دربر گیرند. چگونه می توانید مطمئن شوید که APKی که به تازگی دانلود کرده اید دقیقاً همان APKی است که توسعه دهنده در Google Play آپلود کرده است؟
پاسخ به امضای دیجیتال APK می رسد. در زیر، نحوه عملکرد واقعی امضای برنامه را پوشش میدهیم و با استفاده از تأییدکننده APK آنلاین برای بررسی هش و گواهی APK پیش از اینکه تصمیم بگیرید به آن اعتماد کنید، قدم به قدم خواهیم گذاشت.
نسخه 60 ثانیه ای:
Android هر APK را با یک کلید ناشر امضا می کند. تلفن «بهروزرسانی» را که امضای آن با نصب موجود مطابقت ندارد، رد میکند. این سیستم عامل اصلی دفاع ضد جعل هویت است. برای تأیید یک APK جانبی، هش SHA-256 و اثر انگشت گواهی امضای آن را محاسبه کنید، سپس هر دو را با مقادیری که به آن اعتماد دارید (نصب موجود در فروشگاه Play، اثر انگشت منتشر شده توسعهدهنده، یا یک نسخه خوب شناخته شده قبلی) مقایسه کنید. تطابق به این معنی است که فایل بایت یکسان است و توسط همان ناشر امضا شده است. عدم تطابق به معنای نصب نکنید است.
امضای APK چیست؟
امضای دیجیتال مدرک رمزنگاری هویت است. وقتی یک توسعهدهنده یک برنامه را تمام میکند، آن را با استفاده از یک کلید خصوصی (فروشگاه کلید) "امضا" میکند. سپس Android از کلید عمومی مربوطه تعبیه شده در APK استفاده می کند تا اطمینان حاصل کند:
- صداقت: فایل از زمان امضای آن تغییر نکرده است.
- اصالت: توسعه دهنده همان چیزی است که آنها می گویند.
- به روز رسانی ها: فقط فایلهای APK امضا شده با یک کلید میتوانند یک برنامه موجود در تلفن شما را بهروزرسانی کنند.
تکامل امضا: V1، V2، V3 و V4
Google امنیت APK را در طول سالها به طور مداوم بهبود بخشیده است:
- V1 (امضای شیشه): ورودی های فردی را در ZIP امضا می کند. کند و در برابر حملات خاص آسیب پذیر است.
- V2 (طرح امضای APK): کل بلوک فایل را امضا می کند. بسیار سریعتر برای تأیید و ایمن تر. (Android 7.0 و بالاتر)
- V3 (چرخش کلید): به توسعه دهندگان اجازه می دهد تا کلید امضای خود را با حفظ به روز رسانی برنامه تغییر دهند. (Android 9.0 و بالاتر)
- V4 (استریم): بهینه شده برای نصب تدریجی در ADB. (Android 11+)
نحوه تأیید آنلاین امضاهای APK
ابزار تأیید کننده APK ما فقط هش ها را محاسبه نمی کند. یک ممیزی رمزنگاری کامل از زنجیره گواهی انجام می دهد. در اینجا نحوه استفاده از آن آمده است:
مراحل تایید:
- به صفحه تأیید کننده APK بروید.
- فایل APK یا XAPK خود را انتخاب کنید.
- ابزار ما دایرکتوری META-INF/ را تجزیه می کند و داده های گواهی (.RSA، .DSA، یا .EC را استخراج می کند).
- صبر کنید تا تجزیه و تحلیل کامل شود (تنها چند ثانیه طول می کشد).
- اطلاعات گواهی: نام برنامهنویس، سازمان و کشور مبدا را مرور کنید.
- هش را بررسی کنید: SHA-256 نمایش داده شده در سایت ما را با مقداری که ناشر در سایت رسمی، صفحه انتشار پروژه یا مانیفست امضای خود منتشر کرده است، مقایسه کنید.
هشدار امنیتی
اگر تأییدکننده یک "گواهی اشکال زدایی" یا یک موجودیت "Self-Signed" ناشناخته را برای یک برنامه اصلی مانند Facebook یا WhatsApp نشان دهد، آن را نصب نکنید. تقریباً مطمئناً به خطر افتاده است.
درک جمع های چک (MD5، SHA-1، SHA-256)
چک جمع ها رشته هایی با طول ثابت هستند که کل فایل را نشان می دهند. اگر یک پیکسل را در نماد برنامه تغییر دهید، هش SHA-256 کاملاً تغییر می کند.
| نوع هش | سطح امنیتی | یادداشت ها |
|---|---|---|
| MD5 | میراث | در برابر برخورد آسیب پذیر است. نه برای امنیت |
| SHA-1 | متوسط | هنوز به طور گسترده برای جستجوی سریع استفاده می شود. |
| SHA-256 | عالی | استاندارد مدرن برای تأیید برنامه |
آنچه که یک گواهی امضا در واقع به شما می گوید
هنگامی که تأیید کننده گواهی را برمی گرداند، بخش هایی که برای ایمنی بارگذاری جانبی اهمیت دارند، بیت های رنگارنگ فراداده X.509 نیستند، بلکه تعداد انگشت شماری از فیلدها هستند. از نظر عملی:
- اثر انگشت SHA-256 گواهی. این تنها مهم ترین مقدار است: یک هش 64 نویسه هگز که به طور منحصر به فرد کلید امضا را شناسایی می کند. دو فایل APK با اثرانگشت SHA-256 یکسان با کلید خصوصی یکسان امضا شدند. این همان چیزی است که "تداوم امضا" در منطق به روز رسانی سیستم عامل به معنای آن است.
- نام ممتاز موضوع. اغلب چیزی شبیه به CN=Some App, O=Example Inc., C=US. به عنوان یک اشاره مفید است، نه به عنوان مدرک هویت، زیرا مهاجم می تواند هر رشته ای را که دوست دارد در DN گواهی خود امضا شده خود قرار دهد. همیشه اثر انگشت را چک کنید نه نام.
- مدت اعتبار. اکثر کلیدهای انتشار قانونی با اعتبار 25 ساله تولید می شوند (توصیه تاریخی 10000 روز است). گواهینامهای که ماه آینده منقضی میشود، یا گواهیای که اعتبار آن قبلاً با گذشته تداخل دارد، پرچم قرمز است.
- الگوریتم امضا برنامه های مدرن از SHA256withRSA یا SHA256withECDSA استفاده می کنند. MD5 خراب است. SHA1withRSA منسوخ شده است. APK امضا شده فقط با v1 / SHA-1 در سال 2026 مشکوک است.
Hash vs Signature: The Difference که اکثر آموزشها از آن صرف نظر میکنند
مردم اغلب "هش" و "امضا" را با هم ترکیب می کنند. آنها اهداف بسیار متفاوتی را دنبال می کنند و یک تأیید امن به هر دو نیاز دارد:
- یک هش (SHA-256 از کل APK) به شما می گوید که آیا بایت های فایل با یک کپی مرجع یکسان هستند یا خیر. اگر هش شما با هش منتشر شده ناشر مطابقت داشته باشد، فایل از زمانی که آنها آن هش را محاسبه کرده اند تغییر نکرده است. یک هش چک به تنهایی چیزی در مورد اینکه چه کسی بایت ها را ایجاد کرده است، نمی گوید.
- یک امضا ثابت می کند که چه کسی بایت ها را ایجاد کرده است، به طور خاص، دارنده کلید خصوصی جفت شده با گواهی امضا این فایل را تولید کرده است. بررسی امضا به تنهایی هیچ چیزی در مورد اینکه آیا فایل پس از امضا دستکاری شده است (سیستم عامل آن را تشخیص داده و آن را رد می کند، نمی گوید، اما خود گواهی از محتوای فایل اطلاعی ندارد).
برای یک APK جانبی، قویترین اطمینان این دو را ترکیب میکند: اثر انگشت گواهی با اثر انگشت شناخته شده ناشر و مطابقت دارد، SHA-256 فایل با مقداری که ناشر برای آن ساخت دقیق منتشر کرده است مطابقت دارد.
از کجا می توان یک اثر انگشت مرجع قابل اعتماد دریافت کرد
سخت ترین بخش تأیید، دانستن ارزش مناسب برای مقایسه است. چند رویکرد قابل اعتماد، به ترتیب تقریبی اطمینان:
- وب سایت یا صفحه انتشار خود ناشر. بسیاری از پروژه های منبع باز و فروشندگان آگاه به امنیت، اثر انگشت SHA-256 گواهی امضای خود را در کنار دانلودهای خود منتشر می کنند. این استاندارد طلایی است.
- نصب Play Store موجود. اگر برنامه قبلاً روی دستگاهی که توسط Play مدیریت میشود نصب شده باشد، اثر انگشت گواهینامه آن بنا به تعریف اثر انگشت ناشر است. اثر انگشت APK جانبی خود را با آن مقایسه کنید. ابزارهایی مانند Apk Analyzer (در Android Studio) یا apksigner verify --print-certs آن را مستقیماً از یک APK نصب شده میخوانند.
- اولین APKی که تا به حال از این برنامه نصب کرده اید. اگر مدتی است که از برنامه استفاده میکنید و هرگز درخواست «عدم تطابق امضا» نداشتید، میتوانید از هر یک از نسخههای قدیمیتر خود به عنوان مرجع استفاده کنید. بهروزرسانیهای بعدی از همان ناشر باید از همان کلید استفاده کنند (یا از طریق نسخه 3 بچرخند، در این صورت زنجیره همچنان تأیید میشود).
- یک عکس فوری عمومی بایگانی شده بایگانی اینترنت و خدمات مشابه گهگاه صفحات انتشار قدیمی APK را همراه با هش های اعلام شده خود حفظ می کنند. برای ساختهای بسیار قدیمی که صفحه ناشر اصلی از بین رفته است مفید است.
اشتباهات رایج در تأیید
- مقایسه رشته اشتباه "MD5 فایل APK" با "MD5 گواهینامه" یکی نیست. از همان فیلد برای فایل داوطلب و مرجع استفاده کنید.
- اعتماد به ابرداده خود فایل. یک APK می تواند شامل هر رشته نسخه، هر برچسب بسته، هر تگ نویسنده در مانیفست خود باشد. هیچ کدام از آن ها رمزنگاری نیستند. بلوک امضا تنها چیزی است که سیستم عامل واقعاً تأیید می کند.
- رد شدن از تأیید به دلیل ارسال فایل توسط یکی از دوستان. دوستی که می گوید "این APK رسمی است" بیش از شما آن را تأیید نکرده است. بر منبعی اصرار کنید که اثر انگشتی را منتشر کند که میتوانید بررسی کنید.
- در نظر گرفتن یک زمینه منطبق به عنوان کافی هر دو فایل SHA-256 و اثر انگشت SHA-256 گواهی را مطابقت دهد. تطبیق یکی اما نه دیگری نشانه آن است که بایت ها تغییر کرده اند یا منبع جعل هویت ناشر است.
- غیرفعال کردن Play Protect برای "راحتی". Play Protect یک اسکنر نظر دوم است، نه جایگزینی برای تأیید امضا، اما بدافزار واقعی را میگیرد که تأیید امضا نمیتواند، زیرا Protect از بستههای نامناسب شناخته شده بر اساس محتوا اطلاع دارد، نه با کلید امضا. آن را بگذارید.
آیا برنامه شما ایمن است؟
حدس نزن در عرض چند ثانیه فایلهای APK جانبی خود را در برابر گواهیهای رسمی برنامهنویس تأیید کنید.
تأیید APK را شروع کنیدسوالات متداول (سؤالات متداول)
چرا Android من را از نصب APK اصلاح شده مسدود می کند؟
زیرا امضای APK جدید با امضای نصب شده قبلی مطابقت ندارد. این از هکرها جلوگیری می کند تا برنامه بانکی واقعی شما را با یک برنامه جعلی "بازنویسی کنند".
آیا می توانم پس از تغییر یک APK دوباره آن را امضا کنم؟
بله، اما شما از کلید متفاوت استفاده خواهید کرد. این برنامه همچنان روی یک تلفن «تمیز» نصب میشود، اما دیگر بهروزرسانیهایی را از توسعهدهنده اصلی دریافت نمیکند.
سنجاق گواهی چیست؟
این یک ویژگی امنیتی پیشرفته است که در آن یک برنامه صراحتاً یک گواهی خاص را قبل از برقراری ارتباط با سرورهای خود بررسی میکند و برنامههای دستکاری شده را حتی در صورت نصب صحیح بیفایده میکند.
تأیید امضا را بخشی از هر بار جانبی قرار دهید
امضاها کارهای سنگینی را در امنیت مدرن Android انجام می دهند. صرف چند ثانیه اضافی برای اجرای یک فایل از طریق تأیید کننده APK روشی ارزان برای دور نگه داشتن یک برنامه دستکاری شده از دستگاه شما قبل از نصب است.