অ্যাপ নিরাপত্তা

এই পৃষ্ঠায় অ্যাপ নিরাপত্তার বিভিন্ন দিক বর্ণনা করা হয়েছে।

অ্যাপের উপাদানসমূহ

অ্যান্ড্রয়েড মোবাইল ডিভাইসের জন্য একটি ওপেন সোর্স প্ল্যাটফর্ম এবং অ্যাপ পরিবেশ প্রদান করে। এর মূল অপারেটিং সিস্টেমটি লিনাক্স কার্নেলের উপর ভিত্তি করে তৈরি। অ্যান্ড্রয়েড অ্যাপগুলো বেশিরভাগ ক্ষেত্রে জাভা প্রোগ্রামিং ভাষায় লেখা হয় এবং অ্যান্ড্রয়েড রানটাইম (ART) ভার্চুয়াল মেশিনে চলে। তবে, অ্যাপগুলো নেটিভ কোডেও লেখা যেতে পারে। অ্যাপগুলো APK ফাইল এক্সটেনশনসহ একটিমাত্র ফাইল থেকে ইনস্টল করা হয়।

অ্যান্ড্রয়েড অ্যাপের প্রধান নির্মাণ উপাদানগুলো হলো:

  • AndroidManifest.xml : AndroidManifest.xml ফাইলটি হলো সেই নিয়ন্ত্রণকারী ফাইল যা একটি অ্যাপের সমস্ত শীর্ষ-স্তরের উপাদানগুলির (বিশেষত অ্যাক্টিভিটি, সার্ভিস, ব্রডকাস্ট রিসিভার এবং কন্টেন্ট প্রোভাইডার, যা নিচে বর্ণনা করা হয়েছে) সাথে কী করতে হবে তা সিস্টেমকে বলে দেয়। এটি প্রয়োজনীয় অনুমতিগুলিও নির্দিষ্ট করে দেয়।

  • অ্যাক্টিভিটি: অ্যাক্টিভিটি হলো সাধারণত Activity ক্লাস ব্যবহার করে করা একটিমাত্র ব্যবহারকারী-কেন্দ্রিক কাজের কোড। একটি অ্যাক্টিভিটিতে সাধারণত ব্যবহারকারীকে একটি ইউজার ইন্টারফেস (UI) দেখানো হয়, কিন্তু তা বাধ্যতামূলক নয়; কিছু অ্যাক্টিভিটি কখনোই UI প্রদর্শন করে না। সাধারণত, অ্যাপের অ্যাক্টিভিটিগুলোর মধ্যে একটি হলো অ্যাপটিতে প্রবেশের প্রবেশপথ।

  • সার্ভিস: সার্ভিস হলো একগুচ্ছ কোড যা ব্যাকগ্রাউন্ডে চলে এবং এটি Service ক্লাসের উপর ভিত্তি করে তৈরি। এটি নিজস্ব প্রসেসে অথবা অন্য কোনো অ্যাপের প্রসেসের প্রেক্ষাপটে চলতে পারে। অন্যান্য কম্পোনেন্টগুলো একটি সার্ভিসের সাথে বাইন্ড হয় এবং রিমোট প্রসিডিউর কলের মাধ্যমে এর মেথডগুলো কল করে। একটি সার্ভিসের উদাহরণ হলো মিডিয়া প্লেয়ার: ব্যবহারকারী যখন মিডিয়া-নির্বাচন UI থেকে বেরিয়েও যান, তখনও তিনি সম্ভবত চান যে গান বাজতে থাকুক। UI-এর কাজ শেষ হয়ে গেলেও একটি সার্ভিস গান বাজতে থাকে।

  • ব্রডকাস্ট রিসিভার: একটি ব্রডকাস্ট রিসিভার হলো BroadcastReceiver ক্লাসের একটি অবজেক্ট। যখন অপারেটিং সিস্টেম বা অন্য কোনো অ্যাপ দ্বারা ইন্টেন্ট (যা Intent ক্লাসের একটি ইনস্ট্যান্স) নামে পরিচিত কোনো আইপিসি মেকানিজম জারি করা হয়, তখন এটি ইনস্ট্যানশিয়েট হয়। উদাহরণস্বরূপ, একটি অ্যাপ লো ব্যাটারি মেসেজের জন্য একটি রিসিভার রেজিস্টার করতে পারে এবং সেই তথ্যের উপর ভিত্তি করে তার আচরণ পরিবর্তন করতে পারে।

অ্যান্ড্রয়েড অনুমতি মডেল: সুরক্ষিত এপিআই অ্যাক্সেস করুন

