সরাসরি পর্বে যান
পর্ব ৭০ · ৮০-এর মধ্যে · মডিউল ১১

Privacy engineering — ডেটা কমানো, GDPR আর বাংলাদেশের উপাত্ত আইন

Privacy Engineering — Data Minimisation, GDPR and Bangladesh's Data Laws

Taught in Bangla, this lesson separates privacy from security, then covers privacy by design, LINDDUN, data inventories, minimisation and retention, pseudonymisation with keyed HMAC in real Python, anonymisation, tokenisation, masking, k-anonymity, differential privacy, consent and dark patterns, deletion requests, GDPR essentials and DPIA, and an overview of Bangladesh's two 2026 data laws.

এই পর্বে যা শিখবেন

  • Privacy আর security-র পার্থক্য, আর ব্যক্তিগত ও সংবেদনশীল ডেটা চেনা
  • Privacy by design, LINDDUN আর data inventory দিয়ে ঝুঁকি খুঁজে বের করা
  • Pseudonymization, anonymization, tokenization আর masking কোথায় কোনটি খাটে
  • k-anonymity যাচাই আর differential privacy-র noise হিসাব করা
  • Consent, dark pattern আর ডেটা মুছে ফেলার অনুরোধ সামলানো
  • GDPR-এর মূল কথা আর বাংলাদেশের দুই উপাত্ত আইনের কাঠামো

১ · Privacy আর security — একই জিনিস নয়

আপনি ব্যাংকের লকারে কিছু রাখলেন। লকারটি খুব মজবুত, দারোয়ান সজাগ, চাবি দুটি। এটি security. এবার ধরুন ব্যাংকের ম্যানেজার আপনার লকারের জিনিসের তালিকা করে বীমা কোম্পানিকে বিক্রি করে দিলেন। কোনো চোর ঢোকেনি, তালা ভাঙেনি। তবু আপনি ঠকেছেন। এটি privacy-র সমস্যা।

Security রক্ষা করে অননুমোদিত মানুষের হাত থেকে। Privacy প্রশ্ন তোলে অনুমোদিত মানুষের আচরণ নিয়েও: এই তথ্য নেওয়ার দরকার ছিল কি? যে কারণে নেওয়া হয়েছিল, সে কারণেই কি ব্যবহার হচ্ছে? মানুষটি কি জানেন? পর্ব ২-এর confidentiality ছাড়া privacy টেকে না। কিন্তু উল্টোটি সত্য নয়। পুরোপুরি encrypted, পুরোপুরি নিরাপদ একটি system-ও মানুষের ওপর গোপনে নজরদারি করতে পারে।

Privacy engineering মানে এই প্রশ্নগুলোকে আইনি কাগজে ফেলে না রেখে system-এর নকশায় বসানো: কোন field নেওয়া হবে, কতদিন থাকবে, কে দেখবেন, কীভাবে মুছবে।

প্রশ্নSecurityPrivacy
কাকে নিয়ে ভাবেপ্রতিষ্ঠানের সম্পদ, system, ডেটাযে মানুষের তথ্য, সেই মানুষটি
ক্ষতি করেন কেসাধারণত অননুমোদিত কেউঅনুমোদিত প্রতিষ্ঠান বা কর্মীও
উদাহরণ ব্যর্থতাDatabase চুরিগ্রাহকের ফোন নম্বর গোপনে বিজ্ঞাপনে ব্যবহার

কোন ডেটা ব্যক্তিগত, কোনটি সংবেদনশীল

Personal data বা ব্যক্তিগত ডেটা মানে এমন তথ্য, যা দিয়ে একজন মানুষকে চেনা যায় বা চেনা সম্ভব। নাম, ফোন, ঠিকানা স্পষ্ট। কিন্তু device id, IP address বা লোকেশনের ইতিহাসও অন্য তথ্যের সাথে মিলিয়ে মানুষ চিনিয়ে দিতে পারে। আইনভেদে সীমারেখা আলাদা, তাই সন্দেহ হলে ব্যক্তিগত ধরে নকশা করাই নিরাপদ।

Sensitive personal data হলো সেই ডেটা, যা ফাঁস হলে ক্ষতি বেশি: স্বাস্থ্য, ধর্মবিশ্বাস, রাজনৈতিক মত, biometric, অপরাধের রেকর্ড। অফিসের রেজিস্টার খাতায় নাম লেখা এক কথা, রোগের নাম লেখা আরেক কথা। আইন এখানে কড়া শর্ত দেয়।

ভূমিকাগুলোও জেনে রাখুন। যাঁর তথ্য, তিনি data subject. যে প্রতিষ্ঠান ঠিক করে কেন আর কীভাবে ডেটা ব্যবহার হবে, সে data controller. বাংলাদেশের আইনে এর কাছাকাছি শব্দ উপাত্ত-জিম্মাদার. আর যে অন্যের হয়ে ডেটা নিয়ে কাজ করে, সে data processor. বাইরের courier বা cloud সেবা প্রায়ই এই ভূমিকায় থাকে।

ডেটার জীবনচক্রে privacy নিয়ন্ত্রণ

Privacy controls across the data lifecycle

ডেটার জীবনচক্রে privacy নিয়ন্ত্রণ সংগ্রহমজুতব্যবহারভাগমোছা collectstoreusesharedelete কম নিন, কারণ জানান Encrypt, access সীমিত উদ্দেশ্যের ভেতরে থাকুন প্রতিষ্ঠানের সীমানার বাইরে সব কপি থেকে মুছুন minimization, notice, consent pseudonym, retention নিয়ম purpose limit, audit log চুক্তি, কম field, processor backup, log, test data
ছবি ৭০.১ — লাল দাগের ভেতরের ধাপে ডেটা প্রতিষ্ঠানের সীমানা ছাড়ে। প্রতিটি ধাপে একটি করে প্রশ্ন আছে।

২ · নীতি আর নকশা — privacy by design আর LINDDUN

Privacy-র নীতিগুলো নতুন নয়। ১৯৮০ সালের OECD Privacy Guidelines থেকে আজকের আইন পর্যন্ত প্রায় একই কথা ঘুরে আসে। GDPR-এর Article 5-এর ভাষায় সাতটি নীতি নিচে দেওয়া হলো।

নীতিসহজ মানেEngineer-এর প্রশ্ন
Lawfulness, fairness, transparencyবৈধ, ন্যায্য, খোলামেলামানুষটি কি অবাক হবেন?
Purpose limitationনির্দিষ্ট উদ্দেশ্য, পরে অন্য কাজে নয়নতুন ব্যবহার কি পুরোনো উদ্দেশ্যের সাথে মেলে?
Data minimizationদরকারের বেশি নয়এই field ছাড়া কি কাজ চলে?
Accuracyতথ্য সঠিক ও হালনাগাদভুল সংশোধনের পথ আছে?
Storage limitationদরকার ফুরালে আর নয়কোন job এটি মোছে?
Integrity and confidentialityনিরাপদ রাখাEncryption আর access কেমন?
Accountabilityনিয়ম মানার প্রমাণ রাখাAuditor-কে কী দেখাবেন?

Privacy by design

Privacy by design ধারণাটি কানাডার Ontario-র তৎকালীন Information and Privacy Commissioner Ann Cavoukian-এর। ১৯৯০-এর দশকে তিনি এই চিন্তা শুরু করেন, পরে সাতটি মূল নীতি প্রকাশ করেন। সার-কথা: বাড়ি বানানোর পরে দেয়াল কেটে তার টানার চেয়ে নকশার সময় তারের পথ রাখাই সস্তা। সাত নীতি সংক্ষেপে:

  1. ঘটনার আগেই প্রতিরোধ, পরে প্রতিকার নয়।
  2. Default-ই privacy: মানুষটি কিছু না করলেও তিনি সুরক্ষিত থাকেন।
  3. নকশার ভেতরেই privacy, পরে জোড়া দেওয়া নয়।
  4. পূর্ণ কার্যকারিতা: privacy বনাম সুবিধার দ্বন্দ্ব নয়, দুটিই।
  5. শুরু থেকে শেষ পর্যন্ত নিরাপত্তা, মুছে ফেলা পর্যন্ত।
  6. দৃশ্যমানতা আর স্বচ্ছতা।
  7. ব্যবহারকারীকে কেন্দ্রে রাখা।

LINDDUN — privacy-র threat modeling

পর্ব ৪-এ STRIDE দেখেছেন, আর সেখানেই LINDDUN-এর নাম এসেছে। পদ্ধতি একই: data flow diagram এঁকে প্রতিটি অংশে প্রশ্ন করা। শুধু প্রশ্নগুলো privacy-র। একটি কাল্পনিক অনলাইন বাজারের “রাইডারের লাইভ লোকেশন” feature ধরে সাত শ্রেণি দেখুন।

শ্রেণিপ্রশ্নউদাহরণ
Linkingআলাদা তথ্য কি একজনের বলে জোড়া যায়?Delivery আর app-এর লোকেশন মিলিয়ে দিনের রুটিন
Identifyingমানুষটিকে কি চেনা যায়?“বেনামি” রুট থেকে রাইডারের বাড়ি
Non-repudiationঅস্বীকারের সুযোগ কি থাকছে না?স্থায়ী রেকর্ড, রাইডার কখন কোথায় ছিলেন
Detectingথাকা বা না থাকা কি বোঝা যায়?অনলাইন চিহ্ন দেখে কে কাজে আছেন
Data disclosureদরকারের বেশি প্রকাশ?গ্রাহকের স্ক্রিনে সঠিক GPS
Unawareness & unintervenabilityমানুষ কি জানেন, বদলাতে পারেন?রাইডার জানেন না কতদিন থাকে
Non-complianceনীতি বা আইন কি মানা হচ্ছে?Retention নিয়ম কোথাও লেখা নেই

লক্ষ করুন, এই তালিকায় কোনো হ্যাকার নেই। সব ঝুঁকিই আসে system ঠিকঠাক চলার সময়।

৩ · ডেটার মানচিত্র — কমানো, উদ্দেশ্য, মেয়াদ আর মোছা

যে ডেটার খোঁজ আপনি জানেন না, তাকে রক্ষা করা যায় না, মুছে ফেলাও যায় না। তাই কাজ শুরু হয় data inventory দিয়ে: কোন system-এ কোন field, কেন, কে দেখেন, কতদিন, কার কাছে যায়। গুদামের স্টক খাতার মতো। খাতা না থাকলে দোকানি জানেন না কোন মাল মেয়াদোত্তীর্ণ। GDPR-এর Article 30-এর record of processing এই খাতারই আনুষ্ঠানিক রূপ।

