পাঠ ৩২ · ৫৭-এর মধ্যে · মডিউল ৭
Home / Courses / Ethics in Computing & AI Safety / সাইবারসিকিউরিটি এথিক্স

র‍্যানসামওয়্যার, এক্সটরশন ও মুক্তিপণ দেওয়ার এথিক্স

Ransomware, extortion & the ethics of paying
৭ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • র‍্যানসামওয়্যার এক্সটরশনের মৌলিক প্রকৃতি (সংক্ষেপে, টেকনিক্যাল বিস্তারিত ছাড়া)
  • মুক্তিপণ না-দেওয়ার পক্ষে সবচেয়ে শক্তিশালী যুক্তি
  • মুক্তিপণ দেওয়ার পক্ষে সবচেয়ে শক্তিশালী যুক্তি, বিশেষত সেফটি-ক্রিটিকাল প্রেক্ষাপটে
  • Python দিয়ে একটি প্রত্যাশিত-খরচ তুলনা গণনা, এবং কেন এই সংখ্যা একাই সিদ্ধান্ত নিতে পারে না

১ · র‍্যানসামওয়্যার ও এক্সটরশন কী

র‍্যানসামওয়্যারRansomwareএকটি ম্যালওয়্যার যা একটি প্রতিষ্ঠানের ফাইল/সিস্টেম এনক্রিপ্ট করে দেয় এবং ডিক্রিপশনের বিনিময়ে মুক্তিপণ দাবি করে। এর কার্যকারিতা ও ছড়িয়ে পড়ার কৌশলের টেকনিক্যাল বিস্তারিত Cybersecurity কোর্সের আওতায় — এই পাঠ ধরে নেয় আক্রমণ ইতিমধ্যে ঘটে গেছে, এবং প্রতিষ্ঠানটি এখন একটি কঠিন সিদ্ধান্তের মুখোমুখি: মুক্তিপণ দেওয়া, নাকি না দিয়ে ব্যাকআপ থেকে পুনরুদ্ধারের চেষ্টা করা।

২ · মুক্তিপণ না-দেওয়ার পক্ষে যুক্তি

সবচেয়ে শক্তিশালী যুক্তি হলো ইনসেনটিভ/externality যুক্তি: মুক্তিপণ পরিশোধ প্রমাণ করে দেয় যে এই ধরনের আক্রমণ লাভজনক, যা একই আক্রমণকারী গোষ্ঠীকে আরও আক্রমণ চালাতে এবং নতুন আক্রমণকারীদের এই "ব্যবসায়িক মডেলে" আকৃষ্ট করতে পরোক্ষভাবে অর্থায়ন করে — এই ক্ষতিটা প্রদানকারী প্রতিষ্ঠানের নিজের ওপর পড়ে না, বরং ভবিষ্যতের ভুক্তভোগীদের ওপর পড়ে, যা একে একটি প্রকৃত নৈতিক দ্বিধায় পরিণত করে। এছাড়াও, মুক্তিপণ পরিশোধ করলেও কার্যকরী ডিক্রিপশন কী পাওয়ার, বা ডেটা সম্পূর্ণ ও নির্ভুলভাবে ফিরে পাওয়ার কোনো নিশ্চয়তা নেই — আক্রমণকারী একটি অপরাধী সত্তা, চুক্তি বলবৎ করার কোনো আইনি পথ নেই। কিছু জুরিসডিকশনে নিষেধাজ্ঞাপ্রাপ্ত (sanctioned) সত্তাকে মুক্তিপণ পরিশোধ আইনিভাবেও সীমাবদ্ধ বা ঝুঁকিপূর্ণ হতে পারে।

৩ · মুক্তিপণ দেওয়ার পক্ষে যুক্তি

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

৪ · একটি প্রত্যাশিত-খরচ তুলনা (একটি ইলাস্ট্রেটিভ ইনপুট, চূড়ান্ত উত্তর নয়)

নিচের কোড সেলে পে করা ও না-করার প্রত্যাশিত আর্থিক খরচ দুটি ভিন্ন দৃশ্যকল্পে গণনা করা হয়েছে — একটি ভালো ব্যাকআপসহ সাধারণ প্রতিষ্ঠান, আরেকটি দুর্বল ব্যাকআপসহ একটি সেফটি-ক্রিটিকাল হাসপাতাল প্রেক্ষাপট। লক্ষ্য করুন এই দুটি দৃশ্যকল্পে ভিন্ন সিদ্ধান্ত "সস্তা" হিসেবে বেরিয়ে আসে — এটিই দেখায় প্রেক্ষাপট কেন সিদ্ধান্তে নির্ণায়ক।

