আমরা একটি ক্লাউড পরিষেবা বর্ণনা করি যা ক্রিপ্টোগ্রাফিক কীগুলি সংরক্ষণ করতে সুরক্ষিত হার্ডওয়্যার ব্যবহার করে যাতে সেগুলিতে অ্যাক্সেস একটি কম এনট্রপি জ্ঞান ফ্যাক্টর দ্বারা সুরক্ষিত থাকে (যেমন, একটি লকস্ক্রিন পিন)। নিরাপদ হার্ডওয়্যারটি সঠিক জ্ঞানের ফ্যাক্টর সরবরাহ করার জন্য অনেক ব্যর্থ প্রচেষ্টার পরে সঞ্চিত ক্রিপ্টোগ্রাফিক কীগুলিকে স্থায়ীভাবে অপরিবর্তনীয় করে পাশবিক শক্তি আক্রমণ প্রতিরোধ করার জন্য ডিজাইন করা হয়েছে।
লেখক: শাবসি ওয়ালফিশ
সংস্করণ তারিখ: 2018-03-06
দ্রষ্টব্য: এই দস্তাবেজটি এখনও একটি কাজ চলছে, এবং বাস্তবায়নের বিবরণ এখনও চূড়ান্ত করা হচ্ছে। সিস্টেমটি স্থিতিশীল হওয়ার সাথে সাথে আরও ডকুমেন্টেশন তৈরি করা যেতে পারে, আমরা এই শ্বেতপত্রকে আরও বিশদ তথ্য সহ আপডেট করব (বিশেষ করে প্রাসঙ্গিক ওপেন সোর্স রিলিজের সাথে)।
ওভারভিউ
ঐতিহ্যগতভাবে, এনক্রিপশন (যা ডেটা গোপনীয়তা নিশ্চিত করতে ব্যবহৃত হয়) এর জন্য আক্রমণকারীর দৃষ্টিকোণ থেকে উচ্চ এনট্রপি আছে এমন গোপনীয়তার ব্যবহার প্রয়োজন। উচ্চ এনট্রপি প্রয়োজন কারণ এনক্রিপশন স্কিমটি অবশ্যই পাশবিক শক্তির আক্রমণকে প্রতিরোধ করতে হবে যা সঠিকটি না পাওয়া পর্যন্ত সম্ভাব্য সমস্ত গোপনীয়তার স্থান অন্বেষণ করে। কম্পিউটেশনাল পাওয়ারের আজকের প্রাপ্যতার পরিপ্রেক্ষিতে, ক্রিপ্টোগ্রাফিক গোপনীয়তার জন্য একটি যুক্তিসঙ্গত ন্যূনতম এনট্রপি প্রয়োজনীয়তা 70 থেকে 80 বিটের আশেপাশে হতে পারে। দুর্ভাগ্যবশত, মানুষের পক্ষে এনট্রপি 1 এর পরিমাণের সাথে পাসওয়ার্ড বা অন্যান্য গোপনীয়তাগুলি মনে রাখা এবং নির্ভরযোগ্যভাবে স্মরণ করা খুব কঠিন বলে মনে হয়, বিশেষ করে যদি সেগুলি খুব কমই ব্যবহার করা হয় (কিন্তু উচ্চ এনট্রপি পাসওয়ার্ডের ঘন ঘন ব্যবহার কঠিন এবং ক্লান্তিকর)। এটি আমাদেরকে একটি চ্যালেঞ্জিং সমস্যায় ফেলে দেয়: কীভাবে আমরা এনক্রিপশন প্রযুক্তির মাধ্যমে ব্যক্তিগত ডেটা রক্ষা করতে পারি, যদি আমরা গোপনটি একটি "জ্ঞান ফ্যাক্টর" হতে চাই যা ব্যবহারকারীর মনে রাখার খুব সম্ভাবনা থাকে? বিভিন্ন কারণে, এই সমস্যাটি সমাধান করা এতটাই কঠিন যে ক্লাউড স্টোরেজ পরিষেবাগুলি সাধারণত কেবলমাত্র গোপনীয় তথ্যগুলিকে এনক্রিপ্ট করে যা ক্লাউড স্টোরেজ প্রদানকারীর দ্বারা পরিচালিত হয়, ব্যবহারকারীর নিজস্ব গোপনীয়তা মনে রাখার জন্য নির্ভর না করে৷
ক্রিপ্টোগ্রাফিক গোপনীয়তা এবং মানুষের স্মরণীয় গোপনীয়তার প্রয়োজনীয়তার মধ্যে ব্যবধান পূরণ করার একটি পদ্ধতি হল একটি উচ্চ এনট্রপি "পুনরুদ্ধার কী" সংরক্ষণ করতে একটি ক্লাউড কী ভল্ট (CKV) পরিষেবা ব্যবহার করা, একটি নিম্ন এনট্রপি মানব স্মরণীয় গোপনীয়তা দ্বারা সুরক্ষিত। CKV পরিষেবা পুনরুদ্ধারের চাবিটি শুধুমাত্র এমন একটি পক্ষের কাছে প্রকাশ করবে যারা সঠিক মানুষের স্মরণীয় গোপনীয়তার জ্ঞান প্রমাণ করে। মানব স্মরণীয় গোপনের বিরুদ্ধে নৃশংস শক্তির আক্রমণগুলি CKV পরিষেবা দ্বারা ব্যর্থ করা যেতে পারে, যা গোপনের জ্ঞান প্রমাণ করার ব্যর্থ প্রচেষ্টার সংখ্যার উপর একটি নিখুঁত সীমা প্রয়োগ করবে। পুনরুদ্ধার কী নিজেই একটি স্ট্যান্ডার্ড ক্রিপ্টোগ্রাফিক সিমেট্রিক কী, একটি (প্রমাণিত) এনক্রিপশন স্কিমের সাথে ব্যবহারের জন্য উপযুক্ত যা সহজেই বিপুল পরিমাণ ডেটা এনক্রিপ্ট করতে পারে (যেমন একটি ডিস্ক ব্যাকআপ) যা নিরাপদে যে কোনও জায়গায় সংরক্ষণ করা যেতে পারে – এই জাতীয় এনক্রিপ্ট করা ডেটা অকেজো। যে কেউ পুনরুদ্ধার কী পেতে পারে না।
এই শ্বেতপত্রটি বিশ্বস্ত হার্ডওয়্যার মডিউল (THMs) ব্যবহার করে একটি ক্লাউড কী ভল্ট পরিষেবা তৈরি করার জন্য আমাদের পদ্ধতির বর্ণনা করে। CKV পরিষেবার আমাদের প্রথম বাস্তবায়ন ব্যবহারকারীর লক স্ক্রিন নলেজ ফ্যাক্টর (LSKF)-এর সাহায্যে পুনরুদ্ধার কীগুলিকে সুরক্ষিত করার জন্য ডিজাইন করা হয়েছে – স্মার্টফোন আনলক করতে ব্যবহৃত গোপন পিন, পাসওয়ার্ড বা সোয়াইপ প্যাটার্ন৷ মানুষ নির্ভরযোগ্যভাবে তাদের LSKF মনে রাখতে পারে। একই সময়ে, এই ধরনের LSKF গোপনীয়তাগুলিতে সাধারণত আক্রমণকারীকে প্রতিরোধ করার জন্য যথেষ্ট এনট্রপি থাকে যার খুব সীমিত সংখ্যক প্রচেষ্টা রয়েছে, যা তাদের CKV পরিষেবার জন্য উপযুক্ত করে তোলে।
আমাদের ক্লাউড কী ভল্ট পরিষেবার প্রথম অ্যাপ্লিকেশনটি হ'ল ক্লায়েন্ট-সাইড এনক্রিপ্ট করা Android ব্যাকআপগুলি সক্ষম করা৷ পূর্বে, অ্যান্ড্রয়েড ডিভাইসে স্থানীয়ভাবে এনক্রিপ্ট করা ফাইলগুলি ব্যবহারকারীর LSKF দ্বারা সুরক্ষিত একটি কী ব্যবহার করত, কিন্তু ক্লাউডে সংরক্ষিত (এবং এনক্রিপ্ট করা) ফাইলগুলির ব্যাকআপগুলি LSKF দ্বারা সুরক্ষিত ছিল না। প্রথমবারের মতো, ক্লাউড কী ভল্ট ক্লাউডে সঞ্চিত অ্যান্ড্রয়েড ব্যাকআপগুলির জন্য লক স্ক্রিন সুরক্ষা সক্ষম করে৷ এর মানে হল যে Google এর সার্ভারগুলির এনক্রিপ্ট করা ব্যাকআপগুলির বিষয়বস্তু অ্যাক্সেস বা পুনরুদ্ধার করার কোন ক্ষমতা নেই - শুধুমাত্র ব্যবহারকারীর LSKF সহ একটি ডিভাইস ব্যাকআপগুলি ডিক্রিপ্ট করতে পারে৷
মূল ধারণা
প্রাথমিকভাবে, ক্লাউড কী ভল্ট পরিষেবার একমাত্র সমর্থিত ক্লায়েন্ট প্ল্যাটফর্ম হল অ্যান্ড্রয়েড 9 পাই অপারেটিং সিস্টেম, এবং যখন আমরা এই শ্বেতপত্র জুড়ে ক্লায়েন্টকে উল্লেখ করি তখন আমরা Google Play পরিষেবাগুলির সাথে Android 9 Pie অপারেটিং সিস্টেম চালিত একটি ডিভাইসের কথা উল্লেখ করছি৷ আমাদের সার্ভার সাইড ইমপ্লিমেন্টেশন বিশেষভাবে মনোনীত Google সার্ভারগুলিতে চলে যেগুলিতে একটি অতিরিক্ত টাইটান চিপ 2 ইনস্টল করা আছে। Google-এর ডিজাইন করা টাইটান চিপটি আমাদের বিশ্বস্ত হার্ডওয়্যার মডিউলে হার্ডওয়্যার উপাদান হিসেবে কাজ করে এবং আমরা বিশেষভাবে এটিকে একটি কাস্টম বুটলোডার এবং ফার্মওয়্যার দিয়ে সরবরাহ করি যা আমাদের প্রোটোকল এবং নিরাপত্তা প্রয়োগের প্রক্রিয়া (যেমন এখানে বর্ণিত) প্রয়োগ করে। আমাদের প্রোটোকল যে সত্যিই টাইটান হার্ডওয়্যারে চলছে তা নিশ্চিত করার জন্য আমরা হার্ডওয়্যার প্রত্যয়ন কৌশল ব্যবহার করি।
হার্ডওয়্যার ব্যর্থতার কারণে (যেমন, বার্ন-আউট চিপস) বা ডেটা সেন্টার রক্ষণাবেক্ষণের কারণে কোনও বর্ধিত বিভ্রাটের সম্মুখীন না হয়ে CKV পরিষেবাটিকে 3 বিলিয়ন অ্যান্ড্রয়েড ডিভাইস থেকে ট্র্যাফিক পরিচালনা করতে স্কেল করতে হবে। এই কারণে, টাইটান চিপগুলির সাথে সার্ভারগুলিকে কোহর্টে সংগঠিত করা হয়, যেখানে প্রতিটি কোহর্টে বেশ কয়েকটি স্বাধীন THM থাকে যার প্রতিটিতে একই মূল উপাদানের একটি অনুলিপি থাকে। সিস্টেমটি তার প্রাপ্যতা এবং নির্ভরযোগ্যতা লক্ষ্যগুলি পূরণ করতে পারে তা নিশ্চিত করার জন্য একটি প্রদত্ত দলকে বিভিন্ন রক্ষণাবেক্ষণ অঞ্চলে শারীরিকভাবে অসম তথ্য কেন্দ্রগুলিতে বিতরণ করা হবে। স্কেলেবিলিটির জন্য, ক্লায়েন্টদেরকে বিভিন্ন কোহর্টে ভাগ করা হবে, যাতে আমরা উপলভ্য কোহর্টের সংখ্যা বাড়ানোর জন্য আরও সার্ভার যোগ করে পরিষেবার ক্ষমতা সামঞ্জস্য করতে পারি।
আমরা এখন ক্লাউড কী ভল্ট পরিষেবা আর্কিটেকচারের প্রধান উপাদানগুলি গণনা করতে প্রস্তুত৷
স্থাপত্য উপাদান / শব্দকোষ
লক স্ক্রিন নলেজ ফ্যাক্টর (LSKF): একটি মানব-স্মরণীয় গোপনীয়তা, যেমন একটি ছোট পিন, একটি 3 x 3 ডট গ্রিডের উপর একটি সোয়াইপ প্যাটার্ন, বা একটি পাসওয়ার্ড৷ এই গোপনীয়তাটি স্থানীয়ভাবে ডিভাইসটিকে আনলক করার ক্ষমতা রক্ষা করতে ব্যবহৃত হয় এবং ব্যবহারকারীর স্থানীয় ডিভাইস স্ক্রীন লকের জন্য এটি একটি প্রাথমিক (বা "শক্তিশালী") প্রমাণীকরণ ফ্যাক্টর হিসেবে বিবেচিত হয়৷
ক্লায়েন্ট: অ্যান্ড্রয়েড 9 পাই অপারেটিং সিস্টেম এবং গুগল প্লে পরিষেবা, বা সমতুল্য সমর্থিত সফ্টওয়্যার চালানোর একটি শেষ ব্যবহারকারী ডিভাইস৷
অ্যান্ড্রয়েড ফ্রেমওয়ার্ক: আমরা এই জেনেরিক শব্দটি ব্যবহার করি (বা শুধুমাত্র ফ্রেমওয়ার্ক ) Android 9 Pie বা পরবর্তীতে APIs উল্লেখ করতে, এবং এটি কোনো পূর্ববর্তী রিলিজের উল্লেখ করার জন্য নয়।
Google Play পরিষেবাগুলি: পরিষেবা এবং অ্যাপগুলির একটি সংগ্রহ যা শেষ ব্যবহারকারীর ডিভাইসে চলে, যা এটিকে Google এর অ্যাকাউন্ট সিস্টেম এবং কাস্টম সার্ভার API-এর সাথে কাজ করতে সক্ষম করে৷
রিকভারি এজেন্ট: একটি অ্যান্ড্রয়েড 9 পাই ডিভাইসে (বা অনুরূপ) ব্যবহারকারী-স্পেসে Google Play পরিষেবার অংশ হিসাবে চলমান একটি সিস্টেম অ্যাপ্লিকেশন। রিকভারি এজেন্ট বিভিন্ন প্রোটোকলের ক্লায়েন্ট সাইড কার্যকর করতে এবং LSKF এর সাথে জড়িত যেকোন প্রোটোকল বার্তা তৈরি করার জন্য প্রয়োজনীয় Android অপারেটিং সিস্টেমের সাথে ইন্টারফেস করার জন্য দায়ী।
পুনরুদ্ধারের দাবি: যখন ব্যবহারকারী পুনরুদ্ধার কী পুনরুদ্ধার করতে চায়, তখন তাদের অবশ্যই একটি পুনরুদ্ধার দাবি তৈরি করতে হবে, যাতে LSKF-এর একটি এনক্রিপ্ট করা অনুলিপি থাকে যা ব্যবহারকারীর দাবি করে। সাধারণত, ব্যবহারকারীকে একটি নতুন ডিভাইসে তাদের পুরানো ডিভাইসের LSKF প্রবেশ করতে বলা হবে যা পুরানোটির রিকভারি কী অ্যাক্সেস করার চেষ্টা করছে।
পুনরুদ্ধার কী: একটি ক্রিপ্টোগ্রাফিক গোপন কী যা ক্লাউড কী ভল্ট পরিষেবা দ্বারা সুরক্ষিত এবং ক্লায়েন্ট ডিভাইসে ডেটা এনক্রিপ্ট (এবং প্রমাণীকরণ) করতে ব্যবহৃত হয়। একবার রিকভারি কীটি ভল্টে রাখা হয়ে গেলে (নীচে দেখুন) ক্লায়েন্ট ডেটা এনক্রিপ্ট করার জন্য এটি ব্যবহার করার সাথে সাথে স্থানীয় অনুলিপিটি মুছে ফেলা যেতে পারে।
ক্লাউড কী ভল্ট (CKV) পরিষেবা: একটি ইন্টারনেট পরিষেবা যা ক্লায়েন্ট ডিভাইসগুলিকে মানব-স্মরণীয় LSKF দ্বারা সুরক্ষিত ক্রিপ্টোগ্রাফিক কীগুলি সংরক্ষণ করতে সক্ষম করে৷
কোহর্ট: ভল্ট সার্ভার/THM-এর একটি সংগ্রহ যা একে অপরের অপ্রয়োজনীয় প্রতিলিপি হিসাবে পরিবেশন করতে সক্ষম।
কোহর্ট পাবলিক কী : THM-এর একটি নির্দিষ্ট কোহর্ট দ্বারা তৈরি একটি কী জোড়া থেকে পাবলিক কী। সংশ্লিষ্ট প্রাইভেট কী শুধুমাত্র সেই THM-এর ভিতরেই পাওয়া যায় যা কী জেনারেশনের সময়ে কোহর্টে ছিল।
বিশ্বস্ত হার্ডওয়্যার মডিউল (THM): একটি নিবেদিত নিরাপত্তা মডিউল (মাইক্রোকন্ট্রোলার) একটি ন্যূনতম এবং বিশ্বস্ত কম্পিউটিং পরিবেশ প্রদানের জন্য ডিজাইন করা হয়েছে। সর্বনিম্নভাবে, সুরক্ষিত উপাদানটি অবশ্যই গোপন কী তৈরি করতে এবং/অথবা সঞ্চয় করতে সক্ষম হতে হবে এবং কিছু অ-উদ্বায়ী বিকশিত অবস্থা বজায় রাখতে হবে (যাতে এটি পূর্ববর্তী অবস্থায় পুনরায় সেট করার সাথে জড়িত আক্রমণ প্রতিরোধ করতে পারে)।
ভল্ট: CKV পরিষেবার ডাটাবেসের একটি নির্দিষ্ট এন্ট্রি, যাতে একটি একক ডিভাইসের LSKF সুরক্ষিত পুনরুদ্ধার কী থাকে। একজন শেষ ব্যবহারকারীর ফাইলে একাধিক ভল্ট থাকতে পারে, প্রতিটি আলাদা ডিভাইস বা LSKF এর সাথে সম্পর্কিত। একটি ভল্ট সার্ভারে শুধুমাত্র THM একটি ভল্টের বিষয়বস্তু পরীক্ষা বা বের করতে পারে।
ভল্ট সার্ভার: একটি সাধারণ উদ্দেশ্যের মেশিন একটি Google ডেটা সেন্টারে কাজ করে যা একটি বিশ্বস্ত হার্ডওয়্যার মডিউল (THM) যোগ করার জন্য বিশেষভাবে পুনরুদ্ধার করা হয়েছে।
প্রোটোকল ডিজাইন
CKV প্রোটোকল বিভিন্ন পর্যায় নিয়ে গঠিত, নিম্নরূপ:
সূচনা
সিস্টেমটি শুরু করার জন্য, Google একটি "বিশ্বাসের মূল" এর জন্য একটি সর্বজনীন কী সরবরাহ করবে যা ফ্রেমওয়ার্ক Google এর হার্ডওয়্যার প্রত্যয়ন যাচাই করতে ব্যবহার করবে। বিশ্বাসের এই মূলের জন্য সাইনিং কী অফলাইনে সংরক্ষণ করা হয় এবং সাবধানে সুরক্ষিত থাকে যাতে এটির সাথে স্বাক্ষর করার জন্য একাধিক কর্মচারীর অংশগ্রহণের প্রয়োজন হয়। বিশ্বাসের এই মূলের জন্য সর্বজনীন কী Android OS-এ বেক করা হয় এবং শুধুমাত্র একটি OS আপডেটের মাধ্যমে পরিবর্তন করা যায়।
এছাড়াও Google পর্যায়ক্রমে THM-এর প্রতিটি কোহর্টের জন্য সর্বজনীন কীগুলির একটি তালিকা প্রকাশ করে, তালিকায় একটি প্রত্যয়ন সহ। তালিকার প্রত্যয়ন একটি স্বাক্ষর ব্যবহার করে যা বিশ্বাসের মূলে ফিরে আসে। প্রকাশিত তালিকার প্রতিটি আপডেটে একটি সিকোয়েন্স নম্বরও রয়েছে, যাতে রোলব্যাক প্রতিরোধ করা সম্ভব হয়। রিকভারি এজেন্ট Cohort পাবলিক কীগুলির সাম্প্রতিক প্রকাশিত তালিকা আনবে এবং ফ্রেমওয়ার্কে সরবরাহ করবে। ফ্রেমওয়ার্ক তারপরে প্রত্যয়ন যাচাই করে এবং ভল্ট তৈরির পর্বে ব্যবহার করার জন্য তালিকা থেকে এলোমেলোভাবে একটি কোহোর্ট পাবলিক কী নির্বাচন করে।
ভল্ট সৃষ্টি
কোহোর্ট পাবলিক কী- এর তালিকা নিয়ে ফ্রেমওয়ার্ক সম্পূর্ণ ইনিশিয়ালাইজেশনে সাহায্য করার পর, রিকভারি এজেন্ট ফ্রেমওয়ার্ককে একটি নতুন ভল্ট তৈরি করার অনুরোধ করবে। যখনই ব্যবহারকারী LSKF পরবর্তীতে প্রবেশ করবে, ফ্রেমওয়ার্ক একটি নতুন রিকভারি কী তৈরি করবে এবং প্রথমে LSKF-এর একটি হ্যাশ থেকে প্রাপ্ত একটি কী দিয়ে এনক্রিপ্ট করবে, এবং তারপর শুরুর সময় ফ্রেমওয়ার্ক দ্বারা নির্বাচিত কোহোর্ট পাবলিক কী দিয়ে। ফলস্বরূপ এনক্রিপ্ট করা ব্লব হল ভল্ট যা ফ্রেমওয়ার্ক দ্বারা রিকভারি এজেন্টের কাছে ফেরত পাঠানো হয়, যা পরে এটিকে Google-এর CKV পরিষেবাতে আপলোড করে৷
ভল্ট খোলা
যখন নতুন ডিভাইসে রিকভারি এজেন্টকে একটি নির্দিষ্ট ভল্টে সংরক্ষিত রিকভারি কী- তে অ্যাক্সেস পেতে হবে, তখন এটি প্রথমে ব্যবহারকারীকে ভল্ট তৈরি করা আসল ডিভাইসের LSKF-এ প্রবেশ করতে বলবে। রিকভারি এজেন্ট তখন ফ্রেমওয়ার্ককে সেই LSKF ব্যবহার করে একটি রিকভারি দাবি তৈরি করতে বলবে। ফ্রেমওয়ার্কটি একটি নতুন দাবিদার কী তৈরি করবে এবং সেই দাবিদার কীটির পাশাপাশি দাবি করা LSKF-এর হ্যাশকে এনক্রিপ্ট করবে, একই Cohort পাবলিক কী দিয়ে যেটি ভল্টটি মূলত এনক্রিপ্ট করা হয়েছিল। ফলস্বরূপ এনক্রিপ্ট করা ব্লবকে বলা হয় পুনরুদ্ধার দাবি , এবং ফ্রেমওয়ার্ক এটিকে পুনরুদ্ধার এজেন্টের কাছে প্রেরণ করে, যা পরে এটিকে CKV পরিষেবাতে উপস্থাপন করে।
CKV রিকভারি ক্লেইম (এবং এর সংশ্লিষ্ট ভল্ট ) ভল্ট সার্ভারগুলিতে পাঠায় যা সঠিক কোহর্টের অংশ৷ ভল্ট সার্ভারে THM তারপর রিকভারি ক্লেইম ডিক্রিপ্ট করে এবং দাবি করা LSKF হ্যাশ ব্যবহার করে আসল ভল্ট থেকে রিকভারি কী বের করার চেষ্টা করে (অভ্যন্তরীণ এনক্রিপশন কী বের করতে)। যদি আসল LSKF হ্যাশ এবং দাবি করা LSKF হ্যাশ মিলে যায়, তাহলে THM ভল্ট থেকে পুনরুদ্ধার কী বের করবে এবং রিকভারি দাবিতে থাকা দাবিদার কী দিয়ে আবার এনক্রিপ্ট করবে। যদি না হয়, THM একটি ব্যর্থ প্রচেষ্টা পাল্টা ধাক্কা দেবে. একবার ব্যর্থ প্রচেষ্টা কাউন্টার তার সীমায় পৌঁছে গেলে, THM এই ভল্টের জন্য পরবর্তী কোনো পুনরুদ্ধার দাবি প্রক্রিয়া করতে অস্বীকার করবে।
অবশেষে, সবকিছু ঠিকঠাক থাকলে, পুনরায় এনক্রিপ্ট করা রিকভারি কী (যা এখন দাবিদার কী-এর অধীনে এনক্রিপ্ট করা হয়েছে) ভল্ট সার্ভার থেকে ফ্রেমওয়ার্কে ফেরত পাঠানো হয়। রিকভারি কী ডিক্রিপ্ট করতে ফ্রেমওয়ার্ক দাবিদার কী এর অনুলিপি ব্যবহার করে এবং প্রোটোকল এখন সম্পূর্ণ।
নিরাপত্তা ব্যবস্থা
ক্লাউড কী ভল্ট সিস্টেমের লক্ষ্য আমাদের স্ট্যাকের একাধিক স্তরে নিরাপত্তা সুরক্ষা অন্তর্ভুক্ত করে "গভীরভাবে প্রতিরক্ষা" প্রদান করা। এই সুরক্ষাগুলি কীভাবে কাজ করে তা বোঝার জন্য, আমরা ক্লায়েন্টের বর্ণনা দিয়ে শুরু করব এবং ক্লাউড কী ভল্ট পরিষেবাতে স্ট্যাকের উপরে কাজ করব।
ক্লায়েন্ট নিরাপত্তা
নির্দিষ্ট OEM এবং ডিভাইসের উপর নির্ভর করে, লক স্ক্রিন নলেজ ফ্যাক্টর (LSKF) সাধারণত OEM দ্বারা পরিবর্তিত বিভিন্ন পদ্ধতি ব্যবহার করে ডিভাইসে সংরক্ষিত এবং সুরক্ষিত থাকে। উদাহরণস্বরূপ, Google-এর Pixel 2 ডিভাইসগুলি LSKF-কে বিশ্রামে সংরক্ষণ করতে এবং LSKF বৈধকরণে হার্ডওয়্যার ভিত্তিক হারের সীমা প্রয়োগ করতে একটি টেম্পার-প্রতিরোধী হার্ডওয়্যার সুরক্ষা মডিউল ব্যবহার করে। ক্লাউড কী ভল্টের ব্যবহার সক্ষম করার জন্য যে নতুন ফ্রেমওয়ার্ক এপিআইগুলি চালু করা হচ্ছে সেগুলি সম্ভাব্য সর্বাধিক পরিমাণে বিদ্যমান সুরক্ষা গ্যারান্টিগুলি সংরক্ষণ করার জন্য ডিজাইন করা হয়েছে, এমনকি যখন ডিভাইসটি LSKF এর স্টোরেজ রক্ষা করার জন্য এই জাতীয় হার্ডওয়্যার সুরক্ষা মডিউল ব্যবহার করে।
আমরা এই বিভাগটিকে বিশেষভাবে প্রাসঙ্গিক নিরাপত্তা সমস্যা এবং সুরক্ষার উপর ফোকাস করব যা নতুন ক্লাউড কী ভল্ট বৈশিষ্ট্যকে প্রভাবিত করে, LSKF এর সাথে যুক্ত সমস্ত নিরাপত্তা ব্যবস্থার সম্পূর্ণ চিত্র প্রদান করার চেষ্টা করার পরিবর্তে।
ফ্রেমওয়ার্ক এপিআই সুরক্ষিত করা
CKV পরিষেবাকে সমর্থন করার জন্য যুক্ত করা নতুন ফ্রেমওয়ার্ক APIগুলিকে @SystemApi হিসাবে চিহ্নিত করা হয়েছে এবং বিশেষ অনুমতিগুলির প্রয়োজন, যা নিশ্চিত করে যে সেগুলি শুধুমাত্র OEM অনুমোদিত সিস্টেম অ্যাপ যেমন Google Play পরিষেবাগুলিতে উপলব্ধ৷ এটি মূলত ডিভাইসে ব্যবহারকারী দ্বারা ইনস্টল করা অ্যাপগুলির সংস্পর্শে আসতে পারে এমন কোনও সরাসরি আক্রমণের পৃষ্ঠকে সরিয়ে দেয়।
ফ্রেমওয়ার্ক এপিআইগুলি নিশ্চিত করে যে ভল্টগুলি শুধুমাত্র কোহর্ট পাবলিক কীগুলির জন্য তৈরি করা হয়েছে যা বিশ্বাসের মূল দ্বারা সত্যায়িত হয়েছে৷ বিশ্বাসের মূলটি OEM দ্বারা ফ্রেমওয়ার্কের মধ্যে বেক করা হয় যখন এটি পাঠানো হয়, এবং একটি OS আপডেট ছাড়া পরিবর্তন করা যায় না। এটি আস্থা প্রদান করে যে LSKF শুধুমাত্র ভল্ট তৈরি করতে ব্যবহার করা হচ্ছে যা সঠিকভাবে হার্ডওয়্যার-ভিত্তিক ব্রুট ফোর্স সুরক্ষা প্রয়োগ করবে। LSKF-এর জন্য ব্রুট ফোর্স সুরক্ষার জন্য ক্লাউড কী ভল্ট পরিষেবাতে THM-এর উপর নির্ভর করে, আমরা একই জিনিসের জন্য ডিভাইসে সুরক্ষিত হার্ডওয়্যার ব্যবহার করার সাথে তুলনীয় নিরাপত্তা অর্জন করতে পারি (যেমন Google Pixel 2 ডিভাইস করে)।
যেহেতু আমরা অনুমান করি না যে LSKF সুরক্ষিত হার্ডওয়্যারের বাইরে ডিভাইসে কোথাও সংরক্ষণ করা হবে, তাই একটি নতুন ভল্ট শুধুমাত্র একটি ডিভাইস আনলক করার সাথে সাথেই তৈরি করা যেতে পারে। ডিভাইসটি আনলক করার জন্য ব্যবহারকারী LSKF-এ প্রবেশ করার সময়ে, LSKF সংক্ষেপে RAM-তে ফ্রেমওয়ার্কের জন্য উপলব্ধ করা হয়। যে মুহূর্তে ভল্ট তৈরির জন্য নতুন API এটি ব্যবহার করে। ডিভাইসটি লক থাকা অবস্থায় একটি নতুন LSKF সুরক্ষিত ভল্ট তৈরি করা সম্ভব নয়, কারণ LSKF উপলব্ধ নেই৷
পুনরুদ্ধার এজেন্ট সুরক্ষিত
পুনরুদ্ধার এজেন্টে আমরা যে প্রাথমিক নিরাপত্তা সুরক্ষা প্রদান করি তা হল প্রোটোকলটি রিকভারি এজেন্টকে বর্তমান ডিভাইসের LSKF বা যেকোন রিকভারি কী দেখতে না দেওয়ার জন্য ডিজাইন করা হয়েছে। শুধুমাত্র ফ্রেমওয়ার্ক ক্লায়েন্টের দিকে সেই জিনিসগুলি দেখতে পাবে, রিকভারি এজেন্টের সম্ভাব্য বাগ বা সুরক্ষা দুর্বলতাগুলিকে কাজে লাগানো আরও কঠিন করে তোলে৷ রিকভারি এজেন্ট বেশিরভাগই ক্লাউড এবং ফ্রেমওয়ার্কের মধ্যে লাইফসাইকেল ইভেন্টগুলি এবং ডেটা পাস করার জন্য ব্যবহার করা হয়। ভল্ট ওপেনিং প্রোটোকলের ঠিক আগে একটি পুনরুদ্ধারের সময় এটির একমাত্র ব্যতিক্রম ঘটে, যখন ব্যবহারকারীকে অবশ্যই পুরানো ডিভাইসের LSKF-এ প্রবেশ করতে হবে - যে UI পুরানো ডিভাইসের জন্য দাবিকৃত LSKF সংগ্রহ করে রিকভারি এজেন্ট 4 এ প্রয়োগ করা হয়েছে। যাইহোক, রিকভারি এজেন্ট ইমপ্লিমেন্টেশন দাবীকৃত LSKF কে "ভুলে যায়" যত তাড়াতাড়ি ফ্রেমওয়ার্ক রিকভারি ক্লেইম নির্মাণের দায়িত্ব নেয়।
প্রোটোকলের নিরাপত্তা বৈশিষ্ট্য
যদিও প্রোটোকলের সম্পূর্ণ বিশ্লেষণ এই নথির সুযোগের বাইরে, আমরা প্রোটোকলের অন্তর্নির্মিত সুরক্ষাগুলির কয়েকটি হাইলাইট করতে চাই। বিশেষ করে, প্রোটোকল শুধুমাত্র LSKF এর হ্যাশ ব্যবহার করে। এর মানে হল, যদি LSKF-এর উচ্চ এনট্রপি থাকে (যেমন, এটি একটি ভাল উচ্চ-এনট্রপি পাসওয়ার্ড হলে) ভল্ট সংরক্ষণ করা একটি পাসওয়ার্ড হ্যাশ সংরক্ষণ করার চেয়ে কঠোরভাবে ভাল, এবং এই ক্ষেত্রে পাসওয়ার্ড হ্যাশ নিরাপত্তার একটি পরিমাপ প্রদান করতে পারে THM-এর নিরাপত্তা। এই কারণে, আমরা প্রোটোকলের অংশ হিসাবে LSKF এর সল্টেড "মেমরি হার্ড" হ্যাশিং সমর্থন করি। এছাড়াও আমরা ক্রিপ্টোগ্রাফিকভাবে ভল্টটিকে যে ডিভাইসটি তৈরি করেছে তার জন্য একটি শনাক্তকারীর সাথে আবদ্ধ করি এবং পুনরুদ্ধারের দাবিটিকে একটি ননসে আবদ্ধ করি যা ভল্ট খোলার প্রোটোকলের সময় একটি চ্যালেঞ্জ হিসাবে ব্যবহৃত হয় তা নিশ্চিত করার জন্য পুনরুদ্ধার দাবিটি তাজা।
যেহেতু পুনরুদ্ধার কীটি প্রতিটি ভল্ট তৈরিতে নতুনভাবে তৈরি করা হয়, তাই আমরা একটি নতুন তৈরি ভল্টের সাথে বিদ্যমান ভল্ট এন্ট্রি ওভাররাইট করে কী রোটেশন বাস্তবায়ন করি। ভল্ট দ্বারা ব্যবহৃত ব্যর্থ প্রচেষ্টা কাউন্টারের ঠিকানাটি ভল্ট তৈরির সময় নির্বাচন করা হয় এবং ফ্রেমওয়ার্ক নিশ্চিত করে যে পরবর্তী যেকোন ভল্টের জন্য ব্যবহৃত কাউন্টার ঠিকানাটি পরিবর্তন হবে না যদি না হয় LSKF পরিবর্তন করা হয় বা কোহর্ট পাবলিকের একটি নতুন সত্যায়িত তালিকা না থাকে। চাবি। এইভাবে, রিকভারি কী ঘোরানো LSKF-এর জন্য নৃশংস শক্তি সুরক্ষার ক্ষতি না করেই করা যেতে পারে।
ক্লাউড কী ভল্ট পরিষেবার জন্য সার্ভার নিরাপত্তা
সার্ভারটি সাধারণ সার্ভার হার্ডওয়্যারে চলমান সফ্টওয়্যার এবং বিশেষ হার্ডওয়্যারে (টাইটান চিপ) চলমান ফার্মওয়্যারের সংমিশ্রণ ব্যবহার করে প্রয়োগ করা হয়। আমরা প্রতিটি স্তরে দেওয়া সুরক্ষাগুলি বর্ণনা করব৷
হার্ডওয়্যার সুরক্ষা
CKV পরিষেবার সার্ভার সাইডে প্রয়োগ করা প্রাথমিক নিরাপত্তা সুরক্ষা হল বিশ্বস্ত হার্ডওয়্যার মডিউল (THMs) যা Google-এর নিজস্ব কাস্টম-ডিজাইন করা টাইটান চিপ ব্যবহার করে তৈরি করা হয়েছে। চিপগুলি ফার্মওয়্যার চালাচ্ছে যা CKV প্রোটোকলগুলি বাস্তবায়নের জন্য প্রয়োজনীয় APIগুলিকে প্রকাশ করে৷ বিশেষ করে, তারা তাদের কোহর্টের অন্যান্য সদস্যদের সাথে একটি কী জোড়া তৈরি করতে এবং নিরাপদে ভাগ করতে পারে যেমন ফার্মওয়্যার লজিক ব্যক্তিগত কীটিকে কোহর্টের টাইটান চিপগুলির বাইরে লিক হওয়া থেকে রক্ষা করে। তারা ভল্ট খোলার অপারেশনটিও করতে পারে এবং ব্যর্থ প্রচেষ্টার প্রতি-ভল্ট কাউন্টারে কঠোরভাবে বর্ধিতকরণ বজায় রাখতে পারে (যেখানে কাউন্টারটি টাইটান চিপের ভিতরে সংরক্ষিত রাষ্ট্র দ্বারা সমর্থিত)। CKV টাইটান চিপ ফার্মওয়্যার দ্বারা সম্পাদিত প্রোটোকলের আরও বিশদ বিবরণ এই নথির ভবিষ্যতের প্রকাশে প্রদান করা হবে।
টাইটান চিপসের ফার্মওয়্যার লজিক থেকে সার্ভারের নিরাপত্তা প্রাপ্ত হওয়ার কারণে, আমাদের অবশ্যই নিশ্চিত করতে হবে যে লজিক এমনভাবে পরিবর্তিত না হয় যা চিপগুলিকে গোপনীয়তা ফাঁস করতে দেয় বা পাল্টা সীমা উপেক্ষা করতে দেয়। এই লক্ষ্যটি সম্পন্ন করার জন্য, আমরা টাইটান বুট লোডারকেও পরিবর্তন করি যাতে নিশ্চিত করা যায় যে চিপের সংরক্ষিত ডেটা (যেমন কোহর্টের জন্য ব্যক্তিগত কী) কোনো আপডেট প্রয়োগ করার আগে সম্পূর্ণরূপে মুছে ফেলা হয়। এই সুরক্ষার নেতিবাচক দিক হল যে আমরা কিছু ডেটা ক্ষতির সম্মুখীন না হয়ে ফার্মওয়্যারে বাগগুলি প্যাচ করতে পারি না – ফার্মওয়্যার আপডেট করা কার্যত বিদ্যমান হার্ডওয়্যারকে ধ্বংস করে নতুন চিপ দিয়ে প্রতিস্থাপন করার সমান। একটি গুরুত্বপূর্ণ ফার্মওয়্যার প্যাচের প্রয়োজন হলে, Google-কে সত্যায়িত কোহর্ট পাবলিক কীগুলির একটি সম্পূর্ণ নতুন তালিকা তৈরি এবং প্রকাশ করতে হবে এবং ধীরে ধীরে সমস্ত ব্যবহারকারীকে নতুন তালিকায় স্থানান্তর করতে হবে। এই ঝুঁকি কমানোর জন্য, আমরা ফার্মওয়্যার কোডবেসকে মোটামুটি ন্যূনতম রাখার চেষ্টা করি, এবং যেকোনো সম্ভাব্য নিরাপত্তা সমস্যার জন্য সাবধানতার সাথে এটি নিরীক্ষণ করি।
সফ্টওয়্যার সুরক্ষা
THM-এর দ্বারা আরোপিত কঠিন প্রতি-ভল্ট ব্যর্থতার সীমা ছাড়াও, CKV পরিষেবাটি সফ্টওয়্যার-ভিত্তিক হার সীমাবদ্ধতাও প্রয়োগ করে। রেট সীমিতকরণটি একটি হাইজ্যাকারকে ব্যবহারকারীর অ্যাকাউন্টে প্রবেশ করতে বাধা দেওয়ার জন্য ডিজাইন করা হয়েছে এবং তাদের পুনরুদ্ধারের ব্যর্থ প্রচেষ্টার সীমা দ্রুত শেষ করে, কার্যকরভাবে তাদের পুনরুদ্ধার কীগুলিতে প্রকৃত ব্যবহারকারীর অ্যাক্সেস লক করে দেয়৷ স্ক্রীন আনলক করার অনেক ব্যর্থ প্রচেষ্টার পরে ব্যবহারকারীর ডিভাইস দ্বারা আরোপিত সময় বিলম্বের অনুরূপ, CKV পরিষেবা প্রতিটি পরবর্তী ব্যর্থ ভল্ট খোলার অনুরোধের পরে একটি ক্রমবর্ধমান সময় বিলম্ব প্রয়োগ করবে।
আমরা ক্লাউড পরিষেবাগুলির জন্য স্ট্যান্ডার্ড সুরক্ষা ব্যবস্থাগুলিও প্রয়োগ করি যা ব্যবহারকারীর ডেটা হোস্ট করে, যার মধ্যে কঠোর অ্যাক্সেস নিয়ন্ত্রণ, পর্যবেক্ষণ এবং নিরীক্ষা সহ।
বিস্তারিত প্রোটোকল স্পেসিফিকেশন
বিস্তারিত প্রোটোকল স্পেসিফিকেশন এখনও চলছে, এবং এই বছরের শেষের দিকে অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে ক্লায়েন্ট কোড প্রকাশের সাথে সেই বিবরণগুলি অন্তর্ভুক্ত করতে এই নথিটি আপডেট করা হবে।
নোট
- "মানব মেমরিতে 56-বিট সিক্রেটসের নির্ভরযোগ্য স্টোরেজের দিকে | USENIX।" 1 আগস্ট 2014, https://www.usenix.org/node/184458 । ↩
- "গুগল ক্লাউড প্ল্যাটফর্ম ব্লগ: গভীরতায় টাইটান: প্লেইনটেক্সটে নিরাপত্তা।" 24 আগস্ট 2017, https://cloudplatform.googleblog.com/2017/08/Titan-in-depth-security-in-plaintext.html ↩
- "গুগল অ্যান্ড্রয়েডে 2 বিলিয়ন মাসিক সক্রিয় ডিভাইস ঘোষণা করেছে...." 17 মে। 2017, https://www.theverge.com/2017/5/17/15654454/android-reaches-2-billion-monthly-active-users । ↩
- এটি আমাদের অন্য ডিভাইসের LSKF-এ প্রবেশের জন্য নমনীয় UI প্রদান করতে দেয় -- বর্তমান ডিভাইসের ফ্রেমওয়ার্কে পুরানো ডিভাইসের LSKF-এ প্রবেশ করার জন্য উপযুক্ত UI নাও থাকতে পারে। ↩