Inventory-র সাথে লাগে মানচিত্র: ডেটা কোন পথে কোথায় যায়। যেসব জায়গা খাতায় ওঠে না: ticket-এর screenshot, spreadsheet-এর export, test database, log-এর ফোন নম্বর আর ল্যাপটপের CSV. পর্ব ৫৫-এ log-এ কী রাখবেন আর কী রাখবেন না, দেখেছেন।

Inventory পেলে চারটি কাজ করা যায়:

  • কমানো: জন্মতারিখের বদলে “১৮-র বেশি কি না”, সঠিক ঠিকানার বদলে থানা। লেখার জায়গা না থাকলে ফাঁসও হবে না।
  • উদ্দেশ্য বাঁধা: Delivery-র জন্য নেওয়া ফোন বিজ্ঞাপনে নয়। প্রতিটি field-এর পাশে উদ্দেশ্য লেখা থাকে।
  • মেয়াদ বাঁধা: Retention নিয়ম লেখা থাকে, আর একটি scheduled job সত্যিই মোছে। নিয়ম আছে কিন্তু job নেই, এটিই সবচেয়ে সাধারণ ব্যর্থতা।
  • মোছা প্রমাণ করা: Backup, replica, search index, cache, vendor-এর কপি ধরে হিসাব। Backup থেকে এক সারি মোছা কঠিন হলে key মুছে দেওয়ার পদ্ধতি crypto-shredding কাজে লাগে।

নিচের ছোট report একটি কাল্পনিক অনলাইন বাজারের খাতা পরীক্ষা করে। কোনো সত্যিকারের system পড়া হচ্ছে না। উদ্দেশ্য নেই, অথবা মেয়াদ পেরিয়েছে, এমন field ধরে।

// Toy data inventory of a fictional online bazaar. No real system is read.
const inventory = [
  // system, field, class, purpose, keepDays (policy), oldestDays (found)
  ['orders',   'phone',       'personal',  'delivery',  90, 1460],
  ['orders',   'address',     'personal',  'delivery',  90, 1460],
  ['orders',   'amount',      'finance',   'accounts', 1825, 1460],
  ['support',  'chat_text',   'personal',  'support',  365,  900],
  ['support',  'nid_photo',   'sensitive', 'kyc',       30,  700],
  ['app',      'gps_trail',   'sensitive', '',           0,  410],
  ['marketing','birth_date',  'personal',  '',           0, 1100],
  ['logs',     'client_ip',   'personal',  'security', 180,  175],
];

function review([sys, field, cls, purpose, keep, oldest]) {
  if (!purpose) return { sys, field, cls, action: 'STOP COLLECTING', over: oldest };
  if (oldest > keep) return { sys, field, cls, action: 'DELETE OLD ROWS', over: oldest - keep };
  return { sys, field, cls, action: 'ok', over: 0 };
}

const rows = inventory.map(review);
for (const r of rows) {
  const name = `${r.sys}.${r.field}`.padEnd(22);
  console.log(name, r.cls.padEnd(10), r.action.padEnd(16), String(r.over).padStart(5));
}
const bad = rows.filter(r => r.action !== 'ok');
const sens = bad.filter(r => r.cls === 'sensitive').length;
const worst = bad.reduce((a, b) => (b.over > a.over ? b : a));
console.log(`problems: ${bad.length} of ${rows.length}, sensitive: ${sens}`);
console.log(`worst: ${worst.sys}.${worst.field} is ${worst.over} days over`);

ফল: problems: 6 of 8, sensitive: 2. orders.phone নিয়মের চেয়ে ১৪৬০ − ৯০ = ১৩৭০ দিন বেশি রয়ে গেছে, তাই worst: orders.phone is 1370 days over. app.gps_trail আর marketing.birth_date-এর কোনো উদ্দেশ্যই নেই, তাই STOP COLLECTING. এখানে সংগ্রহ বন্ধ করতে হবে, শুধু পুরোনো সারি মুছলে হবে না। logs.client_ip ৫ দিন বাকি রেখে ঠিক আছে। মেয়াদের সংখ্যাগুলো বানানো।

“হয়তো কাজে লাগবে” কোনো উদ্দেশ্য নয়। প্রতিটি বাড়তি field-এর একটি চলমান দাম আছে: breach হলে ক্ষতি বাড়ে, অনুরোধ এলে খুঁজতে হয়, আর আইনে প্রশ্ন ওঠে। কম ডেটা মানে ছোট attack surface.

৪ · ছদ্মনাম, বেনামি, token আর mask

Pseudonymization মানে সরাসরি পরিচয়ের জায়গায় একটি ছদ্ম-পরিচয় বসানো, আর জোড়া দেওয়ার চাবি আলাদা রাখা। পরীক্ষার খাতায় নামের বদলে রোল নম্বর, আর রোল-নামের তালিকা অফিসের আলমারিতে। পরীক্ষক নাম জানেন না, কিন্তু অফিস জানে। তাই এটি এখনো ব্যক্তিগত ডেটা।

Anonymization মানে এমনভাবে বদলানো, যাতে কেউই আর যুক্তিসংগত উপায়ে মানুষটিকে চিনতে না পারেন, এমনকি ডেটার মালিকও নন। আলমারির তালিকা পুড়িয়ে দেওয়ার মতো, তবে সেটুকুই যথেষ্ট নয়। পরের অংশে দেখবেন কেন। GDPR-এর Recital 26 অনুযায়ী সত্যিকারের বেনামি তথ্য এই আইনের বাইরে, আর pseudonymized তথ্য ভেতরে।

কৌশলযা করেফেরানো যায়?কোথায় মানায়
EncryptionKey ছাড়া পড়া যায় নাহ্যাঁ, key দিয়েমজুত ও পরিবহন। ডেটা এখনো ব্যক্তিগত
Tokenizationআসল মানের বদলে অর্থহীন token, আসল মান vault-এহ্যাঁ, vault দিয়েCard নম্বর, NID: বেশিরভাগ system আসল মান দেখে না
Keyed HMAC pseudonymএকই মানে একই ছদ্মনাম, key ছাড়া বানানো যায় নাসরাসরি নয়Analytics-এ মানুষ না চিনে গোনা
Data maskingমান ঢেকে দেওয়া, যেমন 017*****123Static হলে নাSupport-এর স্ক্রিন, test data
Synthetic dataনকল কিন্তু আসলের মতো ডেটা বানানোপ্রযোজ্য নয়Test ও demo. আসল ডেটা থেকে শেখা হলে যাচাই লাগে

Test environment সবচেয়ে অবহেলিত। Production-এর কপি test-এ নামালে সেখানে সব ডেটা আসে, কিন্তু নিরাপত্তা আসে না। ভালো অভ্যাস: test data হবে বানানো, অথবা নামানোর pipeline-এই mask করা। Mask করার সময় ফোনকে ফোনের মতো, তারিখকে তারিখের মতো রাখুন, আর একই গ্রাহক সব table-এ একই নকল মান পাক, যাতে join না ভাঙে।

Hash করলে কেন বেনামি হয় না

অনেকে ভাবেন, ফোন নম্বরের SHA-256 নিলেই কাজ শেষ। পর্ব ৯-এ দেখেছেন, hash function-এ কোনো গোপন key নেই। যে কেউ একই নম্বর থেকে একই hash পান। আসল সমস্যা ফোন নম্বরের সংখ্যা খুব কম। নিচের কোড আসল hashlib আর hmac চালায়, আর শেষে শুধু search space গোনে। কোনো অনুমান চালানো হয় না, সব নম্বর আর key বানানো।

# Keyed pseudonyms versus a plain hash. All numbers and keys are invented.
import hashlib
import hmac
import math

phones = ["01000000001", "01000000002"]   # fake, not a real operator prefix
key_orders = b"example-key-orders-not-real"
key_survey = b"example-key-survey-not-real"

def plain_hash(p):
    return hashlib.sha256(p.encode()).hexdigest()[:16]

def pseudonym(key, p):
    return hmac.new(key, p.encode(), hashlib.sha256).hexdigest()[:16]

for p in phones:
    print("plain :", plain_hash(p))
    print("orders:", pseudonym(key_orders, p))
    print("survey:", pseudonym(key_survey, p))
print("same input, same plain hash:",
      plain_hash(phones[0]) == plain_hash("01000000001"))

# Count the search space. Nothing is tried; this is only arithmetic.
prefixes = 7                  # assumed number of mobile prefixes
space = prefixes * 10**8      # 8 free digits after each prefix
rate = 10**9                  # assumed guesses per second
print(f"phone space : {space:,} = {math.log2(space):.1f} bits")
print(f"plain hash  : {space / rate:.1f} seconds at the assumed rate")

key_bits = 256
years = 2**key_bits / rate / (365 * 24 * 3600)
print(f"256-bit key : about 10^{int(math.log10(years))} years at that rate")

একই নম্বর থেকে সবসময় plain : fbdae8fe9734d0d2 আসে, তাই True. যে কেউ নম্বর জানলে মিলিয়ে নিতে পারেন। আর সম্ভাব্য নম্বর ৭ × ১০৮, মানে 700,000,000 = 29.4 bits. ধরে নেওয়া গতিতে পুরো জায়গা পার হতে 0.7 seconds. এই গতি অনুমান, কিন্তু উপসংহার গতির ওপর নির্ভর করে না। এত ছোট জায়গায় hash কোনো আড়াল দেয় না।

Keyed HMAC-এ অনুমানকারীকে ২৫৬-bit key-ও জানতে হয়, তাই about 10^60 years. আরও দেখুন: orders আর survey ছদ্মনাম আলাদা (050bb45e5b434df0 বনাম d13db84cd1662ba7). উদ্দেশ্য ভেদে key আলাদা হলে দুই ডেটাসেট জোড়া দেওয়া যায় না। Key থাকবে KMS-এ, ডেটার পাশে নয়। Key ফাঁস হলে সব ছদ্মনাম দুর্বল হয়, তাই key rotation ও access সীমিত রাখুন। এখানে ১৬ hex অক্ষর দেখানোর সুবিধার জন্য। বড় ডেটাসেটে পূর্ণ আউটপুট রাখুন।

৫ · নাম মুছলেই কি মানুষ হারিয়ে যান? — k-anonymity আর তার সীমা

মহল্লায় বলা হলো, “রোগীর নাম বলব না, শুধু বলব ৮৭ বছরের একজন নারী, ওই গলিতে থাকেন।” সবাই বুঝে গেলেন কে। নাম ছাড়াই মানুষ চেনা যায়, কারণ কয়েকটি সাধারণ তথ্য মিলে অনন্য হয়ে ওঠে। এই তথ্যগুলোকে বলে quasi-identifier. এগুলো জুড়ে মানুষ চিনে ফেলাকে বলে re-identification.

