অ্যাপ সাইনিং ডেভেলপারদের অ্যাপের লেখককে শনাক্ত করতে এবং জটিল ইন্টারফেস এবং অনুমতি তৈরি না করেই তাদের অ্যাপ আপডেট করতে দেয়। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ অবশ্যই বিকাশকারী দ্বারা স্বাক্ষরিত হতে হবে। যে অ্যাপগুলি স্বাক্ষর না করে ইনস্টল করার চেষ্টা করে সেগুলি হয় Google Play বা Android ডিভাইসে প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যান করা হয়৷
Google Play-তে, অ্যাপ সাইনিং ব্রিজ ডেভেলপারের সঙ্গে Google-এর আস্থা এবং ডেভেলপারদের তাদের অ্যাপের ওপর আস্থা রয়েছে। বিকাশকারীরা জানেন যে তাদের অ্যাপটি Android ডিভাইসে সরবরাহ করা হয়েছে, অপরিবর্তিত রয়েছে; এবং ডেভেলপারদের তাদের অ্যাপের আচরণের জন্য দায়ী করা যেতে পারে।
অ্যান্ড্রয়েডে, অ্যাপ সাইনিং হল একটি অ্যাপকে তার অ্যাপ্লিকেশন স্যান্ডবক্সে রাখার প্রথম ধাপ। স্বাক্ষরিত অ্যাপ সার্টিফিকেট নির্ধারণ করে যে কোন ইউজার আইডি কোন অ্যাপের সাথে যুক্ত; বিভিন্ন অ্যাপ বিভিন্ন ইউজার আইডির অধীনে চলে। অ্যাপ সাইনিং নিশ্চিত করে যে একটি অ্যাপ সু-সংজ্ঞায়িত IPC ছাড়া অন্য কোনো অ্যাপ অ্যাক্সেস করতে পারবে না।
যখন একটি অ্যাপ্লিকেশান (APK ফাইল) একটি Android ডিভাইসে ইনস্টল করা হয়, তখন প্যাকেজ ম্যানেজার যাচাই করে যে APKটি সেই APK-এ অন্তর্ভুক্ত শংসাপত্রের সাথে সঠিকভাবে স্বাক্ষর করা হয়েছে। যদি শংসাপত্রটি (অথবা, আরও সঠিকভাবে, সার্টিফিকেটের সর্বজনীন কী) ডিভাইসে অন্য যেকোন APK সাইন করার জন্য ব্যবহৃত কীটির সাথে মেলে, তাহলে নতুন APK-এর ম্যানিফেস্টে উল্লেখ করার বিকল্প রয়েছে যে এটি একইভাবে স্বাক্ষরিত অন্যদের সাথে একটি UID শেয়ার করে। APK
অ্যাপগুলি তৃতীয় পক্ষের (OEM, অপারেটর, বিকল্প বাজার) দ্বারা স্বাক্ষরিত হতে পারে বা স্ব-স্বাক্ষরিত হতে পারে৷ Android স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে কোড স্বাক্ষর প্রদান করে যা বিকাশকারীরা বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারে। অ্যাপগুলিতে কেন্দ্রীয় কর্তৃপক্ষের স্বাক্ষর থাকতে হবে না। Android বর্তমানে অ্যাপ সার্টিফিকেটের জন্য CA যাচাইকরণ করে না।
অ্যাপ্লিকেশানগুলি স্বাক্ষর সুরক্ষা স্তরে সুরক্ষা অনুমতিগুলিও ঘোষণা করতে সক্ষম হয়, স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্সগুলি বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপগুলিতে অ্যাক্সেস সীমাবদ্ধ করে৷ শেয়ার্ড ইউআইডি বৈশিষ্ট্য ব্যবহার করে একটি শেয়ার্ড অ্যাপ্লিকেশান স্যান্ডবক্সের সাথে একটি ঘনিষ্ঠ সম্পর্ক অনুমোদিত যেখানে একই বিকাশকারী কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ তাদের ম্যানিফেস্টে একটি শেয়ার করা 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 এর যাচাইকরণ বিভাগটি দেখুন।
,অ্যাপ সাইনিং ডেভেলপারদের অ্যাপের লেখককে শনাক্ত করতে এবং জটিল ইন্টারফেস এবং অনুমতি তৈরি না করেই তাদের অ্যাপ আপডেট করতে দেয়। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ অবশ্যই বিকাশকারী দ্বারা স্বাক্ষরিত হতে হবে। যে অ্যাপগুলি স্বাক্ষর না করে ইনস্টল করার চেষ্টা করে সেগুলি হয় Google Play বা Android ডিভাইসে প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যান করা হয়৷
Google Play-তে, অ্যাপ সাইনিং ব্রিজ ডেভেলপারের সঙ্গে Google-এর আস্থা এবং ডেভেলপারদের তাদের অ্যাপের ওপর আস্থা রয়েছে। বিকাশকারীরা জানেন যে তাদের অ্যাপটি Android ডিভাইসে সরবরাহ করা হয়েছে, অপরিবর্তিত রয়েছে; এবং ডেভেলপারদের তাদের অ্যাপের আচরণের জন্য দায়ী করা যেতে পারে।
অ্যান্ড্রয়েডে, অ্যাপ সাইনিং হল একটি অ্যাপকে তার অ্যাপ্লিকেশন স্যান্ডবক্সে রাখার প্রথম ধাপ। স্বাক্ষরিত অ্যাপ সার্টিফিকেট নির্ধারণ করে যে কোন ইউজার আইডি কোন অ্যাপের সাথে যুক্ত; বিভিন্ন অ্যাপ বিভিন্ন ইউজার আইডির অধীনে চলে। অ্যাপ সাইনিং নিশ্চিত করে যে একটি অ্যাপ সু-সংজ্ঞায়িত IPC ছাড়া অন্য কোনো অ্যাপ অ্যাক্সেস করতে পারবে না।
যখন একটি অ্যাপ্লিকেশান (APK ফাইল) একটি Android ডিভাইসে ইনস্টল করা হয়, তখন প্যাকেজ ম্যানেজার যাচাই করে যে APKটি সেই APK-এ অন্তর্ভুক্ত শংসাপত্রের সাথে সঠিকভাবে স্বাক্ষর করা হয়েছে। যদি শংসাপত্রটি (অথবা, আরও সঠিকভাবে, সার্টিফিকেটের সর্বজনীন কী) ডিভাইসে অন্য যেকোন APK সাইন করার জন্য ব্যবহৃত কীটির সাথে মেলে, তাহলে নতুন APK-এর ম্যানিফেস্টে উল্লেখ করার বিকল্প রয়েছে যে এটি একইভাবে স্বাক্ষরিত অন্যদের সাথে একটি UID শেয়ার করে। APK
অ্যাপগুলি তৃতীয় পক্ষের (OEM, অপারেটর, বিকল্প বাজার) দ্বারা স্বাক্ষরিত হতে পারে বা স্ব-স্বাক্ষরিত হতে পারে৷ Android স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে কোড স্বাক্ষর প্রদান করে যা বিকাশকারীরা বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারে। অ্যাপগুলিতে কেন্দ্রীয় কর্তৃপক্ষের স্বাক্ষর থাকতে হবে না। Android বর্তমানে অ্যাপ সার্টিফিকেটের জন্য CA যাচাইকরণ করে না।
অ্যাপ্লিকেশানগুলি স্বাক্ষর সুরক্ষা স্তরে সুরক্ষা অনুমতিগুলিও ঘোষণা করতে সক্ষম হয়, স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্সগুলি বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপগুলিতে অ্যাক্সেস সীমাবদ্ধ করে৷ শেয়ার্ড ইউআইডি বৈশিষ্ট্য ব্যবহার করে একটি শেয়ার্ড অ্যাপ্লিকেশান স্যান্ডবক্সের সাথে একটি ঘনিষ্ঠ সম্পর্ক অনুমোদিত যেখানে একই বিকাশকারী কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ তাদের ম্যানিফেস্টে একটি শেয়ার করা 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 এর যাচাইকরণ বিভাগটি দেখুন।
,অ্যাপ সাইনিং ডেভেলপারদের অ্যাপের লেখককে শনাক্ত করতে এবং জটিল ইন্টারফেস এবং অনুমতি তৈরি না করেই তাদের অ্যাপ আপডেট করতে দেয়। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ অবশ্যই বিকাশকারী দ্বারা স্বাক্ষরিত হতে হবে। যে অ্যাপগুলি স্বাক্ষর না করে ইনস্টল করার চেষ্টা করে সেগুলি হয় Google Play বা Android ডিভাইসে প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যান করা হয়৷
Google Play-তে, অ্যাপ সাইনিং ব্রিজ ডেভেলপারের সঙ্গে Google-এর আস্থা এবং ডেভেলপারদের তাদের অ্যাপের ওপর আস্থা রয়েছে। বিকাশকারীরা জানেন যে তাদের অ্যাপটি Android ডিভাইসে সরবরাহ করা হয়েছে, অপরিবর্তিত রয়েছে; এবং ডেভেলপারদের তাদের অ্যাপের আচরণের জন্য দায়ী করা যেতে পারে।
অ্যান্ড্রয়েডে, অ্যাপ সাইনিং হল একটি অ্যাপকে তার অ্যাপ্লিকেশন স্যান্ডবক্সে রাখার প্রথম ধাপ। স্বাক্ষরিত অ্যাপ সার্টিফিকেট নির্ধারণ করে যে কোন ইউজার আইডি কোন অ্যাপের সাথে যুক্ত; বিভিন্ন অ্যাপ বিভিন্ন ইউজার আইডির অধীনে চলে। অ্যাপ সাইনিং নিশ্চিত করে যে একটি অ্যাপ সু-সংজ্ঞায়িত IPC ছাড়া অন্য কোনো অ্যাপ অ্যাক্সেস করতে পারবে না।
যখন একটি অ্যাপ্লিকেশান (APK ফাইল) একটি Android ডিভাইসে ইনস্টল করা হয়, তখন প্যাকেজ ম্যানেজার যাচাই করে যে APKটি সেই APK-এ অন্তর্ভুক্ত শংসাপত্রের সাথে সঠিকভাবে স্বাক্ষর করা হয়েছে। যদি শংসাপত্রটি (অথবা, আরও সঠিকভাবে, সার্টিফিকেটের সর্বজনীন কী) ডিভাইসে অন্য যেকোন APK সাইন করার জন্য ব্যবহৃত কীটির সাথে মেলে, তাহলে নতুন APK-এর ম্যানিফেস্টে উল্লেখ করার বিকল্প রয়েছে যে এটি একইভাবে স্বাক্ষরিত অন্যদের সাথে একটি UID শেয়ার করে। APK
অ্যাপগুলি তৃতীয় পক্ষের (OEM, অপারেটর, বিকল্প বাজার) দ্বারা স্বাক্ষরিত হতে পারে বা স্ব-স্বাক্ষরিত হতে পারে৷ Android স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে কোড স্বাক্ষর প্রদান করে যা বিকাশকারীরা বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারে। অ্যাপগুলিতে কেন্দ্রীয় কর্তৃপক্ষের স্বাক্ষর থাকতে হবে না। Android বর্তমানে অ্যাপ সার্টিফিকেটের জন্য CA যাচাইকরণ করে না।
অ্যাপ্লিকেশানগুলি স্বাক্ষর সুরক্ষা স্তরে সুরক্ষা অনুমতিগুলিও ঘোষণা করতে সক্ষম হয়, স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্সগুলি বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপগুলিতে অ্যাক্সেস সীমাবদ্ধ করে৷ শেয়ার্ড ইউআইডি বৈশিষ্ট্য ব্যবহার করে একটি শেয়ার্ড অ্যাপ্লিকেশান স্যান্ডবক্সের সাথে একটি ঘনিষ্ঠ সম্পর্ক অনুমোদিত যেখানে একই বিকাশকারী কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ তাদের ম্যানিফেস্টে একটি শেয়ার করা 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 এর যাচাইকরণ বিভাগটি দেখুন।
,অ্যাপ সাইনিং ডেভেলপারদের অ্যাপের লেখককে শনাক্ত করতে এবং জটিল ইন্টারফেস এবং অনুমতি তৈরি না করেই তাদের অ্যাপ আপডেট করতে দেয়। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ অবশ্যই বিকাশকারী দ্বারা স্বাক্ষরিত হতে হবে। যে অ্যাপগুলি স্বাক্ষর না করে ইনস্টল করার চেষ্টা করে সেগুলি হয় Google Play বা Android ডিভাইসে প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যান করা হয়৷
Google Play-তে, অ্যাপ সাইনিং ব্রিজ ডেভেলপারের সঙ্গে Google-এর আস্থা এবং ডেভেলপারদের তাদের অ্যাপের ওপর আস্থা রয়েছে। বিকাশকারীরা জানেন যে তাদের অ্যাপটি Android ডিভাইসে সরবরাহ করা হয়েছে, অপরিবর্তিত রয়েছে; এবং ডেভেলপারদের তাদের অ্যাপের আচরণের জন্য দায়ী করা যেতে পারে।
অ্যান্ড্রয়েডে, অ্যাপ সাইনিং হল একটি অ্যাপকে তার অ্যাপ্লিকেশন স্যান্ডবক্সে রাখার প্রথম ধাপ। স্বাক্ষরিত অ্যাপ সার্টিফিকেট নির্ধারণ করে যে কোন ইউজার আইডি কোন অ্যাপের সাথে যুক্ত; বিভিন্ন অ্যাপ বিভিন্ন ইউজার আইডির অধীনে চলে। অ্যাপ সাইনিং নিশ্চিত করে যে একটি অ্যাপ সু-সংজ্ঞায়িত IPC ছাড়া অন্য কোনো অ্যাপ অ্যাক্সেস করতে পারবে না।
যখন একটি অ্যাপ্লিকেশান (APK ফাইল) একটি Android ডিভাইসে ইনস্টল করা হয়, তখন প্যাকেজ ম্যানেজার যাচাই করে যে APKটি সেই APK-এ অন্তর্ভুক্ত শংসাপত্রের সাথে সঠিকভাবে স্বাক্ষর করা হয়েছে। যদি শংসাপত্রটি (অথবা, আরও সঠিকভাবে, সার্টিফিকেটের সর্বজনীন কী) ডিভাইসে অন্য যেকোন APK সাইন করার জন্য ব্যবহৃত কীটির সাথে মেলে, তাহলে নতুন APK-এর ম্যানিফেস্টে উল্লেখ করার বিকল্প রয়েছে যে এটি একইভাবে স্বাক্ষরিত অন্যদের সাথে একটি UID শেয়ার করে। APK
অ্যাপগুলি তৃতীয় পক্ষের (OEM, অপারেটর, বিকল্প বাজার) দ্বারা স্বাক্ষরিত হতে পারে বা স্ব-স্বাক্ষরিত হতে পারে৷ Android স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে কোড স্বাক্ষর প্রদান করে যা বিকাশকারীরা বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারে। অ্যাপগুলিতে কেন্দ্রীয় কর্তৃপক্ষের স্বাক্ষর থাকতে হবে না। Android বর্তমানে অ্যাপ সার্টিফিকেটের জন্য CA যাচাইকরণ করে না।
অ্যাপ্লিকেশানগুলি স্বাক্ষর সুরক্ষা স্তরে সুরক্ষা অনুমতিগুলিও ঘোষণা করতে সক্ষম হয়, স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্সগুলি বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপগুলিতে অ্যাক্সেস সীমাবদ্ধ করে৷ শেয়ার্ড ইউআইডি বৈশিষ্ট্য ব্যবহার করে একটি শেয়ার্ড অ্যাপ্লিকেশান স্যান্ডবক্সের সাথে একটি ঘনিষ্ঠ সম্পর্ক অনুমোদিত যেখানে একই বিকাশকারী কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ তাদের ম্যানিফেস্টে একটি শেয়ার করা 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 এর যাচাইকরণ বিভাগটি দেখুন।