অ্যান্ড্রয়েডের সমস্ত অ্যাপ একটি অ্যাপ্লিকেশন স্যান্ডবক্সে চলে। ডিফল্টরূপে, একটি অ্যান্ড্রয়েড অ্যাপ শুধুমাত্র সীমিত পরিসরের সিস্টেম রিসোর্স অ্যাক্সেস করতে পারে। সিস্টেম সেইসব রিসোর্সে অ্যান্ড্রয়েড অ্যাপের অ্যাক্সেস নিয়ন্ত্রণ করে, যেগুলো ভুলভাবে বা বিদ্বেষপূর্ণভাবে ব্যবহার করা হলে ব্যবহারকারীর অভিজ্ঞতা, নেটওয়ার্ক বা ডিভাইসের ডেটার উপর বিরূপ প্রভাব ফেলতে পারে।

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

এই সুরক্ষিত এপিআইগুলো হলো:

  • ক্যামেরার কার্যাবলী
  • অবস্থান ডেটা (GPS)
  • ব্লুটুথ ফাংশন
  • টেলিফোনি ফাংশন
  • এসএমএস/এমএমএস ফাংশন
  • নেটওয়ার্ক/ডেটা সংযোগ

এই রিসোর্সগুলো শুধুমাত্র অপারেটিং সিস্টেমের মাধ্যমেই অ্যাক্সেসযোগ্য। ডিভাইসে সুরক্ষিত এপিআই (API) ব্যবহার করার জন্য, একটি অ্যাপকে তার ম্যানিফেস্টে প্রয়োজনীয় ক্যাপাবিলিটিগুলো সংজ্ঞায়িত করতে হবে। অ্যান্ড্রয়েডের ৬.০ এবং তার উপরের সমস্ত সংস্করণ রানটাইম পারমিশন মডেল ব্যবহার করে। যদি কোনো ব্যবহারকারী কোনো অ্যাপ থেকে এমন কোনো ফিচারের জন্য অনুরোধ করেন যার জন্য একটি সুরক্ষিত এপিআই প্রয়োজন, তবে সিস্টেম একটি ডায়ালগ প্রদর্শন করে, যা ব্যবহারকারীকে অনুমতিটি প্রত্যাখ্যান বা অনুমোদন করতে বলে।

একবার অনুমতি দেওয়া হলে, অ্যাপটি ইনস্টল থাকা পর্যন্ত সেই অনুমতিগুলো কার্যকর থাকে। ব্যবহারকারীর বিভ্রান্তি এড়ানোর জন্য, সিস্টেমটি অ্যাপটিকে দেওয়া অনুমতিগুলো সম্পর্কে ব্যবহারকারীকে পুনরায় জানায় না, এবং যে অ্যাপগুলো মূল অপারেটিং সিস্টেমের অন্তর্ভুক্ত থাকে বা কোনো OEM দ্বারা বান্ডেল করা হয়, সেগুলো ব্যবহারকারীর কাছ থেকে অনুমতি চায় না। কোনো অ্যাপ আনইনস্টল করা হলে অনুমতিগুলোও মুছে যায়, তাই পরবর্তীতে পুনরায় ইনস্টল করলে অনুমতিগুলো আবার প্রদর্শিত হয়।

ডিভাইস সেটিংসের মধ্যে, ব্যবহারকারীরা তাদের পূর্বে ইনস্টল করা অ্যাপগুলির অনুমতি দেখতে পারেন। ব্যবহারকারীরা চাইলে কিছু কার্যকারিতা বিশ্বব্যাপী বন্ধও করতে পারেন, যেমন জিপিএস, রেডিও বা ওয়াই-ফাই নিষ্ক্রিয় করা।

যদি কোনো অ্যাপ এমন কোনো সুরক্ষিত ফিচার ব্যবহার করার চেষ্টা করে যা অ্যাপটির ম্যানিফেস্টে ঘোষিত নয়, তাহলে অনুমতির এই ব্যর্থতার ফলে সাধারণত অ্যাপটিতে একটি সিকিউরিটি এক্সেপশন থ্রো করা হয়। নিয়ম লঙ্ঘন প্রতিরোধ করার জন্য সুরক্ষিত এপিআই-এর অনুমতি যাচাই সর্বনিম্ন সম্ভাব্য স্তরে প্রয়োগ করা হয়। সুরক্ষিত এপিআই-গুলোতে অ্যাক্সেসের অনুরোধ করার সময় কোনো অ্যাপ ইনস্টল করা হলে ব্যবহারকারীকে যে মেসেজ পাঠানো হয়, তার একটি উদাহরণ চিত্র ২-এ দেখানো হয়েছে।

সিস্টেমের ডিফল্ট পারমিশনগুলো Manifest.permission ফাইলে বর্ণনা করা আছে। অ্যাপগুলো অন্যান্য অ্যাপের ব্যবহারের জন্য তাদের নিজস্ব পারমিশন ঘোষণা করতে পারে। এই ধরনের পারমিশনগুলো উপরের অবস্থানে তালিকাভুক্ত করা হয় না।