Latanya Sweeney: ২০০০ সালের কাজে তিনি ১৯৯০-এর মার্কিন জনগণনার তথ্য থেকে হিসাব করেন, পাঁচ অঙ্কের ZIP, লিঙ্গ আর জন্মতারিখ মিলে প্রায় ৮৭% মার্কিন নাগরিক সম্ভবত অনন্য। পরে ২০০৬ সালে Philippe Golle ২০০০-এর জনগণনায় একই হিসাবে প্রায় ৬৩% পান। Sweeney আরও আগে দেখিয়েছিলেন, নাম-মোছা হাসপাতালের তথ্য ভোটার তালিকার সাথে মিলিয়ে Massachusetts-এর তৎকালীন গভর্নরের রেকর্ড চেনা যায়।

Netflix: ২০০৮ সালে Arvind Narayanan আর Vitaly Shmatikov Netflix Prize-এর “বেনামি” রেটিং ডেটা নিয়ে গবেষণা প্রকাশ করেন। প্রায় ৫ লক্ষ গ্রাহকের ডেটায় অল্প কয়েকটি রেটিং আর আনুমানিক তারিখ জানলেই বেশিরভাগ রেকর্ড আলাদা করা যেত। IMDb-র প্রকাশ্য তথ্য মিলিয়ে তাঁরা দেখান, এই ঝুঁকি বাস্তব। শিক্ষা: পছন্দের মতো “ছড়ানো” ডেটা নিজেই আঙুলের ছাপের মতো।

k-anonymity কী

k-anonymity (Samarati ও Sweeney, ১৯৯৮) বলে: quasi-identifier একই, এমন প্রতিটি দলে অন্তত k জন থাকবেন। তাহলে যিনি বাইরে থেকে মেলাতে চান, তিনি k জনের দল পর্যন্ত পৌঁছান, একজন মানুষ পর্যন্ত নয়। বাড়তি তথ্য না থাকলে ঠিক সারিটি ধরার সম্ভাবনা সর্বোচ্চ ১/k. দুটি হাতিয়ার: generalization (বয়স ২৩ → 20s) আর suppression (অস্বাভাবিক সারি বাদ).

কিন্তু k একা যথেষ্ট নয়। একটি দলের পাঁচজনেরই রোগ যদি একই হয়, তবে কে কোন জন, তা জানার দরকারই নেই। একে বলে homogeneity সমস্যা। তাই এসেছে l-diversity (প্রতিটি দলে সংবেদনশীল মানের অন্তত l রকম) আর t-closeness (দলের বণ্টন পুরো ডেটার বণ্টনের কাছাকাছি). নিচের stepper-এ কাল্পনিক ক্লিনিকের ১০টি সারি ধরে ঝুঁকি কমানো দেখুন। শর্ত ধরা হয়েছে k ≥ ৪ আর l ≥ ৩.

কাল্পনিক ক্লিনিকের টেবিল (১০ সারি)
Quasi-identifier
সারি
একাকী সারি
k
l
সর্বোচ্চ মিলের সম্ভাবনা
  1. শুরুর অবস্থা। নাম আছে, তাই প্রতিটি সারি একজন মানুষ। k = ১, দশটি সারিই একাকী।
  2. নাম মুছলেন। অনেকে এখানেই থেমে যান আর বলেন “বেনামি”। কিন্তু সংখ্যা বদলায়নি। বয়স, লিঙ্গ আর এলাকা মিলে দশটি সারিই এখনো অনন্য।
  3. বয়সকে দশকে আনলেন। ২৩ হলো 20s, ৩৪ হলো 30s. দলে দলে মিল এলো, একাকী সারি কমে ৪. তবে সবচেয়ে ছোট দল এখনো একজনের, তাই k = ১.
  4. এলাকাকে অঞ্চলে আনলেন। A1 আর A2 হলো A, B1 আর B2 হলো B. একাকী সারি মাত্র ১: ৮৭ বছরের নারী। একটি outlier পুরো টেবিলের k নামিয়ে রাখে।
  5. Outlier বাদ দিলেন। সারি ৯, k = ২. কিন্তু l = ১: “30s, পুরুষ, অঞ্চল B” দলের তিনজনেরই রোগ Cancer. কেউ জানলে যে পরিচিত মানুষটি এই দলে, রোগও জেনে গেলেন। k বেড়েছে, ক্ষতি থেকে গেছে।
  6. অঞ্চলও বাদ দিলেন। এখন দুটি দল: ৪ জন আর ৫ জন, প্রতিটিতে ৩ রকম রোগ। k = ৪, l = ৩. শর্ত পূরণ, আর সর্বোচ্চ মিলের সম্ভাবনা ১/৪ = ২৫%. দাম: এলাকার বিশ্লেষণ আর করা যাবে না।
  7. তারপরও পর্যালোচনা। সংখ্যা বদলায়নি, কিন্তু প্রশ্ন বাকি। “30s, পুরুষ” দলে ৫ জনের ৩ জনই Cancer, মানে ৬০%, যেখানে পুরো টেবিলে ৯ জনে ৩ জন, মানে ৩৩%. এই ঝোঁকই t-closeness ধরে। তাই ডেটা প্রকাশ না করে চুক্তির অধীনে সীমিত প্রবেশ দেওয়া যায় কি না, সেটিও ভাবুন।

এবার একই হিসাব কোডে। Checker নিজে দল বানিয়ে k আর l বের করে, ৮৭ বছরের সারিসহ আর সারি বাদে।

// k-anonymity checker on a toy table. All rows are invented.
const table = [
  [23,'F','A1','Flu'],    [27,'F','A2','Diabetes'], [25,'F','A2','Flu'],
  [29,'F','A1','Asthma'], [34,'M','B1','Cancer'],   [36,'M','B2','Cancer'],
  [38,'M','B1','Cancer'], [31,'M','A1','Flu'],      [35,'M','A2','Asthma'],
  [87,'F','B2','Flu'],
];
const decade = a => `${a - a % 10}s`;
const views = {
  'raw age+sex+zone  ': r => [r[0], r[1], r[2]],
  'decade+sex+zone   ': r => [decade(r[0]), r[1], r[2]],
  'decade+sex+region ': r => [decade(r[0]), r[1], r[2][0]],
  'decade+sex only   ': r => [decade(r[0]), r[1]],
};

function check(rows, qi) {
  const groups = new Map();
  for (const r of rows) {
    const key = qi(r).join('/');
    if (!groups.has(key)) groups.set(key, []);
    groups.get(key).push(r[3]);
  }
  const sizes = [...groups.values()].map(g => g.length);
  const kinds = [...groups.values()].map(g => new Set(g).size);
  return { groups: groups.size, k: Math.min(...sizes), l: Math.min(...kinds) };
}

const noOutlier = table.filter(r => r[0] < 80);   // suppress the 87-year-old
for (const [name, qi] of Object.entries(views)) {
  const a = check(table, qi), b = check(noOutlier, qi);
  console.log(name, `all10: k=${a.k} l=${a.l}`, `| no87: k=${b.k} l=${b.l}`,
              `groups=${b.groups}`);
}
const best = check(noOutlier, views['decade+sex only   ']);
console.log(`worst-case match chance: 1 in ${best.k} (${(100 / best.k).toFixed(0)}%)`);

শেষ লাইনের আগে decade+sex only all10: k=1 l=1 | no87: k=4 l=3 groups=2. একটি outlier থাকলে সব generalization-এও all10 কলামে k = ১ রয়ে যায়। সেটি বাদ দিলে k = ৪, আর ফল worst-case match chance: 1 in 4 (25%). কোডের প্রতিটি লাইন stepper-এর একেকটি ধাপ।

সীমাগুলো মনে রাখুন। k-anonymity ধরে নেয় আপনি জানেন কোন field quasi-identifier, কিন্তু বাইরের লোকের হাতে কী আছে, তা আপনি জানেন না। অনেক কলামের ডেটায় এটি ভেঙে পড়ে, কারণ সব মিলিয়ে দল ছোট হয়ে যায়। ২০১৩ সালে de Montjoye ও সহলেখকেরা দেখান, মোবাইলের লোকেশন ডেটায় চারটি স্থান-সময় বিন্দু ৯৫% মানুষকে আলাদা করতে পারে। আর একই ডেটা দুবার প্রকাশ করলে দুই সংস্করণ মিলিয়ে সুরক্ষা ভাঙতে পারে।

৬ · Differential privacy — ফলের মধ্যে হিসাব করা শব্দ

ধরুন একটি গ্রামে জরিপ: “আপনি কি কর ফাঁকি দেন?” কেউ সত্য বলবেন না। তাই নিয়ম করা হলো: আগে কয়েন ছুড়ুন। হেড হলে সত্য বলুন, টেল হলে আবার ছুড়ে হ্যাঁ বা না বলুন। কোনো একজনের উত্তর এখন কিছুই প্রমাণ করে না, কারণ হয়তো সেটি কয়েনের ফল। তবু হাজার জনের গড় থেকে মোট হার হিসাব করা যায়। মানুষটি আড়ালে, পরিসংখ্যান দৃশ্যমান। এটিই differential privacy-র মূল চিন্তা।

Cynthia Dwork, Frank McSherry, Kobbi Nissim আর Adam Smith ২০০৬ সালে এটিকে গাণিতিক রূপ দেন। সংজ্ঞাটি সরল: একজন মানুষের তথ্য ডেটাসেটে থাকা বা না থাকার কারণে ফলের সম্ভাবনা সর্বোচ্চ eε গুণ বদলাতে পারবে। ε (epsilon) ছোট মানে সুরক্ষা বেশি, শব্দও বেশি।

একটি হিসাব, হাতে কলমে

প্রশ্ন: “কতজনের এই রোগ আছে?” আসল উত্তর ৪০. একজন মানুষ যোগ বা বাদ হলে গণনা সর্বোচ্চ ১ বদলায়, একে বলে sensitivity Δ = ১. Laplace mechanism ফলের সাথে Laplace শব্দ যোগ করে, যার scale b = Δ/ε.

noisy count = সত্য গণনা + Laplace(b), যেখানে b = Δ / ε
  1. ধরুন ε = ১, তাহলে b = ১/১ = ১.
  2. একটি সমসম্ভাব্য সংখ্যা নিই: u = ০.৩, যা −০.৫ থেকে ০.৫-এর মধ্যে।
  3. শব্দ = −b · sign(u) · ln(1 − 2|u|) = −১ · ১ · ln(০.৪) = +০.৯২.
  4. প্রকাশিত ফল ৪০ + ০.৯২ = ৪০.৯২.
  5. যাচাই: এই ফল সত্য গণনা ৪০ হলে এবং ৩৯ হলে কতটা সম্ভব? ঘনত্ব e−০.৯২ বনাম e−১.৯২, অনুপাত e১ ≈ ২.৭২. ঠিক eε সীমার মধ্যে। তাই ফল দেখে একজনের উপস্থিতি নিশ্চিত হওয়া যায় না।

