Android ایپ پر دستخط کرنا: یہ کیسے کام کرتا ہے اور یہ کیوں اہم ہے۔

A brass key on a smartphone showing a verified checkmark, illustrating Android app signing

جب بھی آپ اپنے Android فون پر کوئی ایپ انسٹال کرتے ہیں، پس منظر میں ایک خاموش لیکن اہم سیکیورٹی چیک ہوتا ہے۔ آپ کا فون APK پیکیج کے ڈیجیٹل دستخط کی تصدیق کرتا ہے۔ یہ کرپٹوگرافک ہینڈ شیک وہ ہے جو نقصان دہ ہیکرز کو آپ کی ایپس کو میلویئر کے ساتھ "زہر کرنے" سے روکتا ہے جبکہ اس بات کو یقینی بناتا ہے کہ ڈویلپر اپنی شناخت کھونے کے بغیر اپ ڈیٹس کو آگے بڑھا سکتے ہیں۔

اگر آپ ایپس لکھتے ہیں، تو دستخط کرنا ایک ایسی چیز ہے جسے آپ کو درست کرنا ہے۔ اگر آپ صرف Android کے ساتھ ٹنکر کرنا چاہتے ہیں، تو یہ سمجھنے کے لیے سسٹم کے سب سے زیادہ اطمینان بخش حصوں میں سے ایک ہے۔ کسی بھی طرح سے، ایپ پر دستخط کیسے کام کرتا ہے۔ آپ کے وقت کے قابل ہے۔ ذیل میں ہم ٹیکنالوجی کے ذریعے چلتے ہیں، دستخط کرنے کی اسکیمیں کیسے تیار ہوئیں، اور آپ دستی طور پر سرٹیفکیٹ کی تصدیق کریں۔ آن لائن کیسے کرسکتے ہیں۔

آپ اس مضمون میں کیا سیکھیں گے۔
  • ہر Android ایپ پر دستخط کیوں ہونا چاہیے اور کون سی کرپٹوگرافی شامل ہے (RSA/EC)۔
  • v1 (JAR)، v2، v3، اور v4 دستخطی اسکیموں کے درمیان فرق، اور آج آپ کی ایپ کو کون سا استعمال کرنا چاہیے۔
  • Android یہ کیسے طے کرتا ہے کہ آیا دستخطی تسلسل کی بنیاد پر اپ ڈیٹ کی اجازت دی جائے۔
  • کلیدی گردش کس طرح ایک ڈویلپر کو موجودہ انسٹال کو توڑے بغیر اپنی سائننگ کلید کو تبدیل کرنے دیتی ہے۔
  • کسی بھی APK کے دستخط کی خود، کمانڈ لائن پر یا ہمارے براؤزر پر مبنی تصدیق کنندہ سے تصدیق کیسے کریں۔

ایپ سائن کرنا کیا ہے؟

اس کے بنیادی طور پر، ایپ پر دستخط کرنا ایک ایسا عمل ہے جہاں ایک ڈویلپر اپنی ایپ کی فائلوں کے لیے دستخطی بلاک بنانے کے لیے نجی کلید استعمال کرتا ہے۔ متعلقہ عوامی کلید پھر META-INF فولڈر کے اندر APK میں سرایت کرتا ہے۔ جب آپ کا فون ایپ کو انسٹال کرنے کی کوشش کرتا ہے، تو یہ چیک کرنے کے لیے عوامی کلید کا استعمال کرتا ہے کہ آیا دستخط فائل کے مواد سے میل کھاتا ہے۔

