অ্যাপ্লিকেশন উপাদান
অ্যান্ড্রয়েড মোবাইল ডিভাইসের জন্য একটি ওপেন সোর্স প্ল্যাটফর্ম এবং অ্যাপ্লিকেশন পরিবেশ প্রদান করে। মূল অপারেটিং সিস্টেম লিনাক্স কার্নেলের উপর ভিত্তি করে। অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি প্রায়শই জাভা প্রোগ্রামিং ভাষায় লেখা হয় এবং অ্যান্ড্রয়েড রানটাইম (এআরটি) ভার্চুয়াল মেশিনে চালিত হয়। তবে, অ্যাপ্লিকেশনগুলি নেটিভ কোডেও লেখা যেতে পারে। .apk ফাইল এক্সটেনশন সহ একটি একক ফাইল থেকে অ্যাপ্লিকেশনগুলি ইনস্টল করা হয়৷
প্রধান অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিল্ডিং ব্লক হল:
AndroidManifest.xml : AndroidManifest.xml ফাইল হল একটি কন্ট্রোল ফাইল যা সিস্টেমকে বলে যে সমস্ত শীর্ষ-স্তরের উপাদানগুলির (বিশেষত কার্যকলাপ, পরিষেবা, সম্প্রচার রিসিভার, এবং নীচে বর্ণিত বিষয়বস্তু প্রদানকারী) একটি অ্যাপ্লিকেশনে কী করতে হবে৷ এটি কোন অনুমতির প্রয়োজন তাও উল্লেখ করে।
ক্রিয়াকলাপ : একটি কার্যকলাপ হল, সাধারণত, একটি একক, ব্যবহারকারী-কেন্দ্রিক কাজের জন্য কোড। এটি সাধারণত ব্যবহারকারীর কাছে একটি UI প্রদর্শন অন্তর্ভুক্ত করে, তবে এটির প্রয়োজন নেই -- কিছু কার্যকলাপ কখনই UI প্রদর্শন করে না। সাধারণত, অ্যাপ্লিকেশনের ক্রিয়াকলাপগুলির মধ্যে একটি হল একটি অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট।
পরিষেবাগুলি : একটি পরিষেবা হল কোডের একটি অংশ যা ব্যাকগ্রাউন্ডে চলে। এটি তার নিজস্ব প্রক্রিয়ায় বা অন্য অ্যাপ্লিকেশনের প্রক্রিয়ার পরিপ্রেক্ষিতে চলতে পারে। অন্যান্য উপাদানগুলি একটি পরিষেবার সাথে "আবদ্ধ" করে এবং দূরবর্তী পদ্ধতি কলের মাধ্যমে এটিতে পদ্ধতিগুলি আহ্বান করে। একটি পরিষেবার একটি উদাহরণ হল একটি মিডিয়া প্লেয়ার: এমনকি যখন ব্যবহারকারী মিডিয়া-নির্বাচন UI ছেড়ে দেয়, ব্যবহারকারী সম্ভবত এখনও সঙ্গীত বাজানোর জন্য ইচ্ছুক। UI সম্পূর্ণ হয়ে গেলেও একটি পরিষেবা সঙ্গীতকে চালু রাখে।
ব্রডকাস্ট রিসিভার : একটি ব্রডকাস্ট রিসিভার হল এমন একটি বস্তু যা অপারেটিং সিস্টেম বা অন্য কোনও অ্যাপ্লিকেশন দ্বারা ইস্যু করা হলে একটি আইপিসি মেকানিজম যা ইনটেন্ট নামে পরিচিত। একটি অ্যাপ্লিকেশন কম ব্যাটারি বার্তার জন্য একটি রিসিভার নিবন্ধন করতে পারে, উদাহরণস্বরূপ, এবং সেই তথ্যের ভিত্তিতে তার আচরণ পরিবর্তন করতে পারে৷
অ্যান্ড্রয়েড অনুমতি মডেল: সুরক্ষিত API অ্যাক্সেস করা
অ্যান্ড্রয়েডের সমস্ত অ্যাপ্লিকেশন একটি অ্যাপ্লিকেশন স্যান্ডবক্সে চলে৷ ডিফল্টরূপে, একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন শুধুমাত্র সীমিত পরিসরের সিস্টেম রিসোর্স অ্যাক্সেস করতে পারে। সিস্টেমটি এমন সংস্থানগুলিতে Android অ্যাপ্লিকেশন অ্যাক্সেস পরিচালনা করে যা ভুলভাবে বা দূষিতভাবে ব্যবহার করা হলে, ব্যবহারকারীর অভিজ্ঞতা, নেটওয়ার্ক বা ডিভাইসে ডেটার উপর বিরূপ প্রভাব ফেলতে পারে।
এই নিষেধাজ্ঞাগুলি বিভিন্ন আকারে প্রয়োগ করা হয়। কিছু ক্ষমতা সংবেদনশীল কার্যকারিতা (যেমন সিম কার্ড সরাসরি ম্যানিপুলেট করার জন্য কোন Android API নেই) API-এর একটি ইচ্ছাকৃত অভাব দ্বারা সীমাবদ্ধ। কিছু ক্ষেত্রে, ভূমিকা আলাদা করা একটি নিরাপত্তা পরিমাপ প্রদান করে, যেমন সঞ্চয়ের প্রতি-অ্যাপ্লিকেশন বিচ্ছিন্নতার সাথে। অন্যান্য দৃষ্টান্তে, সংবেদনশীল APIগুলি বিশ্বস্ত অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহারের উদ্দেশ্যে এবং অনুমতি নামে পরিচিত একটি সুরক্ষা ব্যবস্থার মাধ্যমে সুরক্ষিত।
এই সুরক্ষিত APIগুলির মধ্যে রয়েছে:
- ক্যামেরা ফাংশন
- অবস্থান তথ্য (GPS)
- ব্লুটুথ ফাংশন
- টেলিফোনি ফাংশন
- এসএমএস/এমএমএস ফাংশন
- নেটওয়ার্ক/ডেটা সংযোগ
এই সম্পদগুলি শুধুমাত্র অপারেটিং সিস্টেমের মাধ্যমে অ্যাক্সেসযোগ্য। ডিভাইসে সুরক্ষিত API ব্যবহার করতে, একটি অ্যাপ্লিকেশনকে অবশ্যই তার ম্যানিফেস্টে প্রয়োজনীয় ক্ষমতাগুলি সংজ্ঞায়িত করতে হবে৷ সমস্ত Android সংস্করণ 6.0 এবং উচ্চতর একটি রানটাইম অনুমতি মডেল ব্যবহার করে। যদি কোনও ব্যবহারকারী কোনও অ্যাপ থেকে এমন একটি বৈশিষ্ট্যের জন্য অনুরোধ করে যার জন্য একটি সুরক্ষিত API প্রয়োজন হয় তবে সিস্টেমটি একটি ডায়ালগ প্রদর্শন করে, ব্যবহারকারীকে অনুমতি অস্বীকার করতে বা অনুমতি দিতে অনুরোধ করে।
একবার মঞ্জুর হলে, যতক্ষণ পর্যন্ত এটি ইনস্টল করা থাকে ততক্ষণ পর্যন্ত অনুমতিগুলি প্রয়োগ করা হয়৷ ব্যবহারকারীর বিভ্রান্তি এড়াতে, সিস্টেমটি ব্যবহারকারীকে আবার অ্যাপ্লিকেশনটিকে দেওয়া অনুমতিগুলির বিষয়ে অবহিত করে না এবং মূল অপারেটিং সিস্টেমে অন্তর্ভুক্ত বা OEM দ্বারা বান্ডিল করা অ্যাপ্লিকেশনগুলি ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করে না। একটি অ্যাপ্লিকেশন আনইনস্টল করা হলে অনুমতিগুলি সরানো হয়, তাই পরবর্তীতে পুনরায় ইনস্টলেশনের ফলে আবার অনুমতিগুলি প্রদর্শিত হবে৷
ডিভাইস সেটিংসের মধ্যে, ব্যবহারকারীরা তাদের পূর্বে ইনস্টল করা অ্যাপ্লিকেশনগুলির অনুমতি দেখতে সক্ষম৷ ব্যবহারকারীরা যখন বেছে নেয় তখন বিশ্বব্যাপী কিছু কার্যকারিতা বন্ধ করতে পারে, যেমন জিপিএস, রেডিও বা ওয়াই-ফাই অক্ষম করা।
ইভেন্টে যে একটি অ্যাপ্লিকেশন একটি সুরক্ষিত বৈশিষ্ট্য ব্যবহার করার চেষ্টা করে যা অ্যাপ্লিকেশনের ম্যানিফেস্টে ঘোষণা করা হয়নি, অনুমতি ব্যর্থতার ফলে সাধারণত একটি নিরাপত্তা ব্যতিক্রম অ্যাপ্লিকেশনে ফিরে আসে। প্রটেক্টেড এপিআই পারমিশন চেকগুলি ঠেকাতে সম্ভাব্য সর্বনিম্ন স্তরে প্রয়োগ করা হয়। সুরক্ষিত API-এ অ্যাক্সেসের অনুরোধ করার সময় একটি অ্যাপ্লিকেশন ইনস্টল করা হলে ব্যবহারকারীর বার্তা পাঠানোর একটি উদাহরণ চিত্র 2- এ দেখানো হয়েছে।
সিস্টেমের ডিফল্ট অনুমতিগুলি https://developer.android.com/reference/android/Manifest.permission.html এ বর্ণনা করা হয়েছে। অন্যান্য অ্যাপ্লিকেশন ব্যবহারের জন্য অ্যাপ্লিকেশনগুলি তাদের নিজস্ব অনুমতি ঘোষণা করতে পারে। এই ধরনের অনুমতি উপরের অবস্থানে তালিকাভুক্ত করা হয় না.
একটি অনুমতি সংজ্ঞায়িত করার সময় একটি সুরক্ষা লেভেল অ্যাট্রিবিউট সিস্টেমকে বলে যে কীভাবে ব্যবহারকারীকে অনুমতির প্রয়োজন এমন অ্যাপ্লিকেশন সম্পর্কে অবহিত করা হবে, বা কাকে অনুমতি দেওয়ার অনুমতি দেওয়া হয়েছে। অ্যাপ্লিকেশান নির্দিষ্ট অনুমতিগুলি তৈরি এবং ব্যবহার করার বিশদ বিবরণ https://developer.android.com/guide/topics/security/security.html এ বর্ণিত হয়েছে৷
কিছু ডিভাইসের ক্ষমতা আছে, যেমন এসএমএস সম্প্রচারের অভিপ্রায় পাঠানোর ক্ষমতা, যেগুলি তৃতীয় পক্ষের অ্যাপ্লিকেশনের জন্য উপলব্ধ নয়, তবে এটি OEM দ্বারা পূর্বে ইনস্টল করা অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহার করা যেতে পারে৷ এই অনুমতিগুলি signatureOrSystem অনুমতি ব্যবহার করে।
ব্যবহারকারীরা তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি কীভাবে বোঝেন৷
অ্যান্ড্রয়েড চেষ্টা করে যে ব্যবহারকারীরা যখন তারা তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির সাথে ইন্টারঅ্যাক্ট করে তখন তাদের কাছে এটি পরিষ্কার করে দেয় এবং ব্যবহারকারীদের সেই অ্যাপ্লিকেশনগুলির ক্ষমতা সম্পর্কে অবহিত করে৷ যেকোনো অ্যাপ্লিকেশন ইনস্টল করার আগে, ব্যবহারকারীকে অ্যাপ্লিকেশনটি অনুরোধ করা বিভিন্ন অনুমতি সম্পর্কে একটি স্পষ্ট বার্তা দেখানো হয়। ইনস্টল করার পরে, ব্যবহারকারীকে আবার কোনো অনুমতি নিশ্চিত করার জন্য অনুরোধ করা হয় না।
ইনস্টলেশনের আগে অবিলম্বে অনুমতি দেখানোর অনেক কারণ আছে। এটি হল যখন ব্যবহারকারী সক্রিয়ভাবে অ্যাপ্লিকেশন, বিকাশকারী এবং কার্যকারিতা সম্পর্কে তথ্য পর্যালোচনা করে তা নির্ধারণ করতে এটি তাদের চাহিদা এবং প্রত্যাশার সাথে মেলে কিনা। এটিও গুরুত্বপূর্ণ যে তারা এখনও অ্যাপটির সাথে মানসিক বা আর্থিক প্রতিশ্রুতি স্থাপন করেনি এবং সহজেই অন্যান্য বিকল্প অ্যাপ্লিকেশনের সাথে অ্যাপ্লিকেশনটিকে তুলনা করতে পারে।
কিছু অন্যান্য প্ল্যাটফর্ম ব্যবহারকারীর বিজ্ঞপ্তির জন্য একটি ভিন্ন পদ্ধতি ব্যবহার করে, প্রতিটি সেশনের শুরুতে বা অ্যাপ্লিকেশন ব্যবহারের সময় অনুমতির অনুরোধ করে। অ্যান্ড্রয়েডের দৃষ্টিভঙ্গি হল ব্যবহারকারীরা ইচ্ছামত অ্যাপ্লিকেশনগুলির মধ্যে নির্বিঘ্নে পরিবর্তন করতে পারে৷ প্রতিবার নিশ্চিতকরণ প্রদান করা ব্যবহারকারীকে ধীর করে দেবে এবং অ্যান্ড্রয়েডকে একটি দুর্দান্ত ব্যবহারকারীর অভিজ্ঞতা প্রদান করতে বাধা দেবে। ইনস্টল করার সময় ব্যবহারকারীর পর্যালোচনার অনুমতি থাকলে ব্যবহারকারীরা অস্বস্তি বোধ করলে অ্যাপ্লিকেশনটি ইনস্টল না করার বিকল্প দেয়।
এছাড়াও, অনেক ইউজার ইন্টারফেস গবেষণায় দেখা গেছে যে ব্যবহারকারীকে অতিরিক্ত প্রম্পট করার ফলে ব্যবহারকারী দেখানো যেকোনো ডায়ালগে "ঠিক আছে" বলা শুরু করে। অ্যান্ড্রয়েডের নিরাপত্তা লক্ষ্যগুলির মধ্যে একটি হল কার্যকরভাবে গুরুত্বপূর্ণ নিরাপত্তা তথ্য ব্যবহারকারীর কাছে পৌঁছে দেওয়া, যা ব্যবহারকারীকে উপেক্ষা করার জন্য প্রশিক্ষণ দেওয়া হবে এমন ডায়ালগ ব্যবহার করে করা যাবে না। গুরুত্বপূর্ণ তথ্য একবার উপস্থাপন করার মাধ্যমে, এবং শুধুমাত্র যখন এটি গুরুত্বপূর্ণ হয়, ব্যবহারকারীরা কী বিষয়ে সম্মত হচ্ছেন সে সম্পর্কে চিন্তা করার সম্ভাবনা বেশি।
কিছু প্ল্যাটফর্ম অ্যাপ্লিকেশন কার্যকারিতা সম্পর্কে কোনো তথ্য প্রদর্শন না করা বেছে নেয়। এই পদ্ধতি ব্যবহারকারীদের সহজেই বুঝতে এবং অ্যাপ্লিকেশন ক্ষমতা নিয়ে আলোচনা করতে বাধা দেয়। যদিও সমস্ত ব্যবহারকারীর পক্ষে সর্বদা সম্পূর্ণরূপে জ্ঞাত সিদ্ধান্ত নেওয়া সম্ভব নয়, তবে Android অনুমতি মডেলটি ব্যবহারকারীদের একটি বিস্তৃত পরিসরের কাছে সহজেই অ্যাক্সেসযোগ্য অ্যাপ্লিকেশন সম্পর্কে তথ্য তৈরি করে৷ উদাহরণস্বরূপ, অপ্রত্যাশিত অনুমতির অনুরোধগুলি আরও পরিশীলিত ব্যবহারকারীদের অ্যাপ্লিকেশন কার্যকারিতা সম্পর্কে সমালোচনামূলক প্রশ্ন জিজ্ঞাসা করতে এবং তাদের উদ্বেগগুলিকে Google Play-এর মতো জায়গায় ভাগ করে নিতে পারে যেখানে সেগুলি সমস্ত ব্যবহারকারীর কাছে দৃশ্যমান।
অ্যাপ্লিকেশন ইনস্টলে অনুমতি - Google অনুবাদ | একটি ইনস্টল করা অ্যাপ্লিকেশনের অনুমতি - জিমেইল |
![]() | ![]() |
চিত্র 1. অ্যাপ্লিকেশনের জন্য অনুমতি প্রদর্শন
ইন্টারপ্রসেস কমিউনিকেশন
প্রসেসগুলি প্রথাগত UNIX-টাইপ মেকানিজম ব্যবহার করে যোগাযোগ করতে পারে। উদাহরণগুলির মধ্যে ফাইল সিস্টেম, স্থানীয় সকেট বা সংকেত অন্তর্ভুক্ত। যাইহোক, Linux অনুমতি এখনও প্রযোজ্য।
অ্যান্ড্রয়েড নতুন আইপিসি মেকানিজমও প্রদান করে:
বাইন্ডার : একটি লাইটওয়েট ক্ষমতা-ভিত্তিক রিমোট পদ্ধতি কল প্রক্রিয়া যা উচ্চ কার্যক্ষমতার জন্য ডিজাইন করা হয়েছে যখন ইন-প্রসেস এবং ক্রস-প্রসেস কলগুলি সম্পাদন করা হয়। বাইন্ডার একটি কাস্টম লিনাক্স ড্রাইভার ব্যবহার করে প্রয়োগ করা হয়। https://developer.android.com/reference/android/os/Binder.html দেখুন।
পরিষেবা : পরিষেবাগুলি (উপরে আলোচনা করা হয়েছে) বাইন্ডার ব্যবহার করে সরাসরি অ্যাক্সেসযোগ্য ইন্টারফেস প্রদান করতে পারে।
অভিপ্রায় : একটি অভিপ্রায় একটি সাধারণ বার্তা বস্তু যা কিছু করার "অভিপ্রায়" প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশনটি একটি ওয়েব পৃষ্ঠা প্রদর্শন করতে চায়, তবে এটি একটি ইন্টেন্ট উদাহরণ তৈরি করে এবং সিস্টেমের কাছে হস্তান্তর করে URL দেখার জন্য তার "ইন্টেন্ট" প্রকাশ করে। সিস্টেমটি কোডের অন্য কিছু অংশ (এই ক্ষেত্রে, ব্রাউজার) সনাক্ত করে যেটি সেই অভিপ্রায় কীভাবে পরিচালনা করতে হয় তা জানে এবং এটি চালায়। ইন্টেন্টগুলি সিস্টেম-ব্যাপী আকর্ষণীয় ইভেন্টগুলি (যেমন একটি বিজ্ঞপ্তি) সম্প্রচার করতেও ব্যবহার করা যেতে পারে। https://developer.android.com/reference/android/content/Intent.html দেখুন।
ContentProviders : একটি ContentProvider হল একটি ডেটা স্টোরহাউস যা ডিভাইসে ডেটা অ্যাক্সেস প্রদান করে; ক্লাসিক উদাহরণ হল ContentProvider যা ব্যবহারকারীর পরিচিতির তালিকা অ্যাক্সেস করতে ব্যবহৃত হয়। একটি অ্যাপ্লিকেশন এমন ডেটা অ্যাক্সেস করতে পারে যা অন্য অ্যাপ্লিকেশনগুলি একটি সামগ্রী সরবরাহকারীর মাধ্যমে প্রকাশ করেছে এবং একটি অ্যাপ্লিকেশন তার নিজস্ব ডেটা প্রকাশ করার জন্য তার নিজস্ব সামগ্রী সরবরাহকারীকেও সংজ্ঞায়িত করতে পারে৷ https://developer.android.com/reference/android/content/ContentProvider.html দেখুন।
যদিও নেটওয়ার্ক সকেট বা ওয়ার্ল্ড-রাইটেবল ফাইলের মতো অন্যান্য মেকানিজম ব্যবহার করে IPC প্রয়োগ করা সম্ভব, এইগুলি হল প্রস্তাবিত Android IPC ফ্রেমওয়ার্ক। অ্যান্ড্রয়েড ডেভেলপারদের ব্যবহারকারীদের ডেটা সুরক্ষিত করার জন্য এবং নিরাপত্তা দুর্বলতার প্রবর্তন এড়াতে সর্বোত্তম অনুশীলনগুলি ব্যবহার করতে উত্সাহিত করা হবে৷
খরচ-সংবেদনশীল API
একটি খরচ সংবেদনশীল API হল যে কোনও ফাংশন যা ব্যবহারকারী বা নেটওয়ার্কের জন্য একটি খরচ তৈরি করতে পারে। অ্যান্ড্রয়েড প্ল্যাটফর্মটি OS দ্বারা নিয়ন্ত্রিত সুরক্ষিত APIগুলির তালিকায় ব্যয় সংবেদনশীল APIগুলিকে রেখেছে৷ ব্যবহারকারীকে খরচ সংবেদনশীল API ব্যবহার করার অনুরোধ করে তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির সুস্পষ্ট অনুমতি দিতে হবে। এই APIগুলির মধ্যে রয়েছে:
- টেলিফোনি
- এসএমএস/এমএমএস
- নেটওয়ার্ক/ডেটা
- ইন-অ্যাপ বিলিং
- NFC অ্যাক্সেস
Android 4.2 এসএমএস ব্যবহারে আরও নিয়ন্ত্রণ যোগ করে। যদি কোনও অ্যাপ্লিকেশন প্রিমিয়াম পরিষেবা ব্যবহার করে এমন একটি শর্ট কোডে এসএমএস পাঠানোর চেষ্টা করে যা অতিরিক্ত চার্জের কারণ হতে পারে তবে Android একটি বিজ্ঞপ্তি প্রদান করবে। ব্যবহারকারী অ্যাপ্লিকেশনটিকে বার্তা পাঠাতে বা ব্লক করার অনুমতি দেবেন কিনা তা চয়ন করতে পারেন।
সিম কার্ড অ্যাক্সেস
সিম কার্ডে নিম্ন স্তরের অ্যাক্সেস তৃতীয় পক্ষের অ্যাপগুলিতে উপলব্ধ নয়৷ OS সিম কার্ড মেমরিতে ব্যক্তিগত তথ্য (পরিচিতি) অ্যাক্সেস সহ সিম কার্ডের সাথে সমস্ত যোগাযোগ পরিচালনা করে। অ্যাপ্লিকেশনগুলিও AT কমান্ডগুলি অ্যাক্সেস করতে পারে না, কারণ এগুলি একচেটিয়াভাবে রেডিও ইন্টারফেস লেয়ার (RIL) দ্বারা পরিচালিত হয়। RIL এই কমান্ডগুলির জন্য কোন উচ্চ স্তরের API প্রদান করে না।
ব্যক্তিগত তথ্য
অ্যান্ড্রয়েড এমন APIগুলিকে রেখেছে যা ব্যবহারকারীর ডেটাতে অ্যাক্সেস প্রদান করে সুরক্ষিত APIগুলির সেটে৷ সাধারণ ব্যবহারের সাথে, অ্যান্ড্রয়েড ডিভাইসগুলি ব্যবহারকারীদের দ্বারা ইনস্টল করা তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির মধ্যে ব্যবহারকারীর ডেটাও জমা করবে৷ যে অ্যাপ্লিকেশানগুলি এই তথ্য শেয়ার করতে বেছে নেয় তারা তৃতীয় পক্ষের অ্যাপ্লিকেশন থেকে ডেটা রক্ষা করতে Android OS অনুমতি পরীক্ষা ব্যবহার করতে পারে৷
![শুধুমাত্র সুরক্ষিত API-এর মাধ্যমে উপলব্ধ সংবেদনশীল ব্যবহারকারীর ডেটাতে অ্যাক্সেস](https://source.android.com/docs/security/images/permissions_check.png?authuser=0&hl=bn)
চিত্র 2. সংবেদনশীল ব্যবহারকারীর ডেটাতে অ্যাক্সেস শুধুমাত্র সুরক্ষিত API-এর মাধ্যমে উপলব্ধ
সিস্টেম কন্টেন্ট প্রদানকারী যেগুলিতে ব্যক্তিগত বা ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য থাকতে পারে যেমন পরিচিতি এবং ক্যালেন্ডার স্পষ্টভাবে চিহ্নিত অনুমতিগুলির সাথে তৈরি করা হয়েছে। এই গ্রানুলারিটি ব্যবহারকারীকে অ্যাপ্লিকেশনে যে ধরনের তথ্য প্রদান করা হতে পারে তার স্পষ্ট ইঙ্গিত দেয়। ইনস্টলেশনের সময়, একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন এই সংস্থানগুলি অ্যাক্সেস করার অনুমতির অনুরোধ করতে পারে। অনুমতি দেওয়া হলে, অ্যাপ্লিকেশনটি ইনস্টল করা যেতে পারে এবং এটি ইনস্টল করার সময় যে কোনো সময় অনুরোধ করা ডেটাতে অ্যাক্সেস থাকবে।
ব্যক্তিগত তথ্য সংগ্রহ করে এমন যেকোনো অ্যাপ্লিকেশনে, ডিফল্টরূপে, সেই ডেটা শুধুমাত্র নির্দিষ্ট অ্যাপ্লিকেশনের মধ্যেই সীমাবদ্ধ থাকবে। যদি একটি অ্যাপ্লিকেশন আইপিসি যদিও অন্যান্য অ্যাপ্লিকেশনগুলিতে ডেটা উপলব্ধ করতে পছন্দ করে, তবে অ্যাক্সেস প্রদানকারী অ্যাপ্লিকেশনটি অপারেটিং সিস্টেম দ্বারা প্রয়োগ করা IPC পদ্ধতিতে অনুমতি প্রয়োগ করতে পারে।
সংবেদনশীল ডেটা ইনপুট ডিভাইস
অ্যান্ড্রয়েড ডিভাইসগুলি প্রায়শই সংবেদনশীল ডেটা ইনপুট ডিভাইস সরবরাহ করে যা অ্যাপ্লিকেশনগুলিকে আশেপাশের পরিবেশের সাথে ইন্টারঅ্যাক্ট করতে দেয়, যেমন ক্যামেরা, মাইক্রোফোন বা জিপিএস। এই ডিভাইসগুলি অ্যাক্সেস করার জন্য একটি তৃতীয় পক্ষের অ্যাপ্লিকেশনের জন্য, এটিকে প্রথমে ব্যবহারকারীর দ্বারা স্পষ্টভাবে Android OS অনুমতি ব্যবহারের মাধ্যমে অ্যাক্সেস প্রদান করতে হবে৷ ইনস্টলেশনের পরে, ইনস্টলার ব্যবহারকারীকে নাম দ্বারা সেন্সরের অনুমতির অনুরোধ জানাবে।
যদি একটি অ্যাপ্লিকেশন ব্যবহারকারীর অবস্থান জানতে চায়, তাহলে অ্যাপ্লিকেশনটির ব্যবহারকারীর অবস্থান অ্যাক্সেস করার অনুমতি প্রয়োজন। ইনস্টলেশনের পরে, ইনস্টলার ব্যবহারকারীকে জিজ্ঞাসা করবে যে অ্যাপ্লিকেশনটি ব্যবহারকারীর অবস্থান অ্যাক্সেস করতে পারে কিনা। যে কোনো সময়ে, ব্যবহারকারী যদি তাদের অবস্থান অ্যাক্সেস করতে কোনো অ্যাপ্লিকেশন না চান, তাহলে ব্যবহারকারী "সেটিংস" অ্যাপ্লিকেশনটি চালাতে পারেন, "অবস্থান এবং নিরাপত্তা" এ যান এবং "বেতার নেটওয়ার্ক ব্যবহার করুন" এবং "জিপিএস স্যাটেলাইট সক্ষম করুন" টিক চিহ্ন মুক্ত করুন। . এটি ব্যবহারকারীর ডিভাইসে সমস্ত অ্যাপ্লিকেশনের জন্য অবস্থান ভিত্তিক পরিষেবাগুলিকে অক্ষম করবে৷
ডিভাইস মেটাডেটা
অ্যান্ড্রয়েড এমন ডেটাতে অ্যাক্সেস সীমিত করারও চেষ্টা করে যা অভ্যন্তরীণভাবে সংবেদনশীল নয়, কিন্তু পরোক্ষভাবে ব্যবহারকারী, ব্যবহারকারীর পছন্দ এবং তারা যেভাবে একটি ডিভাইস ব্যবহার করে তার বৈশিষ্ট্যগুলি প্রকাশ করতে পারে।
ডিফল্টরূপে অ্যাপ্লিকেশনগুলির অপারেটিং সিস্টেম লগ, ব্রাউজারের ইতিহাস, ফোন নম্বর, বা হার্ডওয়্যার/নেটওয়ার্ক শনাক্তকরণ তথ্যে অ্যাক্সেস নেই৷ যদি একটি অ্যাপ্লিকেশন ইনস্টল করার সময় এই তথ্য অ্যাক্সেসের অনুরোধ করে, তাহলে ইনস্টলার ব্যবহারকারীকে জিজ্ঞাসা করবে যে অ্যাপ্লিকেশনটি তথ্য অ্যাক্সেস করতে পারে কিনা। ব্যবহারকারী যদি অ্যাক্সেস না দেয় তবে অ্যাপ্লিকেশনটি ইনস্টল করা হবে না।
শংসাপত্র কর্তৃপক্ষ
অ্যান্ড্রয়েড ইনস্টল করা সিস্টেম শংসাপত্র কর্তৃপক্ষের একটি সেট অন্তর্ভুক্ত করে, যা বিশ্বস্ত সিস্টেম-ব্যাপী। Android 7.0-এর আগে, ডিভাইস নির্মাতারা তাদের ডিভাইসে পাঠানো CA-এর সেট পরিবর্তন করতে পারত। যাইহোক, 7.0 এবং তার উপরে চলমান ডিভাইসগুলিতে সিস্টেম CA-এর একটি অভিন্ন সেট থাকবে কারণ ডিভাইস নির্মাতাদের দ্বারা পরিবর্তনের আর অনুমতি নেই।
অ্যান্ড্রয়েড স্টক সেটে একটি নতুন পাবলিক CA হিসাবে যুক্ত হতে, CA-কে অবশ্যই Mozilla CA অন্তর্ভুক্তি প্রক্রিয়াটি সম্পূর্ণ করতে হবে এবং তারপর Android এর বিরুদ্ধে একটি বৈশিষ্ট্য অনুরোধ ফাইল করতে হবে ( https://code.google.com/p/android/issues/entry ) Android ওপেন সোর্স প্রজেক্টে (AOSP) স্টক Android CA সেটে CA যোগ করতে।
এখনও এমন CA আছে যেগুলি ডিভাইস-নির্দিষ্ট এবং AOSP CA-এর মূল সেটে অন্তর্ভুক্ত করা উচিত নয়, যেমন ক্যারিয়ারের ব্যক্তিগত CA যেগুলি এসএমএস/এমএমএস গেটওয়ের মতো ক্যারিয়ারের পরিকাঠামোর উপাদানগুলিকে নিরাপদে অ্যাক্সেস করার জন্য প্রয়োজন হতে পারে৷ ডিভাইস নির্মাতারা শুধুমাত্র ব্যক্তিগত CA গুলিকে সেই উপাদান/অ্যাপগুলিতে অন্তর্ভুক্ত করার জন্য উত্সাহিত করা হয় যেগুলিকে এই CAগুলিকে বিশ্বাস করতে হবে৷ আরও বিস্তারিত জানার জন্য, নেটওয়ার্ক নিরাপত্তা কনফিগারেশন দেখুন।
আবেদন স্বাক্ষর
কোড সাইনিং ডেভেলপারদের অ্যাপ্লিকেশনের লেখককে শনাক্ত করতে এবং জটিল ইন্টারফেস এবং অনুমতি ছাড়াই তাদের অ্যাপ্লিকেশন আপডেট করতে দেয়। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ্লিকেশন বিকাশকারী দ্বারা স্বাক্ষরিত হতে হবে। যে অ্যাপ্লিকেশনগুলি স্বাক্ষর না করে ইনস্টল করার চেষ্টা করে সেগুলি হয় Google Play বা Android ডিভাইসে প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যান করা হয়৷
Google Play-তে, অ্যাপ্লিকেশান সাইনিং ব্রিজ ডেভেলপারের সাথে Google-এর আস্থা এবং ডেভেলপার তাদের অ্যাপ্লিকেশনের সাথে যে আস্থা রাখে। বিকাশকারীরা জানেন যে তাদের অ্যাপ্লিকেশন সরবরাহ করা হয়েছে, অ্যান্ড্রয়েড ডিভাইসে অপরিবর্তিত; এবং বিকাশকারীদের তাদের আবেদনের আচরণের জন্য দায়বদ্ধ করা যেতে পারে।
অ্যান্ড্রয়েডে, অ্যাপ্লিকেশান স্যান্ডবক্সে অ্যাপ্লিকেশান রাখার প্রথম ধাপ হল অ্যাপ্লিকেশান সাইনিং৷ স্বাক্ষরিত অ্যাপ্লিকেশন শংসাপত্রটি সংজ্ঞায়িত করে যে কোন ব্যবহারকারী আইডি কোন অ্যাপ্লিকেশনের সাথে যুক্ত; বিভিন্ন ইউজার আইডির অধীনে বিভিন্ন অ্যাপ্লিকেশন চালানো হয়। আবেদন স্বাক্ষর নিশ্চিত করে যে একটি অ্যাপ্লিকেশন সু-সংজ্ঞায়িত IPC ব্যতীত অন্য কোনো অ্যাপ্লিকেশন অ্যাক্সেস করতে পারবে না।
যখন একটি অ্যাপ্লিকেশান (APK ফাইল) একটি Android ডিভাইসে ইনস্টল করা হয়, তখন প্যাকেজ ম্যানেজার যাচাই করে যে APKটি সেই APK-এ অন্তর্ভুক্ত শংসাপত্রের সাথে সঠিকভাবে স্বাক্ষর করা হয়েছে। যদি শংসাপত্রটি (অথবা, আরও সঠিকভাবে, সার্টিফিকেটের সর্বজনীন কী) ডিভাইসে অন্য যেকোন APK সাইন করার জন্য ব্যবহৃত কীটির সাথে মেলে, তাহলে নতুন APK এর ম্যানিফেস্টে উল্লেখ করার বিকল্প রয়েছে যে এটি একইভাবে অন্যটির সাথে একটি UID শেয়ার করবে। - স্বাক্ষরিত APK
আবেদনগুলি একটি তৃতীয় পক্ষের দ্বারা স্বাক্ষরিত হতে পারে (OEM, অপারেটর, বিকল্প বাজার) বা স্ব-স্বাক্ষরিত। Android স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে কোড স্বাক্ষর প্রদান করে যা বিকাশকারীরা বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারে। আবেদনগুলিতে কেন্দ্রীয় কর্তৃপক্ষের স্বাক্ষর করতে হবে না। Android বর্তমানে অ্যাপ্লিকেশন শংসাপত্রের জন্য CA যাচাইকরণ করে না।
অ্যাপ্লিকেশানগুলি স্বাক্ষর সুরক্ষা স্তরে সুরক্ষা অনুমতিগুলি ঘোষণা করতে সক্ষম হয়, স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্সগুলি বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপ্লিকেশনগুলিতে অ্যাক্সেস সীমাবদ্ধ করে৷ একটি শেয়ার্ড অ্যাপ্লিকেশন স্যান্ডবক্সের সাথে একটি ঘনিষ্ঠ সম্পর্ক শেয়ার্ড ইউআইডি বৈশিষ্ট্যের মাধ্যমে অনুমোদিত যেখানে একই বিকাশকারী কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ্লিকেশন তাদের ম্যানিফেস্টে একটি ভাগ করা UID ঘোষণা করতে পারে৷
আবেদন যাচাই
অ্যান্ড্রয়েড 4.2 এবং পরবর্তীতে অ্যাপ্লিকেশন যাচাইকরণ সমর্থন করে। ব্যবহারকারীরা "অ্যাপস যাচাইকরণ" সক্ষম করতে বেছে নিতে পারেন এবং ইনস্টলেশনের আগে একটি অ্যাপ্লিকেশন যাচাইকারীর দ্বারা অ্যাপ্লিকেশনগুলিকে মূল্যায়ন করতে পারেন৷ অ্যাপ যাচাইকরণ ব্যবহারকারীকে সতর্ক করতে পারে যদি তারা কোনও অ্যাপ ইনস্টল করার চেষ্টা করে যা ক্ষতিকারক হতে পারে; যদি কোনও অ্যাপ্লিকেশন বিশেষত খারাপ হয় তবে এটি ইনস্টলেশন ব্লক করতে পারে .
ডিজিটাল অধিকার ব্যাবস্থাপনা
অ্যান্ড্রয়েড প্ল্যাটফর্ম একটি এক্সটেনসিবল ডিআরএম ফ্রেমওয়ার্ক সরবরাহ করে যা অ্যাপ্লিকেশনগুলিকে বিষয়বস্তুর সাথে যুক্ত লাইসেন্সের সীমাবদ্ধতা অনুসারে অধিকার-সুরক্ষিত সামগ্রী পরিচালনা করতে দেয়। DRM ফ্রেমওয়ার্ক অনেক DRM স্কিম সমর্থন করে; কোন ডিআরএম স্কিমগুলি একটি ডিভাইস সমর্থন করে তা ডিভাইস প্রস্তুতকারকের উপর ছেড়ে দেওয়া হয়।
অ্যান্ড্রয়েড ডিআরএম ফ্রেমওয়ার্ক দুটি স্থাপত্য স্তরে প্রয়োগ করা হয়েছে (নীচের চিত্রটি দেখুন):
একটি ডিআরএম ফ্রেমওয়ার্ক এপিআই, যা অ্যান্ড্রয়েড অ্যাপ্লিকেশন ফ্রেমওয়ার্কের মাধ্যমে অ্যাপ্লিকেশনগুলির সাথে প্রকাশ করা হয় এবং স্ট্যান্ডার্ড অ্যাপ্লিকেশনগুলির জন্য ART VM এর মাধ্যমে চলে।
একটি নেটিভ কোড ডিআরএম ম্যানেজার, যা ডিআরএম ফ্রেমওয়ার্ক প্রয়োগ করে এবং বিভিন্ন ডিআরএম স্কিমের জন্য অধিকার ব্যবস্থাপনা এবং ডিক্রিপশন পরিচালনা করার জন্য ডিআরএম প্লাগ-ইনগুলির (এজেন্ট) জন্য একটি ইন্টারফেস প্রকাশ করে।
চিত্র 3. অ্যান্ড্রয়েড প্ল্যাটফর্মে ডিজিটাল রাইটস ম্যানেজমেন্টের আর্কিটেকচার