কতটা ভুল হতে পারে? P(|শব্দ| > t) = e−t/b. ৯৫% নিশ্চয়তার জন্য t = b · ln ২০ ≈ ৩b. তাই ε = ১ হলে ফল প্রায় ±৩-এর মধ্যে, আর ε = ০.১ হলে ±৩০-এর মধ্যে। ৪০ জনের গণনায় ±৩০ প্রায় অর্থহীন। ৪০ হাজার জনের গণনায় একই শব্দ নগণ্য। তাই DP ছোট দলের চেয়ে বড় পরিসংখ্যানে বেশি কাজের।

// Differential privacy count with Laplace noise. Seeded, so every run matches.
function mulberry32(a) {
  return () => {
    a |= 0; a = a + 0x6D2B79F5 | 0;
    let t = Math.imul(a ^ a >>> 15, 1 | a);
    t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
    return ((t ^ t >>> 14) >>> 0) / 4294967296;
  };
}
const rand = mulberry32(2026);
function laplace(b) {                  // inverse-CDF sampling
  const u = rand() - 0.5;
  return -b * Math.sign(u) * Math.log(1 - 2 * Math.abs(u));
}
const noisyCount = (truth, eps) => truth + laplace(1 / eps);  // sensitivity 1

const truth = 40;                      // people with a condition (invented)
for (const eps of [1, 0.1]) {
  const b = 1 / eps;
  const show = [1, 2, 3].map(() => noisyCount(truth, eps).toFixed(1));
  let within = 0, sum = 0;
  const trials = 20000, band = b * Math.log(20);
  for (let i = 0; i < trials; i++) {
    const e = Math.abs(laplace(b));
    sum += e;
    if (e <= band) within++;
  }
  console.log(`eps=${eps}: three releases ${show.join(', ')}`);
  console.log(`  mean error ${(sum / trials).toFixed(2)} (theory ${b}),`,
              `within +/-${band.toFixed(1)}: ${(100 * within / trials).toFixed(1)}%`);
}
// Same question asked many times: the budget adds up.
const asks = 100, each = 0.1;
console.log(`budget spent after ${asks} asks: eps=${(asks * each).toFixed(0)}`);

eps=1-এ তিনটি প্রকাশ 39.9, 39.5, 40.4, প্রায় ৪০. eps=0.1-এ 12.8, 43.1, 90.8, ব্যবহার করা কঠিন। ২০ হাজার পরীক্ষায় গড় ভুল 1.01 আর 10.01, তত্ত্বের b-র সাথে মেলে। ±৩-এর ভেতরে 94.7%, ±৩০-এর ভেতরে 94.9%, ৯৫%-এর কাছাকাছি। PRNG-তে fixed seed আছে, তাই ফল একই থাকে। বাস্তবে পরীক্ষিত library আর নিরাপদ র‍্যান্ডম উৎস লাগে।

শেষ লাইন budget spent after 100 asks: eps=10. একই প্রশ্ন বারবার করে গড় নিলে শব্দ কমে যায়। তাই প্রতিটি উত্তর একটি খরচ, আর মোট খরচের সীমাকে বলে privacy budget. ১০০ বার ε = ০.১ মানে মোট ε = ১০.

আরও গভীরে: কেন্দ্রীয় DP-তে বিশ্বস্ত সার্ভার শব্দ যোগ করে। Local DP-তে শব্দ যোগ হয় ব্যবহারকারীর যন্ত্রেই, ফলে সার্ভারকে বিশ্বাস করতে হয় না, কিন্তু অনেক বেশি মানুষ লাগে। Dinur ও Nissim (২০০৩) দেখান, যথেষ্ট প্রশ্নের নির্ভুল উত্তর দিলে ডেটাসেট পুনর্গঠন সম্ভব। NIST SP 800-226 DP-র দাবি যাচাইয়ের নির্দেশনা দেয়। “ε কত হওয়া উচিত” প্রশ্নের সর্বজনীন উত্তর নেই, এটি নীতির সিদ্ধান্ত।

৭ · মানুষের হাতে নিয়ন্ত্রণ — consent, notice আর অধিকার

Consent মানে সম্মতি। তবে সব “Accept” বোতাম সম্মতি নয়। ভালো সম্মতি স্বাধীন, নির্দিষ্ট, জেনে দেওয়া আর স্পষ্ট ইতিবাচক কাজে দেওয়া। আর সম্মতি দেওয়ার মতোই সহজে ফিরিয়ে নেওয়া যায়। আগে থেকে টিক দেওয়া ঘরকে ইউরোপের আদালত ২০১৯ সালের Planet49 মামলায় বৈধ cookie সম্মতি বলে মানেননি।

Notice মানে মানুষকে জানানো: কী নিচ্ছেন, কেন, কতদিন, কাকে দিচ্ছেন, কীভাবে আপত্তি করবেন। ভালো notice ছোট, সহজ ভাষায় আর ঠিক কাজের মুহূর্তে আসে। Delivery-র ঠিকানা নেওয়ার ঘরের পাশে এক লাইন, ২০ পাতার দলিল নয়।

Dark pattern — নকশার ভেতরের চাপ

Dark pattern হলো এমন interface, যা মানুষকে তাঁর ইচ্ছার বাইরে সিদ্ধান্তের দিকে ঠেলে। শব্দটি UX গবেষক Harry Brignull ২০১০ সালে চালু করেন।

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

তথ্যের মালিকের অধিকার আর অনুরোধের কাজের ধারা

বেশিরভাগ আধুনিক আইনে মানুষ জানতে, কপি নিতে, ভুল ঠিক করাতে, আপত্তি করতে আর কিছু ক্ষেত্রে মুছে ফেলাতে পারেন। Right to erasure শব্দে সহজ, system-এ কঠিন। আপনি একটি অনুরোধের কাজের ধারা বানাবেন: কোথায় আসে, কে যাচাই করেন, কত দিনে, কী নথি থাকে। পরিচয় যাচাই জরুরি, নইলে প্রতারক অন্যের ডেটা চেয়ে নেবেন। আবার যাচাইয়ের নামে NID-র ছবি চাওয়াও নতুন ডেটা জমানো। যতটুকু লাগে, ততটুকু, যেমন account-এ লগইন।

নিচে একজন গ্রাহকের account মোছার অনুরোধ ছয়টি কাল্পনিক system-এ ধাপে ধাপে দেখুন।

কাল্পনিক গ্রাহক C-1042: অবস্থা (দিন ০ থেকে)
দিন
Profile DB
Invoice
Analytics
Courier vendor
Log
Backup
  1. দিন ০ — অনুরোধ এলো। গ্রাহক app-এর ফর্মে লিখিত অনুরোধ দিলেন। একটি ticket খুলল, তারিখ লেখা হলো, প্রাপ্তি স্বীকার গেল। ঘড়ি এখন থেকেই চলছে।
  2. দিন ১ — পরিচয় যাচাই। Account-এ লগইন করে নিশ্চিত হলেন। আলাদা করে NID-র ছবি চাওয়া হয়নি। যাচাই না হলে ভুল মানুষের অনুরোধে আসল গ্রাহকের ডেটা মুছে যেত।
  3. দিন ২ — খুঁজে বের করা। Data inventory খুলে ছয়টি জায়গা পাওয়া গেল। Inventory না থাকলে এই ধাপেই সব থেমে যেত। সব কলামে এখন “পাওয়া গেছে”।
  4. দিন ৩ — সিদ্ধান্ত। সব কিছু মোছা যায় না। Invoice হিসাবের নিয়মে রাখতে হতে পারে, তাই “রাখবে”। Log আর backup নিজের মেয়াদে শেষ হবে। বাকি তিনটি মুছবে। কোনটি কেন রাখা হলো, লিখে রাখা হলো।
  5. দিন ৫ — মূল ডেটা মোছা। Profile DB থেকে মুছল। Invoice-এ শুধু দরকারি field থাকল, বাকিগুলো সরানো হলো। এখনো analytics আর courier-এ কপি আছে, তাই কাজ শেষ নয়।
  6. দিন ৬ — ছড়িয়ে দেওয়া। Analytics মুছল। Processor হিসেবে courier vendor-এর কাছে মোছার অনুরোধ গেল। Search index আর cache-ও একই job-এ পড়ে। মূল ডেটা মুছলেও কপি থাকলে অধিকার পূরণ হয় না।
  7. দিন ২৫ — backup-এর মেয়াদ। ধরা হয়েছে backup ২০ দিন থাকে, তাই দিন ৫ + ২০ = ২৫-এ শেষ backup কপিটিও গেল। Restore হলে যেন মোছা তথ্য না ফেরে, মোছা id-র তালিকা ধরে আবার মোছার ধাপ থাকে। Vendor-ও মোছা নিশ্চিত করেছে।
  8. দিন ২৬ — জানানো আর প্রমাণ। GDPR-এর সাধারণ এক মাসের সীমার ভেতরেই গ্রাহককে জানানো হলো কী মোছা হয়েছে, কী থেকেছে আর কেন। Log নিজের মেয়াদ পর্যন্ত থাকবে, সেটিও বলা হলো। Ticket বন্ধ। প্রমাণের খাতায় ticket নম্বর আর তারিখ আছে, গ্রাহকের ব্যক্তিগত তথ্য নয়।

৮ · GDPR-এর সার-কথা আর DPIA

GDPR (EU Regulation 2016/679) ২৫ মে ২০১৮ থেকে প্রযোজ্য। ইউরোপের মানুষকে পণ্য-সেবা দিলে বা তাঁদের আচরণ নজরে রাখলে বাইরের প্রতিষ্ঠানেও এটি খাটতে পারে। এখানে শুধু সার-কথা।