Python
# ইলাস্ট্রেটিভ, সিন্থেটিক দৃশ্যকল্প -- বাস্তব কোনো প্রতিষ্ঠান বা মুদ্রার প্রকৃত সংখ্যা নয়
# পে করা বনাম না করার একটি সরল "প্রত্যাশিত খরচ" (expected cost) তুলনা

def expected_cost_if_pay(ransom, downtime_days, downtime_cost_per_day,
                          p_recover, data_value_if_lost):
    downtime_cost = downtime_days * downtime_cost_per_day
    expected_data_loss = (1 - p_recover) * data_value_if_lost
    return ransom + downtime_cost + expected_data_loss


def expected_cost_if_not_pay(downtime_days, downtime_cost_per_day,
                              p_recover_from_backup, data_value_if_lost):
    downtime_cost = downtime_days * downtime_cost_per_day
    expected_data_loss = (1 - p_recover_from_backup) * data_value_if_lost
    return downtime_cost + expected_data_loss


scenarios = [
    {
        "name": "দৃশ্যকল্প A: ভালো, নিয়মিত পরীক্ষিত ব্যাকআপ আছে",
        "ransom": 150_000,
        "downtime_days_if_pay": 3,
        "downtime_days_if_not_pay": 5,
        "downtime_cost_per_day": 20_000,
        "p_recover_if_pay": 0.65,
        "p_recover_from_backup": 0.95,
        "data_value_if_lost": 500_000,
    },
    {
        "name": "দৃশ্যকল্প B: হাসপাতাল, দুর্বল ব্যাকআপ, সেফটি-ক্রিটিকাল ডাউনটাইম",
        "ransom": 200_000,
        "downtime_days_if_pay": 2,
        "downtime_days_if_not_pay": 20,
        "downtime_cost_per_day": 100_000,
        "p_recover_if_pay": 0.60,
        "p_recover_from_backup": 0.40,
        "data_value_if_lost": 2_000_000,
    },
]

for s in scenarios:
    cost_pay = expected_cost_if_pay(
        s["ransom"], s["downtime_days_if_pay"], s["downtime_cost_per_day"],
        s["p_recover_if_pay"], s["data_value_if_lost"]
    )
    cost_not_pay = expected_cost_if_not_pay(
        s["downtime_days_if_not_pay"], s["downtime_cost_per_day"],
        s["p_recover_from_backup"], s["data_value_if_lost"]
    )
    cheaper = "পে করা" if cost_pay < cost_not_pay else "পে না করা"

    print(s["name"])
    print(f"  পে করলে প্রত্যাশিত খরচ:      {cost_pay:,.0f} (একক: হাজার মুদ্রা, ইলাস্ট্রেটিভ)")
    print(f"  পে না করলে প্রত্যাশিত খরচ:   {cost_not_pay:,.0f} (একক: হাজার মুদ্রা, ইলাস্ট্রেটিভ)")
    print(f"  শুধু এই সংখ্যা অনুযায়ী সস্তা বিকল্প: {cheaper}\n")

print("গুরুত্বপূর্ণ সীমাবদ্ধতা: এই হিসাবে ধরা হয়নি যে মুক্তিপণ পরিশোধ ভবিষ্যৎ")
print("আক্রমণে পরোক্ষভাবে অর্থায়ন করতে পারে -- এটি প্রদানকারী প্রতিষ্ঠানের নিজের")
print("খরচ নয়, বরং সমাজ ও ভবিষ্যৎ ভুক্তভোগীদের ওপর পড়া একটি externality।")
print("আইনি সীমাবদ্ধতা, বীমা শর্তাবলী ও অ-আর্থিক নিরাপত্তা ঝুঁকিও এই সংখ্যায় নেই।")

    
লক্ষ্য করুন দৃশ্যকল্প A-তে (ভালো ব্যাকআপ) না-পে করা সস্তা হিসেবে বেরিয়ে আসে (১,২৫,০০০ বনাম ৩,৮৫,০০০), কারণ ব্যাকআপ থেকে দ্রুত ও নির্ভরযোগ্য পুনরুদ্ধার সম্ভব। কিন্তু দৃশ্যকল্প B-তে (দুর্বল ব্যাকআপ, উচ্চ ডাউনটাইম-খরচ) পে করা সস্তা হিসেবে বেরিয়ে আসে (১২,০০,০০০ বনাম ৩২,০০,০০০), কারণ ব্যাকআপ ছাড়া পুনরুদ্ধারে অনেক বেশি সময় ও ঝুঁকি লাগে। একই সূত্র, ভিন্ন ইনপুট, সম্পূর্ণ ভিন্ন সিদ্ধান্ত — এটাই দেখায় কেন কোনো একক "সঠিক উত্তর" সব পরিস্থিতিতে খাটে না।
মূল কথা · Key takeaway

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

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

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ "মুক্তিপণ পরিশোধ ভবিষ্যৎ আক্রমণে অর্থায়ন করতে পারে" — এই যুক্তিটি কেন একজন প্রতিষ্ঠানের নিজস্ব প্রত্যাশিত-খরচ হিসাবে সরাসরি দেখা যায় না, অথচ এটি এখনও একটি বৈধ নৈতিক উদ্বেগ?

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

