অ্যাপ্লিকেশন সাইনিং ডেভেলপারদের অ্যাপ্লিকেশনটির লেখককে সনাক্ত করতে এবং জটিল ইন্টারফেস এবং অনুমতি তৈরি না করে তাদের অ্যাপ্লিকেশন আপডেট করতে দেয়। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ্লিকেশন বিকাশকারী দ্বারা স্বাক্ষরিত হতে হবে। যে অ্যাপ্লিকেশনগুলি স্বাক্ষর না করে ইনস্টল করার চেষ্টা করে সেগুলিকে Google Play বা Android ডিভাইসে প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যান করা হবে৷
Google Play-তে, অ্যাপ্লিকেশান সাইনিং ব্রিজ ডেভেলপারের সাথে Google-এর আস্থা এবং ডেভেলপার তাদের অ্যাপ্লিকেশনের সাথে যে আস্থা রাখে। বিকাশকারীরা জানেন যে তাদের অ্যাপ্লিকেশনটি Android ডিভাইসে সরবরাহ করা হয়েছে, অপরিবর্তিত রয়েছে; এবং বিকাশকারীদের তাদের আবেদনের আচরণের জন্য দায়বদ্ধ করা যেতে পারে।
অ্যান্ড্রয়েডে, অ্যাপ্লিকেশান স্যান্ডবক্সে অ্যাপ্লিকেশান রাখার প্রথম ধাপ হল অ্যাপ্লিকেশান সাইনিং৷ স্বাক্ষরিত অ্যাপ্লিকেশন শংসাপত্র কোন ব্যবহারকারী আইডি কোন অ্যাপ্লিকেশনের সাথে যুক্ত তা নির্ধারণ করে; বিভিন্ন ইউজার আইডির অধীনে বিভিন্ন অ্যাপ্লিকেশন চালানো হয়। আবেদন স্বাক্ষর নিশ্চিত করে যে একটি অ্যাপ্লিকেশন সু-সংজ্ঞায়িত IPC ব্যতীত অন্য কোনো অ্যাপ্লিকেশন অ্যাক্সেস করতে পারবে না।
যখন একটি অ্যাপ্লিকেশান (APK ফাইল) একটি Android ডিভাইসে ইনস্টল করা হয়, তখন প্যাকেজ ম্যানেজার যাচাই করে যে APKটি সেই APK-এ অন্তর্ভুক্ত শংসাপত্রের সাথে সঠিকভাবে স্বাক্ষর করা হয়েছে। যদি শংসাপত্রটি (অথবা, আরও সঠিকভাবে, সার্টিফিকেটের সর্বজনীন কী) ডিভাইসে অন্য যেকোন APK সাইন করার জন্য ব্যবহৃত কীটির সাথে মেলে, তাহলে নতুন APK এর ম্যানিফেস্টে উল্লেখ করার বিকল্প রয়েছে যে এটি একইভাবে অন্যটির সাথে একটি UID শেয়ার করবে। - স্বাক্ষরিত APK
আবেদনগুলি একটি তৃতীয় পক্ষের দ্বারা স্বাক্ষরিত হতে পারে (OEM, অপারেটর, বিকল্প বাজার) বা স্ব-স্বাক্ষরিত। Android স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে কোড স্বাক্ষর প্রদান করে যা বিকাশকারীরা বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারে। আবেদনগুলিতে কেন্দ্রীয় কর্তৃপক্ষের স্বাক্ষর করতে হবে না। Android বর্তমানে অ্যাপ্লিকেশন শংসাপত্রের জন্য CA যাচাইকরণ করে না।
অ্যাপ্লিকেশানগুলি স্বাক্ষর সুরক্ষা স্তরে সুরক্ষা অনুমতিগুলি ঘোষণা করতে সক্ষম হয়, স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্সগুলি বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপ্লিকেশনগুলিতে অ্যাক্সেস সীমাবদ্ধ করে৷ শেয়ার্ড ইউআইডি বৈশিষ্ট্য ব্যবহার করে একটি শেয়ার্ড অ্যাপ্লিকেশান স্যান্ডবক্সের সাথে একটি ঘনিষ্ঠ সম্পর্ক অনুমোদিত যেখানে একই বিকাশকারী কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ্লিকেশন তাদের ম্যানিফেস্টে একটি শেয়ার্ড ইউআইডি ঘোষণা করতে পারে৷
APK সাইনিং স্কিম
অ্যান্ড্রয়েড তিনটি অ্যাপ্লিকেশন সাইনিং স্কিম সমর্থন করে:
- v1 স্কিম: JAR স্বাক্ষরের উপর ভিত্তি করে
- v2 স্কিম: APK স্বাক্ষর স্কিম v2 , যা Android 7.0 এ চালু করা হয়েছিল।
- v3 স্কিম: APK স্বাক্ষর স্কিম v3 , যা Android 9 এ চালু করা হয়েছিল।
সর্বাধিক সামঞ্জস্যের জন্য, সমস্ত স্কিম সহ অ্যাপ্লিকেশনগুলিতে স্বাক্ষর করুন, প্রথমে v1 দিয়ে, তারপরে v2 এবং তারপরে v3। অ্যান্ড্রয়েড 7.0+ এবং নতুন ডিভাইসগুলি শুধুমাত্র v1 স্কিমে স্বাক্ষরিত অ্যাপগুলির তুলনায় v2+ স্কিমে স্বাক্ষর করা অ্যাপগুলিকে আরও দ্রুত ইনস্টল করে। পুরানো অ্যান্ড্রয়েড প্ল্যাটফর্মগুলি v2+ স্বাক্ষরগুলিকে উপেক্ষা করে এবং তাই v1 স্বাক্ষর ধারণ করার জন্য অ্যাপগুলির প্রয়োজন৷
JAR স্বাক্ষর (v1 স্কিম)
APK সাইনিং শুরু থেকেই অ্যান্ড্রয়েডের একটি অংশ। এটি স্বাক্ষরিত JAR এর উপর ভিত্তি করে। এই স্কিমটি ব্যবহার করার বিষয়ে বিস্তারিত জানার জন্য, আপনার অ্যাপে স্বাক্ষর করার বিষয়ে অ্যান্ড্রয়েড স্টুডিও ডকুমেন্টেশন দেখুন।
v1 স্বাক্ষরগুলি APK-এর কিছু অংশকে সুরক্ষিত করে না, যেমন ZIP মেটাডেটা। APK যাচাইকারীকে অনেকগুলি অবিশ্বস্ত (এখনও যাচাই করা হয়নি) ডেটা স্ট্রাকচার প্রক্রিয়া করতে হবে এবং তারপরে স্বাক্ষরগুলির দ্বারা আচ্ছাদিত নয় এমন ডেটা বাতিল করতে হবে৷ এটি একটি উল্লেখযোগ্য আক্রমণ পৃষ্ঠ প্রদান করে। অধিকন্তু, APK ভেরিফায়ারকে অবশ্যই সমস্ত সংকুচিত এন্ট্রি আনকম্প্রেস করতে হবে, আরও সময় এবং মেমরি খরচ করে৷ এই সমস্যাগুলি সমাধানের জন্য, Android 7.0 প্রবর্তন করেছে APK স্বাক্ষর স্কিম v2।
APK স্বাক্ষর স্কিম v2 এবং v3 (v2+ স্কিম)
Android 7.0 এবং পরবর্তীতে চলমান ডিভাইসগুলি APK স্বাক্ষর স্কিম v2 (v2 স্কিম) এবং পরবর্তীতে সমর্থন করে। (স্বাক্ষরকরণ ব্লকে অতিরিক্ত তথ্য অন্তর্ভুক্ত করার জন্য v2 স্কিমটি Android 9-এ v3 তে আপডেট করা হয়েছিল, কিন্তু অন্যথায় একই কাজ করে।) APK-এর বিষয়বস্তু হ্যাশ করা হয় এবং স্বাক্ষরিত হয়, তারপর ফলস্বরূপ APK সাইনিং ব্লকটি APK-এ ঢোকানো হয়। একটি অ্যাপে v2+ স্কিম প্রয়োগ করার বিষয়ে বিস্তারিত জানার জন্য, APK স্বাক্ষর স্কিম v2 দেখুন।
বৈধকরণের সময়, v2+ স্কিম APK ফাইলটিকে একটি ব্লব হিসাবে বিবেচনা করে এবং সমগ্র ফাইল জুড়ে স্বাক্ষর পরীক্ষা করে। জিপ মেটাডেটা পরিবর্তন সহ APK-এর যেকোন পরিবর্তন, APK স্বাক্ষরকে অকার্যকর করে। APK যাচাইকরণের এই ফর্মটি যথেষ্ট দ্রুত এবং অননুমোদিত পরিবর্তনের আরও শ্রেণী সনাক্তকরণ সক্ষম করে৷
নতুন বিন্যাসটি পিছনের দিকে সামঞ্জস্যপূর্ণ, তাই নতুন স্বাক্ষর বিন্যাসের সাথে স্বাক্ষর করা APKগুলি পুরানো Android ডিভাইসগুলিতে ইনস্টল করা যেতে পারে (যা কেবলমাত্র APK-তে যোগ করা অতিরিক্ত ডেটা উপেক্ষা করে), যতক্ষণ না এই APKগুলিও v1-স্বাক্ষরযুক্ত থাকে।
APK সাইনিং ব্লকে সংরক্ষিত v2+ স্বাক্ষরের বিপরীতে APK-এর সম্পূর্ণ-ফাইল হ্যাশ যাচাই করা হয়েছে। হ্যাশ APK সাইনিং ব্লক ব্যতীত সমস্ত কিছু কভার করে, যেখানে v2+ স্বাক্ষর রয়েছে। APK সাইনিং ব্লকের বাইরে APK-তে যে কোনো পরিবর্তন করলে APK-এর v2+ স্বাক্ষর বাতিল হয়ে যায়। ছিনতাই করা v2+ স্বাক্ষর সহ APKগুলিও প্রত্যাখ্যান করা হয়, কারণ তাদের v1 স্বাক্ষরটি নির্দিষ্ট করে যে APKটি v2-স্বাক্ষরযুক্ত ছিল, যা Android 7.0 এবং নতুনকে তাদের v1 স্বাক্ষর ব্যবহার করে APKগুলিকে যাচাই করতে অস্বীকার করে৷
APK স্বাক্ষর যাচাইকরণ প্রক্রিয়ার বিশদ বিবরণের জন্য, APK স্বাক্ষর স্কিম v2 এর যাচাইকরণ বিভাগটি দেখুন।