একটি পারমিশন নির্ধারণ করার সময়, একটি protectionLevel অ্যাট্রিবিউট সিস্টেমকে বলে দেয় যে, কোন অ্যাপগুলোর পারমিশন প্রয়োজন সে সম্পর্কে ব্যবহারকারীকে কীভাবে জানানো হবে, অথবা কাকে সেই পারমিশনটি রাখার অনুমতি দেওয়া হয়েছে। অ্যাপ-নির্দিষ্ট পারমিশন তৈরি এবং ব্যবহার করার বিস্তারিত বিবরণ 'সিকিউরিটি চেকলিস্ট' -এ বর্ণনা করা হয়েছে।

ডিভাইসের কিছু সক্ষমতা রয়েছে, যেমন এসএমএস ব্রডকাস্ট ইন্টেন্ট পাঠানোর ক্ষমতা, যা থার্ড-পার্টি অ্যাপের জন্য উপলব্ধ নয়, কিন্তু OEM দ্বারা আগে থেকে ইনস্টল করা অ্যাপগুলো তা ব্যবহার করতে পারে। এই অনুমতিগুলো signatureOrSystem পারমিশন ব্যবহার করে।

ব্যবহারকারীরা কীভাবে থার্ড-পার্টি অ্যাপ বোঝেন

অ্যান্ড্রয়েড ব্যবহারকারীদের কাছে এটা স্পষ্ট করার চেষ্টা করে যে, তারা যখন থার্ড-পার্টি অ্যাপ ব্যবহার করেন, তখন সেই অ্যাপগুলোর কী কী ক্ষমতা রয়েছে। যেকোনো অ্যাপ ইনস্টল করার আগে, অ্যাপটি যে বিভিন্ন অনুমতি চাইছে, সে সম্পর্কে ব্যবহারকারীকে একটি স্পষ্ট বার্তা দেখানো হয়। ইনস্টল করার পরে, কোনো অনুমতি নিশ্চিত করার জন্য ব্যবহারকারীকে আর অনুরোধ করা হয় না।

ইনস্টলেশনের ঠিক আগে পারমিশন দেখানোর অনেক কারণ রয়েছে। এই সময়ে ব্যবহারকারী অ্যাপ, ডেভেলপার এবং এর কার্যকারিতা সম্পর্কে তথ্য সক্রিয়ভাবে পর্যালোচনা করেন, এটি তাদের প্রয়োজন ও প্রত্যাশার সাথে মেলে কিনা তা নির্ধারণ করার জন্য। এটাও গুরুত্বপূর্ণ যে, তারা তখনও অ্যাপটির প্রতি কোনো মানসিক বা আর্থিক প্রতিশ্রুতি স্থাপন করেননি এবং সহজেই অ্যাপটিকে অন্যান্য বিকল্প অ্যাপের সাথে তুলনা করতে পারেন।

অন্য কিছু প্ল্যাটফর্ম ব্যবহারকারীকে জানানোর জন্য ভিন্ন পদ্ধতি ব্যবহার করে, যেমন প্রতিটি সেশনের শুরুতে বা অ্যাপ ব্যবহারের সময় অনুমতি চাওয়া। অ্যান্ড্রয়েডের মূল লক্ষ্য হলো ব্যবহারকারীরা যেন ইচ্ছামতো নির্বিঘ্নে বিভিন্ন অ্যাপের মধ্যে যাতায়াত করতে পারে। প্রতিবার অনুমতি চাইলে তা ব্যবহারকারীর গতি কমিয়ে দেবে এবং অ্যান্ড্রয়েডকে একটি চমৎকার ব্যবহারকারীর অভিজ্ঞতা প্রদানে বাধা দেবে। অ্যাপ ইনস্টল করার সময় অনুমতিগুলো পর্যালোচনা করার সুযোগ থাকলে, ব্যবহারকারী অস্বস্তি বোধ করলে অ্যাপটি ইনস্টল না করার বিকল্প পান।

এছাড়াও, অনেক ইউজার ইন্টারফেস গবেষণায় দেখা গেছে যে, ব্যবহারকারীকে অতিরিক্ত প্রম্পট করলে তিনি প্রদর্শিত যেকোনো ডায়ালগেই 'ওকে' ক্লিক করতে শুরু করেন। অ্যান্ড্রয়েডের অন্যতম নিরাপত্তা লক্ষ্য হলো ব্যবহারকারীর কাছে গুরুত্বপূর্ণ নিরাপত্তা তথ্য কার্যকরভাবে পৌঁছে দেওয়া, যা এমন ডায়ালগের মাধ্যমে করা সম্ভব নয়, যেগুলোকে উপেক্ষা করতে ব্যবহারকারী অভ্যস্ত। গুরুত্বপূর্ণ তথ্য একবার এবং শুধুমাত্র যখন তা জরুরি, তখনই উপস্থাপন করলে, ব্যবহারকারী কিসে সম্মতি দিচ্ছেন তা নিয়ে ভাবার সম্ভাবনা বেশি থাকে।

