Conscrypt

Conscrypt মডিউল নিরাপত্তা সংক্রান্ত উন্নতিকে ত্বরান্বিত করে এবং OTA আপডেটের উপর নির্ভর না করেই ডিভাইসের নিরাপত্তা উন্নত করে। এটি Java কোড ও নেটিভ লাইব্রেরি ব্যবহার করে Android TLS প্রয়োগ করার পাশাপাশি কী জেনারেটর, সাইফার ও মেসেজ ডাইজেস্টের মতো Android ক্রিপ্টোগ্রাফিক ফাংশনালিটির একটি বড় অংশ প্রদান করে। Conscrypt একটি ওপেন সোর্স লাইব্রেরি হিসেবে উপলভ্য, যদিও Android প্ল্যাটফর্মে অন্তর্ভুক্ত করা হলে এটি কিছু বিশেষত্ব দেখায়।

Conscrypt মডিউল BoringSSL, ব্যবহার করে, এটি হল একটি নেটিভ লাইব্রেরি যা OpenSSL-এর Google ফর্ক এবং যা অনেক Google প্রোডাক্টে ক্রিপ্টোগ্রাফি ও TLS (সবচেয়ে উল্লেখযোগ্য হল Google Chrome)-এর জন্য ব্যবহার করা হয়। এটি Conscrypt কোডের (জাভা ও নেটিভ কোড, দুটিই) সাথে একসাথে ব্যবহার করা হয়। BoringSSL-এর কোনও অফিসিয়াল রিলিজ নেই (সব ব্যবহারকারী হেড থেকে বিল্ড করেন) এবং API বা ABI স্থিতিশীলতা সম্পর্কে কোনও গ্যারান্টি দেয় না।

Android 15-এ পরিবর্তন

Android 15-এ TLS ভার্সন 1.0 ও 1.1-এর ব্যবহার সীমাবদ্ধ করা হয়েছে। এইসব ভার্সন আগে Android-এ বন্ধ করে দেওয়া হয়েছে, কিন্তু এখন Android 15 টার্গেট করা অ্যাপের জন্য অনুমতি দেওয়া হয় না।

Android 14-এ পরিবর্তন

Android 14, Conscrypt-এর মধ্যে একটি আপডেট করা যায় এমন রুট ট্রাস্ট স্টোর নিয়ে এসেছে। CA সার্টিফিকেট (বা cert) Android এবং ইন্টারনেটে ব্যবহৃত পাবলিক কী-এর জন্য বিশ্বাসের মূল ভিত্তি প্রদান করে। সঠিক ক্রিপ্টোগ্রাফিক সই নিশ্চিত করতে এইসব সার্টিফিকেট নিয়মিত চেক করা হয়, তাই যে ডিভাইসগুলি এগুলির উপর নির্ভর করে সেগুলিতে এগুলি অবশ্যই প্রদান ও স্টোর করতে হবে।

Mainline-এর আগে, Android সিস্টেম পার্টিশনে (in system/ca-certificates) সার্টিফিকেট সেভ করত এবং প্রতিটি Android রিলিজের সাথে সেগুলি আপডেট করত। এখন Mainline-এর মাধ্যমে, Mainline ট্রেন আপডেট ব্যবহার করে আরও ঘন ঘন সার্টিফিকেট আপডেট করা সম্ভব। এই নতুন ক্ষমতা আপডেট করার প্রসেসকে আরও সহজ করে দেবে, এর ফলে আমরা সমস্যার সমাধান আরও দ্রুত করতে পারব এবং ডিভাইসের লাইফটাইম বাড়াতে সাহায্য করবে।

Android 14 থেকে, রুট ট্রাস্ট সার্টিফিকেট Conscrypt মডিউল APEX এবং সিস্টেম পার্টিশনে স্টোর করা হয়। অ্যাপগুলি এখনও নিজেদের সার্টিফিকেট বেছে নিতে এবং NetworkSecurityConfig ব্যবহার করে সার্টিফিকেট বিহেভিয়ার পরিবর্তন করতে পারে।

