প্রোডাক্ট সংক্রান্ত খবর

AAOS SDV - Secure by Design

৫ মিনিট রিডিং
৩ লেখক
Markus Vill, Sean Keys, István Nádor

Google-এ আমরা বিশ্বাস করি যে আমাদের প্রোডাক্টগুলি ডিজাইন অনুযায়ী সুরক্ষিত হওয়া উচিত, তাই আমরা সফ্টওয়্যার-ডিফাইনড ভেহিকেলের (AAOS SDV) জন্য Android Automotive অপারেটিং সিস্টেম তৈরি করেছি, যা আগে থেকে থাকা মার্কেটে-প্রমাণিত প্ল্যাটফর্ম-এর উপর ভিত্তি করে তৈরি করা হয়েছে, যেখানে Cuttlefish-এর মতো ভার্চুয়ালাইজেশন টেকনোলজি ব্যবহার করা হয়েছে। আমাদের রিলিজ সংক্রান্ত ঘোষণা ফিচারের উপর ফোকাস করলেও, এই ব্লগ পোস্ট নিরাপত্তা সংক্রান্ত কিছু ধারণার রূপরেখা তৈরি করে।

ফাউন্ডেশন: ডোমেন আইসোলেশন

কো-হোস্ট করা ইনস্ট্যান্স আইসোলেট করার জন্য ভার্চুয়ালাইজেশন

ইলেকট্রনিক কন্ট্রোল ইউনিট (ECU) একটি চিপে একত্রিত করার বর্তমান প্রবণতা একাধিক ডোমেন পাশাপাশি চালানোর মাধ্যমে আইসোলেশন কমিয়ে দেয়।

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

ইনহেরিটেড Android নিরাপত্তা

AAOS SDV Microdroid থেকে তৈরি হয়েছে, এটি একটি মিনিমালিস্টিক Android ভার্সন যা প্রাইভেসি ভার্চুয়াল মেশিনের (pVM) জন্য অপ্টিমাইজ করা হয়েছে। এই লিনেজ Android প্ল্যাটফর্ম ইঞ্জিনিয়ারদের আগে থেকেই জানা প্রতিষ্ঠিত নিরাপত্তা ফিচার প্রদান করে।

প্রসেস আইসোলেশন ও ডিফল্ট হিসেবে প্রত্যাখ্যান করা

AAOS SDV প্রতিটি অ্যাপ্লিকেশনের জন্য স্যান্ডবক্স সেট-আপ করতে Android-এর ব্যবহারকারী আইডি (UID)-ভিত্তিক আইসোলেশন মডেল অনুসরণ করে। অ্যাক্সেস অধিকার, ডেটা ডিরেক্টরি এবং অন্যান্য বিধিনিষেধ ম্যানেজ করার জন্য প্রতিটি পরিষেবা একটি অনন্য UID সহ একটি ডেডিকেটেড প্রসেসে চলে। আমরা অপারেশন কঠোরভাবে সীমিত করতে পোর্টেবল অপারেটিং সিস্টেম ইন্টারফেস (POSIX) ক্ষমতা ব্যবহার করি এবং "ডিফল্ট-অনুযায়ী-প্রত্যাখ্যান" ভঙ্গি প্রয়োগ করতে এটিকে নিরাপত্তা-উন্নত Linux (SELinux)-এর সাথে পেয়ার করি। এই পদ্ধতি প্রতিটি পরিষেবাকে একেবারে ন্যূনতম প্রয়োজনীয়তার মধ্যে সীমাবদ্ধ করে, যার অর্থ হল কনফিগারেশন না থাকলে অ্যাক্সেস ব্লক করা হয়, অতিরিক্ত অনুমতি সহ সিস্টেম তৈরি করা হয় না। আমরা এই একই স্ট্র্যাটেজি আমাদের যোগাযোগের অনুমতি সিস্টেমে প্রয়োগ করি, যা এই নিবন্ধে পরে ব্যাখ্যা করা হয়েছে।

প্রমাণিত দুর্বলতা ম্যানেজমেন্ট

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

ইন্টিগ্রিটি: সুরক্ষিত সফ্টওয়্যার ডেলিভারি

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

যাচাই করা সফ্টওয়্যার ডেলিভারি

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

