Android শংসাপত্রের স্বচ্ছতা নীতি

এই নীতিমালা সম্পর্কে যেকোনো প্রশ্নের জন্য অনুগ্রহ করে সিটি পলিসি ফোরামে যোগাযোগ করুন: ct-policy@chromium.org

যখন কোনো সংযোগের ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) সার্টিফিকেট যাচাই করা হয়, তখন অ্যান্ড্রয়েড সার্টিফিকেট ট্রান্সপারেন্সি (CT) পলিসির সাথে এর সঙ্গতি মূল্যায়ন করা হয়। যে সার্টিফিকেটগুলোর সাথে থাকা সাইনড সার্টিফিকেট টাইমস্ট্যাম্প (SCT) এই পলিসিটি পূরণ করে, সেগুলোকে CT কমপ্লায়েন্ট বলা হয়।

এই পলিসিতে সংজ্ঞায়িত, সার্টিফিকেট যাচাইকরণের সময় জনপ্রিয় TLS লাইব্রেরিগুলো (বিল্ট-ইন কনস্ক্রিপ্ট সহ) দ্বারা আরোপিত একগুচ্ছ প্রযুক্তিগত প্রয়োজনীয়তা পূরণকারী একটি সার্টিফিকেট এবং তার সাথে থাকা এক সেট SCT-এর মাধ্যমে CT কমপ্লায়েন্স অর্জন করা হয়।

সিটি লগ স্টেটস

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

  • Pending
  • Qualified
  • Usable
  • ReadOnly
  • Retired
  • Rejected

অ্যান্ড্রয়েডে CT কমপ্লায়েন্সের প্রয়োজনীয়তাগুলো বুঝতে সাহায্য করার জন্য, এই স্টেটগুলোর সংজ্ঞা, প্রতিটি স্টেটে লগের প্রয়োজনীয়তা, এবং এই স্টেটগুলো কীভাবে অ্যান্ড্রয়েডের আচরণকে প্রভাবিত করে, তা ক্রোমের ডকুমেন্টেশনের CT লগ লাইফসাইকেল এক্সপ্লেনার- এ বিস্তারিতভাবে বর্ণনা করা হয়েছে।

সিটি কমপ্লায়েন্ট সার্টিফিকেট

একটি TLS সার্টিফিকেটকে CT Compliant বলা হয় যদি এর সাথে এমন এক সেট SCT থাকে যা পরবর্তীতে সংজ্ঞায়িত মানদণ্ডগুলোর মধ্যে অন্তত একটি পূরণ করে, এবং এটি নির্ভর করে SCT-গুলো অ্যান্ড্রয়েডে কীভাবে সরবরাহ করা হচ্ছে তার উপর। অ্যান্ড্রয়েডের CT-এনফোর্সিং অ্যাপগুলোতে, সফলভাবে ভ্যালিডেট করার জন্য সমস্ত পাবলিকলি-ট্রাস্টেড TLS সার্টিফিকেটকে CT Compliant হতে হয়; তবে, যে সার্টিফিকেটগুলো CT-তে লগ করা নেই বা যেগুলোতে অপর্যাপ্ত SCT রয়েছে, সেগুলোকে ভুলভাবে ইস্যু করা হয়েছে বলে গণ্য করা হয় না।

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

অ্যান্ড্রয়েডের কাছে SCT-গুলো কীভাবে উপস্থাপন করা হয় তার ওপর নির্ভর করে, নিম্নলিখিত মানদণ্ডগুলোর মধ্যে যেকোনো একটি পূরণ করার মাধ্যমে CT সম্মতি অর্জন করা যেতে পারে:

অন্তর্নিহিত SCTs:

  1. সিটি লগ থেকে কমপক্ষে একটি এমবেডেড এসসিটি, যা যাচাইয়ের সময় Qualified , Usable বা ReadOnly ছিল; এবং
  2. কমপক্ষে N সংখ্যক স্বতন্ত্র সিটি লগ থেকে এমবেডেড এসসিটি রয়েছে, যেগুলো যাচাইয়ের সময় Qualified , Usable , ReadOnly বা Retired ছিল, যেখানে N-এর মান নিম্নলিখিত সারণীতে সংজ্ঞায়িত করা হয়েছে; এবং
  3. ২ নং শর্ত পূরণকারী SCT-গুলোর মধ্যে, Android দ্বারা স্বীকৃত অনুযায়ী কমপক্ষে দুটি SCT অবশ্যই স্বতন্ত্র CT লগ অপারেটরদের থেকে ইস্যু করা হতে হবে; এবং