Android 14-এ Conscrypt মডিউলে এইসব পরিবর্তন করা হয়েছে:

  • AES-CMAC MAC প্রয়োগ করা হয়েছে।
  • বন্ধ করা হয়েছে এবং `PBEwithHmacSHA2-*` MAC প্রয়োগ সরিয়ে দেওয়া হয়েছে।
  • X25519 কী, কী এগ্রিমেন্ট ও স্বাক্ষরের জন্য সীমিত সহায়তা যোগ করা হয়েছে।
  • X.509 সঠিকতার জন্য BoringSSL আপডেট করা হয়েছে।
  • পাবলিক CertPath API-তে MD5-স্বাক্ষরিত সার্টিফিকেটের জন্য সহায়তা বন্ধ করা হয়েছে। API লেভেল ১৬ থেকে TLS কানেকশনের জন্য এই ধরনের সার্টিফিকেট গ্রহণ করা হয় না।

Android 10-এ পরিবর্তন

Android 9-এ Conscrypt-এর জন্য Android-নির্দিষ্ট পাবলিক API অন্তর্ভুক্ত নেই, তবে এর পরিবর্তে এমন একটি নিরাপত্তা প্রদানকারী ব্যবহার করা হয় যা Cipher ও MessageDigest সহ Java Cryptography Architecture (JCA) এবং SSLSocket ও SSLEngine সহ Java Secure Socket Extension (JSSE)-এর জন্য স্ট্যান্ডার্ড ক্লাস প্রয়োগ করে। ব্যবহারকারীরা সেইসব ক্লাসের সাথে ইন্টার‍্যাক্ট করেন এবং libcore বা ফ্রেমওয়ার্ক কোড কিছু নন-পাবলিক Conscrypt API ব্যবহার করে।

Android 10, android.net.ssl-এ অল্প সংখ্যক পাবলিক API পদ্ধতি যোগ করে যাতে Conscrypt কার্যকারিতা অ্যাক্সেস করা যায় যা javax.net.ssl-এর অধীনে থাকা ক্লাস দ্বারা প্রকাশ করা হয় না। Android 10-এ Bouncy Castle-এর একটি স্লিমড কপিও অন্তর্ভুক্ত আছে যা Android Runtime-এর অংশ হিসেবে কম-জনপ্রিয় ক্রিপ্টোগ্রাফিক টুল প্রদান করে (Conscrypt মডিউলে অন্তর্ভুক্ত নয়)।

ফর্ম্যাট ও ডিপেন্ডেন্সি

Conscrypt মডিউল (com.android.conscrypt) একটি APEX ফাইল হিসেবে ডিস্ট্রিবিউট করা হয়, যার মধ্যে Conscrypt Java কোড এবং একটি Conscrypt নেটিভ লাইব্রেরি থাকে যা ডাইনামিক লিঙ্ক করে Android NDK লাইব্রেরির (যেমন liblog) সাথে। নেটিভ লাইব্রেরিতে BoringSSL-এর একটি কপিও থাকে যা NIST-এর ক্রিপ্টোগ্রাফিক মডিউল ভ্যালিডেশন প্রোগ্রাম (CMVP)-এর মাধ্যমে ভ্যালিডেট (সার্টিফিকেট #3753) করা হয়েছে।

Conscrypt মডিউল নিম্নলিখিত API প্রকাশ করে:

  • পাবলিক API হল java.* ও javax.*-এর অধীনে প্যাকেজ এবং android.net.ssl.*-এর অধীনে ক্লাস সহ ক্লাস ও ইন্টারফেসের এক্সটেনশন। এক্সটার্নাল অ্যাপ কোড সরাসরি Conscrypt-এ কল করে না। Platform API স্ট্যান্ডার্ড নিশ্চিত করে যে এই APIগুলি ব্যাকওয়ার্ড- ও ফরওয়ার্ড-কম্প্যাটিবল থাকে।
  • কোর প্ল্যাটফর্ম API হল লুকানো API যা ফ্রেমওয়ার্ক ব্যবহার করে সর্বজনীন নয় এমন ফাংশন অ্যাক্সেস করে। এগুলি তুলনামূলকভাবে সীমিত; সবচেয়ে বড় ব্যবহারকারী হল NetworkSecurityConfig, যা Conscrypt ট্রাস্ট ম্যানেজারকে (যে কম্পোনেন্ট সার্টিফিকেট যাচাই করে) নেটওয়ার্ক নিরাপত্তা কনফিগারেশন ফিচার ইমপ্লিমেন্ট করার জন্য এক্সটেন্ড করে।
  • ইন্ট্রা-কোর API হল জিরো-আর্গুমেন্ট কনস্ট্রাক্টর যা JCA এবং JSEE মেকানিজম দ্বারা রিফ্লেক্টিভভাবে কল করা হয়।