ধারণাArticleমূল কথা
Lawful basis৬ছয়টি বৈধ ভিত্তি: সম্মতি, চুক্তি, আইনি দায়, জীবন রক্ষা, জনস্বার্থের কাজ, legitimate interests. সম্মতি একমাত্র পথ নয়
Special categories৯স্বাস্থ্য, ধর্ম, biometric ইত্যাদিতে সাধারণ নিষেধ, নির্দিষ্ট ব্যতিক্রম ছাড়া
অধিকার১২–২২সাধারণত এক মাসের মধ্যে সাড়া; access, সংশোধন, মোছা, portability, আপত্তি, স্বয়ংক্রিয় সিদ্ধান্ত
Design ও default২৫Privacy by design আইনি দায়িত্ব
Breach জানানো৩৩, ৩৪ঝুঁকি থাকলে অবগত হওয়ার ৭২ ঘণ্টার মধ্যে নিয়ন্ত্রককে; উচ্চ ঝুঁকিতে মানুষকেও
DPIA৩৫উচ্চ ঝুঁকির কাজ শুরুর আগে প্রভাব মূল্যায়ন
বিদেশে স্থানান্তর৪৪–৪৯Adequacy, চুক্তিগত সুরক্ষা ইত্যাদি শর্তে

৭২ ঘণ্টার হিসাব পর্ব ৬১-এ করেছেন। EU-র Digital Omnibus প্রস্তাবে এই সময় ৯৬ ঘণ্টা আর শর্ত “উচ্চ ঝুঁকি” করার কথা আছে। ৩১ অক্টোবর ২০২৬-এ আমরা যা দেখেছি, তাতে এটি প্রস্তাব, আইন নয়। তাই পরিকল্পনা ৭২ ঘণ্টা ধরেই করুন, আর বর্তমান অবস্থা দেখে নিন।

DPIA — শুরুর আগে থামা

DPIA মানে Data Protection Impact Assessment. প্রশ্ন একটিই: এই কাজ মানুষের কী ক্ষতি করতে পারে, আর কীভাবে কমাবেন? নিচে একটি DPIA-ধরনের পর্যালোচনা। স্কোর আমাদের বানানো ৫ × ৫ স্কেলে: সম্ভাবনা × প্রভাব। প্রতিষ্ঠানের ধরে নেওয়া সীমা ১০.

Feature: গ্রাহকের স্ক্রিনে রাইডারের লাইভ লোকেশন
ধাপ
কার ঝুঁকি
সম্ভাবনা
প্রভাব
স্কোর
সীমা ১০
  1. বর্ণনা। Feature কী করে, কার ডেটা, কত মানুষ, কতদিন? এখানে রাইডারের GPS প্রতি কয়েক সেকেন্ডে গ্রাহকের ফোনে যাবে। লোকেশন নিয়মিত নজরে রাখা, তাই পূর্ণ পর্যালোচনা দরকার।
  2. প্রয়োজন। লক্ষ্য: “ডেলিভারি কখন আসবে” জানা। এর জন্য কি লাইভ ম্যাপ লাগে? আনুমানিক সময় দেখালেও কাজ অনেকটা চলে। কম ডেটায় কাজ হয় কি না, এই প্রশ্নটি আগে।
  3. ডেটা প্রবাহ। রাইডারের app → server → গ্রাহকের ফোন, সাথে analytics আর map সেবা। প্রতিটি তীরে প্রশ্ন: কতটা, কতদিন, কার কাছে। এটিই LINDDUN-এর ভিত্তি।
  4. ঝুঁকি। Identifying আর Linking: বারবার অর্ডার করে গ্রাহক রাইডারের বাড়ি বা রুটিন চিনে ফেলতে পারেন। Data disclosure: ডেলিভারি শেষেও অবস্থান দেখা যায়। ক্ষতি পড়ে কর্মীর ওপর, প্রতিষ্ঠানের ওপর নয়।
  5. স্কোর। সম্ভাবনা ৪, প্রভাব ৫, কারণ শারীরিক নিরাপত্তা জড়িত। ৪ × ৫ = ২০, সীমা ১০-এর ওপরে। এই অবস্থায় feature চালু হবে না।
  6. নিয়ন্ত্রণ। শুধু চলমান ডেলিভারিতে দেখাবে, গন্তব্যের কাছে সঠিক অবস্থান। অবস্থান ১০০ মিটারে গোল করা। ডেলিভারি শেষে সঙ্গে সঙ্গে বন্ধ। রুট ২৪ ঘণ্টায় মোছা। সহায়তা কর্মীর access সীমিত ও log করা। রাইডারকে জানানো।
  7. নতুন স্কোর। বাড়ি বা রুটিন চেনা কঠিন, তাই সম্ভাবনা ২. কিছু ঝুঁকি থাকে, প্রভাব ৪. ২ × ৪ = ৮, সীমা ১০-এর নিচে। কোন নিয়ন্ত্রণ কোন সংখ্যা কমাল, লেখা থাকে।
  8. সিদ্ধান্ত। ব্যবসার দায়িত্বশীল ব্যক্তি অবশিষ্ট ঝুঁকি স্বাক্ষর করে মেনে নিলেন, পর্যালোচনার তারিখ ঠিক হলো। Feature বদলালে DPIA আবার হবে। উচ্চ ঝুঁকি থেকে গেলে GDPR-এর আওতায় নিয়ন্ত্রকের সাথে পরামর্শের প্রশ্ন আসে। ঝুঁকির হিসাবের আরও গভীর আলোচনা পর্ব ৬৮-তে।

৯ · বাংলাদেশের দুই উপাত্ত আইন — ৩১ অক্টোবর ২০২৬ পর্যন্ত যাচাই

এই অংশ আইনি পরামর্শ নয়। আমরা আইনজীবী নই। নিচের কথাগুলো ICT বিভাগের সাইটে দেওয়া দুটি আইনের গেজেট-লেখা পড়ে নিজের ভাষায় সাজানো, যাচাইয়ের তারিখ ৩১ অক্টোবর ২০২৬. সেদিন bdlaws সাইটে আমরা পৌঁছাতে পারিনি। আইন বদলাতে পারে, আর অনেক খুঁটিনাটি বিধি ও প্রবিধানের ওপর ছাড়া হয়েছে। সিদ্ধান্তের আগে বর্তমান লেখা দেখুন, দরকারে আইনজীবীর পরামর্শ নিন।

দুটি আইনই গেজেটে ১০ এপ্রিল ২০২৬ তারিখের। পর্ব ৬-এ এদের জায়গা আর সাইবার সুরক্ষা আইন, ২০২৬ দেখেছেন।

  • ব্যক্তিগত উপাত্ত সুরক্ষা আইন, ২০২৬ (৬৩ নং): মানুষের অধিকার আর প্রতিষ্ঠানের দায়িত্বের আইন। ধারা ১(৩) অনুযায়ী ধারা ২৩ আর ৩১ থেকে ৩৫ বাদে বাকি অংশ ৬ নভেম্বর ২০২৫ থেকে কার্যকর বলে গণ্য। ওই ধারাগুলো কার্যকর হবে আইন জারির ১৮ মাস পরে সরকারের গেজেট-নির্ধারিত তারিখে।
  • জাতীয় উপাত্ত ব্যবস্থাপনা আইন, ২০২৬ (৮০ নং): ধারা ১(২) অনুযায়ী ৬ নভেম্বর ২০২৫ থেকে কার্যকর বলে গণ্য। এটি জাতীয় উপাত্ত ব্যবস্থাপনা কর্তৃপক্ষ (ধারা ৮) আর নীতি নির্ধারণী বোর্ড গঠন করে, আর প্রতিষ্ঠানগুলোর মধ্যে উপাত্ত আদান-প্রদানের (interoperability) কাঠামো দেয়। ৬৩ নং আইনের “কর্তৃপক্ষ” এই সংস্থাই (৬৩ নং আইনের ধারা ২(৪)).

শব্দ আলাদা, তাই ছোট অভিধান: data subject = উপাত্তধারী (আইনে শনাক্ত বা শনাক্তযোগ্য স্বাভাবিক ব্যক্তি, জীবিত বা মৃত); data fiduciary = উপাত্ত-জিম্মাদার; processor = প্রক্রিয়াকারী; pseudonymized data = ছদ্মনামকৃত উপাত্ত; retention = ধারণ.

ধারা (৬৩ নং)বিষয় (আমাদের ভাষায় সংক্ষেপ)Engineer-এর জন্য
১(২)দেশের ভেতরে প্রক্রিয়াকরণ, আর বাইরে থেকে দেশের মানুষকে পণ্য-সেবা দেওয়া বা পরিবীক্ষণ। শুধু দেশের মধ্য দিয়ে স্থানান্তর আলাদাবিদেশি সেবাও আওতায় আসতে পারে
২(২১), ৭সংবেদনশীল উপাত্তের তালিকা (জেনেটিক, biometric, স্বাস্থ্য, ধর্মীয় বিশ্বাস, তাৎক্ষণিক অবস্থান ইত্যাদি) আর শর্তInventory-তে আলাদা চিহ্ন
৫সম্মতি স্বেচ্ছায়, সুনির্দিষ্ট, স্পষ্ট, প্রত্যাহারযোগ্য। কিছু বৈধ ভিত্তিতে সম্মতি ছাড়াও চলে। সম্মতির প্রমাণের ভার জিম্মাদারেরসম্মতির log রাখুন
৯শিশু (সংজ্ঞায় ১৮ বছরের নিচে বা সরকার-নির্ধারিত বয়স) বা সম্মতি দিতে অক্ষম ব্যক্তির ক্ষেত্রে অভিভাবকের সম্মতিবয়স যাচাইয়ের নকশা
১০–১৩লিখিত আবেদনে অধিকার প্রয়োগ; প্রবেশাধিকার, portability, সংশোধন, প্রত্যাহার, আপত্তি, মুছে ফেলা। মুছে ফেলা প্রত্যাখ্যানের ক্ষেত্রও আছেঅনুরোধের ধারা বানান
১৪সংশোধন বা মোছা সব system-এ ছড়ানো। Mirror, cache, backup, DR, test environment আর migration ডেটাসেটের কপির কথাও আছেInventory ছাড়া অসম্ভব
১৭কারিগরি ও প্রাতিষ্ঠানিক সুরক্ষা; ছদ্মনামকরণ আর সাংকেতীকরণের নাম আছেEncryption, HMAC
১৮, ১৯নির্ধারিত মেয়াদের বেশি ধারণ নয়; রেকর্ডপত্র রাখার ন্যূনতম ৫ বছরের বিধান, ধারা ১৮ সাপেক্ষেদুটি মিলিয়ে পরামর্শ নিন
২০উপাত্তধারীর উল্লেখযোগ্য ক্ষতির সম্ভাবনা থাকলে কর্তৃপক্ষকে জানানো; রূপ, পদ্ধতি ও সময় প্রবিধানেBreach plan
২১, ২২নির্ধারিত শ্রেণির জিম্মাদারের উপাত্ত নিরীক্ষা; উপাত্ত সুরক্ষা পরিকল্পনাপ্রমাণ জমা রাখুন
২৩*গুরুত্বপূর্ণ উপাত্ত-জিম্মাদারের প্রধান উপাত্ত কর্মকর্তাপরে কার্যকর
২৪জাতীয় নিরাপত্তা, অপরাধ অনুসন্ধান ইত্যাদিতে সম্মতির অব্যাহতি। ধারা ২৪(২) বলে, অন্য প্রযোজ্য বিধান থেকে এটি ছাড় নয়ব্যতিক্রম সীমিত ভাবুন
২৯উপাত্তের চার শ্রেণি (তফসিল) আর বিদেশে স্থানান্তরের শর্ত; সংবেদনশীল শনাক্তযোগ্য উপাত্ত বিপুল পরিমাণে পাঠালে কর্তৃপক্ষকে জানানোCloud অঞ্চল দেখুন
৩১–৩৫*কর্তৃপক্ষের কাছে অভিযোগ, প্রশাসনিক জরিমানা, ক্ষতিপূরণ। ধারা ৩২ ও ৩৩-এ অনধিক ২৫ লক্ষ টাকা, গুরুত্বপূর্ণ জিম্মাদারের ক্ষেত্রে ধারা ৩২-এ অনধিক ৫০ লক্ষ টাকাপরে কার্যকর