یہ دو اہم خصوصیات فراہم کرتا ہے:

  1. تغیر پذیری: اگر ایپ کے کوڈ کا ایک بائٹ تبدیل کیا جاتا ہے (مثال کے طور پر، ٹروجن کے ذریعے)، دستخط اب فائل سے مماثل نہیں ہوں گے، اور Android اسے انسٹال کرنے سے انکار کر دے گا۔
  2. شناخت کا ثبوت: اگر کوئی ایپ موجودہ ایپ کو اپ ڈیٹ کرنے کی کوشش کرتی ہے، تو ان کے دستخط مماثل ہونے چاہئیں۔ یہی وجہ ہے کہ آپ سرکاری ایپ پر چھیڑ چھاڑ والی Facebook ایپ انسٹال نہیں کر سکتے۔

دستخطی اسکیموں کا ارتقاء

گوگل نے رفتار اور سیکورٹی دونوں کو بہتر بنانے کے لیے دستخط کرنے کے طریقہ کار کو مسلسل اپ گریڈ کیا ہے:

سائڈ لوڈنگ کے لیے سرٹیفکیٹ کیوں اہم ہیں۔

جب آپ کسی غیر سرکاری ذریعہ سے APK ڈاؤن لوڈ کرتے ہیں، تو سرٹیفکیٹ ہیشنگ آپ کا بہترین دوست ہوتا ہے۔ ایک سرٹیفکیٹ فنگر پرنٹ (جیسے SHA-256 ہیش) ڈویلپر کی دستخطی کلید کی منفرد شناخت کرتا ہے۔ ہر ایپ اپنی تمام اپ ڈیٹس میں ایک ہی سائننگ کلید رکھتی ہے، لہذا آپ APK کے فنگر پرنٹ کا موازنہ ڈویلپر کی شائع شدہ قدر سے کر سکتے ہیں تاکہ تصدیق کی جا سکے کہ یہ حقیقی ہے۔

اگر آپ کو شک ہے کہ APK جعلی ہے، تو آپ اسے ہمارے آن لائن APK تصدیق کنندہ کے ذریعے چلائیں۔ ہمارا ٹول آپ کو دکھائے گا:

اینڈروئیڈ انسٹال کے وقت کسی دستخط کی تصدیق کیسے کرتا ہے۔