কিছু প্ল্যাটফর্ম অ্যাপের কার্যকারিতা সম্পর্কে কোনো তথ্যই প্রদর্শন না করার সিদ্ধান্ত নেয়। এই পদ্ধতি ব্যবহারকারীদের অ্যাপের সক্ষমতা সহজে বুঝতে ও আলোচনা করতে বাধা দেয়। যদিও সব ব্যবহারকারীর পক্ষে সবসময় পুরোপুরি জেনেবুঝে সিদ্ধান্ত নেওয়া সম্ভব নয়, অ্যান্ড্রয়েডের পারমিশন মডেলটি বিভিন্ন ধরনের ব্যবহারকারীর কাছে অ্যাপ সম্পর্কিত তথ্য সহজলভ্য করে তোলে। উদাহরণস্বরূপ, অপ্রত্যাশিত পারমিশনের অনুরোধ আরও অভিজ্ঞ ব্যবহারকারীদের অ্যাপের কার্যকারিতা সম্পর্কে গুরুত্বপূর্ণ প্রশ্ন জিজ্ঞাসা করতে এবং গুগল প্লে-এর মতো প্ল্যাটফর্মে তাদের উদ্বেগ প্রকাশ করতে উৎসাহিত করতে পারে, যেখানে তা সকল ব্যবহারকারীর কাছে দৃশ্যমান থাকে।

অ্যাপ ইনস্টলের সময় অনুমতি — গুগল ট্রান্সলেট ইনস্টল করা অ্যাপের অনুমতি — জিমেইল
অ্যাপ্লিকেশন ইনস্টল করার সময় অনুমতি -- গুগল ট্রান্সলেটইনস্টল করা অ্যাপ্লিকেশনের অনুমতি — জিমেইল

চিত্র ১. অ্যাপগুলোর অনুমতিসমূহের প্রদর্শন।

আন্তঃপ্রক্রিয়া যোগাযোগ

প্রসেসগুলো যেকোনো প্রচলিত ইউনিক্স-ধাঁচের পদ্ধতি ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে পারে। উদাহরণস্বরূপ, ফাইলসিস্টেম, লোকাল সকেট বা সিগন্যাল। তবে, লিনাক্সের পারমিশন এক্ষেত্রেও প্রযোজ্য থাকে।

অ্যান্ড্রয়েড নতুন আইপিসি প্রক্রিয়াও প্রদান করে:

  • বাইন্ডার: একটি লাইটওয়েট ক্যাপাবিলিটি-ভিত্তিক রিমোট প্রসিডিউর কল মেকানিজম, যা ইন-প্রসেস এবং ক্রস-প্রসেস কল সম্পাদনের ক্ষেত্রে উচ্চ পারফরম্যান্সের জন্য ডিজাইন করা হয়েছে। বাইন্ডার একটি কাস্টম লিনাক্স ড্রাইভার ব্যবহার করে ইমপ্লিমেন্ট করা হয়েছে। ক্লাসটির বর্ণনার জন্য, বাইন্ডার দেখুন।

  • সার্ভিসসমূহ: সার্ভিসসমূহ এমন ইন্টারফেস প্রদান করতে পারে যা বাইন্ডার ব্যবহার করে সরাসরি অ্যাক্সেস করা যায়। আরও বিস্তারিত বিবরণের জন্য, অ্যাপের উপাদানসমূহ দেখুন।

  • ইনটেন্ট: ইনটেন্ট হলো একটি সাধারণ মেসেজ অবজেক্ট যা কোনো কিছু করার অভিপ্রায়কে প্রকাশ করে। উদাহরণস্বরূপ, যদি আপনার অ্যাপ একটি ওয়েব পেজ প্রদর্শন করতে চায়, তবে এটি একটি ইনটেন্ট ইনস্ট্যান্স তৈরি করে এবং সিস্টেমের কাছে হস্তান্তর করার মাধ্যমে URL-টি দেখার অভিপ্রায় প্রকাশ করে। সিস্টেম এমন কোনো কোড খুঁজে বের করে (এই ক্ষেত্রে, ব্রাউজার) যা জানে কীভাবে সেই ইনটেন্টটি পরিচালনা করতে হয়, এবং সেটি চালায়। ইনটেন্ট সিস্টেম-ব্যাপী গুরুত্বপূর্ণ ইভেন্ট (যেমন একটি নোটিফিকেশন) সম্প্রচার করতেও ব্যবহার করা যেতে পারে। এই ক্লাসটির বর্ণনার জন্য, ইনটেন্ট দেখুন।

  • কন্টেন্ট প্রোভাইডার: একটি কন্টেন্ট প্রোভাইডার হলো একটি ডেটা ভান্ডার যা ডিভাইসের ডেটাতে অ্যাক্সেস প্রদান করে; এর একটি ক্লাসিক উদাহরণ হলো সেই কন্টেন্ট প্রোভাইডার যা ব্যবহারকারীর কন্ট্যাক্ট লিস্ট অ্যাক্সেস করতে ব্যবহৃত হয়। একটি অ্যাপ কন্টেন্ট প্রোভাইডারের মাধ্যমে অন্য অ্যাপের প্রকাশ করা ডেটা অ্যাক্সেস করতে পারে, এবং একটি অ্যাপ তার নিজের ডেটা প্রকাশ করার জন্য নিজস্ব কন্টেন্ট প্রোভাইডারও সংজ্ঞায়িত করতে পারে। এই ক্লাসটির বর্ণনার জন্য, ContentProvider দেখুন।