* চিহ্নিত ধারাগুলো পরে কার্যকর হবে। ১০ এপ্রিল ২০২৬ থেকে ১৮ মাস পূর্ণ হয় ২০২৭ সালের অক্টোবরে, তাই যাচাইয়ের দিন পর্যন্ত এই সময় পূর্ণ হয়নি। তবে “এখন তো জরিমানা নেই” ভাবা ভুল হিসাব: অন্য দায়িত্বগুলো আইনের লেখায় আগে থেকেই কার্যকর, আর প্রকৌশলের কাজে সময় লাগে।

ডেটা দেশে রাখা নিয়ে: ৬৩ নং আইনের যে লেখা আমরা পড়েছি, তাতে ধারা ২৯ বিদেশে স্থানান্তরের শর্ত দেয়, আর ধারা ২৬ কর্তৃপক্ষকে বিদেশে সরবরাহ বন্ধ বা স্থগিত করার আদেশের ক্ষমতা দেয়। “সব ডেটা দেশেই রাখতে হবে” ধরনের সাধারণ বিধান আমাদের চোখে পড়েনি। তবে প্রবিধান আর খাতভিত্তিক নিয়ম আলাদা কথা বলতে পারে, যেমন আর্থিক খাতের নিয়ন্ত্রকের নির্দেশনা। তাই এই বাক্যকে চূড়ান্ত ধরবেন না।

৮০ নং আইন থেকে: ধারা ২৯ উপাত্ত-ভাণ্ডারের পাঁচটি ভাগের কথা বলে। ধারা ২৩(চ) অনুযায়ী NRDEX প্ল্যাটফর্মে আদান-প্রদানের আগে বৈধ তথ্য পুনর্ব্যবহার চুক্তির (Data Resharing Agreement) কথা আছে। ধারা ৪২(২)-এ এই আইন লঙ্ঘনে অনধিক ২৫ লক্ষ টাকা প্রশাসনিক জরিমানার বিধান আছে।

পরীক্ষা ও ইন্টারভিউতে:

  • Privacy আর security-র পার্থক্য? Security ডেটা রক্ষা করে, privacy ডেটার ন্যায্য ব্যবহার নিয়ে ভাবে।
  • Pseudonymization আর anonymization? প্রথমটি ফেরানো যায়, তাই এখনো ব্যক্তিগত; দ্বিতীয়টিতে যুক্তিসংগতভাবে চেনা যায় না।
  • Hash করা ফোন নম্বর কেন দুর্বল? Search space ছোট আর key নেই; keyed HMAC ব্যবহার করুন।
  • k-anonymity-র একটি সীমা? দলের সবার সংবেদনশীল মান এক হলে তথ্য ফাঁস হয়; l-diversity এটি ধরে।
  • ε ছোট হলে কী হয়? শব্দ বাড়ে (b = Δ/ε), privacy বাড়ে, নির্ভুলতা কমে।

১০ · কর্মী নজরদারি, AI আর breach — AI-এর যুগে privacy

কর্মীর privacy

নিরাপত্তা দলের হাতে DLP, EDR আর email-এর log আছে। এগুলো insider threat ধরে, আবার কর্মীর ব্যক্তিগত জীবনেও উঁকি দিতে পারে। ভালো অভ্যাস: কর্মীকে আগেই জানান কী নজরে রাখা হয় ও কেন। ব্যক্তিগত বার্তা নয়, নিরাপত্তার সংকেত দেখুন। প্রথমে ছদ্মনামে বিশ্লেষণ, কারণ দেখে তবেই পরিচয় খোলা। নজরদারি যাঁরা করেন, তাঁদেরও audit log থাকবে। পর্ব ৫৫-এ এর আইনি উদাহরণ আছে।

AI আর ব্যক্তিগত ডেটা

AI-তে তিনটি নতুন প্রশ্ন আসে। এক, ব্যবহারকারীর ডেটা মডেল শেখাতে ব্যবহার করা কি মূল উদ্দেশ্যের ভেতরে? দুই, শেখা মডেল থেকে মুছবেন কীভাবে? গবেষণায় দেখা গেছে, মডেল অনেক সময় শেখার ডেটার অংশ মনে রাখে। তিন, স্বয়ংক্রিয় সিদ্ধান্ত: GDPR-এর Article 22-তে এর শর্ত আছে, আর ৬৩ নং আইনের ধারা ১১ ও ১৩-তেও স্বয়ংক্রিয় সিদ্ধান্তের কথা আছে। কর্মীরা AI সেবায় গ্রাহকের ডেটা পেস্ট করলে সেটিও একটি processor-এ ডেটা পাঠানো। বিস্তারিত পর্ব ৫১-এ।

Breach হলে

পরিকল্পনা পর্ব ৬১-এ দেখেছেন। Privacy-র দিক থেকে প্রথম প্রশ্ন তিনটি: কাদের, কোন ধরনের ডেটা, মানুষের কী ক্ষতি? জাতীয় CIRT-এ incident জানানোর সরকারি পথ পর্ব ৬-এ দেখেছেন, আর ৬৩ নং আইনের ধারা ২০ কর্তৃপক্ষকে জানানোর কথা বলে। দুটি পথ এক নয়, তাই plan-এ দুটিই রাখুন। Personal data breach শুধু ফাঁস নয়, ডেটা হারানোও হতে পারে।

AI সাধারণত যে ভুলগুলো করে

AI-এর ভুলকেন বিপজ্জনকযাচাই
পুরোনো বা বানানো আইনের ধারা বলেবাংলাদেশের আইন খুব নতুনগেজেটের লেখা নিজে পড়ুন
“SHA-256 করলে anonymous” বলেছোট search space, key নেইসম্ভাব্য মান গুনে দেখুন
নাম মুছে “GDPR compliant” বলেQuasi-identifier রয়ে যায়k আর l হিসাব করুন
Production dump test-এ নামাতে বলেসব ডেটা কম সুরক্ষায় যায়Mask বা synthetic ডেটা
DP-তে Math.random() ব্যবহার করেদুর্বল র‍্যান্ডম, ভুল sensitivityপরীক্ষিত library, পর্যালোচনা
নিশ্চিত সুরে আইনি পরামর্শ দেয়দায় আপনার ওপর আসেআইনজীবী, মানুষের সিদ্ধান্ত

নিচের prompt-এ বাস্তব ডেটা নেই, শুধু schema. আসল গ্রাহকের সারি, key বা গোপন তথ্য কখনো AI-তে পেস্ট করবেন না।

আমার কাল্পনিক অনলাইন বাজারের টেবিল: orders(order_id, name, phone, address, birth_date, gps_trail, amount, created_at). এই schema-য় কোনো আসল ডেটা নেই। ১. প্রতিটি কলামের জন্য বলো: ব্যক্তিগত, সংবেদনশীল না সাধারণ, আর কেন। ২. Delivery আর হিসাবের কাজে কোন কলাম সত্যিই দরকার? কোনগুলো বাদ দেওয়া যায়? ৩. প্রতিটি কলামের retention-এর একটি প্রস্তাব দাও এবং বলো এটি কোন অনুমানের ওপর দাঁড়িয়ে। ৪. কোনো আইনের ধারা বললে নিশ্চিত না হলে স্পষ্ট বলো "নিশ্চিত নই"। ধারা বানিয়ে বলবে না। ৫. কোন সিদ্ধান্ত মানুষকে, আইন-পরামর্শককে নিতে হবে, আলাদা করে লেখো।

AI-এর পরামর্শ ব্যবহারের চেকলিস্ট

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।

প্র ০১একটি প্রতিষ্ঠান বলছে, “আমরা ফোন নম্বর hash করে বিজ্ঞাপন সেবাকে দিই, তাই ডেটা বেনামি।” এই দাবি কতটা টেকে?

টেকে না, আর এই ভুল খুব পুরোনো। এখানে তিনটি আলাদা সমস্যা আছে।

প্রথম, search space. একটি দেশের সম্ভাব্য মোবাইল নম্বর খুব বেশি নয়। Hash-এ key না থাকলে যে কেউ সম্ভাব্য সব নম্বরের hash বানিয়ে তালিকা করতে পারেন। আমাদের হিসাবে ৭ × ১০৮ মান, মাত্র প্রায় ২৯.৪ bit. Hash তৈরি হয়েছে দীর্ঘ, এলোমেলো input-এর জন্য, ছোট সংখ্যার ঘরের জন্য নয়।

দ্বিতীয়, উদ্দেশ্য। বিজ্ঞাপন সেবা হয়তো মিলিয়েই দেখতে চায়, দুই পক্ষের তালিকায় একই মানুষ আছেন কি না। অর্থাৎ hash-এর কাজই মানুষকে চেনা। যে তথ্য দিয়ে একই মানুষকে বারবার ধরা যায়, সে তথ্য বেনামি নয়। মার্কিন FTC ২০২৪ সালের এক প্রকাশনায় স্পষ্ট লিখেছে, hash করলেই ডেটা বেনামি হয় না।

তৃতীয়, আইনি শ্রেণি। GDPR-এর Recital 26 বলে, যুক্তিসংগতভাবে ব্যবহৃত হতে পারে এমন উপায় বিবেচনা করতে হবে। ইউরোপের আদালত ২০১৬ সালের Breyer মামলায় dynamic IP address নিয়েও এই ধরনের প্রশ্ন বিবেচনা করেছেন। ৬৩ নং আইনেও ছদ্মনামকৃত উপাত্তের আলাদা সংজ্ঞা আছে, অর্থাৎ এমন উপাত্ত “অতিরিক্ত তথ্য” থাকলে চেনা যায়।

