Drive API ব্যবহার করে ক্লায়েন্ট-সাইড এনক্রিপ্টেড ফাইলগুলি পরিচালনা করুন

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

শুরু করার আগে

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

প্রমাণীকরণ এবং অনুমোদন

Drive API এবং আপনার KACLS-এর সাথে ইন্টারঅ্যাক্ট করতে, আপনাকে একটি প্রমাণীকরণ পদ্ধতি বেছে নিতে হবে। এই পছন্দটি উভয় পরিষেবার সাথে আপনার ইন্টারঅ্যাকশনকে প্রভাবিত করে:

  • ব্যক্তি: একজন ব্যক্তি হিসেবে প্রমাণীকরণের জন্য, সেই ব্যবহারকারীর পক্ষ থেকে কাজ করতে OAuth ফ্লো ব্যবহার করুন। স্ট্যান্ডার্ড /wrap এবং /unwrap এন্ডপয়েন্টগুলো ব্যবহার করুন এবং সেই ব্যবহারকারীর জন্য Google অথরাইজেশন টোকেন প্রদান করুন।
  • প্রশাসক: ডোমেইনে অন্য ব্যবহারকারীদের ছদ্মবেশ ধারণ করতে, ডোমেইন-ব্যাপী ডেলিগেশন (DWD) সহ একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করুন। গুগল অনুমোদন টোকেন ছাড়াই /privilegedwrap এবং /privilegedunwrap এন্ডপয়েন্টগুলি ব্যবহার করুন।

ক্রেডেনশিয়াল তৈরি করার বিষয়ে অতিরিক্ত বিবরণের জন্য, "অ্যাক্সেস ক্রেডেনশিয়াল তৈরি করুন" নির্দেশিকাটি দেখুন।

ডোমেইন আইডিপি প্রমাণীকরণ

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

পরিচয়পত্র নিরাপদে পরিচালনা করুন

আপনার অ্যাপ্লিকেশনটি ড্রাইভ এপিআই (Drive API) এবং আপনার আইডিপি (IdP)-তে প্রমাণীকরণের জন্য সংবেদনশীল ক্রেডেনশিয়াল পরিচালনা করে। এগুলোর মধ্যে রয়েছে:

  • IdP থেকে প্রাপ্ত গোপনীয় উপাদান, যেমন একটি ক্লায়েন্ট-সিক্রেট-ফাইল
  • গুগল থেকে প্রাপ্ত গোপনীয় উপাদান, যেমন একটি পরিষেবা-অ্যাকাউন্ট-প্রাইভেট-কী-ফাইল
  • অ্যাপ দ্বারা সংরক্ষিত গোপনীয় তথ্য, যেমন সংরক্ষিত পরিচয়পত্র

আপনাকে অবশ্যই নিশ্চিত করতে হবে যে এই সমস্ত পরিচয়পত্র নিরাপদে সংরক্ষণ করা হয়েছে।

সীমা এবং কোটা

ক্লায়েন্ট-সাইডে এনক্রিপ্ট করা ফাইলগুলো ড্রাইভের সাধারণ সীমা এবং কোটার অধীন। শেয়ার্ড ড্রাইভের সীমা , সাধারণ ফাইল ও ফোল্ডারের সীমা এবং আপনার কোটা কীভাবে পরিচালনা করবেন সে সম্পর্কে সচেতন থাকুন। এছাড়াও, আপনার ইম্পোর্ট টুলটিকে অবশ্যই আপনার কী অ্যাক্সেস কন্ট্রোল লিস্ট সার্ভিস (KACLS) এবং আপনার আইডেন্টিটি প্রোভাইডার (IdP) থেকে আসা রেট লিমিটগুলো সামলাতে হবে।

এনক্রিপ্টেড ফাইল কাঠামো

আপলোড এবং ডাউনলোডের জন্য ড্রাইভ নিম্নলিখিত ক্লায়েন্ট-সাইড এনক্রিপ্টেড ফাইল ফরম্যাটটি প্রত্যাশা করে।

+-------------------+
| Magic header      |
+-------------------+
| Encrypted Chunk 1 |
+-------------------+
| Encrypted Chunk 2 |
+-------------------+
| ...               |
+-------------------+
| Encrypted Chunk N |
+-------------------+

ম্যাজিক হেডার