যদিও নেটওয়ার্ক সকেট বা ওয়ার্ল্ড-রাইটেবল ফাইলের মতো অন্যান্য পদ্ধতি ব্যবহার করে আইপিসি (IPC) বাস্তবায়ন করা সম্ভব, তবুও এগুলিই হলো প্রস্তাবিত অ্যান্ড্রয়েড আইপিসি ফ্রেমওয়ার্ক। অ্যান্ড্রয়েড ডেভেলপারদের ব্যবহারকারীদের ডেটা সুরক্ষিত রাখা এবং নিরাপত্তা দুর্বলতার প্রবেশ এড়ানোর জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করতে উৎসাহিত করা হয়।

ব্যয়-সংবেদনশীল এপিআই

কস্ট সেনসিটিভ এপিআই হলো এমন যেকোনো ফাংশন যা ব্যবহারকারী বা নেটওয়ার্কের জন্য কোনো খরচ তৈরি করতে পারে। অ্যান্ড্রয়েড প্ল্যাটফর্ম কস্ট সেনসিটিভ এপিআইগুলোকে অপারেটিং সিস্টেম দ্বারা নিয়ন্ত্রিত সুরক্ষিত এপিআই-এর তালিকায় রেখেছে। কস্ট সেনসিটিভ এপিআই ব্যবহারের অনুরোধকারী থার্ড-পার্টি অ্যাপগুলোকে ব্যবহারকারীকে সুস্পষ্ট অনুমতি দিতে হয়। এই এপিআইগুলোর মধ্যে রয়েছে:

  • টেলিফোনি
  • এসএমএস/এমএমএস
  • নেটওয়ার্ক/ডেটা
  • ইন-অ্যাপ বিলিং
  • এনএফসি অ্যাক্সেস

অ্যান্ড্রয়েড ৪.২ এসএমএস ব্যবহারের উপর আরও নিয়ন্ত্রণ যোগ করেছে। কোনো অ্যাপ যদি এমন কোনো শর্ট কোডে এসএমএস পাঠানোর চেষ্টা করে যা প্রিমিয়াম পরিষেবা ব্যবহার করে এবং যার জন্য অতিরিক্ত চার্জ লাগতে পারে, তাহলে অ্যান্ড্রয়েড একটি নোটিফিকেশন দেয়। ব্যবহারকারী অ্যাপটিকে বার্তা পাঠানোর অনুমতি দেবেন নাকি ব্লক করবেন, তা বেছে নিতে পারেন।

সিম কার্ড অ্যাক্সেস

তৃতীয় পক্ষের অ্যাপগুলো সিম কার্ডের নিম্ন স্তরের অ্যাক্সেস পায় না। অপারেটিং সিস্টেম (OS) সিম কার্ডের সাথে সমস্ত যোগাযোগ পরিচালনা করে, যার মধ্যে সিম কার্ড মেমরিতে থাকা ব্যক্তিগত তথ্য (কন্টাক্টস) অ্যাক্সেস করাও অন্তর্ভুক্ত। অ্যাপগুলো AT কমান্ডগুলোও অ্যাক্সেস করতে পারে না, কারণ এগুলো শুধুমাত্র রেডিও ইন্টারফেস লেয়ার (RIL) দ্বারা পরিচালিত হয়। RIL এই কমান্ডগুলোর জন্য কোনো উচ্চ স্তরের API প্রদান করে না।

ব্যক্তিগত তথ্য

অ্যান্ড্রয়েড ব্যবহারকারীর ডেটা অ্যাক্সেসের সুবিধা প্রদানকারী এপিআইগুলোকে সুরক্ষিত এপিআই-এর তালিকায় অন্তর্ভুক্ত করেছে। স্বাভাবিক ব্যবহারের ফলে, ব্যবহারকারীদের দ্বারা ইনস্টল করা থার্ড-পার্টি অ্যাপের মাধ্যমেও অ্যান্ড্রয়েড ডিভাইসগুলোতে ব্যবহারকারীর ডেটা জমা হয়। যে অ্যাপগুলো এই তথ্য শেয়ার করতে চায়, তারা থার্ড-পার্টি অ্যাপ থেকে ডেটা সুরক্ষিত রাখতে অ্যান্ড্রয়েড ওএস-এর পারমিশন চেক ব্যবহার করতে পারে।

সংবেদনশীল ব্যবহারকারীর ডেটা শুধুমাত্র সুরক্ষিত এপিআই-এর মাধ্যমে অ্যাক্সেস করা যাবে।