তাহলে বিকল্প কী? মিলিয়ে দেখা সত্যিই দরকার হলে এবং বৈধ ভিত্তি থাকলে keyed HMAC বা নিরাপদ মেলানোর পদ্ধতি ভাবা যায়। তবে সেটি pseudonymization, তাই ব্যক্তিগত ডেটার সব নিয়ম মানতে হবে। সবচেয়ে ভালো প্রশ্ন: ডেটা না পাঠিয়েই কি কাজটি হয়?

মূল উপলব্ধি: “Anonymous” একটি দাবি, প্রমাণ নয়। প্রতিবার জিজ্ঞেস করুন, কে, কোন বাড়তি তথ্য দিয়ে, কত কষ্টে মানুষটিকে চিনতে পারেন।

প্র ০২Netflix Prize আর AOL-এর ঘটনা থেকে “প্রকাশ করে দেওয়া” ডেটা সম্পর্কে কী শেখা গেছে?

২০০৬ সালে দুটি ঘটনা প্রায় একসাথে ঘটে। AOL গবেষণার জন্য কয়েক লক্ষ ব্যবহারকারীর search log প্রকাশ করে, নাম সরিয়ে শুধু সংখ্যা বসিয়ে। অল্প দিনেই সাংবাদিকেরা search-এর ধরন দেখে একজন ব্যবহারকারীকে চিহ্নিত করেন বলে প্রকাশিত হয়। AOL ডেটা সরিয়ে নেয়, কিন্তু ততক্ষণে কপি ছড়িয়ে গেছে। একই বছর Netflix তার সুপারিশ প্রতিযোগিতার জন্য রেটিং ডেটা প্রকাশ করে।

Narayanan আর Shmatikov-এর গবেষণা দেখায়, এমন ডেটা “ছড়ানো” (sparse): একজন মানুষের পছন্দের সমষ্টি প্রায় অনন্য। তাই সাধারণ সিনেমার রেটিং নিরীহ মনে হলেও, অল্প কিছু বাইরের তথ্য মিললে পুরো ইতিহাস একজনের সাথে জুড়ে যেতে পারে। আর ইতিহাসের ভেতরে থাকতে পারে রাজনৈতিক বা ব্যক্তিগত পছন্দের ইঙ্গিত, যা গবেষকেরাও উল্লেখ করেছেন। প্রকাশিত প্রতিবেদন অনুযায়ী পরে একটি মামলা আর FTC-র প্রশ্নের পর Netflix দ্বিতীয় প্রতিযোগিতার পরিকল্পনা বাদ দেয়।

তিনটি শিক্ষা আছে। এক, “নিরীহ” বলে কোনো field নেই; ক্ষতি ঠিক হয় কোন ডেটার সাথে জোড়া যায় তা দিয়ে। দুই, আপনি জানেন না বাইরের দুনিয়ায় কী তথ্য আছে, আর ভবিষ্যতে কী আসবে। আজকের নিরাপদ প্রকাশ কাল অনিরাপদ হতে পারে। তিন, প্রকাশ একমুখী। Password বদলানো যায়, প্রকাশিত ডেটা ফেরানো যায় না।

তাই নিয়ন্ত্রণ বদলেছে। পুরো ডেটা প্রকাশের বদলে সীমিত প্রবেশ, চুক্তি, নিরাপদ গবেষণা-পরিবেশ, শুধু সমষ্টিগত ফল, আর দরকারে differential privacy.

মূল উপলব্ধি: De-identification একবারের কাজ নয়, চলমান ঝুঁকি। প্রকাশের আগে প্রশ্নটি হলো “প্রকাশ না করে কি কাজ চলে?”

প্র ০৩Differential privacy এত শক্ত গ্যারান্টি দিলে সবাই সব জায়গায় ব্যবহার করে না কেন?

কারণ প্রতিটি গ্যারান্টির একটি দাম আছে, আর সে দাম বাস্তব মানুষকে দিতে হয়।

নির্ভুলতার দাম। শব্দের মাত্রা দলের আকারের ওপর নির্ভর করে না। ε = ০.১ হলে ৯৫% সীমা প্রায় ±৩০. ৪০ হাজার মানুষের গণনায় এটি নগণ্য, ৪০ জনের গণনায় ফলটিই নষ্ট। অথচ ছোট দল, যেমন সংখ্যালঘু জনগোষ্ঠী বা প্রত্যন্ত এলাকার মানুষ, প্রায়ই সবচেয়ে বেশি নীতিগত মনোযোগের দাবিদার। মার্কিন ২০২০ সালের জনগণনায় DP আসার পর ছোট এলাকার তথ্য নিয়ে এই প্রশ্নই উঠেছিল।

Budget-এর দাম। প্রতিটি প্রশ্ন খরচ করে। দীর্ঘদিন চলা system-এ মোট ε বাড়তে থাকে। কে ঠিক করবেন কত যথেষ্ট? ε = ১ আর ε = ১০-এর মধ্যে সম্ভাবনার অনুপাত e১ বনাম e১০, প্রায় ২.৭ বনাম ২২ হাজার। বড় ε-কে “DP আছে” বললে দাবিটি প্রায় ফাঁপা হয়ে যেতে পারে। তাই ε না জানিয়ে DP-র দাবি অর্থহীন।

প্রকৌশলের দাম। Sensitivity ঠিকভাবে সীমিত করতে হয়, শব্দের উৎস নিরাপদ হতে হয়, ডিবাগ করা কঠিন। আর DP একক মানুষের যোগ-বিয়োগ নিয়ে কথা বলে। দলগত ক্ষতি, যেমন একটি পুরো এলাকা নিয়ে ক্ষতিকর সিদ্ধান্ত, এটি থামায় না।

তাই DP সবচেয়ে মানায় যেখানে অনেক মানুষের সমষ্টিগত পরিসংখ্যান দরকার, এবং ডেটা অনেকের কাছে যাবে। এক-একজন গ্রাহকের সেবায় এটি প্রযোজ্যই নয়।

মূল উপলব্ধি: Privacy প্রকৌশল গণিত দিয়ে শেষ হয় না। শব্দের পরিমাণ একটি নীতির সিদ্ধান্ত, আর সেই সিদ্ধান্তে ক্ষতিগ্রস্ত মানুষের কথাও থাকা উচিত।

প্র ০৪Log পরিবর্তন করা যাবে না, আবার মানুষ বলছেন “আমার তথ্য মুছুন”। দুটি কীভাবে মেলাবেন?

এই টানাটানি বাস্তব। নিরাপত্তা চায় log অপরিবর্তনীয় থাকুক, যাতে হামলাকারী চিহ্ন মুছতে না পারেন। পর্ব ৫৫-এ এর কারণ দেখেছেন। Backup-ও ইচ্ছা করে পরিবর্তন-অযোগ্য, যাতে ransomware নষ্ট করতে না পারে। আর একদিকে আইন বলে অনেক ক্ষেত্রে মুছতে হবে। ৬৩ নং আইনে একটি মজার জোড়াও আছে: ধারা ১৪ মোছাকে backup আর test কপিতে ছড়াতে বলে, আবার পরিবর্তনের হিসাব অপরিবর্তনীয় লেজারে রাখার কথাও বলে।

সমাধান একক কোনো পদ্ধতি নয়, কয়েকটি নকশা একসাথে।

  • লেখার সময় কমানো: Log-এ ফোন বা নাম না লিখে ছদ্ম-id লিখুন। যা লেখা হয়নি, তা মোছার দরকার নেই।
  • ছোট মেয়াদ: Log আর backup নির্দিষ্ট দিনে নিজেরাই শেষ হয়। সেই মেয়াদ notice-এ জানানো থাকে।
  • Crypto-shredding: প্রতিটি গ্রাহকের ডেটা আলাদা key-তে encrypt করুন। Key মুছলে backup-এর কপিও পড়া যায় না। তবে key-এর ব্যবস্থাপনা নিজেই ঝুঁকি, আর এটি আইনে “মোছা” গণ্য হবে কি না, তা নিশ্চিত করে নিন।
  • পুনরুদ্ধারের সময় মোছা: মোছা id-র তালিকা আলাদা রাখুন, restore-এর পরে আবার প্রয়োগ করুন।
  • লেজারে ব্যক্তিগত তথ্য নয়: শুধু কী ঘটেছে তার হিসাব। Blockchain-এ সরাসরি ব্যক্তিগত ডেটা রাখা একই কারণে খারাপ নকশা।

আইনও সাধারণত ব্যতিক্রম রাখে। ধারা ১৩(৩)-এ আইনি বাধ্যবাধকতার জন্য রাখা উপাত্তের কথা আছে, GDPR-এর Article 17(3)-তেও ব্যতিক্রম আছে। সেগুলো লিখে রাখুন, মানুষকে জানান।

মূল উপলব্ধি: “মুছতে পারব কি না” প্রশ্নটি শেষে নয়, লেখার নকশার সময় ঠিক হয়। Privacy আর audit-এর দ্বন্দ্ব বেশিরভাগ ক্ষেত্রে দুর্বল schema-র ফল।

প্র ০৫নিরাপত্তার জন্য কর্মীদের সব কাজ নজরে রাখা কি যুক্তিসংগত? সীমারেখা কোথায়?

সহজ উত্তর নেই, কারণ দুই দিকেই সত্য আছে। Insider threat বাস্তব, আর প্রতিষ্ঠানকে নিজের ডেটা রক্ষা করতে হয়। আবার মানুষ অফিসে ঢুকলে তাঁর মর্যাদা দরজায় রেখে আসেন না। ইউরোপীয় মানবাধিকার আদালতের ২০১৭ সালের Bărbulescu রায় একটি কাজের কাঠামো দেয়। সেখানে প্রশ্নগুলো ছিল: কর্মী কি আগে থেকে জানতেন, নজরদারির মাত্রা কত, বৈধ কারণ ছিল কি, কম হস্তক্ষেপের পথ ছিল কি, ফল কী হলো। এটি ইউরোপের প্রেক্ষাপট, বাংলাদেশের আইন নয়, কিন্তু নকশার চেকলিস্ট হিসেবে কাজে লাগে।

ক্ষমতার অসমতা এখানে মূল কথা। কর্মী চাকরি হারানোর ভয়ে “রাজি” লিখতে পারেন, তাই সম্মতি প্রায়ই দুর্বল ভিত্তি। GDPR-এর কর্তৃপক্ষগুলো সাধারণত এই কারণে কর্মসংস্থানে সম্মতির ওপর ভরসা করতে নিরুৎসাহিত করেন। ৬৩ নং আইনের ধারা ৫(৩) আর ৭-এ কর্মসংস্থান-সংক্রান্ত আইনি অধিকার ও বাধ্যবাধকতার কথা আছে; এর সীমা আইনজীবীর সাথে বুঝে নিন।