দ্বিতীয়ত, আমরা পরিষেবার জন্য Android Pony EXpress (APEX) প্যাকেজ ব্যবহার করি। প্রতিটি APEX সফ্টওয়্যার এবং এর ডিপেন্ডেন্সি এনক্যাপসুলেট করে, প্যাকেজটিকে বাধ্যতামূলক স্বাক্ষর যাচাইকরণ সহ একটি পার্টিশন হিসাবে বিবেচনা করে। AAOS SDV-তে, APEX কোড সাইনিংকে একটি অবিচ্ছিন্ন, হার্ডওয়্যার-এনফোর্সড চুক্তি হিসেবে বিবেচনা করে। APEX চারটি মূল স্তম্ভের মাধ্যমে ক্ষতিকর কোড এক্সিকিউশন প্রশমিত করা নিশ্চিত করে: 

১. ইমিউটেবল স্টোরেজ

  • মেকানিজম: Android কার্নেল apex_payload.img ফাইলকে সরাসরি একটি র স্টোরেজ ডিভাইস হিসেবে রিড-ওনলি লুপব্যাক ব্যবহার করে লুপ করে, এটিকে কঠোর MS_RDONLY ফ্ল্যাগ দিয়ে মাউন্ট করে।
  • এটি কেন আরও নিরাপদ: এটি OS-এ কোনও রাইট পাথ দেখায় না কারণ ফাইলগুলি গাড়ির স্টোরেজে আনপ্যাক করা হয় না। কোনও আক্রমণকারী রুট প্রিভিলেজ পেলেও, তিনি চালু থাকা APEX কোড পরিবর্তন করতে পারবেন না, কারণ ফাইল সিস্টেম লেয়ার সব রাইট কমান্ড বাতিল করে দেয়।

২. ক্রিপ্টোগ্রাফিক ইন্টিগ্রিটি

  • মেকানিজম: ক্রিপ্টোগ্রাফিক সিগনেচার সম্পূর্ণ ফাইল সিস্টেম ইমেজের Merkle Tree যাচাই করে।
  • এটি কেন আরও সুরক্ষিত: কার্নেল প্রতি ৪কেবি ডেটা ব্লকের জন্য অন-দ্য-ফ্লাই স্বাক্ষর যাচাই করতে প্রতি-ব্লক dm-verity ব্যবহার করে। কোনও আক্রমণকারী ফ্ল্যাশ মেমরিতে র ব্লক পরিবর্তন করলে, কার্নেল হ্যাশ অমিল শনাক্ত করে এবং অবিলম্বে এক্সিকিউশন বন্ধ করে দেয়।

৩. স্ট্রিক্ট আইসোলেশন

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

৪. Atomic Recovery

  • মেকানিজম: APEX, ডবল-বাফার্ড রোলব্যাক চালু করতে "অ্যাক্টিভ/ব্যাকআপ" ডিজাইন ব্যবহার করে। ফ্যাক্টরি-ফ্ল্যাশ করা APEX অপরিবর্তনীয় /system পার্টিশনে থাকে, যেখানে আপডেটগুলি পরিবর্তনযোগ্য /data পার্টিশনে থাকে।
  • এটি কেন আরও সুরক্ষিত: কোনও আপডেট ব্যর্থ হলে বা ক্ষতিকর বলে মনে হলে, apexd ডেমন প্রাথমিক বুটের সময় এটিকে "ব্যর্থ" হিসেবে চিহ্নিত করে। সিস্টেমটি অবিলম্বে সিম্বলিক লিঙ্কগুলিকে /system পার্টিশনে ফিরিয়ে আনে। এই অ্যাটমিক রিকভারি সিস্টেমকে ভাঙা অবস্থায় থাকা থেকে রক্ষা করতে সাহায্য করে।

রেজিলিয়েন্স: মেমরি-সেফ ডেভেলপমেন্ট

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

প্রাথমিক ভাষা হিসেবে Rust

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

ডিস্ট্রিবিউটেড ট্রাস্ট: নেটওয়ার্ক ও অ্যাক্সেস কন্ট্রোল

সফ্টওয়্যার-ডিফাইন্ড ভেহিকেলের জন্য বিচ্ছিন্ন ডোমেনের মধ্যে নিরাপদ ইন্টার‍্যাকশন প্রয়োজন। AAOS SDV মেশ প্রভিশনিং আর্কিটেকচার প্রতিটি কমিউনিকেশন এন্ডপয়েন্টের ভার্সন ও লেখককে ক্রিপ্টোগ্রাফিকভাবে যাচাই করার মাধ্যমে এই জটিলতার সমাধান করে।

ডিভাইস ও মেশ প্রভিশনিং