ম্যাজিক হেডার (যা ফাইল সিগনেচার বা ম্যাজিক নম্বর নামেও পরিচিত) হলো একটি ধ্রুবক বাইট অনুক্রম, যা কোনো ফাইলের ফরম্যাটকে অনন্যভাবে শনাক্ত করার জন্য সেটির একেবারে শুরুতে স্থাপন করা হয়। ফাইলটি অবশ্যই 0x99 0x5E 0xCC 0x5E বাইটগুলো দিয়ে শুরু হতে হবে।

এনক্রিপ্ট করা খণ্ডগুলি

ফাইলটিকে অবশ্যই ২ MiB আকারের খণ্ডে বিভক্ত করতে হবে। প্রতিটি খণ্ডকে Google Tink লাইব্রেরির Authenticated Encryption with Associated Data (AEAD) প্রিমিটিভ ব্যবহার করে এনক্রিপ্ট করা হয়। এক্ষেত্রে AES-GCM কী টাইপ, চাঙ্ক ইনডেক্স এবং একটি চূড়ান্ত চাঙ্ক ফ্ল্যাগকে অ্যাসোসিয়েটেড ডেটা হিসেবে ব্যবহার করা হয়। Drive API ব্যবহার করে এবং এই স্পেসিফিকেশন মেনে চলে এমন একটি কোড উদাহরণের জন্য ওপেন সোর্স ডেমোটি দেখুন।

একটি ফাইল এনক্রিপ্ট করুন এবং আপলোড করুন

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

একটি সিএসই টোকেন সংগ্রহ করুন

Drive API-এর Files:generateCseToken মেথডটি কল করে Google Drive থেকে একটি CSE টোকেনের জন্য অনুরোধ করুন। নিশ্চিত করুন যে আপনি অনুরোধে fileId কোয়েরি প্যারামিটারটি অন্তর্ভুক্ত করছেন না। একটি নির্দিষ্ট ফোল্ডারে ফাইলটি তৈরি করতে, ফোল্ডার আইডি সহ parent কোয়েরি প্যারামিটারটি অন্তর্ভুক্ত করুন। যদি parent বাদ দেওয়া হয়, তাহলে ফাইলটি ব্যবহারকারীর রুট My Drive ফোল্ডারে তৈরি হবে। রেসপন্সে আপলোডের জন্য একটি অনন্য ফাইল আইডি এবং একটি JWT অথরাইজেশন টোকেন অন্তর্ভুক্ত থাকে, যা কী র‍্যাপিং ধাপের জন্য প্রয়োজন।

স্থানীয়ভাবে ডেটা এনক্রিপ্ট করুন

  1. ফাইলটির জন্য একটি অনন্য ডেটা এনক্রিপশন কী (DEK) তৈরি করতে গুগল টিঙ্ক ব্যবহার করুন।
  2. এনক্রিপ্টেড ফাইল কাঠামো অনুযায়ী ফাইলের বিষয়বস্তু এনক্রিপ্ট করুন।

কম্পিউট রিসোর্স কী হ্যাশ

রিসোর্স কী হ্যাশ গণনা করতে:

  1. generateCseToken থেকে প্রাপ্ত jwt অথরাইজেশন টোকেন থেকে resource_name এবং perimeter_id বের করুন। যদি perimeter_id না থাকে, তাহলে একটি খালি স্ট্রিং ব্যবহার করুন।
  2. প্লেইনটেক্সট DEK-কে কী (key) এবং ResourceKeyDigest:my_resource_name:my_perimeter_id স্ট্রিংটিকে স্বাক্ষরের জন্য ডেটা (data to sign) হিসেবে ব্যবহার করে HMAC-SHA256 গণনা করুন।
  3. প্রাপ্ত হ্যাশটিকে Base64-এ এনকোড করুন।

আরও বিস্তারিত তথ্যের জন্য, রিসোর্স কী হ্যাশ দেখুন।

এনক্রিপশন কী মোড়ানো