প্রকৌশলে একটি ভালো নকশা হলো ধাপে ধাপে খোলা। প্রথমে স্বয়ংক্রিয় নিয়ম শুধু সংকেত ধরে, যেমন অস্বাভাবিক পরিমাণ ফাইল নামানো। Analyst প্রথমে ছদ্মনাম দেখেন। পরিচয় খুলতে দ্বিতীয় অনুমোদন লাগে, আর সব খোলার log থাকে। ব্যক্তিগত email বা chat-এর ভেতরের লেখা পড়া নীতিতে আলাদা করে সীমিত।

আর একটি বাস্তব ঝুঁকি হলো অতিরিক্ত নজরদারি বিশ্বাস নষ্ট করে। পর্ব ৫৪-এ দেখেছেন, ভয়ের পরিবেশে মানুষ ভুল লুকান, আর লুকানো ভুল আরও বড় নিরাপত্তা-ঝুঁকি।

মূল উপলব্ধি: প্রশ্নটি “নজর রাখব কি না” নয়, “কম হস্তক্ষেপে একই নিরাপত্তা পাওয়া যায় কি না”। কর্মীও একজন data subject.

অনুশীলন

হিসাব, নকশা আর বিচার। সব ডেটা বানানো।

  1. হিসাব করুন: (ক) একটি দেশে ৫টি prefix, প্রতিটির পরে ৮টি অঙ্ক। অনুমিত গতি প্রতি সেকেন্ডে ১০৮. Unkeyed hash-এর পুরো space পার হতে কত সময়? (খ) Count query, sensitivity ১, ε = ০.৫. b কত, আর ৯৫% সীমা কত? (গ) এই query ২০ বার চালালে মোট ε কত?

    (ক) ৫ × ১০৮ ÷ ১০৮ = ৫ সেকেন্ড. (খ) b = ১ ÷ ০.৫ = ২; ৯৫% সীমা b · ln ২০ = ২ × ২.৯৯৬ ≈ ±৫.৯৯. (গ) সাধারণ যোগফলের নিয়মে ২০ × ০.৫ = ১০. উন্নত composition-এর হিসাবে এই সীমা কিছুটা আঁটসাঁট করা যায়, তবে মূল কথা একই: বারবার প্রশ্নে খরচ বাড়ে।

  2. নকশা সমালোচনা করুন: একটি কাল্পনিক শিক্ষা-সাইটের newsletter ফর্মে আছে: নাম, email, মোবাইল, NID, জন্মতারিখ, পিতার নাম, ধর্ম, সর্বক্ষণ লোকেশনের অনুমতি। “Subscribe” বোতামের নিচে ছোট ধূসর লেখা: “চালিয়ে গেলে আপনি অংশীদারদের সাথে তথ্য ভাগে সম্মত।” কী কী বদলাবেন?

    Newsletter-এর জন্য দরকার শুধু email. NID, ধর্ম আর লোকেশন অপ্রয়োজনীয় ও সংবেদনশীল, পুরোপুরি বাদ। নাম ঐচ্ছিক হতে পারে। জন্মতারিখ দরকার হলে শুধু বয়সের শর্ত। ছোট ধূসর লেখা স্বাধীন, নির্দিষ্ট সম্মতি নয়, তাই তথ্য ভাগ আলাদা, খালি ঘরে, ইচ্ছাধীন রাখুন, এবং কোন অংশীদার, তা লিখুন। প্রতিটি email-এ সহজ unsubscribe, ফর্মের পাশে এক লাইনের notice, আর মেয়াদের নিয়ম যোগ করুন।

  3. ফল অনুমান করুন: টেবিলের quasi-identifier (দশক, অঞ্চল) আর সংবেদনশীল মান রোগ। সারি: (20s, A, Flu), (20s, A, Flu), (20s, A, Asthma), (30s, B, Cancer), (30s, B, Cancer), (40s, B, Flu). k আর l কত? শেষ সারি বাদ দিলে? তখন “30s, B” দলের একজনের রোগ জানা গেলে কী হয়?

    দল: (20s, A) ৩ জন, ২ রকম রোগ; (30s, B) ২ জন, ১ রকম; (40s, B) ১ জন, ১ রকম। সবচেয়ে ছোট দল ১ জন, তাই k = ১, l = ১. শেষ সারি বাদ দিলে সবচেয়ে ছোট দল ২ জন: k = ২, আর “30s, B” দলে শুধু Cancer, তাই l = ১. কেউ জানলে যে মানুষটি 30s বয়সের আর অঞ্চল B-তে, তিনি কোন সারি তা না জেনেও রোগ জানেন। k বেড়েছে, কিন্তু homogeneity ফাঁস রয়ে গেছে।

  4. নিজের system-এর খাতা: নিজের একটি project বা বানানো দোকান ধরুন। টেবিল বানান: system, field, শ্রেণি, উদ্দেশ্য, মেয়াদ, কে দেখেন, কোথায় যায়। তারপর একটি field বাদ দেওয়ার যুক্তি লিখুন। অন্য কারও ডেটা বা অন্যের system ব্যবহার করবেন না।

    ভালো উত্তরে অন্তত তিনটি জিনিস থাকবে। এক, মূল database ছাড়াও log, backup, email আর spreadsheet ধরা পড়েছে। দুই, প্রতিটি মেয়াদের পাশে কে মুছবে লেখা: scheduled job, না মানুষ। তিন, অন্তত একটি field সত্যিই বাদ পড়েছে, অথবা সঠিক তারিখের বদলে মাসের মতো মোটা মান এসেছে।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমডেটা মোছার একটি অনুরোধ সামলানোর ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. অনুরোধ গ্রহণ আর তারিখ লেখা
  2. অনুরোধকারীর পরিচয় যাচাই
  3. Data inventory দেখে সব জায়গা খুঁজে বের করা
  4. কোনটি মুছবে আর কোনটি নিয়মে থাকবে, সিদ্ধান্ত
  5. মূল system, তারপর কপি ও vendor থেকে মোছা
  6. মানুষটিকে ফল জানানো আর প্রমাণ রাখা

একটি প্রতিষ্ঠান গ্রাহকের ডেলিভারির ফোন নম্বর সম্পূর্ণ encrypted database-এ রাখে, কিন্তু গ্রাহককে না জানিয়ে নম্বরগুলো বিজ্ঞাপনের কাজে ব্যবহার করে। কোনো hack হয়নি। এখানে কী ভাঙল?

  • Security, কারণ encryption ব্যর্থ
  • Privacy, বিশেষ করে purpose limitation আর transparency
  • Availability
  • কিছুই ভাঙেনি, কারণ ডেটা encrypted

একটি টেবিলে নামের জায়গায় HMAC ছদ্মনাম বসানো হয়েছে, key প্রতিষ্ঠানের KMS-এ আছে। এই ডেটা কোন শ্রেণিতে পড়ে?

  • Anonymized, ব্যক্তিগত ডেটা নয়
  • Encrypted, key দিয়ে মূল মান ফেরানো যায়
  • Pseudonymized, এখনো ব্যক্তিগত ডেটা
  • Synthetic data

৭ × ১০৮টি সম্ভাব্য ফোন নম্বরের space-এ unkeyed SHA-256 ব্যবহার হয়েছে। অনুমিত গতি প্রতি সেকেন্ডে ১০৯. পুরো space পার হতে কত সময় লাগে, আর এর অর্থ কী?

  • ২^২৫৬ ধাপ, তাই একেবারে নিরাপদ
  • ৭০০ সেকেন্ড, তাই hash যথেষ্ট
  • ৭ দিন, তাই মোটামুটি নিরাপদ
  • ০.৭ সেকেন্ড, তাই unkeyed hash বেনামি নয়

একটি প্রকাশিত টেবিলে k = ৫, কিন্তু একটি দলের পাঁচজনেরই রোগ একই। কোন বক্তব্যটি ঠিক?

  • মানুষটি দলে আছেন জানলেই রোগ জানা যায়; l-diversity দরকার
  • k = ৫ বলে তথ্য পুরোপুরি নিরাপদ
  • টেবিল encrypt করলেই এই সমস্যা মেটে
  • k = ১০ করলেই এই সমস্যা সবসময় দূর হয়

Laplace mechanism-এ একটি count query-র sensitivity ১. ε = ০.২ হলে noise-এর scale b কত, আর ε আরও কমালে কী হবে?

  • b = ০.২; ε কমালে শব্দ কমবে
  • b = ৫; ε কমালে শব্দ বাড়বে, privacy বাড়বে
  • b = ২০; ε কমালে শব্দ কমবে
  • b = ১; ε-এর সাথে শব্দের সম্পর্ক নেই

বাংলাদেশের ব্যক্তিগত উপাত্ত সুরক্ষা আইন, ২০২৬ (৬৩ নং) সম্পর্কে ৩১ অক্টোবর ২০২৬ তারিখে গেজেটের লেখা অনুযায়ী কোন বক্তব্যটি ঠিক?

  • পুরো আইন এখনো কার্যকর হয়নি
  • সব ধারা একই দিনে কার্যকর হয়েছে
  • ধারা ২৩ আর ৩১–৩৫ পরে গেজেট-নির্ধারিত তারিখে কার্যকর হবে
  • এটিই দেশের সাইবার অপরাধের প্রধান আইন

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. Privacy ≠ security. অনুমোদিত ব্যবহারও অন্যায্য হতে পারে।
  2. আগে খাতা: Data inventory ছাড়া কমানো, মোছা বা breach সামলানো যায় না।
  3. Hash বেনামি নয়, নাম মোছাও বেনামি নয়। Search space আর k গুনে কথা বলুন।
  4. DP-র সূত্র: b = Δ/ε. ছোট ε মানে বেশি শব্দ, আর প্রতিটি প্রশ্নে budget খরচ।
  5. আইন: ৬৩ ও ৮০ নং আইন; ৬৩ নং আইনের ধারা ২৩ আর ৩১–৩৫ পরে কার্যকর। লেখা নিজে দেখুন, এই পর্ব আইনি পরামর্শ নয়।

পরের পর্বে: ডেটা প্রায়ই courier, cloud আর payment সেবার হাতে যায়। পর্ব ৭১-এ দেখব vendor আর third-party ঝুঁকি যাচাই, চুক্তি আর নজরদারি কীভাবে করবেন।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান