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 অ্যাপ ইনস্টল করতে পারবেন না।

সাইনিং স্কিমের বিবর্তন

গতি এবং নিরাপত্তা উভয়ের উন্নতির জন্য Google ক্রমাগত সাইনিং মেকানিজম আপগ্রেড করেছে:

সাইডলোডিংয়ের জন্য শংসাপত্র কেন গুরুত্বপূর্ণ

আপনি যখন একটি অনানুষ্ঠানিক উত্স থেকে একটি APK ডাউনলোড করেন, তখন সার্টিফিকেট হ্যাশিং আপনার সেরা বন্ধু৷ একটি শংসাপত্র আঙ্গুলের ছাপ (যেমন একটি SHA-256 হ্যাশ) অনন্যভাবে বিকাশকারীর স্বাক্ষর কী সনাক্ত করে৷ প্রতিটি অ্যাপ তার সমস্ত আপডেট জুড়ে একই সাইনিং কী রাখে, তাই আপনি একটি APK এর ফিঙ্গারপ্রিন্টকে ডেভেলপারের প্রকাশিত মানের সাথে তুলনা করে নিশ্চিত করতে পারেন যে এটি আসল।

যদি আপনি সন্দেহ করেন যে একটি APK জাল, তাহলে আপনার এটি আমাদের অনলাইন APK যাচাইকারী এর মাধ্যমে চালানো উচিত। আমাদের টুল আপনাকে দেখাবে:

কীভাবে Android ইনস্টলের সময় একটি স্বাক্ষর যাচাই করে

"শংসাপত্র যাচাই করুন" পদক্ষেপটি প্রায়শই চকচকে হয় যে আপনি যখন একটি APK ট্যাপ করেন এবং Android এটি ইনস্টল করবেন কিনা তা স্থির করে OS আসলে কী করে তার মধ্য দিয়ে চলার মতো:

  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 হল প্রকৃতপক্ষে একটি ভিন্ন প্রকাশকের কাছ থেকে, উদাহরণস্বরূপ একটি "মডেড" বা "প্যাচড" কপি৷ ইনস্টল প্রত্যাখ্যান সঠিক আচরণ; এটি ইনস্টল করার অর্থ আপনার ব্যাঙ্কের অ্যাপটি ইতিমধ্যে স্পর্শ করা একই ডেটা দিয়ে অপরিচিত ব্যক্তিকে বিশ্বাস করা।
  2. তৃতীয় পক্ষের APK হল অফিসিয়াল APK এর পুনরায় আপলোড, কিন্তু Google-এর প্লে অ্যাপ সাইনিং সিস্টেম প্রতিটি ব্যবহারকারীর ডাউনলোড ব্যবহারকারীর আপলোড কী র‌্যাপার দিয়ে স্বাক্ষর করে। দুটি ডিভাইস কখনও কখনও একই ধারণাগত অ্যাপ সংস্করণের জন্য সামান্য ভিন্ন স্বাক্ষর ডেটা দেখতে পারে। সেক্ষেত্রে মূলে শংসাপত্রের আঙুলের ছাপ এখনও মেলে; আপনি আমাদের APK যাচাইকারী দিয়ে যাচাই করতে পারেন।

যদি শংসাপত্রের আঙ্গুলের ছাপ সত্যিই আপনার বিদ্যমান ইনস্টল থেকে ভিন্ন হয়, তবে অগ্রসর হওয়ার একমাত্র উপায় হল প্রতিস্থাপনটি সাইডলোড করার আগে বর্তমান অনুলিপিটি প্রথমে আনইনস্টল করা (তার ডেটা হারানো), কখনই স্বাক্ষর যাচাইকরণ অক্ষম করবেন না।

আপনার নিজের সাইনিং কী তৈরি করা (বিকাশকারীদের জন্য)

আপনি যদি Android অ্যাপ্লিকেশানগুলি তৈরি করেন তবে আপনাকে শেষ পর্যন্ত নিজের বিল্ডগুলিতে স্বাক্ষর করতে হবে৷ জাভা SDK থেকে keytool ব্যবহার করে স্ট্যান্ডার্ড ওয়ান-লাইন কমান্ড হল:

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

দুটি জিনিস জানতে হবে:

সাইডলোডেড টেস্ট বিল্ডের জন্য, একটি স্বাক্ষরবিহীন ডিবাগ কীস্টোর ঠিক আছে; উৎপাদনের জন্য, অফলাইন ব্যাকআপে সংরক্ষিত একটি পাসওয়ার্ড-সুরক্ষিত দীর্ঘ-বৈধতা কীস্টোর ব্যবহার করুন।

একজন পেশাদারের মতো অ্যাপ আইডেন্টিটি যাচাই করুন

জেনেরিক ফাইলের নাম বিশ্বাস করবেন না। সেকেন্ডের মধ্যে আপনার APK-এর ক্রিপ্টোগ্রাফিক হার্ট চেক করুন।

এখন সার্টিফিকেট যাচাই করুন

কমন সাইনিং পিটফলস

  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 পরিবর্তন স্পট? একটি সম্পাদকীয় নোট পাঠান.