চিত্র ২. সংবেদনশীল ব্যবহারকারী তথ্যে শুধুমাত্র সুরক্ষিত এপিআই-এর মাধ্যমেই প্রবেশ করা যায়।

সিস্টেম কন্টেন্ট প্রোভাইডার, যেগুলোতে কন্টাক্ট এবং ক্যালেন্ডারের মতো ব্যক্তিগত বা ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য থাকার সম্ভাবনা থাকে, সেগুলোকে সুস্পষ্টভাবে চিহ্নিত অনুমতিসহ তৈরি করা হয়েছে। এই সুনির্দিষ্ট বিভাজন ব্যবহারকারীকে অ্যাপটিতে কোন ধরনের তথ্য সরবরাহ করা হতে পারে সে সম্পর্কে একটি স্পষ্ট ধারণা দেয়। ইনস্টলেশনের সময়, একটি থার্ড-পার্টি অ্যাপ এই রিসোর্সগুলো অ্যাক্সেস করার জন্য অনুমতি চাইতে পারে। অনুমতি দেওয়া হলে, অ্যাপটি ইনস্টল করা যাবে এবং ইনস্টল থাকা অবস্থায় যেকোনো সময় অনুরোধ করা ডেটা অ্যাক্সেস করতে পারবে।

যেসব অ্যাপ ব্যক্তিগত তথ্য সংগ্রহ করে, ডিফল্টরূপে সেই ডেটা শুধুমাত্র নির্দিষ্ট অ্যাপটির মধ্যেই সীমাবদ্ধ থাকে। যদি কোনো অ্যাপ আইপিসি (IPC)-এর মাধ্যমে অন্যান্য অ্যাপের কাছে ডেটা উপলব্ধ করার সিদ্ধান্ত নেয়, তবে অ্যাক্সেস প্রদানকারী অ্যাপটি আইপিসি মেকানিজমের উপর এমন অনুমতি প্রয়োগ করতে পারে যা অপারেটিং সিস্টেম দ্বারা বলবৎ করা হয়।

সংবেদনশীল ডেটা ইনপুট ডিভাইস

অ্যান্ড্রয়েড ডিভাইসগুলোতে প্রায়শই সংবেদনশীল ডেটা ইনপুট করার ডিভাইস থাকে, যা অ্যাপগুলোকে চারপাশের পরিবেশের সাথে যোগাযোগ করতে দেয়, যেমন ক্যামেরা, মাইক্রোফোন বা জিপিএস। কোনো থার্ড-পার্টি অ্যাপকে এই ডিভাইসগুলো অ্যাক্সেস করতে হলে, প্রথমে অ্যান্ড্রয়েড ওএস পারমিশন ব্যবহারের মাধ্যমে ব্যবহারকারীর কাছ থেকে সুস্পষ্টভাবে অ্যাক্সেসের অনুমতি নিতে হয়। ইনস্টলেশনের সময়, ইনস্টলারটি ব্যবহারকারীর কাছে সেন্সরটির নাম উল্লেখ করে অনুমতি চায়।

যদি কোনো অ্যাপ ব্যবহারকারীর অবস্থান জানতে চায়, তবে অ্যাপটির ব্যবহারকারীর অবস্থান অ্যাক্সেস করার জন্য অনুমতির প্রয়োজন হয়। ইনস্টল করার সময়, ইনস্টলারটি ব্যবহারকারীকে জিজ্ঞাসা করে যে অ্যাপটি তার অবস্থান অ্যাক্সেস করতে পারবে কিনা। যেকোনো সময়, যদি ব্যবহারকারী না চান যে কোনো অ্যাপ তার অবস্থান অ্যাক্সেস করুক, তাহলে তিনি সেটিংস অ্যাপটি চালু করে ‘ লোকেশন অ্যান্ড সিকিউরিটি’ -তে গিয়ে ‘ ইউজ ওয়্যারলেস নেটওয়ার্কস’ এবং ‘এনেবল জিপিএস স্যাটেলাইটস’ অপশন দুটি অনির্বাচিত করে দিতে পারেন। এটি ব্যবহারকারীর ডিভাইসের সমস্ত অ্যাপের জন্য অবস্থান-ভিত্তিক পরিষেবাগুলো নিষ্ক্রিয় করে দেয়।

ডিভাইসের মেটাডেটা

অ্যান্ড্রয়েড এমন ডেটার অ্যাক্সেস সীমাবদ্ধ করারও চেষ্টা করে যা সহজাতভাবে সংবেদনশীল নয়, কিন্তু পরোক্ষভাবে ব্যবহারকারীর বৈশিষ্ট্য, পছন্দ এবং ডিভাইস ব্যবহারের পদ্ধতি প্রকাশ করতে পারে।

