প্রাইভেসি কী ও কেন এটি কম্পিউটিং-এর একটি বিষয়
এই পাঠে যা শিখবেন
- ইনফরমেশনাল প্রাইভেসির সংজ্ঞা এবং কেন এটি শুধু "গোপনীয়তা" (secrecy) থেকে আলাদা
- কনটেক্সচুয়াল ইন্টিগ্রিটি ধারণা — কেন প্রাইভেসি নিয়মগুলো তথ্যের ধরনের চেয়ে বেশি তার প্রসঙ্গের উপর নির্ভর করে
- "আমার তো লুকানোর কিছু নেই" — এই যুক্তিটি কেন কনটেক্সচুয়াল ইন্টিগ্রিটির দৃষ্টিতে অসম্পূর্ণ
- Python দিয়ে একটি সত্যিকারের ডেটা-ফ্লো ক্লাসিফায়ার — একটি ফ্লো তার মূল প্রসঙ্গের নিয়ম মানছে কিনা তা যাচাই করা
১ · প্রাইভেসি মানে গোপনীয়তা নয়
ইনফরমেশনাল প্রাইভেসিInformational Privacyব্যক্তিগত তথ্যের প্রবাহের উপর একধরনের ন্যায়সংগত নিয়ন্ত্রণ — কোন তথ্য, কার কাছে, কী উদ্দেশ্যে যাবে তা নির্ধারণের ক্ষমতা, শুধু তথ্যটি "গোপন" রাখা নয়। নিয়ে সাধারণ একটি ভুল ধারণা হলো — প্রাইভেসি মানে কোনো তথ্য সম্পূর্ণ গোপন রাখা, আর যেই তথ্যটি ইতিমধ্যে কাউকে জানানো হয়ে গেছে তার আর কোনো প্রাইভেসি অবশিষ্ট থাকে না। বাস্তবে প্রাইভেসি আরও সূক্ষ্ম — আপনি আপনার ডাক্তারকে আপনার অসুস্থতার কথা জানান, আপনার বন্ধুকে আপনার বেতনের কথা জানান, আপনার ব্যাংককে আপনার ঠিকানার কথা জানান — প্রতিটি ক্ষেত্রেই তথ্য কাউকে না কাউকে জানানো হয়েছে, তবু আমরা মনে করি না যে এতে আপনার প্রাইভেসি সম্পূর্ণ চলে গেছে। আসল প্রশ্নটি হলো — তথ্যটি কি তার উপযুক্ত প্রসঙ্গে প্রবাহিত হচ্ছে?
২ · কনটেক্সচুয়াল ইন্টিগ্রিটি
দার্শনিক Helen Nissenbaum-এর কনটেক্সচুয়াল ইন্টিগ্রিটিContextual Integrityপ্রাইভেসির একটি তত্ত্ব — প্রতিটি সামাজিক প্রসঙ্গের (চিকিৎসা, শিক্ষা, বন্ধুত্ব, বাণিজ্য) তথ্য-প্রবাহের নিজস্ব প্রচলিত নিয়ম আছে; এই নিয়ম ভাঙা হলেই প্রাইভেসি লঙ্ঘিত হয়, তথ্যটি "গোপন" ছিল কিনা তা নির্বিশেষে। অনুযায়ী, প্রতিটি সামাজিক প্রসঙ্গের (চিকিৎসা, শিক্ষা প্রতিষ্ঠান, কর্মক্ষেত্র, অনলাইন কেনাকাটা) তথ্য-প্রবাহের নিজস্ব প্রচলিত নিয়ম থাকে — কে তথ্য পাঠাচ্ছে, কে পাচ্ছে, কী ধরনের তথ্য, এবং কী শর্তে। একটি তথ্য-প্রবাহ যখন এই প্রসঙ্গ-নির্দিষ্ট নিয়ম মেনে চলে, তখন তা প্রসঙ্গগতভাবে যথাযথ (contextually appropriate); নিয়ম ভাঙলে তা প্রাইভেসি লঙ্ঘন — এমনকি যদি তথ্যটি কখনো "সিক্রেট" হিসেবে দাবি করা না হয়ে থাকে।
মেডিকেল তথ্য ডাক্তারের কাছে গেলে স্বাভাবিক; সেই একই তথ্য একটি মার্কেটিং তালিকায় গেলে অস্বাভাবিক — তথ্যটি বদলায়নি, প্রসঙ্গ বদলেছে।
এই যুক্তিটি ধরে নেয় প্রাইভেসি মানে শুধু গোপনীয়তা রক্ষা করা — কিন্তু কনটেক্সচুয়াল ইন্টিগ্রিটির প্রশ্ন হলো তথ্যটি প্রসঙ্গ-উপযুক্তভাবে ব্যবহৃত হচ্ছে কিনা, তা "লুকানো" থাকুক বা না থাকুক।
প্রতিটি প্রসঙ্গে তথ্য কীভাবে প্রবাহিত হবে তার একটি প্রচলিত নিয়ম থাকে (যেমন — ডাক্তার-রোগীর তথ্য শুধু চিকিৎসার জন্যই ব্যবহৃত হবে) — এই নিয়ম ভাঙাই লঙ্ঘন তৈরি করে।
৩ · কোড দিয়ে একটি ডেটা-ফ্লো ক্লাসিফায়ার
নিচের কোড সেলে একটি ছোট্ট, সত্যিকারের ফাংশন — check_data_flow — লেখা হয়েছে যা একটি
ডেটা-টাইপ, তার মূল প্রসঙ্গ, এবং প্রাপকের উদ্দেশ্য দেখে বলে দেয় প্রবাহটি সেই প্রসঙ্গের প্রচলিত নিয়মের সাথে
সামঞ্জস্যপূর্ণ কিনা। এটি একটি সরলীকৃত মডেল — বাস্তব কনটেক্সচুয়াল ইন্টিগ্রিটি তত্ত্বে আরও অনেক প্যারামিটার
থাকে (প্রেরক, প্রাপক, সাবজেক্ট, অ্যাট্রিবিউট, ট্রান্সমিশন প্রিন্সিপল) — কিন্তু মূল যুক্তিটি একই।
# একটি সিন্থেটিক, ইলাস্ট্রেটিভ উদাহরণ -- বাস্তব কোনো কোম্পানি বা ঘটনা নয়
# একটি ডেটা-ফ্লো তার মূল প্রসঙ্গের নিয়ম মানছে কিনা তা যাচাই করা
# প্রতিটি ডেটা-টাইপ ও তার মূল প্রসঙ্গের জন্য কোন কোন উদ্দেশ্য (purpose) গ্রহণযোগ্য তার তালিকা
NORMS = {
"medical": {
"treatment": {"treatment", "billing_for_treatment"},
},
"purchase_history": {
"online_shopping": {"order_fulfillment", "fraud_prevention"},
},
"location": {
"navigation_app": {"route_calculation"},
},
}
def check_data_flow(data_type, original_context, recipient_purpose):
"""একটি ডেটা-ফ্লো কনটেক্সচুয়াল ইন্টিগ্রিটি লঙ্ঘন করছে কিনা তা যাচাই করে।
রিটার্ন করে True যদি লঙ্ঘন হয়, False যদি প্রসঙ্গ-উপযুক্ত হয়।"""
allowed_purposes = NORMS.get(data_type, {}).get(original_context, set())
return recipient_purpose not in allowed_purposes
# চারটি সিন্থেটিক ডেটা-ফ্লো দৃশ্যকল্প
scenarios = [
("medical", "treatment", "চিকিৎসারত ডাক্তার", "treatment"),
("medical", "treatment", "ইনস্যুরেন্স মার্কেটিং টিম", "insurance_marketing"),
("purchase_history", "online_shopping", "ফ্রড ডিটেকশন সিস্টেম", "fraud_prevention"),
("location", "navigation_app", "থার্ড-পার্টি অ্যাড ব্রোকার", "ad_profiling"),
]
violation_count = 0
for data_type, context, recipient, purpose in scenarios:
violates = check_data_flow(data_type, context, purpose)
violation_count += violates
status = "লঙ্ঘন করছে ✗" if violates else "সামঞ্জস্যপূর্ণ ✓"
print(f"{data_type:>17} | {context:>15} -> {recipient:<28} ({purpose:<18}) : {status}")
print(f"\nমোট {len(scenarios)}টি ফ্লোর মধ্যে {violation_count}টি কনটেক্সচুয়াল ইন্টিগ্রিটি লঙ্ঘন করছে।")
NORMS টেবিলে "কে তথ্য পাচ্ছে" (recipient) নিজে কোনো ভূমিকা রাখে না — যা গুরুত্বপূর্ণ তা
হলো উদ্দেশ্য (purpose)। প্রথম ও তৃতীয় ফ্লো তাদের মূল প্রসঙ্গের উদ্দেশ্যের সাথে সামঞ্জস্যপূর্ণ, কিন্তু
দ্বিতীয় ও চতুর্থ ফ্লো ভিন্ন, অসামঞ্জস্যপূর্ণ উদ্দেশ্যে ব্যবহৃত হচ্ছে — এটিই কনটেক্সচুয়াল ইন্টিগ্রিটি লঙ্ঘনের
মূল সংজ্ঞা।
প্রাইভেসি প্রশ্নের সঠিক রূপ "এই তথ্যটি কি গোপন?" নয় — বরং "এই তথ্য-প্রবাহ কি তার মূল প্রসঙ্গের প্রচলিত নিয়মের সাথে সামঞ্জস্যপূর্ণ?" যেকোনো সিস্টেম ডিজাইন করার সময় এই প্রশ্নটি জিজ্ঞাসা করা — ডেটা কোন প্রসঙ্গে সংগ্রহ করা হয়েছিল, এবং তা এখন কোন প্রসঙ্গে ব্যবহৃত হচ্ছে — একটি ব্যবহারিক প্রাইভেসি-চেক টুল। পরের পাঠগুলোতে (কনসেন্ট, k-anonymity, ডিফারেনশিয়াল প্রাইভেসি) আমরা এই ধারণার উপর ভিত্তি করে আরও নির্দিষ্ট কৌশল শিখব।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ "আমার তো লুকানোর কিছু নেই, তাই প্রাইভেসি নিয়ে চিন্তার দরকার নেই" — এই যুক্তিটি কনটেক্সচুয়াল ইন্টিগ্রিটির দৃষ্টিতে কেন অসম্পূর্ণ?
কারণ এই যুক্তিটি ধরে নেয় প্রাইভেসি সমস্যা শুধু তখনই হয় যখন কোনো "লজ্জাজনক" বা "গোপন" তথ্য ফাঁস হয়। কিন্তু কনটেক্সচুয়াল ইন্টিগ্রিটি অনুযায়ী, সম্পূর্ণ নিরীহ, অগোপন তথ্যও (যেমন আপনি কী কিনেছেন বা কোথায় গিয়েছেন) যদি তার মূল প্রসঙ্গের বাইরে ভিন্ন উদ্দেশ্যে ব্যবহৃত হয় (যেমন একটি বীমা কোম্পানি সেই কেনাকাটার তথ্য দিয়ে আপনার প্রিমিয়াম বাড়ায়), তা লঙ্ঘন — "লুকানোর কিছু নেই" থাকা সত্ত্বেও।
প্র ০২
উপরের কোডে যদি NORMS["medical"]["treatment"]-এ "medical_research" উদ্দেশ্যটি যোগ করা হয়, তাহলে কি একটি হাসপাতালের গবেষণা বিভাগে ডেটা পাঠানো "লঙ্ঘন" হিসেবে গণনা হবে?
না — তখন সেই উদ্দেশ্যটি অনুমোদিত তালিকায় যোগ হয়ে যাবে, তাই check_data_flow ফাংশনটি সেটিকে
"সামঞ্জস্যপূর্ণ" হিসেবে চিহ্নিত করবে। এটিই দেখায় যে NORMS টেবিলটি নিজেই একটি নৈতিক/নীতিগত
সিদ্ধান্ত এনকোড করে — কোন উদ্দেশ্যগুলো একটি প্রসঙ্গে "স্বাভাবিক" তা মানুষকেই ঠিক করতে হয়, কোড শুধু সেই
সিদ্ধান্ত ধারাবাহিকভাবে প্রয়োগ করে।
প্র ০৩ একজন ব্যবহারকারী তার লোকেশন ডেটা একটি নেভিগেশন অ্যাপকে "route_calculation"-এর জন্য দিয়েছেন। যদি সেই একই অ্যাপ পরে সেই ডেটা একটি বিজ্ঞাপনদাতাকে বিক্রি করে, ব্যবহারকারী কি "সম্মতি দিয়েছিলেন" বলে ধরে নেওয়া ঠিক হবে?
কনটেক্সচুয়াল ইন্টিগ্রিটির দৃষ্টিতে না — ব্যবহারকারী একটি নির্দিষ্ট উদ্দেশ্যে (রুট বের করা) ডেটা শেয়ার করার জন্য সম্মতি দিয়েছিলেন, বিজ্ঞাপনী প্রোফাইলিং-এর জন্য নয়। উদ্দেশ্য বদলে গেলেও একই "ডেটা শেয়ার করা হয়েছিল" যুক্তি দিয়ে সম্মতি সম্প্রসারণ করা ঠিক এই ধরনের লঙ্ঘনের একটি সাধারণ বাস্তব-জীবনের রূপ — L11-এ কনসেন্ট ও পারপাস লিমিটেশন নিয়ে আরও বিস্তারিত আলোচনা হবে।
অনুশীলন
-
চিন্তা করুন: আপনার নিজের জীবনের এমন একটি তথ্যের কথা ভাবুন যা আপনি একজনের সাথে (যেমন
পরিবার) শেয়ার করতে স্বাচ্ছন্দ্যবোধ করেন কিন্তু অন্য কারো সাথে (যেমন নিয়োগকর্তা) নয় — এটি কীভাবে
কনটেক্সচুয়াল ইন্টিগ্রিটির উদাহরণ?
উদাহরণ হতে পারে — একটি স্বাস্থ্য সমস্যা, একটি আর্থিক সমস্যা, বা একটি সম্পর্কের সিদ্ধান্ত। তথ্যটি নিজে "গোপন" না হয়েও, পরিবারের প্রসঙ্গে শেয়ার করা স্বাভাবিক (সহানুভূতি, সহায়তার উদ্দেশ্যে) কিন্তু কর্মক্ষেত্রের প্রসঙ্গে শেয়ার করা অস্বাভাবিক (সেখানে ভিন্ন উদ্দেশ্য — কর্মদক্ষতা মূল্যায়ন — প্রযোজ্য, যেখানে এই তথ্যের কোনো স্থান নেই)।
-
পরীক্ষা করুন: উপরের কোড সেলে
scenariosতালিকায় একটি পঞ্চম দৃশ্যকল্প যোগ করুন —("purchase_history", "online_shopping", "থার্ড-পার্টি ডেটা ব্রোকার", "ad_profiling")— এবং Run চেপে দেখুন এটি লঙ্ঘন হিসেবে গণনা হয় কিনা এবং কেন।এটি লঙ্ঘন হিসেবে গণনা হবে, কারণ
NORMS["purchase_history"]["online_shopping"]-এ শুধু"order_fulfillment"ও"fraud_prevention"অনুমোদিত —"ad_profiling"সেই তালিকায় নেই। ফলেviolation_count৩-এ বেড়ে যাবে (৫টির মধ্যে ৩টি লঙ্ঘন)।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরের পাঠ: কনসেন্ট, ডেটা মিনিমাইজেশন ও পারপাস লিমিটেশন L11 এই পাঠের "উদ্দেশ্য" ধারণাটিকে আরও নির্দিষ্টভাবে কোড দিয়ে যাচাই করা হবে — একটি ফর্ম কি তার বলা উদ্দেশ্যের চেয়ে বেশি তথ্য সংগ্রহ করছে?
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ প্রাইভেসি মডিউলের বাকি পাঠ (k-anonymity, ডিফারেনশিয়াল প্রাইভেসি, সার্ভেইল্যান্স) সহ পুরো কোর্স ম্যাপ।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps ও আরও অনেক কোর্স — সব এক জায়গায়।