AAOS SDV মেশ প্রতিটি কম্পোনেন্টের নেটওয়ার্ক পরিচয় সেটির আসল বাইনারি এক্সিকিউশন স্টেট-এর সাথে গাণিতিকভাবে বাইন্ড করার মাধ্যমে যাচাইকরণ প্রক্রিয়া সম্পূর্ণ করে। এই মডেলটি হার্ডওয়্যার-রুটেড যাচাইকরণের মাধ্যমে অন্তর্নিহিত সফ্টওয়্যার ট্রাস্টকে প্রতিস্থাপন করে।

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

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

VM-টু-VM কমিউনিকেশন সুরক্ষিত করতে DICE-ভিত্তিক TLS

বাস্তবে হোস্টের পরিচয় যাচাই করা

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

জিরো-ট্রাস্ট আর্কিটেকচারের মৌলিক চ্যালেঞ্জের সমাধান করতে DICE এবং TLS (ট্রান্সপোর্ট লেয়ার সিকিউরিটি) ইন্টিগ্রেট করা হয়: কোনও মেশিনকে যাচাই করার পাশাপাশি তার সফ্টওয়্যার ইন্টিগ্রিটি যাচাই করা।

DICE-এর হার্ডওয়্যার-ব্যাকড শনাক্তকরণ এবং TLS-এর এনক্রিপ্ট করা হ্যান্ডশেকের সংমিশ্রণ, রিসিভ করা মেশিনকে কলারের পরিচয় এবং তার সঠিক সফ্টওয়্যার স্টেট, দুটিই যাচাই করার অনুমতি দেয়।

প্রথাগত সার্টিফিকেট শুধুমাত্র গোপন তথ্য থাকার প্রমাণ দেয়; সেগুলি ফার্মওয়্যার টেম্পারিং শনাক্ত করতে পারে না। DICE পরিমাপ করা বুট লেয়ারিং-এর মাধ্যমে এটি সমাধান করে:

  • ইউনিক ডিভাইস সিক্রেট (UDS): ম্যানুফ্যাকচারিংয়ের সময় জেনারেট করা একটি র‍্যান্ডম ক্রিপ্টোগ্রাফিক সিক্রেট। শুধুমাত্র প্রথম-পর্যায়ের বুটলোডার UDS অ্যাক্সেস করতে পারে; এটি অন্য সব সফ্টওয়্যার ও এক্সটার্নাল ইন্টারফেসের জন্য অ্যাক্সেসযোগ্য থাকে না।
  • লেয়ার্ড মেজারমেন্ট (কম্পাউন্ড ডিভাইস আইডেন্টিফায়ার): হার্ডওয়্যার ROM, পরবর্তী ফার্মওয়্যার লেয়ারের সঠিক কোড এবং কনফিগারেশন সহ UDS হ্যাশ করার মাধ্যমে চেইন শুরু করে। এটি একটি CDI তৈরি করে, যা প্রতিটি পরবর্তী লেয়ার বুট করার সাথে সাথে ক্রমানুসারে চেইন করে।

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

লেয়ার্ড অ্যাক্সেস কন্ট্রোল

AAOS SDV, অ্যাক্সেস মেকানিজমের সাথে আপোষ না করেই ডাইনামিক ভেহিকল আপডেট চালু করতে, বিবিধ প্রতিরোধ ব্যবস্থা সংক্রান্ত স্ট্র্যাটেজি ব্যবহার করে। এই মডেল দুটি প্রাথমিক ট্রাস্ট লেয়ারের উপর নির্ভর করে:

  1. পরিষেবা-লেভেল অনুমতি: কোনও নির্দিষ্ট VM-এ কোনও পরিষেবা মেশ জুড়ে অ্যাক্সেস বা প্রকাশ করতে পারে এমন নির্দিষ্ট রিসোর্স নির্ধারণ করুন।
  2. VM-লেভেল অনুমতি: নির্দিষ্ট VM-এ হোস্ট করা সব পরিষেবার জন্য ক্রস-VM কমিউনিকেশন বাউন্ডারি নির্ধারণ করুন।

এই মডেল OEM-কে আপডেট করার ক্ষমতার সাথে সুরক্ষার ভারসাম্য বজায় রাখতে সাহায্য করে। নিরাপত্তা-সংবেদনশীল নয় এমন পরিষেবার ক্ষেত্রে, পারমিসিভ VM-লেভেল নীতি সম্পূর্ণ VM রিডিপ্লয়মেন্টের পরিবর্তে লাইটওয়েট APEX আপডেটের মাধ্যমে ইনস্টলেশন চালু করে।

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

সিদ্ধান্ত

image.png

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

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

লিখেছেন:
পড়া চালিয়ে যান