"سرٹیفکیٹ کی توثیق کریں" کے قدم کو اکثر اس طرح چمکایا جاتا ہے کہ OS اصل میں کیا کرتا ہے جب آپ APK کو تھپتھپاتے ہیں اور Android فیصلہ کرتا ہے کہ اسے انسٹال کرنا ہے:

  1. APK کو زپ کے طور پر کھولیں اور سائننگ بلاک کا پتہ لگائیں۔ v2/v3 دستخطوں کے لیے جو کہ سنٹرل ڈائرکٹری سے فوراً پہلے ایک سٹرکچرڈ بلاک ہے۔ لیگیسی v1 اسکیم کے لیے یہ META-INF/*.RSA، *.DSA، یا *.EC کا مواد ہے۔
  2. SHA-256 APK کے ہر دوسرے بائٹ کے ڈائجسٹ کی گنتی کریں۔ دستخط کرنے والے بلاک کو اس کے اپنے ڈائجسٹ سے خارج کر دیا گیا ہے۔ باقی سب کچھ طے شدہ ٹکڑوں میں ہیش کیا جاتا ہے۔
  3. سائننگ بلاک میں ریکارڈ کیے گئے ڈائجسٹوں کے خلاف ہر ٹکڑوں کے ڈائجسٹ کی تصدیق کریں۔ اگر ڈویلپر کے فائل پر دستخط کرنے کے بعد سے ایک بائٹ میں بھی ردوبدل کیا گیا ہے، تو ڈائجسٹ میچ نہیں کریں گے اور عام "ایپ انسٹال نہیں ہے" کی خرابی کے ساتھ انسٹال کو مسترد کر دیا جائے گا۔
  4. تصدیق کریں کہ دستخط کرنے والا بلاک خود سرٹیفکیٹ کی نجی کلید کے ساتھ تیار کیا گیا تھا۔ سرٹیفکیٹ کی عوامی کلید کو بلاک میں کرپٹوگرافک دستخط چیک کرنے کے لیے استعمال کیا جاتا ہے۔ ایک کامیاب چیک کا مطلب ہے کہ جس نے بھی فائل پر دستخط کیے ہیں اس کے پاس اس سرٹیفکیٹ کے ساتھ جوڑا نجی کلید ہے۔
  5. سرٹیفکیٹ فنگر پرنٹ کا موازنہ اسی پیکیج نام کے کسی بھی موجودہ انسٹال سے کریں۔ اگر پیکیج پہلے سے انسٹال ہے اور نئے APK پر ایک مختلف سرٹیفکیٹ کے ساتھ دستخط ہیں، تو انسٹال INSTALL_FAILED_UPDATE_INCOMPATIBLE کے ساتھ مسترد کر دیا جاتا ہے۔ یہ OS کا اہم اینٹی نقالی دفاع ہے: ایک بدنیتی پر مبنی اداکار آپ کے بینک ایپ کو اپنی کاپی سے تبدیل نہیں کر سکتا جب تک کہ وہ بینک کی دستخطی کلید بھی چرا نہ لے۔

اس میں سے کوئی بھی یہ ثابت نہیں کرتا ہے کہ ڈویلپر قابل بھروسہ ہے، صرف یہ کہ آپ جس فائل کو انسٹال کرنے والے ہیں وہ بائٹ سے مماثل ہے جس پر انہوں نے دستخط کیے ہیں اور کسی دوسرے فریق نے اس کے ساتھ چھیڑ چھاڑ نہیں کی ہے۔ ڈویلپر پر بھروسہ کرنا ایک الگ فیصلہ ہے، اور آپ یہ فیصلہ کرتے ہوئے کرتے ہیں کہ آپ کن ذرائع سے انسٹال کرتے ہیں۔

"دستخط کی مماثلت" کا واقعی کیا مطلب ہے۔

سائڈ لوڈنگ کے وقت لوگوں کو سب سے زیادہ عام حیرانی کا سامنا کرنا پڑتا ہے وہ اپ ڈیٹ پر "دستخط کی مماثلت" کی خرابی ہے۔ یہاں اصل میں کیا ہو رہا ہے:

عملی طور پر یہ دو طریقوں سے ہوتا ہے:

  1. فریق ثالث کا APK حقیقی طور پر ایک مختلف ناشر سے ہے، مثال کے طور پر "modded" یا "patched" کاپی۔ انسٹال کرنے سے انکار درست رویہ ہے۔ اسے انسٹال کرنے کا مطلب یہ ہوگا کہ کسی اجنبی پر اسی ڈیٹا کے ساتھ بھروسہ کریں جس کو آپ کے بینک کی ایپ نے پہلے ہی چھوا ہے۔
  2. فریق ثالث کا APK آفیشل APK کا دوبارہ اپ لوڈ ہے، لیکن گوگل کا پلے ایپ سائننگ سسٹم ہر صارف کے ڈاؤن لوڈ پر صارف کے اپ لوڈ کلید ریپر سے دستخط کرتا ہے۔ دو آلات بعض اوقات ایک ہی تصوراتی ایپ ورژن کے لیے تھوڑا سا مختلف دستخطی ڈیٹا دیکھ سکتے ہیں۔ اس صورت میں جڑ میں موجود سرٹیفکیٹ فنگر پرنٹ اب بھی مماثل ہے۔ آپ ہمارے APK تصدیق کنندہ سے تصدیق کر سکتے ہیں۔

اگر سرٹیفکیٹ فنگر پرنٹ واقعی آپ کے موجودہ انسٹال سے مختلف ہے، تو آگے کا واحد راستہ یہ ہے کہ متبادل کو سائڈ لوڈ کرنے سے پہلے پہلے موجودہ کاپی کو ان انسٹال کریں (اس کا ڈیٹا کھو دیں)، کبھی بھی دستخطی تصدیق کو غیر فعال نہ کریں۔

اپنی خود کی دستخطی کلید تیار کرنا (ڈویلپرز کے لیے)

اگر آپ Android ایپس بنا رہے ہیں، تو آپ کو آخر کار اپنی بلڈز پر دستخط کرنے کی ضرورت ہوگی۔ جاوا SDK سے keytool استعمال کرنے والی معیاری ون لائن کمانڈ یہ ہے:

keytool -genkeypair -v \
        -keystore my-release.keystore \
        -alias my-app -keyalg RSA -keysize 2048 \
        -validity 10000

جاننے کے لئے دو چیزیں:

سائیڈ لوڈڈ ٹیسٹ بلڈز کے لیے، ایک غیر دستخط شدہ ڈیبگ کی اسٹور ٹھیک ہے۔ پیداوار کے لیے، آف لائن بیک اپ میں محفوظ پاس ورڈ سے محفوظ طویل مدتی کی اسٹور کا استعمال کریں۔

ایک پرو کی طرح ایپ کی شناخت کی تصدیق کریں۔

عام فائل کے ناموں پر بھروسہ نہ کریں۔ سیکنڈوں میں اپنے APKs کا کرپٹوگرافک ہارٹ چیک کریں۔

ابھی سرٹیفکیٹس کی تصدیق کریں۔

عام دستخطی نقصانات

  1. خود دستخط شدہ سرٹیفکیٹ: زیادہ تر Android ایپس خود دستخط شدہ ہیں۔ ویب سائٹس کے لیے SSL کے برعکس، Android ایپ پر دستخط کرنے کے لیے کوئی مرکزی اتھارٹی نہیں ہے۔ آپ کو براہ راست ڈویلپر پر بھروسہ کرنا چاہیے۔
  2. ڈیبگ سرٹیفکیٹس: جانچ کے لیے بنائی گئی ایپس ایک عام "ڈیبگ" کلید کا استعمال کرتی ہیں۔ ان ایپس کو کبھی بھی عوام کے لیے جاری نہیں کیا جانا چاہیے اور بہت سے سیکیورٹی فلٹرز کے ذریعے مسدود ہیں۔
  3. کلیدی نقصان: اگر کوئی ڈویلپر اپنا نجی کی اسٹور کھو دیتا ہے، تو وہ کبھی نہیں اپنی ایپ کو دوبارہ اپ ڈیٹ کر سکتا ہے۔ انہیں ایک مختلف پیکیج نام کے ساتھ ایک "نئی" ایپ جاری کرنی ہوگی۔

اپنے ہدف SDK کے لیے صحیح دستخطی اسکیم کا انتخاب کرنا

خاموشی سے ایپ پر دستخط کرنا Android کی بہت سی سیکیورٹی کو کم کرتا ہے۔ ایک بار جب پرائیویٹ/پبلک کلیدی رشتہ کلک کرتا ہے، تو آپ سائیڈ لوڈڈ ایپ کو اس کی خوبیوں پر فیصلہ کر سکتے ہیں اور اس بات کی تصدیق کر سکتے ہیں کہ آپ جو انسٹال کر رہے ہیں اس میں تبدیلی نہیں کی گئی ہے جب سے ڈویلپر نے اس پر دستخط کیے ہیں۔ Android انٹرنلز کے بارے میں مزید معلومات کے لیے، ہمارا XAPK فارمیٹ کے لیے رہنما دیکھیں۔

انجینئرڈ اور دستاویزی Mst Shafale کے ذریعہ لیڈ ڈیولپر اور Android پیکیج آرکیٹیکٹ • Android 12–15 پر تصدیق شدہ

Mst Shaefale xapktoapk.com پر کلائنٹ سائڈ XAPK/APKS انضمام، بائنری مینی فیسٹ پارسر، اور APK v1+v2 سائننگ ٹولز کو برقرار رکھتی ہے۔ ایک پرانی کمانڈ یا OS کی تبدیلی کو اسپاٹ کریں؟ ایک ادارتی نوٹ بھیجیں۔