ডিফল্টভাবে অ্যাপগুলোর অপারেটিং সিস্টেম লগ, ব্রাউজার হিস্ট্রি, ফোন নম্বর, বা হার্ডওয়্যার বা নেটওয়ার্ক শনাক্তকরণ তথ্যে অ্যাক্সেস থাকে না। যদি কোনো অ্যাপ ইনস্টলের সময় এই তথ্যগুলোর অ্যাক্সেস চায়, তবে ইনস্টলার ব্যবহারকারীকে জিজ্ঞাসা করে যে অ্যাপটি তথ্যগুলো অ্যাক্সেস করতে পারবে কিনা। যদি ব্যবহারকারী অ্যাক্সেসের অনুমতি না দেন, তবে অ্যাপটি ইনস্টল হবে না।

শংসাপত্র কর্তৃপক্ষ

অ্যান্ড্রয়েডে এক সেট ইনস্টল করা সিস্টেম সার্টিফিকেট অথরিটি (CA) অন্তর্ভুক্ত থাকে, যেগুলো সিস্টেম জুড়ে বিশ্বস্ত। অ্যান্ড্রয়েড ৭.০-এর আগে, ডিভাইস নির্মাতারা তাদের ডিভাইসে থাকা CA-গুলোর সেট পরিবর্তন করতে পারত। তবে, অ্যান্ড্রয়েড ৭.০ এবং তার পরবর্তী সংস্করণ চালিত ডিভাইসগুলোতে একটি অভিন্ন সিস্টেম CA সেট থাকে, কারণ ডিভাইস নির্মাতাদের দ্বারা এটি পরিবর্তন করার অনুমতি আর নেই।

