এনক্রিপশন লুকিয়ে রাখে আপনি কী বলেছেন। এটি লুকিয়ে রাখে আপনি যে বলেছেন সেটাই।
এনক্রিপশন একটি বার্তার বিষয়বস্তু গোপন রাখে। বার্তাটি যে ঘটেছিল, তা লুকায় না। নেটওয়ার্কে নজর রাখা কেউ তখনও দেখে কে কার সঙ্গে কথা বলছে, কখন, আর কত কিলোবাইট (KB) সরল — স্পর্শকাতর পরিস্থিতিতে যা কথাগুলির মতোই গুরুত্বপূর্ণ হতে পারে। AEGIS একটি বন্ধ দলের সদস্যদের মধ্যেকার ট্রাফিক ধ্রুব হারে বইয়ে রাখে, পাঠানোর কিছু থাক বা না থাক, ফলে সময় আর পরিমাণ কোনো সংকেত বয়ে নেয় না।
“আক্রমণ-সিমুলেশন নিশ্চিত না করা পর্যন্ত কিছুই শেষ নয়।”
উন্নয়নের সময় ট্রাফিক বিশ্লেষণ নিয়ে অনুমান বারবার ভুল প্রমাণিত হয়েছে। কেবল সিমুলেশন হারনেসটিকেই ভরসা করা গেছে, তাই সেটিই গেট হয়ে দাঁড়িয়েছে। Python হারনেসটি আছে
sim/ ফোল্ডারে, আর স্পেসিফিকেশনের প্রতিটি পরিমাণগত দাবির পিছনে সেটিই প্রমাণের খতিয়ান — আগেই পাঠানো একটা নকশাকে পরে বৈধতা দেওয়ার মতো বাড়তি কিছু নয়।
এটি কী, এক মিনিটে
যে নেটওয়ার্ক দেখতে পারে, তার এনক্রিপশন ভাঙার দরকার নেই। সে দেখে একটি প্রান্ত ০৯:৪১:০৩-এ ১৪ KB পাঠাল, তিন সেকেন্ড পরে আরেকটি প্রান্ত ১৪ KB পেল, আর এগারো সপ্তাহ ধরে দিনে দুবার ঠিক এটাই ঘটে। যথেষ্টবার ঘটলে সেটাই হয়ে ওঠে কে কার সঙ্গে কাজ করে তার মানচিত্র — একটি বার্তাও না পড়ে আঁকা।
AEGIS তারটিকে সব সময় একরকম দেখায়। পাঠানোর কিছু থাক বা না থাক, ট্রাফিক বেরোয় ধ্রুব হারে, আর যা পৌঁছায় তা নির্দিষ্ট মাপে প্যাড করা, ফলে এক প্রান্তে এমন কোনো ঝাঁক নেই যাকে অন্য প্রান্তের ঝাঁকের সঙ্গে মেলানো যায়। এতে ব্যান্ডউইথ খরচ হয় আর বিলম্ব বাড়ে; নিচের প্রদর্শনী সুরক্ষা আর তার দাম পাশাপাশি দেখায়।
সংবাদকক্ষ আর সূত্র আড়াল করেন এমন যে-কেউ, যেখানে যোগাযোগের সময় আর আকারই একজন মানুষকে ফাঁস করে দেয়। ব্যাংক, বিমা সংস্থা আর শিল্পের সংগঠন, যারা একে অন্যের প্রতিযোগী, তবু যাদের ডেটা বিনিময় করতেই হয়। যেসব প্রতিষ্ঠান আক্রমণের সতর্কবার্তা ভাগ করে নেয়, যেখানে ভাগ করতে দেখা যাওয়াটাই স্পর্শকাতর অংশ হতে পারে।
মেটাডেটাই সেই অংশ যা আপনাকে চিনিয়ে দেয়
একজন বৈশ্বিক নিষ্ক্রিয় প্রতিপক্ষ আপনার বার্তা পড়তে পারে না। তার দরকারও নেই। সে একসঙ্গে প্রতিটি লিংক দেখে আর মিলিয়ে নেয়: এই প্রান্তটি ০৯:৪১:০৩-এ ১৪ KB পাঠিয়েছে, ওই প্রান্তটি ০৯:৪১:০৬-এ ১৪ KB পেয়েছে, আর ধরনটা এগারো সপ্তাহ ধরে দিনে দুবার করে ফিরে আসছে।
একটি সাইফারও না ভেঙে গোটা একটা প্রতিষ্ঠানের সম্পর্কের গ্রাফ গড়ে তুলতে আয়তন আর সময়ই যথেষ্ট। একটি কনসোর্টিয়ামের ক্ষেত্রে — ব্যাংক নিজেদের মধ্যে নিষ্পত্তি করছে, হাসপাতাল নথি ভাগ করছে, সংবাদকক্ষ আর তাদের সূত্র — গ্রাফটাই হলো সেই স্পর্শকাতর তথ্য।
AEGIS তারটাকে বানিয়ে দেয় একটা সমতল, অপরিবর্তনীয় দেয়াল। নিচে যা-ই ঘটুক, হার ধ্রুব, তাই আয়তন আর সময় কোনো সংকেতই বহন করে না। নিচের প্রদর্শনীটি আপনাকে দুটি বিন্যাসের বিপরীতেই আক্রমণটি চালিয়ে তফাতটা দেখতে দেয়।
আকার দেওয়া মিক্সনেট
ছোট ও ঝাঁকুনিভরা ডেটা, সঙ্গে সব নিয়ন্ত্রণ ট্রাফিক। Sphinx প্যাকেট ছাড়া হয় ধ্রুব হারে, সঙ্গে গ্রাহকের দিকে কড়া সীমার প্যাডিং, যাতে গ্রাহকের ভিতরে আসা আয়তনও নির্দিষ্ট থাকে।
বাল্ক স্তর
সমন্বয়যোগ্য নিরাপত্তা-স্তরসহ বড় ফাইল স্থানান্তর — কাঁচা, বালতিতে ভাগ করা, বা সমানভাবে ব্যাচ করা। খরচের বক্ররেখায় আপনি কোথায় বসবেন তা আপনিই ঠিক করেন; দাম নিয়ে কিছুই লুকোনো নেই।
আপনিই হয়ে উঠুন বৈশ্বিক নিষ্ক্রিয় প্রতিপক্ষ
পাঁচজন প্রেরক পাঁচজন গ্রাহকের ঠিক একজনের সঙ্গেই কথা বলছে। আপনি শুধু প্রতিটি লিংকের ট্রাফিকের আয়তন দেখেন — কখনও বিষয়বস্তু নয়, কখনও রাউটিং নয়। ধারাগুলি মিলিয়ে দেখে জোড়াগুলি উদ্ধার করার চেষ্টা করুন। তারপর ধ্রুব-হারের প্রতিরোধটি চালু করে আবার চেষ্টা করুন।
ট্রাফিক-বিশ্লেষণ হারনেস
প্রতিপক্ষের সিদ্ধান্ত
প্রতিরোধের খরচ
এলোমেলো আন্দাজে পাওয়া যায় ২০% — পাঁচটির মধ্যে একটি জোড়া। তার চেয়ে অর্থপূর্ণভাবে বেশি কিছু মানেই প্রতিপক্ষ জিতছে। খরচের সংখ্যাগুলি হলো সৎ বাকি অর্ধেকটা: ধ্রুব-হারে আকার দেওয়া বিনামূল্যের নয়, আর AEGIS সেটা বিনামূল্যের বলে ভানও করে না।
আটটি পর্যায়, প্রতিটিই একটি রেড-টিম গেটের পিছনে
বাস্তবায়ন পর্যায় ৮, অর্থাৎ কঠোরীকরণ পর্যন্ত সম্পূর্ণ। রিপোজিটরি যে সংখ্যাগুলি জানায় সেগুলি এই: ফাজিং চলেছে Linux-এর জন্য Windows সাবসিস্টেমের (WSL) নিচে, আর টেস্টনেট চলেছে সত্যিকারের ট্রান্সমিশন কন্ট্রোল প্রোটোকল (TCP) সকেটের উপরে।
| ক্ষেত্র | ফল | মন্তব্য |
|---|---|---|
| ক্রিপ্টো ভেক্টর | 36 / 36 | |
| রিলে রাউটিং | 14 / 14 | |
| টপোলজি | 41 / 41 | |
| নেগোশিয়েটর / বাল্ক সহসম্পর্ক | 25 / 25 | |
| ওয়ার্কস্পেস পরীক্ষা | 195 | সবই উত্তীর্ণ |
| নিরাপত্তা ফাজিং | 1.17M+ | WSL দিয়ে libFuzzer, শূন্য ক্র্যাশ |
| টেস্টনেট | সত্যিকারের TCP | সত্যিকারের সকেটের উপরে Sphinx প্যাকেট রাউটিং |
| ট্রেস বিশ্লেষণ | নিরীহ বনাম ক্ষতিকর | সত্যিকারের ট্রেসের তুলনা |
কে কথা বলছে তা লুকোয়, শুধু কী বলা হলো তা নয়
একটি বার্তা এলোমেলো করে দেওয়া সমাধান হয়ে যাওয়া সমস্যা। যা লুকোয় না তা হলো আপনি যে একটা পাঠিয়েছেন, কাকে, কখন আর কতটা। শুধু ওই ধরনটুকুই প্রায়ই মানুষ চিনিয়ে দেওয়ার পক্ষে যথেষ্ট।
সংবাদকক্ষ আর সূত্র আড়াল করতে চান এমন যে কেউ
বার্তাটা কারও পড়ার দরকার নেই, যদি সে দেখতে পায় যে রাত দুটোয় একজন নির্দিষ্ট মানুষ একজন নির্দিষ্ট সাংবাদিকের সঙ্গে যোগাযোগ করেছেন। সময় আর আকারই মানুষকে খোলা করে দেয়।
প্রতিদ্বন্দ্বী কোম্পানি, যাদের তবু ডেটা ভাগ করতে হয়
ব্যাংক, বিমা আর শিল্পগোষ্ঠী প্রতিযোগিতা করতে করতেই তথ্য বিনিময় করে। হঠাৎ আপনি কার সঙ্গে কথা বলছেন আর কত ঘন ঘন, তা থেকেই ফাঁস হয়ে যায় আপনি কী নিয়ে কাজ করছেন।
আক্রমণের সতর্কবার্তা বিনিময় করা প্রতিষ্ঠান
হুমকির তথ্য ভাগ করা কাজের, কিন্তু ভাগ করতে দেখা যাওয়াটাই স্পর্শকাতর অংশ হয়ে উঠতে পারে। এটি কথাবার্তার বিষয়বস্তুই নয়, কথাবার্তা যে হয়েছে সেই ঘটনাটাকেও গোপন রাখে।
আকার দেওয়ার উপরে যা বসে
- ফরোয়ার্ড-সিক্রেসি হ্যান্ডশেক। দীর্ঘমেয়াদি চাবি ফাঁস হলেও আগের সেশনগুলি পিছন ফিরে খুলে যায় না।
- সুনাম দেখে পথ বাছাই। পথ বেছে নেয় এমন রিলে, যাদের আচরণ প্রতিষ্ঠিত।
- বিতরিত এলোমেলোতার বিকন। পথ বাছাইয়ের এনট্রপি কোনো একক পক্ষের হাতে নেই।
- শূন্য-জ্ঞান সুনাম-প্রমাণ। একটি রিলে নিজের স্কোর না জানিয়েই প্রমাণ করে যে সে সুনামের সীমা ছাড়িয়েছে।
- গার্ড-নোড যাচাই। যেখানে সবচেয়ে বেশি দরকার, ঠিক সেখানেই Sybil প্রতিরোধ।
নিশ্চয়তা কোথায় গিয়ে থামে
- শুধু ভিতরের ট্রাফিক। কড়া নিশ্চয়তা খাটে কনসোর্টিয়ামের ভিতরে। উন্মুক্ত নেটে বেরোনোর পথ দুর্বল, আর উল্টো কিছু দাবি করা হয় না।
- অভিজ্ঞতালব্ধ, প্রমাণিত নয়। ফলাফলগুলি উল্লিখিত প্রতিপক্ষ-মডেলের অধীনে অভিজ্ঞতালব্ধ সীমা। এগুলি গাণিতিক প্রমাণ নয়।
- বিলম্ব গঠনগত। কয়েক সেকেন্ডের বিলম্ব নকশারই একটি ধর্ম, কোনো টিউনিংয়ের সমস্যা নয় যা পরে সরিয়ে ফেলা যাবে।
- দুই পক্ষের জন্য ভুল সরঞ্জাম। অনেক প্রান্তবিন্দু জুড়ে সম্পর্কের গ্রাফ লুকোতে AEGIS মানানসই। দুই পক্ষের একটি লিংকের জন্য লিংক-স্তরের প্রতিরোধ বেশি ভালো কাজ করে।
- গবেষণার কাজ এখনও বাকি।
docs/ops/RESEARCH_AGENDA.mdফাইলটিই হলো যা শেষ হয়নি তার সৎ তালিকা।
cargo deny দিয়ে নির্ভরতার নিরীক্ষা, আর গোটা ওয়ার্কস্পেস জুড়ে unsafe কোড নিষিদ্ধ করার নীতি। প্রতিকূল ইনপুট সামলায় এমন একটি Rust নেটওয়ার্ক স্ট্যাকের জন্য, #![forbid(unsafe_code)] গোটা ওয়ার্কস্পেস জুড়ে এই লাইনটিই প্রকল্পের সবচেয়ে বেশি ভার বহনকারী একটিমাত্র লাইন।