এই পর্বে যা শিখবেন
- Digital forensics-এর লক্ষ্য, incident response থেকে এর পার্থক্য আর আইনি সীমা
- চারটি ধাপ আর order of volatility অনুযায়ী প্রমাণ সংগ্রহের পরিকল্পনা
- Write blocker, image, hash আর verification দিয়ে প্রমাণের অখণ্ডতা রাখা
- Chain of custody ফর্ম পূরণ, ফাঁক চেনা আর timestamp-কে UTC-তে আনা
- Cloud, SaaS আর mobile প্রমাণের সীমা, রিপোর্ট লেখা আর AI-এর দাবি যাচাই
১ · Digital forensics কী, আর incident response থেকে কোথায় আলাদা
কারখানায় আগুন লাগলে ফায়ার সার্ভিস আগে আগুন নেভায়। তারপর তদন্ত দল আসে, আর খোঁজে আগুন কোথা থেকে শুরু হলো। দুটি কাজই দরকার, কিন্তু টান আছে। প্রচুর পানি ঢাললে আগুন নেভে, আবার সূত্রও ধুয়ে যায়। Computer-এর ঘটনাতেও ঠিক এই টান।
Digital forensics হলো digital তথ্য চিহ্নিত করা, সংগ্রহ করা, পরীক্ষা ও বিশ্লেষণ করার বিজ্ঞানসম্মত কাজ, যেখানে তথ্যের অখণ্ডতা (integrity) রক্ষা হয় আর chain of custody লেখা থাকে। অর্থাৎ প্রমাণ কার হাতে কখন ছিল, তার পুরো হিসাব থাকে। NIST SP 800-86 (২০০৬) প্রায় এভাবেই ধারণাটি বোঝায়।
এর লক্ষ্যগুলো সহজ প্রশ্নের মতো:
- কী ঘটেছিল, কখন, কোন পথে? ঘটনার সময়রেখা আর root cause খোঁজা।
- কতটা ক্ষতি? কোন system আর কোন ডেটা ছোঁয়া হয়েছে, কোনটি হয়নি।
- প্রমাণ কি টিকবে? অন্য একজন যোগ্য পরীক্ষক একই প্রমাণ নিয়ে আপনার ফল যাচাই করতে পারবেন কি না।
| দিক | Incident response | Digital forensics |
|---|---|---|
| মূল প্রশ্ন | ক্ষতি কীভাবে থামাই, কীভাবে ফিরি? | ঠিক কী ঘটেছিল, আর তা প্রমাণ করা যায় কি? |
| সময়ের চাপ | মিনিট আর ঘণ্টা | প্রথমে দ্রুত সংগ্রহ, পরে ধীরে বিশ্লেষণ |
| সফলতা | সেবা নিরাপদে ফিরেছে | ফল পুনরায় যাচাই করা যায় |
| ফল | Containment, recovery, শিক্ষা | প্রমাণের তালিকা, সময়রেখা, রিপোর্ট |
| বড় ঝুঁকি | ধীর সিদ্ধান্তে ক্ষতি বাড়ে | অসাবধান কাজে প্রমাণ বদলায় |
সংজ্ঞা সব জায়গায় এক নয়। অনেক প্রতিষ্ঠান দুটি কাজকে একসাথে DFIR বলে, আর ছোট দলে একই মানুষ দুটিই করেন। NIST SP 800-86-এর নামেই আছে forensic কৌশলকে incident response-এর সাথে জুড়ে দেওয়ার কথা। পুরো প্রক্রিয়া পর্ব ৬১-এ, ক্ষতি থামানো পর্ব ৬২-এ, আর artifact ধরে সময়রেখা বানানো পর্ব ৬৪-এ আসবে। এই পর্বের বিষয় একটাই: প্রমাণকে এমনভাবে রাখা, যাতে পরে তার ওপর ভরসা করা যায়।
ফরাসি অপরাধবিজ্ঞানী Edmond Locard-এর নামে একটি চিন্তা প্রচলিত: প্রতিটি সংস্পর্শ কোনো না কোনো চিহ্ন রেখে যায়। Digital জগতেও কথাটি অনেকটা খাটে। তবে এর উল্টো দিকও আছে: পরীক্ষক নিজেও system ছুঁলে চিহ্ন রেখে যান। তাই প্রতিটি কাজ লিখে রাখতে হয়।
Account মানে মানুষ নয়। Log বলতে পারে কোন account বা device থেকে কাজটি হয়েছে। ওই মুহূর্তে keyboard-এ কে ছিলেন, তা আলাদা প্রশ্ন। Password চুরি হতে পারে। তাই নিশ্চিত না হয়ে কারও নাম দোষী হিসেবে লিখবেন না। Attribution সবচেয়ে সতর্ক কাজগুলোর একটি।
২ · আগে অনুমতি — কে, কোন অধিকারে, কতটুকু
পুলিশ যেমন ইচ্ছে হলেই কারও ঘরে তল্লাশি চালাতে পারে না, আপনিও পারেন না। Forensic দক্ষতা কোনো অধিকার দেয় না। পরীক্ষার কাজ শুরু হয় দুটি পথের একটি থেকে:
- মালিকের অনুমোদন: প্রতিষ্ঠান তার নিজের device আর account নিজের নীতি অনুযায়ী পরীক্ষা করায়, আর আপনি নিজের জিনিস পরীক্ষা করেন।
- বৈধ আইনি প্রক্রিয়া: আইন যাঁদের ক্ষমতা দিয়েছে, তাঁরা আদালত বা আইনের নির্ধারিত পথে কাজ করেন।
এর বাইরে প্রাক্তন সঙ্গীর ফোন, সহকর্মীর email বা প্রতিদ্বন্দ্বীর server “শুধু দেখা” চলে না, উদ্দেশ্য যত ভালোই হোক। অনুমতি ছাড়া প্রবেশ অপরাধ হতে পারে। আইনি সীমা আর লিখিত অনুমতি নিয়ে বিস্তারিত দেখুন পর্ব ৬-এ।
অনুমোদনের কাগজে যা থাকে
- কোন device, account বা log, আর তার মালিক কে
- উদ্দেশ্য, সময়সীমা আর কোন তারিখের ডেটা দেখা যাবে
- কারা কাজ করবেন, কে অনুমোদন দিলেন, কখন
- কী বাদ থাকবে, আর নতুন কিছু পেলে কার কাছে যাবেন
- ফল কে দেখবেন, প্রমাণ কতদিন থাকবে, পরে কীভাবে মুছবে
Privacy আর সীমা
একটি forensic image সবকিছুই তুলে আনে। অফিসের ফাইলের সাথে আসতে পারে ব্যক্তিগত ছবি, চিকিৎসার কাগজ বা বেতনের হিসাব। Image নেওয়া মানে সব পড়ার অনুমতি নয়। তাই scope-এর ভেতরেই খুঁজুন, প্রমাণ দেখার অধিকার অল্প কয়েকজনে রাখুন, আর কাজ শেষে নির্ধারিত নিয়মে মুছুন। ব্যক্তিগত device-এর (BYOD) জন্য আলাদা সম্মতি বা আইনি পথ লাগতে পারে। ডেটা-সংক্রান্ত আইন আর নীতি পর্ব ৭০-এ আসবে।
আরেকটি প্রস্তুতির নাম legal hold. মামলা বা তদন্তের সম্ভাবনা দেখা দিলে নিয়মিত মুছে ফেলার কাজ সংশ্লিষ্ট ডেটায় বন্ধ রাখতে হয়, আর এই সিদ্ধান্ত আসে আইন বিভাগের কাছ থেকে।
বাংলাদেশে, ৩১ অক্টোবর ২০২৬ পর্যন্ত যা পড়ে দেখেছি (আইনি পরামর্শ নয়):
- bdlaws-এর লেখা অনুযায়ী Evidence (Amendment) Act, 2022 (২০২২ সনের ২০ নং) Evidence Act, 1872-এ digital record-এর সংজ্ঞা, তা গ্রহণের শর্ত আর certificate-এর বিধান (section 65A, 65B) যোগ করেছে। Digital record নিয়ে বিশেষজ্ঞের মতামতের কথাও আছে (section 45 ও 45A দেখুন).
- সাইবার সুরক্ষা আইন, ২০২৬ (৮১ নং) ডিজিটাল ফরেনসিক ল্যাব আর তার মান (ধারা ১০, ১১), পুলিশ অফিসারের তল্লাশি ও জব্দ (ধারা ৩৪, ৩৫), ফরেনসিক প্রমাণের সাক্ষ্যগত মূল্য (ধারা ৪৩) আর বিশেষজ্ঞ মতামতের (ধারা ৪৪) কথা বলে। তল্লাশি ও জব্দের ধারাগুলো পুলিশ অফিসারের জন্য লেখা, বেসরকারি পরীক্ষকের জন্য নয়।
- এই দুটি লেখায় hash বা chain of custody ফর্মের কারিগরি ধাপ আমরা পাইনি। আইনের অধীন বিধিতে তা থাকতে পারে, সেগুলো আমরা যাচাই করিনি। তাই এই পর্বের ফর্ম আর ধাপ আন্তর্জাতিক সাধারণ চর্চা, বাংলাদেশের নির্ধারিত নিয়ম নয়।
আইন বদলায়। বাস্তব মামলায় বর্তমান লেখা পড়ুন আর আইনজীবীর পরামর্শ নিন। আইনের পটভূমি পর্ব ৬-এ আছে।
এবার একটি কাল্পনিক ঘটনা। একটি অনলাইন বাজারের হিসাব বিভাগের অফিসের laptop থেকে অস্বাভাবিক upload দেখা গেছে। Laptop প্রতিষ্ঠানের নিজের। ধাপে ধাপে দেখুন:
- অনুমোদনলিখিত
- দৃশ্যছবি, নোট
- সিদ্ধান্তচালু, না বন্ধ
- চিহ্নE-01
- সিলS-5521
- হস্তান্তরফর্মে লাইন ১
device : LT-0231, company owned purpose : unusual upload on 10 March data : work files, 1 to 10 March not in : personal folder, unless legal approves by : Head of Legal (signed)
state : powered on, screen locked network : Wi-Fi connected cables : charger only photos : front, side, serial label clock : device 120 s ahead of reference
disk : full-disk encryption is on risk : power off may lose memory evidence choice : memory capture first, by trained staff account : approved admin account record : tool, version, start and end time
item : E-01 what : laptop, serial LT-0231 extra : charger E-02 power : shut down as per playbook
bag : tamper-evident, seal S-5521 signed : IT officer, across the seal photo : sealed bag with number visible
#1 2026-03-10T10:20Z from IT-Officer to Examiner-A item E-01 seal S-5521 intact signed by both
- আগে কাগজ। কাজ শুরুর আগেই প্রতিষ্ঠানের আইন বিভাগ লিখিত অনুমোদন দিলেন। Laptop প্রতিষ্ঠানের, আর উদ্দেশ্য ও তারিখের সীমা লেখা আছে। ব্যক্তিগত ফোল্ডার আলাদা অনুমোদন ছাড়া বাদ।
- ছোঁয়ার আগে দেখা। Laptop চালু, screen locked, Wi-Fi যুক্ত। চারপাশের ছবি আর serial তোলা হলো। নির্ভরযোগ্য ঘড়ির সাথে মিলিয়ে দেখা গেল device-এর ঘড়ি ১২০ সেকেন্ড এগিয়ে।
- চালু রাখবেন, না বন্ধ করবেন? Disk encrypted, আর বন্ধ করলে memory-র প্রমাণ হারাতে পারে। তাই playbook অনুযায়ী প্রশিক্ষিত কর্মী অনুমোদিত account দিয়ে আগে memory নিলেন। কাজটি নিজেও system-এ চিহ্ন রাখে, তাই tool আর সময় লেখা হলো।
- চিহ্নিত করা। প্রতিটি জিনিস একটি অনন্য নম্বর পেল: laptop E-01, charger E-02. এরপর playbook অনুযায়ী laptop বন্ধ করা হলো।
- সিল। Tamper-evident ব্যাগে laptop রেখে S-5521 নম্বরের সিল দেওয়া হলো। সিলের ওপর সই করা হলো, ছবিও তোলা হলো। সিল খুললে তা চোখে পড়বে।
- হস্তান্তর। IT officer পরীক্ষকের হাতে দিলেন, দুজনেই সই করলেন। ঢাকার ১৬:২০ মানে ১০:২০ UTC, কারণ ঢাকার ঘড়ি UTC-র চেয়ে ৬ ঘণ্টা এগিয়ে। এই লাইন থেকেই chain of custody শুরু।
৩ · NIST SP 800-86-এর চার ধাপ
পুরোনো ফাইল ঘেঁটে হিসাব মেলানোর মতোই forensics একটি ধারাবাহিক কাজ। NIST SP 800-86 (Kent ও সহলেখকেরা, ২০০৬) চারটি ধাপ দেখায়:
চার ধাপে তথ্য থেকে প্রমাণ
Media → Data → Information → Evidence
- Collection: কোন উৎসে প্রমাণ থাকতে পারে তা খোঁজা, তারপর অখণ্ডতা রেখে সংগ্রহ করা।
- Examination: বিশাল ডেটা থেকে দরকারি অংশ বের করা। যেমন অসংখ্য ফাইলের মধ্যে ১০ মার্চের upload-সংক্রান্ত log.
- Analysis: “কে, কী, কখন, কীভাবে” প্রশ্নের উত্তর খোঁজা। ভালো পরীক্ষক শুধু নিজের ধারণার পক্ষে নয়, বিপক্ষের প্রমাণও খোঁজেন।
- Reporting: যা পাওয়া গেল, যেভাবে পাওয়া গেল, আর যা বলা যায় না, তা স্পষ্ট করে জানানো।
RFC 3227 (BCP 55, ২০০২) বলে, computer প্রমাণকে পাঁচটি গুণ ধরে ভাবতে হয়:
| গুণ | সহজ অর্থ | কীভাবে রক্ষা করবেন |
|---|---|---|
| Admissible | আদালতের নিয়ম মেনে পেশ করা যায় | অনুমোদন, আইনি পরামর্শ |
| Authentic | প্রমাণ এই ঘটনার সাথেই যুক্ত | Serial, hash, custody |
| Complete | একপেশে নয়, পুরো ছবি বলে | নির্দোষ দেখায় এমন তথ্যও রাখা |
| Reliable | সংগ্রহের পথে সন্দেহের কিছু নেই | পরীক্ষিত পদ্ধতি, নোট |
| Believable | বিচারক সহজে বুঝে বিশ্বাস করতে পারেন | সরল ভাষা, স্পষ্ট সীমা |
৪ · Order of volatility — live response না dead-box
বাজার থেকে একসাথে বরফ, মাছ আর চাল আনলে আগে কোনটি সামলান? যেটি আগে নষ্ট হবে। প্রমাণও তাই। Volatile data বিদ্যুৎ গেলে বা সময়ে হারিয়ে যায়। RFC 3227 এই ক্রমকে বলে order of volatility:
| ক্রম | RFC 3227-এর উৎস | সহজ কথায় |
|---|---|---|
| ১ | Registers, cache | CPU-র ক্ষণিকের তথ্য, বাস্তবে প্রায়ই ধরা যায় না |
| ২ | Routing table, ARP cache, process table, kernel statistics, memory | এখন কী চলছে, কার সাথে যোগাযোগ |
| ৩ | Temporary file systems | অস্থায়ী ফাইল, restart-এ হারাতে পারে |
| ৪ | Disk | স্থায়ী ফাইল, তবুও বদলায় |
| ৫ | Remote logging and monitoring data | অন্য system-এ থাকা log |
| ৬ | Physical configuration, network topology | যন্ত্রের সংযোগ আর network-এর নকশা |
| ৭ | Archival media | Backup tape-এর মতো দীর্ঘস্থায়ী জিনিস |
এই তালিকা ২০০২ সালের, আর এটি পথনির্দেশ, চিরন্তন আইন নয়। RFC-র ক্রমে remote log পাঁচে। কিন্তু একটি SaaS সেবা যদি log মাত্র ৭ দিন রাখে, আর ৬ দিন পেরিয়ে গেছে, তাহলে সেটি disk-এর চেয়ে জরুরি। নিচের toy planner দুটি ক্রম পাশাপাশি দেখায়। এখানে কিছুই সংগ্রহ হয় না, সব তথ্য বানানো।
// Toy collection planner. Sources are made up; nothing is collected here.
// rank follows the RFC 3227 order (1 = most volatile). hoursLeft = our estimate.
const sources = [
{ name: "backup tape, last week", rank: 7, hoursLeft: 8760, inScope: true },
{ name: "system disk", rank: 4, hoursLeft: 720, inScope: true },
{ name: "SaaS audit log", rank: 5, hoursLeft: 24, inScope: true },
{ name: "RAM of the laptop", rank: 2, hoursLeft: 1, inScope: true },
{ name: "temp folder", rank: 3, hoursLeft: 12, inScope: true },
{ name: "network connection list", rank: 2, hoursLeft: 0.5, inScope: true },
{ name: "staff personal phone", rank: 4, hoursLeft: 72, inScope: false },
];
const URGENT_HOURS = 48;
const allowed = sources.filter(s => s.inScope);
const skipped = sources.filter(s => !s.inScope);
const byRank = [...allowed].sort((a, b) => a.rank - b.rank || a.hoursLeft - b.hoursLeft);
console.log("Plan by RFC 3227 rank:");
byRank.forEach((s, i) => {
const flag = s.rank >= 4 && s.hoursLeft <= URGENT_HOURS ? " <-- deadline!" : "";
console.log(`${i + 1}. [rank ${s.rank}] ${s.name} (${s.hoursLeft} h)${flag}`);
});
const byDeadline = [...allowed].sort((a, b) => a.hoursLeft - b.hoursLeft);
console.log("\nPlan by estimated time left:");
byDeadline.forEach((s, i) => console.log(`${i + 1}. ${s.name} (${s.hoursLeft} h)`));
console.log("\nNot collected, outside written scope:");
skipped.forEach(s => console.log("- " + s.name + ": ask for separate authority"));RFC-র ক্রমে প্রথম তিনটি হলো network connection list (0.5 h), RAM of the laptop (1 h) আর temp folder (12 h). চতুর্থ স্থানে system disk (720 h), পরে SaaS audit log (24 h) <-- deadline!. সময়ের হিসাবে সাজালে দুটির জায়গা উল্টে যায়: SaaS audit log (24 h) চতুর্থ, disk পঞ্চম। শেষ লাইন: staff personal phone: ask for separate authority. অর্থাৎ scope-এর বাইরের জিনিস তালিকায় থাকলেও ধরা হয় না। শিক্ষা: ক্রম শুরুর জায়গা, সিদ্ধান্ত নেন মানুষ।
Live response বনাম dead-box
Live response
Device চালু রেখেই তথ্য নেওয়া। Memory, চালু process আর network সংযোগ পাওয়া যায়। তবে প্রতিটি কাজ system-কে কিছুটা বদলায়, আর দখলে থাকা system মিথ্যা তথ্যও দেখাতে পারে।
বেশি তথ্য, বেশি পরিবর্তনDead-box forensics
বন্ধ device-এর disk আলাদা করে পরীক্ষা। পরিবেশ নিয়ন্ত্রিত, আর ফল সহজে পুনরায় যাচাই করা যায়। কিন্তু memory-র তথ্য হারিয়ে যায়, আর encrypted disk চাবি ছাড়া পড়া যায় না।
কম পরিবর্তন, কম তাৎক্ষণিক তথ্যএকসময় অনেক নির্দেশিকায় বলা হতো, প্লাগ টেনে দিন। আজ full-disk encryption, memory-তে চলা malware আর cloud-এর যুগে একটিমাত্র নিয়ম চলে না। কোন system-এ কী করবেন, তা ঘটনার আগেই playbook-এ ঠিক করে রাখুন। ঘটনার সময় নতুন করে ভাবার সময় থাকে না।
Memory acquisition
RAM-এর একটি কপি নেওয়াকে memory acquisition বলে। এতে পাওয়া যেতে পারে চালু process, network সংযোগ, খোলা ফাইলের টুকরো, যা disk-এ নেই। Disk image-এর মতো এটি স্থির ছবি নয়, কারণ কপির সময়েও RAM বদলাতে থাকে। ধরুন ৩২ GB RAM, কপির গতি ৫০০ MB/s. তাহলে ৩২,০০০ ÷ ৫০০ = ৬৪ সেকেন্ড লাগবে, আর এই সময়ে শুরুর অংশ আর শেষের অংশ ভিন্ন মুহূর্তের। একে smear বলা হয়। Tool নিজেও memory-র কিছু জায়গা নেয়। তাই একই ফল আর কখনো পাওয়া যাবে না। Hash শুধু বলে, কপি নেওয়ার পর সেটি বদলায়নি। RAM-এ কী খুঁজবেন, সেটি পর্ব ৬৪-এর বিষয়।
৫ · Forensic soundness — write blocker, copy, hash, verify
ব্যাংকের মূল দলিল কেউ আঁকিবুঁকি করে পড়েন না। সার্টিফায়েড কপি নিয়ে কাজ হয়, আর মূলটি লকারে থাকে। Forensics-এও তা-ই। Forensic soundness মানে এমনভাবে কাজ করা, যাতে প্রমাণ না বদলায়, আর অনিবার্য বদল জানা ও ব্যাখ্যা করা থাকে। এটি “কখনো শূন্য পরিবর্তন” বলে না, বলে “কোনো পরিবর্তন অজানা নয়।”
- Write blocker: Hardware বা software, যা পড়তে দেয় কিন্তু disk-এ লিখতে দেয় না। সাধারণ computer-এ disk জুড়লে OS নিজে থেকেই কিছু লিখে দিতে পারে। NIST-এর CFTT প্রকল্প এ ধরনের tool পরীক্ষা করে রিপোর্ট দেয়।
- Forensic image: Disk-এর bit-for-bit কপি। শুধু দেখা যায় এমন ফাইল নয়, ফাঁকা বলে চিহ্নিত অংশও এতে আসে, যা সাধারণ copy-paste-এ আসে না।
- SHA-256: পর্ব ৯-এর hash function, যা বড় ডেটার ছোট আঙুলের ছাপ দেয়।
- Verification: Image-এর hash আবার হিসাব করে মূলের সাথে মেলানো।
- Working copy: Master image তালাবদ্ধ থাকে, পরীক্ষক কাজ করেন আরেকটি কপিতে। ভুল হলে নতুন কপি নেওয়া যায়।
| Write blocker | |
| Source hash | |
| Master image | |
| Working copy | |
| Result |
- লেখা বন্ধ। Disk E-01 write blocker-এর মাধ্যমে যুক্ত হলো। সিল খোলার সময়, নম্বর আর disk-এর serial নোটে উঠল। হিসাব এখনো শুরু হয়নি।
- মূলের hash. Source-এর SHA-256 হলো
fce63572…69e8. এই মান এখনই ফর্মে আর নোটে লেখা হলো, আলাদা জায়গায়। - Bit-for-bit কপি। Master image তৈরি হচ্ছে। বড় disk-এ এতে কয়েক ঘণ্টা লাগতে পারে। পড়তে না পারা অংশ থাকলে tool-এর log-এ তা লেখা থাকে।
- Image-এর hash. Master image-এর hash এলো
fce63572…69e8. Source-এর সাথে হুবহু মিলেছে, তাই ফল MATCH. Master এখন তালাবদ্ধ জায়গায় যায়। - Working copy. Master থেকে কপি নিয়ে আবার hash করা হলো, ফল MATCH. পরীক্ষক এই কপিতেই কাজ করবেন।
- একটি bit বদলাল। ভুল tool settings-এ working copy-র মাত্র একটি bit বদলে গেল। Hash হলো
2804e21c…ba52, ফল MISMATCH. Master অক্ষত, তাই এই copy বাদ দিয়ে নতুন copy নেওয়া হবে, আর ঘটনাটি নোটে উঠবে।
নিচের কোডে সত্যিকারের hashlib ব্যবহার হয়েছে, তবে “image”-টি ৪,০৯৬ byte-এর বানানো ডেটা। কোনো আসল disk ছোঁয়া হয় না।
# Fake evidence image: bytes built in memory, no real disk or real data.
import hashlib
def sha256(data):
return hashlib.sha256(data).hexdigest()
pattern = b"FAKE-EVIDENCE-IMAGE-TOY-DATA-ONLY "
image = (pattern * 200)[:4096] # 8 sectors of 512 bytes
acquired = sha256(image)
print("size :", len(image), "bytes")
print("acquisition hash:", acquired)
copy_ok = bytes(image) # toy "working copy"
print("copy 1 verify :", "MATCH" if sha256(copy_ok) == acquired else "MISMATCH")
changed = bytearray(image)
changed[1000] ^= 0x01 # one bit of one byte changes
copy_bad = bytes(changed)
new_hash = sha256(copy_bad)
print("copy 2 hash :", new_hash)
print("copy 2 verify :", "MATCH" if new_hash == acquired else "MISMATCH")
a = int(acquired, 16)
b = int(new_hash, 16)
print("hash bits differ:", bin(a ^ b).count("1"), "of 256")
def sector_hashes(data, size=512):
return [sha256(data[i:i + size]) for i in range(0, len(data), size)]
good = sector_hashes(image)
bad = sector_hashes(copy_bad)
diff = [i for i, (x, y) in enumerate(zip(good, bad)) if x != y]
print("sectors changed :", diff, "of", len(good))আসল আউটপুট: copy 1 verify : MATCH, কারণ বাইটগুলো হুবহু এক। একটি bit বদলানোর পর copy 2 verify : MISMATCH. দুটি hash দেখতে একদম আলাদা: hash bits differ: 132 of 256, মানে প্রায় অর্ধেক bit বদলে গেছে। একে avalanche effect বলে। শেষ লাইন sectors changed : [1] of 8: ছোট ছোট অংশের আলাদা hash রাখলে বোঝা যায় বদলটি ঠিক কোথায়, আর বাকি অংশ অক্ষত কি না। অনেক image format-এ এরকম অংশভিত্তিক যাচাই থাকে।
কত সময় লাগে, আর hash কতটা ভরসার
গণনা ১: ১ TB disk, গতি ২০০ MB/s. ১,০০০,০০০ MB ÷ ২০০ = ৫,০০০ সেকেন্ড, অর্থাৎ প্রায় ৮৩ মিনিট। Verification-এর জন্য আবার পুরো disk পড়লে সময় প্রায় দ্বিগুণ হয়।
গণনা ২: ধরুন আপনার কাছে ২৪০টি ফাইল (এক লক্ষ কোটির বেশি)। SHA-256-এর আউটপুট ২৫৬ bit. Birthday bound অনুযায়ী দুটি ফাইলের দৈবাৎ একই hash হওয়ার সম্ভাবনা মোটামুটি n² ÷ ২২৫৭ = ২৮০ ÷ ২২৫৭ = ২−১৭৭. বাস্তবে ধরে নেওয়া যায়, দৈব মিল হবে না।
নিজের একটি ফাইলে এই অভ্যাসটি করে দেখতে পারেন। কমান্ডগুলো শুধু আপনার নিজের ফাইলের জন্য:
# Linux: record the hash, then verify it later
sha256sum my-notes.txt > my-notes.sha256
sha256sum -c my-notes.sha256
# Windows PowerShell
Get-FileHash -Algorithm SHA256 my-notes.txt৬ · Chain of custody — প্রমাণের হাজিরা খাতা
অফিসের রেজিস্টার খাতায় যেমন লেখা থাকে কে কখন চাবি নিলেন আর ফেরত দিলেন, chain of custody ঠিক তেমনই। প্রশ্ন একটাই: সংগ্রহ থেকে আদালত পর্যন্ত প্রতিটি মুহূর্তে প্রমাণ কার দায়িত্বে ছিল? প্রতিটি হস্তান্তরে একজন দেন, একজন নেন, দুজনেই সই করেন। পরের লাইনের “দিলেন” আগের লাইনের “নিলেন”-এর সাথে মিলতে হবে।
| # | সময় (UTC) | দিলেন | নিলেন | কারণ | সিল | সই |
|---|---|---|---|---|---|---|
| ১ | ১০ মার্চ ১০:২০ | IT officer | পরীক্ষক ক | সংগ্রহ | অক্ষত | দুজনের |
| ২ | ১০ মার্চ ১১:০৫ | পরীক্ষক ক | লকার ৭ | সংরক্ষণ | অক্ষত | দুজনের |
| ৩ | ১০ মার্চ ১৮:৩০ | লকার ৭ | পরীক্ষক ক | Image নেওয়া | খোলা, নতুন S-5522 | দুজনের |
একই খাতায় ফাঁক দেখা দিলে কী হয়, ধাপে ধাপে দেখুন। লাইন ৩-এর পর পরীক্ষক ক laptop নিয়েছেন। কিন্তু পরের দিন লকারে জমা দিলেন পরীক্ষক খ।
#1 10 Mar 10:20 IT-Officer -> Examiner-A
#2 10 Mar 11:05 Examiner-A -> Locker-7
#3 10 Mar 18:30 Locker-7 -> Examiner-A
#3 10 Mar 18:30 Locker-7 -> Examiner-A #4 11 Mar 09:10 Examiner-B -> Locker-7 gap: 14 h 40 min, holder unknown
hash now : fce63572...69e8 hash before: fce63572...69e8 MATCH known : image bits are unchanged unknown : who held it, who saw the data
do not back-fill the form ask both examiners, write what they say check locker record and door camera add a dated memo, signed by the writer
not automatically useless weight may fall, or it may be refused depends on the law and the facts report must state the gap openly
- পরিষ্কার শিকল। প্রতিটি লাইনের “নিলেন” পরের লাইনের “দিলেন”-এর সাথে মিলে যায়। লাইন ৩-এর পর দায়িত্বে Examiner-A.
- ফাঁক। লাইন ৪-এ দিচ্ছেন Examiner-B, অথচ শেষ দায়িত্বে ছিলেন Examiner-A. ১৮:৩০ থেকে পরদিন ০৯:১০, মানে ১৪ ঘণ্টা ৪০ মিনিট কার কাছে ছিল, খাতা বলে না।
- Hash কতটা সাহায্য করে। Hash মিলেছে, তাই image-এর bit বদলায়নি। কিন্তু hash বলে না সেই রাতে কে দেখেছেন, কেউ কপি নিয়েছেন কি না, ব্যক্তিগত তথ্য ফাঁস হলো কি না।
- পেছনের তারিখ নয়। সবচেয়ে বড় ভুল হলো পরে ফর্মে একটি লাইন ঢুকিয়ে দেওয়া। সঠিক কাজ হলো দুজনের বক্তব্য নেওয়া, লকারের নথি দেখা, আর আজকের তারিখে সই করা আলাদা নোট যোগ করা।
- অর্থ কী? ফাঁক মানেই প্রমাণ বাতিল, তা নয়। আবার “কিছু হবে না” বলাও ভুল। আইন আর ঘটনার ওপর নির্ভর করে তার ওজন কমতে পারে, বা গৃহীত নাও হতে পারে। সিদ্ধান্ত আদালত বা সংশ্লিষ্ট কর্তৃপক্ষের। আপনার দায়িত্ব রিপোর্টে সত্যটি লেখা।
এই পরীক্ষাগুলো যন্ত্রেও করা যায়। নিচে toy log-এর একটি যাচাইকারী। সব নাম আর hash বানানো।
// Toy chain-of-custody checker. Roles and hash tags are invented.
const HASH_AT_SEIZURE = "a1b2c3";
const log = [
{ n: 1, t: "2026-03-10T10:20Z", from: "IT-Officer", to: "Examiner-A", hash: "a1b2c3", signed: true },
{ n: 2, t: "2026-03-10T11:05Z", from: "Examiner-A", to: "Locker-7", hash: "a1b2c3", signed: true },
{ n: 3, t: "2026-03-10T18:30Z", from: "Locker-7", to: "Examiner-A", hash: "a1b2c3", signed: true },
{ n: 4, t: "2026-03-11T09:10Z", from: "Examiner-B", to: "Locker-7", hash: "a1b2c3", signed: true },
{ n: 6, t: "2026-03-11T14:00Z", from: "Locker-7", to: "Examiner-B", hash: "a1b2c3", signed: false },
{ n: 7, t: "2026-03-11T13:50Z", from: "Examiner-B", to: "Courier", hash: "ffff00", signed: true },
];
function check(entries) {
const found = [];
entries.forEach((e, i) => {
if (!e.signed) found.push(`entry ${e.n}: no signature`);
if (e.hash !== HASH_AT_SEIZURE) found.push(`entry ${e.n}: hash ${e.hash} differs from seizure hash`);
if (i === 0) return;
const prev = entries[i - 1];
if (e.n !== prev.n + 1) found.push(`entry ${e.n}: number jumps from ${prev.n}`);
if (e.from !== prev.to) found.push(`entry ${e.n}: gap, ${prev.to} had it, but ${e.from} handed it over`);
if (Date.parse(e.t) <= Date.parse(prev.t)) found.push(`entry ${e.n}: time goes backwards`);
});
return found;
}
const clean = log.slice(0, 3);
console.log("entries 1-3:", check(clean).length, "findings");
const findings = check(log);
console.log("all entries:", findings.length, "findings");
findings.forEach(f => console.log(" - " + f));প্রথম লাইন entries 1-3: 0 findings, অর্থাৎ শুরুর অংশ পরিষ্কার। পুরো খাতায় all entries: 5 findings. যেমন entry 4: gap, Examiner-A had it, but Examiner-B handed it over হলো ওপরের ফাঁকটি। entry 6: number jumps from 4 বলে লাইন ৫ নেই। entry 7: time goes backwards বলে সময় পিছিয়েছে, আর hash-ও বদলেছে। কোড শুধু গরমিল দেখায়। কারণ খুঁজে বের করেন মানুষ, আর তা হতে পারে টাইপের ভুল, আবার গুরুতর কিছুও।
৭ · সময় — time zone আর timestamp-এর ফাঁদ
ঢাকার সকাল ৯টা আর লন্ডনের সকাল ৯টা এক মুহূর্ত নয়। অথচ log-এ দুটোই “09:00” দেখাতে পারে। সময় ভুল বুঝলে পুরো ঘটনার ক্রম উল্টে যায়। RFC 3227-এর পরামর্শ সহজ: system clock আর UTC-র পার্থক্য লিখুন, আর প্রতিটি timestamp UTC না স্থানীয়, তা জানান।
- ঢাকা UTC+6. ২০২৬ সালে এখানে দিনের আলো বাঁচানোর সময় (DST) নেই, কিন্তু অনেক দেশে আছে। বাংলাদেশেও ২০০৯ সালের জুন থেকে বছরের শেষ পর্যন্ত ঘড়ি এক ঘণ্টা এগিয়ে ছিল। তাই পুরোনো log-এ time zone database দেখে নিন।
- Clock skew: Device-এর ঘড়ি সঠিক সময় থেকে আগে-পিছে থাকতে পারে। প্রমাণ নেওয়ার সময়ই পার্থক্য মেপে লিখুন। NTP ঠিক থাকলে ঝামেলা কমে।
- Format আলাদা: NTFS UTC-তে সময় রাখে, FAT রাখে স্থানীয় সময়ে। পুরোনো ধাঁচের syslog লাইনে প্রায়ই বছর বা time zone থাকে না। Unix time ১৯৭০ থেকে সেকেন্ডের হিসাব।
- ফাইলের সময় মানে মানুষের কাজ নয়: Copy করলে, restore করলে বা কোনো program চললেও file timestamp বদলাতে পারে। একটি সময় দিয়ে গল্প বানাবেন না, অন্য উৎসে মিলিয়ে দেখুন।
// Toy events from four sources. offsetMin = time zone written in the notes.
// skewSec = device clock minus true time, measured when evidence was taken.
const events = [
{ src: "firewall", local: "2026-03-10 11:04:10", offsetMin: 480, skewSec: 0, what: "outbound blocked" },
{ src: "laptop", local: "2026-03-10 09:03:30", offsetMin: 360, skewSec: 120, what: "file opened" },
{ src: "saas", local: "2026-03-10 03:02:50", offsetMin: 0, skewSec: 0, what: "new login" },
{ src: "server", local: "2026-03-10 03:03:05", offsetMin: 0, skewSec: 0, what: "file uploaded" },
];
function toUtcMs(e) {
// Read the text as if UTC, then remove the zone offset and the clock error.
const asIfUtc = Date.parse(e.local.replace(" ", "T") + "Z");
return asIfUtc - e.offsetMin * 60000 - e.skewSec * 1000;
}
const show = ms => new Date(ms).toISOString().slice(0, 19).replace("T", " ") + " UTC";
console.log("Sorted by the raw text (wrong):");
[...events]
.sort((a, b) => a.local.localeCompare(b.local))
.forEach(e => console.log(` ${e.local} ${e.src.padEnd(8)} ${e.what}`));
console.log("Sorted after conversion to UTC:");
const fixed = events.map(e => ({ ...e, utc: toUtcMs(e) })).sort((a, b) => a.utc - b.utc);
fixed.forEach(e => console.log(` ${show(e.utc)} ${e.src.padEnd(8)} ${e.what}`));
const first = fixed[0].utc, last = fixed[fixed.length - 1].utc;
console.log("Span:", (last - first) / 1000, "seconds");কাঁচা লেখা সাজালে মনে হয় আগে SaaS-এ login হয়েছে, পরে laptop-এ ফাইল খোলা হয়েছে। UTC-তে আনলে উল্টো গল্প: 2026-03-10 03:01:30 UTC laptop file opened সবার আগে, তারপর 03:02:50 UTC saas. Laptop-এর ০৯:০৩:৩০ থেকে ৬ ঘণ্টা বাদ দিয়ে ০৩:০৩:৩০, আর ঘড়ি ১২০ সেকেন্ড এগিয়ে ছিল বলে আরও বাদ দিয়ে ০৩:০১:৩০ হয়। পুরো ঘটনা Span: 160 seconds. ঘড়ির একটি ছোট নোটই বলে দিল, ফাইল খোলা আগে, login পরে।
৮ · Cloud, SaaS আর mobile — যেখানে disk হাতে নেই
ভাড়া বাসায় চুরি হলে পুরো ভবনের CCTV আপনার হাতে থাকে না, মালিকের কাছে চাইতে হয়। Cloud-এও তাই। Provider-এর physical disk আপনি খুলে আনতে পারবেন না। Shared infrastructure-এ তা অন্য গ্রাহকের ডেটাও ছোঁবে। তাই প্রমাণের মূল উৎস হয় cloud audit log, service log আর provider-এর দেওয়া export.
| পরিবেশ | কী পেতে পারেন | মূল সীমা |
|---|---|---|
| IaaS (ভাড়া করা virtual server) | Disk snapshot, control-plane log, network flow log | Memory নেওয়া কঠিন হতে পারে, চালু না থাকলে flow log থাকে না |
| Container আর serverless | কেন্দ্রীয় log, image-এর তথ্য | স্বল্পায়ু, শেষ হলেই স্থানীয় তথ্য চলে যায় |
| SaaS (email, office suite) | Admin audit log, login log, export | Disk নেই, plan অনুযায়ী log-এর মেয়াদ আর ধরন বদলায় |
ভালো অভ্যাস:
- আগেই প্রস্তুত থাকুন। পর্ব ৫৫ অনুযায়ী log আলাদা account-এ পাঠান, retention ঠিক করুন, আর কেন্দ্রীয় log চালু রাখুন। ঘটনার পরে পুরোনো log আর তৈরি করা যায় না।
- Export নথিবদ্ধ করুন। কে, কোন account দিয়ে, কোন filter আর সময়সীমায় নিলেন, time zone কী, তা লিখুন। Export পাওয়ার সাথে সাথে hash করুন।
- সীমা বলুন। এই log provider বানিয়েছে, আপনি মূল বিশ্বাসের জায়গাটি দেখছেন না। Log-এ কী ধরা পড়ে না, রিপোর্টে তা লিখুন।
- চুক্তি আর অঞ্চল দেখুন। ডেটা কোন দেশে, আর provider কী দেবে, তা আইনি প্রশ্নও। NIST IR 8006 (২০২০) cloud forensics-এর এমন অনেক সমস্যা তালিকাভুক্ত করেছে।
Mobile প্রমাণ, সংক্ষেপে
ফোন কখনো স্থির থাকে না: message আসে, app নিজে থেকে চলে, দূর থেকে মুছে দেওয়ার নির্দেশও আসতে পারে। NIST SP 800-101 Rev. 1 (২০১৪) mobile forensics-এর নির্দেশিকা। সাধারণ চর্চায় অনুমোদিত সংগ্রহের পর ফোনকে network থেকে আলাদা রাখা হয়, যেমন Faraday bag-এ। ফোনে encryption আর lock থাকে, আর ডেটার বড় অংশ থাকে cloud backup-এ। ফোনে মানুষের পুরো ব্যক্তিগত জীবন থাকে, তাই এখানে অনুমতি আর privacy সবচেয়ে কড়া। প্রতিষ্ঠানের ফোনে MDM-এর নীতি আর log কাজে আসে। ঝুঁকির দিকটি পর্ব ৩৫-এ আছে। ফোনের lock ভাঙার কোনো পদ্ধতি এই কোর্সে শেখানো হয় না।
৯ · নোট, রিপোর্ট, সাক্ষ্য আর প্রমাণের সীমা
নোটের অভ্যাস
কাজ করতে করতেই লিখুন, পরে মনে করে নয়। প্রতিটি নোটে থাকে সময় (UTC), কী করলেন, কেন করলেন, কোন tool ও version, আর কী দেখলেন। ভুল হলে মুছবেন না, দাগ দিয়ে কেটে কারণ লিখুন। লক্ষ্য একটাই: অন্য একজন আপনার নোট পড়ে একই কাজ করতে পারবেন।
রিপোর্ট
একটি ভালো রিপোর্টে থাকে সারসংক্ষেপ, অনুমোদন ও scope, প্রমাণের তালিকা ও hash, tool ও পদ্ধতি, UTC-তে সময়রেখা, পর্যবেক্ষণ, মতামত, আর সীমা। পর্যবেক্ষণ আর মতামত আলাদা রাখুন:
| দুর্বল বাক্য | ভালো বাক্য |
|---|---|
| কর্মী ফাইল চুরি করেছেন। | Account acct-14 থেকে ০৩:০৩:০৫ UTC-তে একটি ফাইল upload হয়েছে। ওই সময় account কে ব্যবহার করেছিলেন, উপলব্ধ প্রমাণ তা বলে না। |
| Malware ছিল না। | পরীক্ষিত image আর log-এ malware-এর চিহ্ন পাইনি। Memory নেওয়ার আগের সময়ের তথ্য নেই। |
বিশেষজ্ঞ সাক্ষী, উঁচু স্তরে
কোনো কোনো ঘটনায় পরীক্ষককে আদালতে বা তদন্ত কমিটির সামনে expert witness হিসেবে ব্যাখ্যা করতে হতে পারে। নিয়ম দেশ অনুযায়ী আলাদা। সাধারণ শিক্ষা কয়েকটি: নিজের দক্ষতার সীমার মধ্যে থাকুন, যা জানেন না তা বলুন “জানি না”, সরল ভাষায় বলুন, আর আপনাকে যিনি নিয়োগ দিয়েছেন তাঁর পক্ষ নেওয়া আপনার কাজ নয়। আপনার ভরসা আপনার নোট। আদালত কী গ্রহণ করবে (admissibility), তা আদালতই ঠিক করেন।
প্রমাণ বদলানো যায়
Digital প্রমাণ বদলানো, মুছে ফেলা বা নষ্ট হওয়া সম্ভব। মানুষের ভুলে, স্বয়ংক্রিয় পরিষ্কারের কাজে, আবার ইচ্ছাকৃতভাবেও। একে সাধারণভাবে anti-forensics বলে। এই কোর্সে তার কোনো কৌশল শেখানো হয় না, আর প্রমাণ নষ্ট করা নিজেই গুরুতর আইনি সমস্যা হতে পারে। রক্ষকের কাজ হলো নির্ভরতা কমানো: log দ্রুত অন্য জায়গায় পাঠানো, append-only বা WORM ভাণ্ডার, একাধিক উৎসে মিলিয়ে দেখা। আর মনে রাখুন, চিহ্ন না পাওয়া মানে ঘটনা ঘটেনি, তা প্রমাণ হয় না।
Tool-এর ভূদৃশ্য
নিচের নামগুলো শুধু উদাহরণ, কোনো সুপারিশ নয়। এগুলো ব্যবহার করবেন নিজের lab-এর sample-এ, বা লিখিত অনুমোদিত কাজে। Tool পুরো প্রমাণ নয়; একটি tool-এর ফল অন্য উপায়ে মিলিয়ে দেখা ভালো অভ্যাস।
| Tool | ধরন |
|---|---|
| The Sleuth Kit | Disk image আর file system পরীক্ষার command-line tool-এর সংগ্রহ |
| Autopsy | Sleuth Kit-এর ওপর তৈরি graphical platform |
| Volatility | Memory image বিশ্লেষণের open source framework |
| FTK Imager | Image নেওয়া আর দেখার একটি tool |
আরও গভীরে: ISO/IEC 27037:2012 ডিজিটাল প্রমাণ চিহ্নিত করা, সংগ্রহ, অর্জন আর সংরক্ষণের নির্দেশিকা; এর নতুন সংস্করণ এসেছে কি না ISO-র তালিকায় দেখে নিন। ISO/IEC 27042 বিশ্লেষণ আর ব্যাখ্যা নিয়ে কথা বলে। যুক্তরাজ্যের ACPO নির্দেশিকার চারটি নীতিতে বলা হয়, মূল ডেটা না বদলানোই লক্ষ্য, বদলাতে হলে কর্মীকে যোগ্য হতে হবে এবং ব্যাখ্যা দিতে হবে, পুরো কাজের নথি থাকবে, আর দায়িত্বে থাকা কর্মকর্তা নিয়ম মানার দায় নেবেন। যুক্তরাষ্ট্রে বিশেষজ্ঞ সাক্ষ্যের প্রসঙ্গে Daubert মানদণ্ড (১৯৯৩) পদ্ধতির নির্ভরযোগ্যতার ওপর জোর দেয়।
পরীক্ষা ও ইন্টারভিউতে:
- Chain of custody কী? প্রমাণ সংগ্রহ থেকে শেষ পর্যন্ত কার হাতে কখন ছিল, তার ধারাবাহিক নথি।
- Order of volatility কেন? সবচেয়ে দ্রুত হারায় যে প্রমাণ, তা আগে নেওয়ার জন্য; RFC 3227.
- Write blocker কী করে? পড়তে দেয়, লিখতে দেয় না।
- Hash মিললে কী প্রমাণ হয়? Hash নেওয়ার পর থেকে bit বদলায়নি; প্রমাণের অর্থ বা কর্তা নয়।
- NIST SP 800-86-এর ধাপ? Collection, examination, analysis, reporting.
১০ · AI-এর যুগে forensics
AI log সাজাতে, নোট গুছাতে আর রিপোর্টের ভাষা সরল করতে পারে। কিন্তু প্রমাণের বিষয়ে একটি ভুল বাক্য মানুষের চাকরি বা মামলার ফল বদলে দিতে পারে। রিপোর্টে সই করবেন আপনি, AI নয়।
| AI-এর ভুল | কীভাবে যাচাই করবেন |
|---|---|
| নেই এমন আইনের ধারা, CVE বা standard-এর অংশ বানায় | Primary source খুলে পড়ুন |
| “Hash মিলেছে, তাই প্রমাণ সত্য” বলে | Hash কী প্রমাণ করে আর কী করে না, আলাদা করুন |
| পুরোনো পরামর্শ দেয়: শুধু MD5, সব সময় প্লাগ টানা | বর্তমান নির্দেশিকা আর নিজের playbook দেখুন |
| Time zone ভুল করে, DST মনে রাখে না | দুই-একটি মান হাতে হিসাব করুন |
| Log দেখে নিশ্চিত সুরে কর্তার নাম বলে | Account আর মানুষ আলাদা রাখুন, বিকল্প ব্যাখ্যা খুঁজুন |
| প্রমাণ প্রকাশ্য tool-এ পাঠাতে উৎসাহ দেয় | ব্যক্তিগত ডেটা, secret বা case-এর তথ্য paste করবেন না |
নিচের prompt-এ শুধু বানানো বা গোপন তথ্য-মুক্ত উদাহরণ দিন। লক্ষ্য হলো নিজের প্রক্রিয়া শক্ত করা।
AI ব্যবহারের চেকলিস্ট
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।
প্র ০১SHA-256 মিলে গেছে। তাহলে কি প্রমাণটি সত্য, আর পুরোনো MD5 hash থাকা মামলা কি অচল?
Hash একটি খুব সরু প্রশ্নের উত্তর দেয়: এই bit-গুলো কি hash নেওয়ার সময়ের bit-এর সাথে এক? এটুকুই। ফাইলের ভেতরের কথা সত্য কি না, কে ফাইলটি বানিয়েছেন, ঘড়ি ঠিক ছিল কি না, hash এসব জানে না। জাল একটি log-ও সুন্দরভাবে hash করা যায়।
আরেকটি সূক্ষ্ম কথা হলো, hash-এর ভরসা আসে সে কোথায় লেখা আছে তা থেকে। প্রমাণ আর hash একই folder-এ থাকলে যিনি প্রমাণ বদলাতে পারেন, তিনি hash-ও বদলাতে পারেন। তাই hash আলাদা জায়গায়, সই করা ফর্মে থাকে। বড় প্রতিষ্ঠানে digital signature বা বাইরের সময়চিহ্নও যোগ হয়।
এবার MD5. ২০০৪ সালে Xiaoyun Wang-এর দল MD5-এ collision দেখান, আর ২০১৭ সালে Google ও CWI Amsterdam SHA-1-এ collision প্রকাশ করে (SHAttered). তবে collision মানে সাধারণত হামলাকারী আগে থেকে দুটি ফাইল একসাথে বানান। পুরোনো মামলায় আগে থেকে থাকা একটি নির্দিষ্ট ফাইলের সমান hash-এর নতুন ফাইল বানানো আলাদা, আরও কঠিন সমস্যা, যাকে second preimage বলে। তাই পুরোনো MD5 নিজে থেকেই প্রমাণকে অচল করে না, যদিও নতুন কাজে SHA-256-এর মতো শক্তিশালী hash নেওয়াই ঠিক। আগে পরীক্ষকেরা প্রায়ই দুটি ভিন্ন hash একসাথে রাখতেন, যা ক্ষতির ঝুঁকি কমাত। আদালত কীভাবে দেখবেন, তা দেশ ও ঘটনাভেদে আলাদা।
ব্যবহারিক অভ্যাসটি সহজ। Hash নেওয়ার সময়, tool আর কে নিলেন, তা ফর্মে লিখুন। গুরুত্বপূর্ণ কাজে দ্বিতীয় একজন আলাদা tool দিয়ে একই hash হিসাব করে মিলিয়ে নিন। মিল না হলে কারণ খুঁজুন, চেপে যাবেন না। রিপোর্টে “hash মিলেছে” না লিখে কোন image, কোন algorithm আর কোন মান মিলেছে, তা স্পষ্ট করে লিখুন।
মূল উপলব্ধি: Hash অখণ্ডতার প্রমাণ, সত্যের প্রমাণ নয়। সত্য আসে একাধিক স্বাধীন উৎস মিলিয়ে দেখা থেকে।
প্র ০২১৯৮৬ সালের ৭৫ সেন্টের একটি হিসাবের গরমিল থেকে নোট রাখা নিয়ে আমরা কী শিখি?
Clifford Stoll তখন Lawrence Berkeley Laboratory-তে কাজ করতেন। Computer ব্যবহারের হিসাবে সামান্য ৭৫ সেন্টের গরমিল ধরা পড়ে। সেই ছোট সূত্র ধরে তিনি একজন অজানা ব্যবহারকারীর খোঁজ শুরু করেন, আর ঘটনাটি শেষ পর্যন্ত আন্তর্জাতিক তদন্তে পৌঁছায়। ১৯৮৯ সালের বই The Cuckoo's Egg-এ তিনি কাহিনিটি লিখেছেন।
আমাদের কাছে এর সবচেয়ে কাজের অংশ প্রযুক্তি নয়, অভ্যাস। প্রকাশিত বিবরণ অনুযায়ী Stoll খুঁটিনাটি লগবুক রাখতেন, আর ওই ব্যক্তির সেশনের ছাপা নথি জমিয়েছিলেন। তখন তাঁকে সহজে কেউ বিশ্বাস করেনি, বহু সংস্থায় বারবার বোঝাতে হয়েছে। এই নোটই তাঁকে বিভিন্ন সংস্থার সামনে একই কথা ধারাবাহিকভাবে দেখাতে সাহায্য করেছিল।
ঘটনাটি তিনটি শিক্ষা দেয়। এক, ছোট গরমিল উপেক্ষা করবেন না, এটি detection-এর শুরু হতে পারে। দুই, ঘটনার সময়ই লেখা নোটের মূল্য স্মৃতির চেয়ে বেশি। ছয় মাস পরে কেউ মনে রাখতে পারেন না কোন সংখ্যাটি কখন দেখেছিলেন। তিন, প্রযুক্তি বদলায়, কিন্তু নোটের কাঠামো একই থাকে: কখন, কী, কেন, কী দেখলাম। ঘটনার সাথে সাথেই লেখা নোটের আরেকটি সুবিধা হলো, এতে সন্দেহ, ভুল ধারণা আর ফিরে আসার পথও ধরা থাকে। পরে রিপোর্ট লেখার সময় আপনি দেখতে পান কোন সিদ্ধান্ত কোন তথ্যের ভিত্তিতে হয়েছিল।
আজ আমাদের হাতে SIEM, EDR আর দামি tool আছে, তবু বহু তদন্ত ঠেকে যায় একটি সরল প্রশ্নে: এই ফাইলটি ওই সময় কে ছুঁয়েছিলেন? উত্তর না থাকলে দামি tool কাজে আসে না। তাই ছোট দলেও একটি সহজ, সময়চিহ্নসহ নোটের অভ্যাস গড়ুন।
মূল উপলব্ধি: ভালো পরীক্ষকের সবচেয়ে শক্তিশালী tool প্রায়ই তাঁর নোট। যা লেখা নেই, তা অন্যকে দেখানো যায় না।
প্র ০৩সেবা দ্রুত ফেরানো আর প্রমাণ রক্ষা মুখোমুখি হলে কে জিতবে?
কোনো স্থায়ী বিজয়ী নেই। একটি অনলাইন বাজার ransomware-এ বন্ধ, প্রতি ঘণ্টায় আয় হারাচ্ছে। ব্যবসা বলে, server মুছে backup থেকে ফিরুন। পরীক্ষক বলেন, মুছলেই জানা যাবে না হামলাকারী কোন পথে ঢুকেছিল, ডেটা নিয়েছিল কি না। প্রবেশপথ না জানলে পরিষ্কার system-এ আবার একই ঘটনা ঘটতে পারে। আইনি বা বিমার প্রয়োজনেও প্রমাণ দরকার হতে পারে। তাই দুই পক্ষেই যুক্তি আছে।
অনেক আগে সাধারণ পরামর্শ ছিল সঙ্গে সঙ্গে প্লাগ টানা, যাতে disk আর না বদলায়। এখন disk encrypted থাকতে পারে, চাবি memory-তে থাকতে পারে, আর কিছু malware disk-এ কম চিহ্ন রাখে (fileless malware). তাই একটি ধরা নিয়ম নেই। মানুষের জীবন বা নিরাপত্তা ঝুঁকিতে থাকলে আগে ক্ষতি থামানোই ঠিক।
বাস্তব সমাধান হলো আগে থেকে ঠিক করা মধ্যপথ। Cloud-এ virtual machine আলাদা করে snapshot নেওয়া যায়, তারপর নতুন system চালু করা যায়। On-premises-এ অগ্রাধিকার দেওয়া কয়েকটি system-এর memory আর disk নেওয়া যায়, সবগুলোর নয়। Log আগে থেকেই বাইরে থাকলে চাপ অনেক কমে। সিদ্ধান্ত নেবেন নির্ধারিত কর্মকর্তা, আইন বিভাগের সাথে, আর সিদ্ধান্ত ও কারণ লেখা থাকবে। পর্ব ৬২-এ containment আর recovery-র দিকটি দেখেছেন।
মহড়ায় এই প্রশ্নটি সরাসরি তুলুন: কোন system কত ঘণ্টা অপেক্ষা করতে পারে, কে শেষ কথা বলবেন, রাত দুটোয় তিনি না পেলে কে বলবেন? কত সময়ে snapshot বা image নেওয়া যায়, তা আগে মেপে রাখলে আলোচনা অনুমান থেকে তথ্যে নামে। প্রমাণের জন্য অপেক্ষার দাম আর প্রমাণ হারানোর দাম, দুটিকেই ব্যবসার ভাষায় বলতে শিখুন।
মূল উপলব্ধি: এই টান ঘটনার রাতে সমাধান হয় না। আগে থেকে playbook, মহড়া আর দায়িত্ব ঠিক থাকলে সংঘাত ছোট হয়ে আসে।
প্র ০৪SSD আর cloud কি “bit-for-bit, পুনরায় করা যায়” ধারণাকে দুর্বল করে দিয়েছে?
পুরোনো hard disk-এ নিয়ম সহজ ছিল: write blocker লাগান, দুবার পড়ুন, একই hash পাবেন। SSD-তে ভেতরের controller নিজে থেকেই কাজ করে। TRIM নির্দেশ পেলে মুছে ফেলা জায়গা পরিষ্কার হতে পারে, আর garbage collection host-এর লেখা ছাড়াই ডেটা সরাতে পারে। Bell ও Boddington ২০১০ সালের এক গবেষণায় দেখান, পরীক্ষিত একটি SSD-তে firmware-এর পরিষ্কারের কাজ মুছে ফেলা তথ্য নষ্ট করতে পারে, আর সাধারণ write blocker এই ঝুঁকি দূর করার নিশ্চয়তা দেয় না। Controller ভেদে ফল আলাদা, তাই এটি সব disk-এর নিয়ম নয়।
এর অর্থ হলো, একই disk দুবার পড়লে কিছু ক্ষেত্রে hash আলাদা হতে পারে, কেউ কিছু না করলেও। তাহলে forensics কি ভেঙে পড়ল? না, ভরসার জায়গাটি সরল। এখন প্রথম acquisition-এ তৈরি image-টিই মূল ভিত্তি, আর সেটির hash স্থির থাকে। ব্যাখ্যাও রিপোর্টে থাকে।
Cloud-এ সমস্যা আরও বড়। Provider-এর শারীরিক disk হাতে আসে না, আর log provider-এর তৈরি। NIST IR 8006 (২০২০) এমন বহু চ্যালেঞ্জ তালিকাভুক্ত করেছে: বহু গ্রাহকের ভাগাভাগি, এখতিয়ার, ডেটার অবস্থান, provider-এর ওপর নির্ভরতা। তাই এখানে “পুনরায় করা” মানে হয়ে দাঁড়ায় একই export-এর একই বিশ্লেষণ, আর পদ্ধতি স্পষ্ট লেখা।
গভীর শিক্ষা হলো, soundness কোনো একটি যন্ত্রের নাম নয়। এটি একটি যুক্তি: কী করেছি, কেন করেছি, কী বদলেছে, আর আপনি কীভাবে যাচাই করবেন। পরিবেশ বদলালেও এই যুক্তি একই থাকে। ব্যবহারিক দিকটিও সহজ: SSD যুক্ত করার পর দ্রুত image নিন, device-এর ধরন আর মডেল লিখুন, আর দুবার পড়ার ফল না মিললে তা লুকাবেন না। প্রত্যাশিত আচরণ হলে রিপোর্টে কারণসহ ব্যাখ্যা করুন।
মূল উপলব্ধি: নিখুঁত অপরিবর্তনীয়তা সবসময় পাওয়া যায় না। পাওয়া যায় স্বচ্ছ, ব্যাখ্যা করা, পরীক্ষা করা পদ্ধতি।
প্র ০৫“Computer ভুল করে না” — যুক্তরাজ্যের Post Office Horizon ঘটনা এই ধারণা সম্পর্কে কী বলে?
Horizon ছিল যুক্তরাজ্যের Post Office-এর হিসাবের software. বহু বছর ধরে শাখা পরিচালনাকারীদের হিসাবে ঘাটতি দেখা যায়। প্রকাশিত প্রতিবেদন অনুযায়ী শত শত মানুষের বিরুদ্ধে মামলা হয়, অনেকে দণ্ড পান, আর অনেকের জীবন ধ্বংস হয়। পরিচালকেরা বলছিলেন ঘাটতি তাঁদের সৃষ্টি নয়, কিন্তু system-এর ফলকে নির্ভরযোগ্য ধরা হচ্ছিল।
২০১৯ সালে পরিচালকদের দলগত মামলার রায়ে High Court বলে, Horizon-এ এমন ত্রুটি ছিল, যা হিসাবে ঘাটতি দেখাতে পারত। ২০২১ সালে Court of Appeal অনেকের দণ্ড বাতিল করে। ঘটনাটি নিয়ে সরকারি তদন্তও হয়েছে। এই ঘটনা ইংল্যান্ডে computer প্রমাণ নিয়ে একটি বিতর্ক সামনে আনে: আদালত কি ধরে নেবেন যন্ত্র ঠিক কাজ করছিল, যদি কেউ উল্টোটা না দেখায়? যাঁর হাতে source code বা ত্রুটির তালিকা নেই, তিনি কীভাবে তা দেখাবেন?
Forensic পরীক্ষকের জন্য শিক্ষা সরাসরি। Log বা হিসাবের আউটপুট নিজে থেকে সত্য নয়, এটি একটি program-এর দাবি। প্রশ্ন করুন: এই system কতটা নির্ভরযোগ্য, পরিচিত ত্রুটি কী, data কে বদলাতে পারে, অন্য উৎসে কি মিলছে? নির্দোষ প্রমাণ করতে পারে এমন তথ্যও খুঁজুন। বাংলাদেশের Evidence Act-এও digital record-এর ক্ষেত্রে computer ঠিকভাবে চলছিল কি না, এই প্রশ্ন শর্ত হিসেবে এসেছে, যদিও এর প্রয়োগ আইনজীবী আর আদালতের বিষয়।
নিজের কাজে এর মানে কী? হিসাব বা log দেখে কাউকে দায়ী করার আগে পরিচিত bug, পরিবর্তনের ইতিহাস আর কে ডেটা বদলাতে পারেন, তা খুঁজে দেখুন। অভিযুক্ত ব্যক্তির ব্যাখ্যা শুনুন, আর সেই ব্যাখ্যা পরীক্ষা করার চেষ্টা করুন। Forensic কাজ অভিযোগ প্রমাণের কাজ নয়, ঘটনা বোঝার কাজ।
মূল উপলব্ধি: যন্ত্রের আউটপুট প্রমাণের শুরু, শেষ নয়। মানুষের জীবনে প্রভাব ফেলে এমন সিদ্ধান্তের আগে system-কেও জেরা করতে হয়।
অনুশীলন
হিসাব, পূর্বাভাস আর সমালোচনা। কমান্ড শুধু নিজের ফাইলে চালান।
-
Imaging-এর সময় ও জায়গা: ২ TB disk, গড় গতি ১৫০ MB/s. Image আর একবার পূর্ণ verification-এ মোট কত সময় লাগবে? Master আর একটি working copy রাখতে অন্তত কত জায়গা লাগবে (compression ছাড়া)?
২,০০০,০০০ MB ÷ ১৫০ ≈ ১৩,৩৩৩ সেকেন্ড ≈ ৩ ঘণ্টা ৪২ মিনিট। Verification-সহ দ্বিগুণ, প্রায় ৭ ঘণ্টা ২৪ মিনিট। জায়গা: ২ TB + ২ TB = অন্তত ৪ TB, সাথে নোট ও log-এর জন্য বাড়তি জায়গা। সংখ্যাগুলো ধরে নেওয়া গড় গতির, বাস্তবে গতি ওঠানামা করে।
-
নিজের ফাইলে hash: নিজের কম্পিউটারে একটি ছোট টেক্সট ফাইল বানান।
sha256sumবাGet-FileHashদিয়ে hash নিন। ফাইলে একটি অক্ষর বদলে আবার নিন, তারপর আগের অক্ষরটি ফিরিয়ে আবার নিন। তিনটি ফল কী হবে?প্রথম আর তৃতীয় hash একই হবে, কারণ byte-গুলো আবার একই। দ্বিতীয়টি সম্পূর্ণ আলাদা দেখাবে। লক্ষ করুন, ফাইলের modified time কিন্তু তৃতীয়বারে আগের মতো ফেরে না। অর্থাৎ hash বিষয়বস্তুর কথা বলে, ফাইলের timestamp আলাদা metadata. Editor যদি শেষে নতুন লাইন যোগ করে, তাহলে তৃতীয় hash মিলবে না।
-
ফল আগে বলুন: একটি toy log-এ দুটি লাইন: (১) ০৯:০০ UTC, দিলেন A, নিলেন B, (২) ১০:০০ UTC, দিলেন C, নিলেন D. দুটিতেই সই আছে, hash মিলেছে, নম্বর ক্রমিক। Custody যাচাইকারী কয়টি সমস্যা দেখাবে? আর একটি device-এর সময়
2026-03-10 23:40:00, zone UTC+6, ঘড়ি ৬০ সেকেন্ড পিছিয়ে। UTC কত?একটি সমস্যা: লাইন ২-এ gap, কারণ B-এর হাতে ছিল, অথচ দিচ্ছেন C. সময়: ২৩:৪০ থেকে ৬ ঘণ্টা বাদে ১৭:৪০:০০, আর ঘড়ি পিছিয়ে ছিল বলে ৬০ সেকেন্ড যোগ করে 17:41:00 UTC. সূত্রে skew = −৬০, তাই বিয়োগ করলে যোগ হয়।
-
সমালোচনা করুন: একটি প্রতিষ্ঠানের নীতিতে লেখা: “সন্দেহ হলেই IT যেকোনো কর্মীর ফোন ও laptop নিয়ে সবকিছু দেখতে পারবে। ঘটনা ঘটলে সঙ্গে সঙ্গে device বন্ধ করে দিন। রিপোর্টে কর্মীর নাম লিখুন।” তিনটি দুর্বলতা বের করে নতুন করে লিখুন।
এক: অধিকার অতি বিস্তৃত, ব্যক্তিগত device আর privacy-র সীমা নেই। নতুন লেখা: প্রতিষ্ঠানের device-এ লিখিত অনুমোদন আর উদ্দেশ্য অনুযায়ী পরীক্ষা, ব্যক্তিগত device-এ আলাদা সম্মতি বা বৈধ প্রক্রিয়া।
দুই: সব সময় বন্ধ করলে memory-র প্রমাণ হারাতে পারে। নতুন লেখা: device অনুযায়ী playbook মানা, প্রশিক্ষিত কর্মীকে ডাকা, সিদ্ধান্ত লিখে রাখা।
তিন: নাম লেখা মানে account আর মানুষ এক করে ফেলা। নতুন লেখা: account আর device-এর পর্যবেক্ষণ লেখা, সিদ্ধান্ত নির্ধারিত কর্তৃপক্ষ নেবেন। নীতিটি আইনি পরামর্শ নিয়ে চূড়ান্ত করুন।
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমRFC 3227 অনুযায়ী সবচেয়ে volatile থেকে সবচেয়ে কম volatile ক্রমে সাজান (▲▼ চেপে সরান)
- Registers আর cache
- Process table আর memory
- Temporary file system
- Disk
- Remote log
- Archival media
NIST SP 800-86 অনুযায়ী forensic প্রক্রিয়ার ধাপের সঠিক ক্রম কোনটি?
- Analysis, collection, examination, reporting
- Collection, examination, analysis, reporting
- Preparation, detection, containment, recovery
- Reporting, collection, analysis, examination
একটি forensic image-এর SHA-256 hash সংগ্রহের সময়ের hash-এর সাথে হুবহু মিলেছে। এ থেকে কী বলা যায়?
- ফাইলের ভেতরের সব তথ্য সত্য
- কে ফাইলটি বানিয়েছেন তা প্রমাণ হলো
- Chain of custody নিখুঁত ছিল
- Hash নেওয়ার পর থেকে image-এর bit বদলায়নি
একটি চালু server থেকে অনুমোদিত সংগ্রহের সময় RFC 3227 অনুযায়ী নিচের কোনটি আগে নেওয়া উচিত?
- Memory আর চালু network সংযোগের তথ্য
- System disk-এর image
- গত মাসের backup tape
- Network-এর নকশার কাগজ
Chain of custody খাতায় দেখা গেল এক রাতের ১৪ ঘণ্টা ৪০ মিনিট প্রমাণ কার কাছে ছিল তা লেখা নেই। সবচেয়ে সঠিক কাজ কোনটি?
- পুরোনো তারিখ দিয়ে ফর্মে একটি লাইন ঢুকিয়ে দেওয়া
- প্রমাণ সঙ্গে সঙ্গে মুছে ফেলা
- খোঁজ নিয়ে আজকের তারিখে আলাদা নোট লেখা, আর রিপোর্টে ফাঁকটি জানানো
- Hash মিলেছে বলে ফাঁকটি উল্লেখ না করা
একটি device-এর log-এ সময় 2026-03-10 02:30:00, zone UTC+6, আর ঘড়ি ৩০ সেকেন্ড এগিয়ে আছে। সঠিক UTC কত?
- 2026-03-09 20:30:00
- 2026-03-09 20:29:30
- 2026-03-09 20:30:30
- 2026-03-10 08:29:30
একজন কর্মী নিজের সন্দেহ থেকে সহকর্মীর ব্যক্তিগত ফোন লুকিয়ে পরীক্ষা করতে চান, যেন “প্রমাণ” পাওয়া যায়। কোনটি সঠিক?
- উদ্দেশ্য ভালো হলে কোনো অনুমতি লাগে না
- Forensic tool জানা থাকলে করা যায়
- না, মালিকের অনুমতি বা বৈধ আইনি প্রক্রিয়া লাগবে; সন্দেহ নির্ধারিত কর্তৃপক্ষকে জানাতে হবে
- অফিসের বাইরে হলে কোনো সমস্যা নেই
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- মালিকের লিখিত অনুমোদন বা বৈধ আইনি প্রক্রিয়া ছাড়া কাজ শুরু নয়; scope আর privacy মেনে চলুন।
- চার ধাপ: collection, examination, analysis, reporting, আর volatility ও মেয়াদ দেখে অগ্রাধিকার।
- Write blocker, image, hash, verify, working copy: মূল জিনিসে কাজ নয়।
- Chain of custody আর নোটের ফাঁক সৎভাবে জানান। Hash custody-র বিকল্প নয়।
- সময় UTC-তে আনুন, skew মাপুন, account আর মানুষ আলাদা রাখুন, আর সীমা লিখুন।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ৬৪ · Forensic artifact — log, memory, disk আর timeline বানানোপরবর্তী পর্বপ্রমাণ থেকে সময়রেখা।
- সাইবার নিরাপত্তা · কোর্স হোম৮০টি পর্বপুরো কোর্সের রোডম্যাপ।
- পর্ব ০৬ · আইন আর নৈতিকতাপুনরালোচনাঅনুমতি আর বাংলাদেশের আইন।
- পর্ব ০৯ · Hash আর MACপুনরালোচনাSHA-2, HMAC আর অখণ্ডতা যাচাই।
- পর্ব ৫৫ · নিরাপত্তার logপুনরালোচনাকী রাখবেন, কোথায়, কতদিন।
- Cloud & DevOps · Incident managementপাশের ট্র্যাকProduction-এ ঘটনার ব্যবস্থাপনা।
- NIST SP 800-86মূল উৎসForensic কৌশল আর incident response.
- RFC 3227মূল উৎসপ্রমাণ সংগ্রহ ও সংরক্ষণের নির্দেশিকা।
- NIST IR 8006মূল উৎসCloud forensics-এর চ্যালেঞ্জ।
- Evidence (Amendment) Act, 2022 (bdlaws)সরকারি উৎস২০২২ সনের ২০ নং আইন।