System Design শেখো
শেখো / সিকিউরিটি ও প্রাইভেসি

Encryption ও TLS

10 মিনিট Module 7 · Security & Privacy
এক নজরে
  • Symmetric encryption-এ একই key, asymmetric-এ public/private key জোড়া ব্যবহার হয়।
  • Encryption at rest ডেটা সংরক্ষণের সময় রক্ষা করে, in transit নেটওয়ার্কে চলাকালীন রক্ষা করে।
  • TLS handshake-এ asymmetric দিয়ে নিরাপদে একটি symmetric key বিনিময় হয়, এরপর দ্রুত যোগাযোগ চলে।

সমস্যাটা কী?

কল্পনা করো তুমি একটা পোস্টকার্ডে তোমার ব্যাংকের password লিখে পাঠালে। মাঝপথে যত হাত বদল হবে, প্রত্যেকে সেটা পড়তে পারবে। ইন্টারনেটেও তোমার ডেটা অনেক router, ISP, Wi-Fi-এর মধ্য দিয়ে যায়। কেউ মাঝখানে বসে আড়ি পাততে পারে— একে বলে man-in-the-middle আক্রমণ।

আবার ধরো তোমার ডেটা সার্ভারের ডিস্কে জমা আছে; ডিস্ক চুরি হলে বা হ্যাকার ঢুকে পড়লে সব ফাঁস। তাহলে চলাকালীন (transit) এবং সংরক্ষণের সময় (rest)— দুই অবস্থাতেই ডেটা কীভাবে রক্ষা করব? উত্তর হলো encryption, আর ওয়েবে এর সবচেয়ে গুরুত্বপূর্ণ প্রয়োগ হলো TLS।

মূল ধারণা

Encryption হলো readable ডেটাকে এমন এক রূপে বদলানো যা key ছাড়া কেউ পড়তে পারে না, কিন্তু সঠিক key দিয়ে আবার মূল রূপে ফেরানো যায়। TLS (Transport Layer Security) হলো সেই প্রোটোকল যা ইন্টারনেটে ডেটা চলাকালীন encrypt করে নিরাপদ রাখে।

এখানে দুটো ধারণা গুলিয়ে ফেলো না। Encryption দ্বিমুখী— key থাকলে মূল ডেটা ফিরে পাওয়া যায়। কিন্তু Hashing একমুখী— এটি ডেটাকে একটা fixed-length fingerprint-এ বদলায়, যা থেকে কখনো মূল ডেটা ফেরানো যায় না। password রাখা হয় hashing দিয়ে, ডেটা গোপন রেখে পরে ফেরাতে হলে encryption দিয়ে।

কীভাবে কাজ করে

Symmetric vs Asymmetric

Symmetric encryption: encrypt ও decrypt-এ একই গোপন key। যেমন AES। দ্রুত, কিন্তু সমস্যা হলো— দুই পক্ষকে আগে নিরাপদে key বিনিময় করতে হয়।

Asymmetric encryption: একটি জোড়া key— public ও private। public key দিয়ে কেউ encrypt করলে শুধু private key দিয়ে decrypt করা যায়। key বিনিময়ের সমস্যা নেই (public key সবাইকে দেওয়া যায়), কিন্তু এটি ধীর। যেমন RSA।

বিষয়SymmetricAsymmetric
Keyএকটি (shared)জোড়া (public/private)
গতিদ্রুতধীর
সুবিধাবড় ডেটায় ভালোনিরাপদ key বিনিময়
উদাহরণAESRSA, ECC

TLS handshake

TLS চতুরতার সাথে দুটোই ব্যবহার করে— asymmetric দিয়ে শুরু, symmetric দিয়ে বাকি কাজ:

  1. ClientHello: browser সার্ভারকে বলে কোন কোন cipher সে জানে।
  2. Certificate: সার্ভার তার Certificate পাঠায়, যাতে তার public key থাকে।
  3. যাচাই: browser certificate-টি বিশ্বস্ত Certificate Authority (CA) সাইন করেছে কিনা দেখে নিশ্চিত হয় সার্ভার আসল।
  4. Key exchange: asymmetric encryption ব্যবহার করে দুই পক্ষ নিরাপদে একটি গোপন symmetric session key ঠিক করে।
  5. নিরাপদ যোগাযোগ: এরপর সব ডেটা ওই দ্রুত symmetric key দিয়ে encrypt হয়ে চলে।