অ্যান্ড্রয়েড স্টক সেটে একটি নতুন পাবলিক CA হিসেবে যুক্ত হতে হলে, CA-টিকে অবশ্যই মোজিলা CA অন্তর্ভুক্তি প্রক্রিয়াটি সম্পন্ন করতে হবে এবং তারপর অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP)-এর স্টক অ্যান্ড্রয়েড CA সেটে CA-টিকে অন্তর্ভুক্ত করার জন্য অ্যান্ড্রয়েডের কাছে একটি ফিচার রিকোয়েস্ট ( https://code.google.com/p/android/issues/entry ) ফাইল করতে হবে।

এখনও এমন কিছু CA (সার্টিফিকেট অথরিটি) রয়েছে যা ডিভাইস-নির্দিষ্ট এবং AOSP CA-এর মূল সেটে অন্তর্ভুক্ত করা উচিত নয়। যেমন, ক্যারিয়ারের নিজস্ব প্রাইভেট CA, যা ক্যারিয়ারের অবকাঠামোর উপাদান, যেমন SMS/MMS গেটওয়ে, নিরাপদে অ্যাক্সেস করার জন্য প্রয়োজন হতে পারে। ডিভাইস প্রস্তুতকারকদের শুধুমাত্র সেইসব কম্পোনেন্ট/অ্যাপে প্রাইভেট CA অন্তর্ভুক্ত করতে উৎসাহিত করা হচ্ছে, যেগুলোর এই CA-গুলোকে বিশ্বাস করার প্রয়োজন রয়েছে। আরও বিস্তারিত জানতে, নেটওয়ার্ক সিকিউরিটি কনফিগারেশন দেখুন।

অ্যাপ সাইনিং

কোড সাইনিং ডেভেলপারদের অ্যাপটির লেখককে শনাক্ত করতে এবং জটিল ইন্টারফেস ও পারমিশন তৈরি না করেই তাদের অ্যাপ আপডেট করতে সাহায্য করে। অ্যান্ড্রয়েড প্ল্যাটফর্মে চালিত প্রতিটি অ্যাপ অবশ্যই ডেভেলপার দ্বারা স্বাক্ষরিত হতে হবে। স্বাক্ষরিত না হয়ে ইনস্টল করার চেষ্টা করা অ্যাপগুলো গুগল প্লে অথবা অ্যান্ড্রয়েড ডিভাইসের প্যাকেজ ইনস্টলার দ্বারা প্রত্যাখ্যাত হয়।

গুগল প্লে-তে, অ্যাপ সাইনিং ব্যবস্থাটি ডেভেলপারের প্রতি গুগলের আস্থা এবং নিজের অ্যাপের প্রতি ডেভেলপারের আস্থার মধ্যে একটি সেতুবন্ধন তৈরি করে। এর ফলে ডেভেলপাররা জানতে পারেন যে, তাদের অ্যাপটি কোনো পরিবর্তন ছাড়াই অ্যান্ড্রয়েড ডিভাইসে সরবরাহ করা হচ্ছে; এবং ডেভেলপাররা তাদের অ্যাপের আচরণের জন্য জবাবদিহি করতে বাধ্য থাকেন।

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

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

অ্যাপগুলো কোনো তৃতীয় পক্ষ (OEM, অপারেটর, বিকল্প বাজার) দ্বারা স্বাক্ষরিত অথবা স্ব-স্বাক্ষরিত হতে পারে। অ্যান্ড্রয়েড স্ব-স্বাক্ষরিত সার্টিফিকেট ব্যবহার করে কোড স্বাক্ষরের সুবিধা দেয়, যা ডেভেলপাররা কোনো বাহ্যিক সহায়তা বা অনুমতি ছাড়াই তৈরি করতে পারেন। অ্যাপগুলোকে কোনো কেন্দ্রীয় কর্তৃপক্ষ দ্বারা স্বাক্ষরিত হতে হয় না। অ্যান্ড্রয়েড বর্তমানে অ্যাপ সার্টিফিকেটের জন্য CA যাচাইকরণ করে না।

অ্যাপগুলি সিগনেচার প্রোটেকশন লেভেলেও সিকিউরিটি পারমিশন ঘোষণা করতে পারে, যার মাধ্যমে স্বতন্ত্র UID এবং অ্যাপ্লিকেশন স্যান্ডবক্স বজায় রেখে শুধুমাত্র একই কী দিয়ে স্বাক্ষরিত অ্যাপগুলির জন্য অ্যাক্সেস সীমাবদ্ধ করা যায়। শেয়ার্ড UID ফিচারের মাধ্যমে একটি শেয়ার্ড অ্যাপ্লিকেশন স্যান্ডবক্সের সাথে আরও ঘনিষ্ঠ সম্পর্ক স্থাপন করা যায়, যেখানে একই ডেভেলপার কী দিয়ে স্বাক্ষরিত দুই বা ততোধিক অ্যাপ তাদের ম্যানিফেস্টে একটি শেয়ার্ড UID ঘোষণা করতে পারে।

অ্যাপ যাচাইকরণ

অ্যান্ড্রয়েড ৪.২ এবং এর পরবর্তী সংস্করণগুলোতে অ্যাপ ভেরিফিকেশন সমর্থিত। ব্যবহারকারীরা ‘ভেরিফাই অ্যাপস’ চালু করতে পারেন এবং ইনস্টল করার আগে একজন অ্যাপ ভেরিফায়ারের মাধ্যমে অ্যাপটি যাচাই করিয়ে নিতে পারেন। কোনো ব্যবহারকারী যদি সম্ভাব্য ক্ষতিকর কোনো অ্যাপ ইনস্টল করার চেষ্টা করেন, তবে অ্যাপ ভেরিফিকেশন তাকে সতর্ক করতে পারে; আর অ্যাপটি বিশেষভাবে ক্ষতিকর হলে, এটি তার ইনস্টলেশন ব্লক করে দিতে পারে।

ডিজিটাল অধিকার ব্যবস্থাপনা

অ্যান্ড্রয়েড প্ল্যাটফর্ম একটি সম্প্রসারণযোগ্য ডিজিটাল রাইটস ম্যানেজমেন্ট (ডিআরএম) ফ্রেমওয়ার্ক প্রদান করে, যা অ্যাপগুলোকে কন্টেন্টের সাথে যুক্ত লাইসেন্সের সীমাবদ্ধতা অনুসারে অধিকার-সুরক্ষিত কন্টেন্ট পরিচালনা করতে দেয়। এই ডিআরএম ফ্রেমওয়ার্কটি অনেকগুলো ডিআরএম স্কিম সমর্থন করে; কোনো ডিভাইস কোন কোন ডিআরএম স্কিম সমর্থন করবে, তা ডিভাইস প্রস্তুতকারকের উপর নির্ভর করে।

অ্যান্ড্রয়েড ডিআরএম ফ্রেমওয়ার্কটি দুটি স্থাপত্য স্তরে বাস্তবায়িত হয়েছে (চিত্র ৩ দেখুন):

  • একটি ডিআরএম ফ্রেমওয়ার্ক এপিআই, যা অ্যান্ড্রয়েড অ্যাপ ফ্রেমওয়ার্কের মাধ্যমে অ্যাপগুলোর কাছে উন্মুক্ত করা হয় এবং স্ট্যান্ডার্ড অ্যাপগুলোর জন্য এআরটি ভিএম-এর মাধ্যমে চলে।

  • একটি নেটিভ কোড ডিআরএম ম্যানেজার, যা ডিআরএম ফ্রেমওয়ার্কটি বাস্তবায়ন করে এবং বিভিন্ন ডিআরএম স্কিমের জন্য রাইটস ম্যানেজমেন্ট ও ডিক্রিপশন পরিচালনার উদ্দেশ্যে ডিআরএম প্লাগ-ইন (এজেন্ট)-এর জন্য একটি ইন্টারফেস উন্মুক্ত করে।

অ্যান্ড্রয়েড প্ল্যাটফর্মে ডিজিটাল অধিকার ব্যবস্থাপনার স্থাপত্য

চিত্র ৩. অ্যান্ড্রয়েড প্ল্যাটফর্মে ডিআরএম-এর গঠনকাঠামো।