সার্টিফিকেট আজীবন স্বতন্ত্র সিটি লগ থেকে প্রাপ্ত এসসিটি-র সংখ্যা
<= ১৮০ দিন
১৮০ দিন

OCSP বা TLS-এর মাধ্যমে সরবরাহ করা SCT-সমূহ:

  1. একটি সিটি লগ থেকে কমপক্ষে দুটি এসসিটি, যা যাচাইয়ের সময় Qualified , Usable বা ReadOnly ছিল; এবং
  2. শর্ত ১ পূরণকারী SCT-গুলোর মধ্যে, Android দ্বারা স্বীকৃত অনুযায়ী কমপক্ষে দুটি SCT অবশ্যই স্বতন্ত্র CT লগ অপারেটরদের থেকে ইস্যু করা হতে হবে; এবং

এমবেডেড SCT এবং OCSP বা TLS ব্যবহার করে সরবরাহ করা SCT, উভয়ের ক্ষেত্রেই লগ অপারেটরের অনন্যতা বলতে লগ তালিকার অপারেটর বিভাগে তাদের পৃথক এন্ট্রি থাকাকে বোঝায়।

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

গুরুত্বপূর্ণ নোট

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

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

"এমবেডেড SCT" বলতে এমন একটি SCT বোঝায় যা সার্টিফিকেটের মধ্যেই SignedCertificateTimestampList X.509v3 এক্সটেনশন ব্যবহার করে সরবরাহ করা হয়। অনেক TLS সার্ভার OCSP স্ট্যাপলিং বা TLS এক্সটেনশন সমর্থন করে না, তাই অ্যান্ড্রয়েডে সফল ভ্যালিডেশন বা EV ট্রিটমেন্ট নিশ্চিত করার জন্য CA-দের ইস্যু করা সার্টিফিকেটে SCT এমবেড করার জন্য প্রস্তুত থাকা উচিত।

অ্যান্ড্রয়েডে কীভাবে সিটি লগ যুক্ত করা হয়

কীভাবে সিটি লগগুলি Qualified হতে পারে এবং কী পরিস্থিতিতে সেগুলি Retired হয়ে যেতে পারে, তার মানদণ্ড ক্রোম সিটি লগ পলিসি- তে পাওয়া যাবে।

সিটি এনফোর্সমেন্ট টাইমআউট

প্রতিদিন, গুগল একটি নতুন CT লগ তালিকা প্রকাশ করে যাতে একটি নতুন log_list_timestamp থাকে। দিনে একবার, অ্যান্ড্রয়েড ডিভাইসগুলো যাচাইকরণের উদ্দেশ্যে এই তালিকার সর্বশেষ সংস্করণটি ডাউনলোড করার চেষ্টা করে। যেকোনো সময়, যদি ডিভাইসে কোনো লগ তালিকা উপলব্ধ না থাকে অথবা যদি লগ তালিকার টাইমস্ট্যাম্প ৭০ দিনের বেশি পুরোনো হয়, তাহলে CT প্রয়োগ নিষ্ক্রিয় হয়ে যাবে। এই টাইমআউটটি CT ইকোসিস্টেমকে একটি গুরুত্বপূর্ণ নিশ্চয়তা প্রদান করে যে, নতুন CT লগগুলো ' Qualified হওয়ার পর একটি নির্দিষ্ট সময়ের মধ্যে নিরাপদে 'Usable' পর্যায়ে রূপান্তরিত হতে সক্ষম হবে।

অ্যান্ড্রয়েড লগ তালিকা

অ্যান্ড্রয়েড লগ তালিকাটি log_list.json ফাইলে প্রকাশ করা হয়, যা প্রতিদিন আপডেট করা হয়। এই লগ তালিকাটি কোনো স্থিতিশীল এপিআই, এসএলএ বা প্রাপ্যতার নিশ্চয়তা ছাড়াই প্রদান করা হয়।

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

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

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