Certificate ও CA

Certificate হলো একটি ডিজিটাল পরিচয়পত্র যা প্রমাণ করে "এই public key সত্যিই এই domain-এর"। Certificate Authority (যেমন Let's Encrypt, DigiCert) এই certificate সাইন করে। browser-এ আগে থেকেই বিশ্বস্ত CA-দের তালিকা থাকে, তাই সে যাচাই করতে পারে। এই পুরো ব্যবস্থায় HTTPS মানে HTTP + TLS।

সহজ উদাহরণ

Asymmetric key অনেকটা চিঠির বাক্সের মতো— সবাই বাক্সে চিঠি ফেলতে পারে (public key দিয়ে encrypt), কিন্তু খোলার চাবি শুধু মালিকের কাছে (private key)। আর TLS handshake-টা পাসপোর্ট চেকিংয়ের মতো: ইমিগ্রেশন তোমার পাসপোর্ট (certificate) দেখে নিশ্চিত হয় এটা সরকার (CA) ইস্যু করেছে, তারপরই তোমাকে বিশ্বাস করে ভেতরে ঢুকতে দেয়।

কৌশল

Encryption at rest vs in transit

  • In transit: ডেটা যখন নেটওয়ার্কে চলছে— browser থেকে সার্ভার, service থেকে service। এর প্রধান হাতিয়ার TLS/HTTPS।
  • At rest: ডেটা যখন ডিস্কে, database-এ বা backup-এ জমা— তখন AES-এর মতো symmetric encryption দিয়ে রক্ষা করা হয়, যাতে ডিস্ক চুরি হলেও ডেটা পড়া না যায়।

ভালো নিরাপত্তার জন্য দুটোই দরকার, একটি অন্যটির বিকল্প নয়।

Hashing-এর জায়গা

Hashing দিয়ে integrity যাচাই হয়— ডেটা বদলায়নি তা নিশ্চিত করা। TLS-এও প্রতিটি message-এর সাথে hash-ভিত্তিক যাচাই থাকে, যাতে মাঝপথে কেউ ডেটা পাল্টালে ধরা পড়ে।

কখন ব্যবহার করবে / করবে না

ইন্টারনেটে যেকোনো ডেটা আদান-প্রদানে সবসময় HTTPS/TLS ব্যবহার করো— এতে আর কোনো বিকল্প নেই। সংবেদনশীল ডেটা (PII, password, financial) at rest-ও encrypt করো।

সাবধান

নিজের তৈরি ("home-made") encryption algorithm কখনো ব্যবহার করো না— এটি ভাঙা প্রায় নিশ্চিত। সবসময় পরীক্ষিত standard (AES, RSA, TLS 1.3) ব্যবহার করো। আর self-signed বা মেয়াদোত্তীর্ণ certificate কখনো production-এ চালিও না; ব্রাউজারের warning ignore করতে ইউজারকে শেখানোই বড় ঝুঁকি।

বাস্তব উদাহরণ

WhatsApp-এর end-to-end encryption এর চমৎকার উদাহরণ। প্রতিটি ডিভাইসের একটি public/private key জোড়া থাকে। তুমি message পাঠালে তা গ্রহীতার public key দিয়ে encrypt হয়, আর শুধু তার private key দিয়ে decrypt করা যায়— এমনকি WhatsApp-এর সার্ভারও পড়তে পারে না। বাস্তবে দ্রুততার জন্য আসল message symmetric key দিয়ে encrypt হয়, আর সেই key asymmetric দিয়ে নিরাপদে বিনিময় হয়— ঠিক TLS-এর মতোই হাইব্রিড কৌশল।

টিপস

ইন্টারভিউতে প্রায়ই জিজ্ঞেস করে "TLS handshake-এ symmetric আর asymmetric দুটোই কেন লাগে?" উত্তর: "Asymmetric নিরাপদ কিন্তু ধীর, তাই শুধু session key বিনিময়ে; এরপর দ্রুত symmetric দিয়ে আসল ডেটা— এটিই hybrid encryption।" Hashing আর encryption-এর পার্থক্যও গুলিয়ে ফেলো না।

মিনি কুইজ

1. Asymmetric encryption-এ কয়টি key ব্যবহার হয়?

2. Hashing আর encryption-এর প্রধান পার্থক্য কী?

3. TLS handshake-এ asymmetric encryption মূলত কীসের জন্য ব্যবহৃত হয়?