DEK-কে সুরক্ষিত রাখতে, আপনার এক্সটার্নাল KACLS ব্যবহার করে এটিকে এনক্রিপ্ট (র‍্যাপ) করুন।

  1. উপযুক্ত এন্ডপয়েন্টে কল করুন:
  2. প্লেইনটেক্সট DEK, আপনার IdP অথেনটিকেশন টোকেন, গুগল অথরাইজেশন টোকেন (যদি প্রয়োজন হয়), JWT থেকে resource_name এবং একটি reason প্রদান করুন।
  3. KACLS থেকে মোড়ানো DEK (WDEK) গ্রহণ করুন।

ড্রাইভে আপলোড করুন

এনক্রিপ্টেড ফাইল ব্লবটির একটি স্ট্যান্ডার্ড ফাইল আপলোড সম্পন্ন করতে Drive API-এর files.create এন্ডপয়েন্টটি ব্যবহার করুন। ফাইল মেটাডেটাতে নিম্নলিখিত ফিল্ডগুলি সেট করুন:

  • id : generateCseToken রেসপন্স থেকে প্রাপ্ত অনন্য ফাইল আইডি।
  • mimeType : application/vnd.google-gsuite.encrypted; content="application/octet-stream" .
    • content প্যারামিটারটি মূল ফাইলের MIME টাইপে সেট করা যেতে পারে।
  • clientEncryptionDetails :
    • encryptionState : "encrypted"
    • decryptionMetadata :
      • wrappedKey : KACLS থেকে প্রাপ্ত Wrapped DEK (WDEK)।
      • kaclsId : generateCseToken রেসপন্স থেকে প্রাপ্ত KACLS ID।
      • keyFormat : "tinkAesGcmKey" .
      • aes256GcmChunkSize : "default" .
      • encryptionResourceKeyHash : Compute Resource Key Hash- এ গণনা করা হ্যাশ।

ওপেন সোর্স উদাহরণ

এনক্রিপ্ট এবং আপলোড প্রক্রিয়ার বাস্তব প্রয়োগের জন্য ওপেন সোর্স ডেমোটি দেখুন। এটি একটি কার্যকরী সমাধান প্রদান করে এবং একটি মূল্যবান রেফারেন্স হিসেবে কাজ করতে পারে।

একটি ফাইল ডাউনলোড এবং ডিক্রিপ্ট করুন

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

ফাইলের মেটাডেটা এবং এনক্রিপ্ট করা বিষয়বস্তু পুনরুদ্ধার করুন

ফাইলটির মেটাডেটা এবং কন্টেন্ট পুনরুদ্ধার করতে Drive API-এর Files:get মেথডটি কল করুন। clientEncryptionDetailsDecryptionMetadata থাকে, যার মধ্যে Wrapped DEK (WDEK) এবং KACLS তথ্য সম্বলিত JWT অন্তর্ভুক্ত থাকে।

এনক্রিপশন কী উন্মোচন করুন

  1. উপযুক্ত এন্ডপয়েন্টে কল করুন:
  2. WDEK, আপনার IdP অথেনটিকেশন টোকেন, গুগল অথরাইজেশন টোকেন (প্রয়োজন হলে), resource_name এবং একটি reason প্রদান করুন।
  3. KACLS থেকে DEK প্লেইনটেক্সটটি গ্রহণ করুন।

স্থানীয়ভাবে ডেটা ডিক্রিপ্ট করুন

  1. KACLS থেকে প্রাপ্ত প্লেইনটেক্সট DEK ব্যবহার করে সাইফারটি প্রারম্ভিকীকরণ করুন।
  2. প্রাথমিক ম্যাজিক বাইটগুলো বাদ দিন এবং এনক্রিপ্টেড ফাইল কাঠামো অনুযায়ী অবশিষ্ট বিষয়বস্তু ডিক্রিপ্ট করুন।

ওপেন সোর্স উদাহরণ

ডাউনলোড এবং ডিক্রিপ্ট প্রক্রিয়ার বাস্তব প্রয়োগের জন্য ওপেন সোর্স ডেমোটি দেখুন। এটি একটি কার্যকরী সমাধান প্রদান করে এবং একটি মূল্যবান রেফারেন্স হিসেবে কাজ করতে পারে।

আমদানি করা ফাইলগুলি যাচাই করুন

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

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

রাউন্ডট্রিপ এনক্রিপশন এবং ডিক্রিপশন পরীক্ষা সম্পাদন করুন

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

গুগল ড্রাইভ দিয়ে স্পট-চেকিং

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

ওপেন সোর্স ডেমো

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