প্র ০২ হাসপাতালের মতো সেফটি-ক্রিটিকাল প্রতিষ্ঠানে ডাউনটাইমের "খরচ" শুধু টাকায় পরিমাপ করা কেন অসম্পূর্ণ?

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

প্র ০৩ উপরের কোড সেলে যদি দৃশ্যকল্প A-তে p_recover_if_pay-কে 0.65 থেকে 0.95-এ বাড়ানো হতো (ধরা হলো আক্রমণকারী গোষ্ঠী প্রায় সবসময় কার্যকর ডিক্রিপশন কী দেয়), ফলাফল কি বদলে যেত? গণনা করে দেখুন।

p_recover_if_pay = 0.95 হলে, expected_data_loss = 0.05 × 500,000 = 25,000, তাই cost_pay = 150,000 + 60,000 + 25,000 = 235,000। কিন্তু cost_not_pay অপরিবর্তিত থাকে 125,000-এ — তাই এখনো 235,000 > 125,000, অর্থাৎ না-পে করা এখনো সস্তা। কারণ: মুক্তিপণের নিজস্ব পরিমাণ (১,৫০,০০০) এবং তার সাথে ডাউনটাইম-খরচ যোগ হলে তা এমনিতেই ব্যাকআপ-ভিত্তিক পুনরুদ্ধারের মোট খরচকে ছাড়িয়ে যায় — শুধু পুনরুদ্ধারের সম্ভাবনা বাড়ানো সবসময় সিদ্ধান্ত উল্টে দেওয়ার জন্য যথেষ্ট নয়।

অনুশীলন

  1. চিন্তা করুন: দৃশ্যকল্প B (হাসপাতাল)-এর প্রেক্ষাপটে এমন কোন কোন আইনি বা নৈতিক বিষয় সংখ্যায় ধরা পড়েনি যা আসল সিদ্ধান্তে গুরুত্বপূর্ণ হতে পারত?

    কিছু জুরিসডিকশনে নির্দিষ্ট নিষেধাজ্ঞাপ্রাপ্ত (sanctioned) গোষ্ঠীকে মুক্তিপণ পরিশোধ আইনিভাবে সীমাবদ্ধ বা প্রতিবেদন-বাধ্যতামূলক হতে পারে, বীমা পলিসি নির্দিষ্ট শর্তে পরিশোধ কভার নাও করতে পারে বা করলেও পরবর্তী প্রিমিয়াম বাড়াতে পারে, নিয়ন্ত্রক সংস্থাকে ঘটনাটি জানানো বাধ্যতামূলক হতে পারে, এবং রোগীদের কাছে দেওয়া প্রতিশ্রুতি ("আপনার তথ্য সুরক্ষিত থাকবে") ভঙ্গের একটি সুনাম/আস্থার ক্ষতিও আছে — এর কোনোটিই সরাসরি টাকায় পরিমাপযোগ্য নয়।

  2. পরীক্ষা করুন: উপরের কোড সেলে দৃশ্যকল্প B-এর downtime_cost_per_day-কে 100_000 থেকে 30_000-এ কমিয়ে Run চেপে দেখুন কোন বিকল্প সস্তা হয়ে দাঁড়ায়।

    downtime_cost_per_day = 30,000 হলে: cost_pay = 200,000 + 2×30,000 + 800,000 = 1,060,000, আর cost_not_pay = 20×30,000 + 1,200,000 = 1,800,000। পে করা এখনো সস্তা, কিন্তু ব্যবধান কমে এসেছে — দেখায় যে downtime_cost_per_day যত কমে, ততই দুই বিকল্পের মধ্যে পার্থক্য সংকুচিত হয়ে আসে, কারণ এটিই মূলত না-পে করার (দীর্ঘ ডাউনটাইমের) সবচেয়ে বড় খরচ-চালক ছিল।

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

আগের পাঠ
সাইবারওয়ারফেয়ার ও ডুয়াল-ইউজ টেকনোলজি