ডেটা এনক্রিপশন হল একটি প্রক্রিয়া যা ডেটাকে এমন একটি ফরম্যাটে রূপান্তরিত করে যা শুধুমাত্র অনুমোদিত পক্ষগুলি পড়তে বা বুঝতে পারে। এনক্রিপশন মূলত ডেটার গোপনীয়তা এবং নিরাপত্তা নিশ্চিত করার জন্য ব্যবহৃত হয়, বিশেষত যখন ডেটা ট্রান্সমিট করা হয় বা স্টোরেজে রাখা হয়। এটি একটি গুরুত্বপূর্ণ নিরাপত্তা প্রক্রিয়া যা সাইবার আক্রমণ, তথ্য চুরি বা হ্যাকিং থেকে ডেটা সুরক্ষিত রাখে।
এনক্রিপশন বিভিন্ন পদ্ধতিতে করা যেতে পারে, এবং এই পদ্ধতিগুলোর মধ্যে কিছু সাধারণ এবং জনপ্রিয় হল:
১. সিমেট্রিক এনক্রিপশন (Symmetric Encryption)
সিমেট্রিক এনক্রিপশনে একই কী (শব্দ বা পাসওয়ার্ড) ব্যবহৃত হয় ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য। এই পদ্ধতিতে, এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য একই কী ব্যবহৃত হয়, এবং এটি দ্রুত হলেও নিরাপত্তা ঝুঁকি থাকতে পারে যদি কী লিক হয়ে যায়।
জনপ্রিয় সিমেট্রিক এনক্রিপশন অ্যালগরিদম:
- AES (Advanced Encryption Standard): এটি সর্বাধিক ব্যবহৃত সিমেট্রিক এনক্রিপশন অ্যালগরিদম, যা দ্রুত এবং নিরাপদ।
- DES (Data Encryption Standard): একটি পুরানো এনক্রিপশন অ্যালগরিদম, যা এখন নিরাপত্তার দৃষ্টিকোণ থেকে দুর্বল।
উদাহরণ: AES এনক্রিপশন (Python-এ PyCryptodome লাইব্রেরি ব্যবহার করে)
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
# কিপার সৃষ্টি
key = get_random_bytes(16) # 128-bit key
# এনক্রিপ্ট করা
cipher = AES.new(key, AES.MODE_CBC)
data = b"Sensitive data"
ciphertext = cipher.encrypt(pad(data, AES.block_size))
# ডিক্রিপ্ট করা
decipher = AES.new(key, AES.MODE_CBC, cipher.iv)
plaintext = unpad(decipher.decrypt(ciphertext), AES.block_size)
print("Encrypted:", ciphertext)
print("Decrypted:", plaintext)
এখানে AES.MODE_CBC হল ব্লক চিপারের মোড, যেখানে pad এবং unpad ডেটার সাইজ ব্লক আকারে মেলানোর জন্য ব্যবহৃত হয়।
২. অ্যাসিমেট্রিক এনক্রিপশন (Asymmetric Encryption)
অ্যাসিমেট্রিক এনক্রিপশনে দুটি কী ব্যবহৃত হয় — একটি পাবলিক কী (public key) এবং একটি প্রাইভেট কী (private key)। পাবলিক কী ব্যবহার করে ডেটা এনক্রিপ্ট করা হয় এবং প্রাইভেট কী ব্যবহার করে ডেটা ডিক্রিপ্ট করা হয়। এর ফলে, প্রাইভেট কী শুধুমাত্র গোপন থাকে এবং পাবলিক কী সবার কাছে শেয়ার করা যায়।
জনপ্রিয় অ্যাসিমেট্রিক এনক্রিপশন অ্যালগরিদম:
- RSA (Rivest-Shamir-Adleman): এটি সবচেয়ে জনপ্রিয় অ্যাসিমেট্রিক এনক্রিপশন অ্যালগরিদম, যা নিরাপদ যোগাযোগের জন্য ব্যবহৃত হয়।
উদাহরণ: RSA এনক্রিপশন (Python-এ PyCryptodome লাইব্রেরি ব্যবহার করে)
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Random import get_random_bytes
# কী জেনারেশন
key = RSA.generate(2048)
private_key = key
public_key = key.publickey()
# এনক্রিপ্ট করা
cipher = PKCS1_OAEP.new(public_key)
data = b"Sensitive data"
ciphertext = cipher.encrypt(data)
# ডিক্রিপ্ট করা
decipher = PKCS1_OAEP.new(private_key)
plaintext = decipher.decrypt(ciphertext)
print("Encrypted:", ciphertext)
print("Decrypted:", plaintext)
এখানে RSA.generate(2048) দিয়ে একটি 2048-বিট কিপেয়ার তৈরি করা হয়েছে এবং PKCS1_OAEP মোড ব্যবহার করা হয়েছে যা RSA এনক্রিপশনে নিরাপত্তা বৃদ্ধি করে।
৩. হ্যাশিং (Hashing)
হ্যাশিং হল একটি একমুখী প্রক্রিয়া, যেখানে ডেটা এনক্রিপ্ট না করেই একটি হ্যাশ মান (fixed-size) তৈরি করা হয়। হ্যাশিং সাধারণত পাসওয়ার্ড সংরক্ষণ এবং যাচাই করার জন্য ব্যবহৃত হয়। হ্যাশিং একবার প্রক্রিয়া সম্পন্ন হলে, মূল ডেটা থেকে হ্যাশ মান পুনরুদ্ধার করা সম্ভব নয়।
জনপ্রিয় হ্যাশিং অ্যালগরিদম:
- SHA-256 (Secure Hash Algorithm 256-bit): এটি একটি নিরাপদ হ্যাশিং অ্যালগরিদম, যা বিভিন্ন নিরাপত্তা ব্যবস্থায় ব্যবহৃত হয়।
- MD5: এটি একটি পুরানো হ্যাশ অ্যালগরিদম, তবে বর্তমানে এটি নিরাপত্তার জন্য দুর্বল।
উদাহরণ: SHA-256 হ্যাশিং (Python-এ hashlib লাইব্রেরি ব্যবহার করে)
import hashlib
# পাসওয়ার্ড হ্যাশিং
password = "mysecretpassword"
hashed_password = hashlib.sha256(password.encode()).hexdigest()
print("Hashed Password:", hashed_password)
এখানে hashlib.sha256 ব্যবহার করে একটি পাসওয়ার্ডের হ্যাশ মান তৈরি করা হয়েছে।
৪. Hybrid Encryption
Hybrid এনক্রিপশন হল একটি মিশ্র পদ্ধতি যা সিমেট্রিক এবং অ্যাসিমেট্রিক এনক্রিপশনের সুবিধাগুলি একত্রিত করে। প্রথমে অ্যাসিমেট্রিক এনক্রিপশন দ্বারা একটি সিমেট্রিক কী নিরাপদভাবে স্থানান্তরিত করা হয় এবং তারপর সেই কী ব্যবহার করে সিমেট্রিক এনক্রিপশন দিয়ে ডেটা এনক্রিপ্ট করা হয়।
উদাহরণ:
- প্রথমে অ্যাসিমেট্রিক এনক্রিপশন ব্যবহার করে সিমেট্রিক কী তৈরি করা।
- তারপর সিমেট্রিক কী ব্যবহার করে ডেটা এনক্রিপ্ট করা।
৫. End-to-End Encryption (E2EE)
End-to-End Encryption হল একটি প্রক্রিয়া যেখানে ডেটা একমাত্র প্রেরক এবং প্রাপকের মধ্যে এনক্রিপ্ট করা থাকে। এটি সাধারণত মেসেজিং অ্যাপ্লিকেশন বা ফাইল শেয়ারিং সিস্টেমে ব্যবহৃত হয়। এতে করে শুধুমাত্র প্রেরক এবং প্রাপক ডেটার প্রকৃত কন্টেন্ট দেখতে পারে, অন্যান্য পক্ষের কাছে এটি অজানা থাকে।
উদাহরণ:
- WhatsApp এবং Signal অ্যাপ্লিকেশনগুলি End-to-End এনক্রিপশন ব্যবহার করে তাদের ব্যবহারকারীদের মধ্যে ডেটা সুরক্ষিত রাখতে।
সারাংশ
ডেটা এনক্রিপশন বিভিন্ন পদ্ধতির মাধ্যমে ডেটার গোপনীয়তা এবং নিরাপত্তা নিশ্চিত করে:
- সিমেট্রিক এনক্রিপশন: একটি কী ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করা হয়।
- অ্যাসিমেট্রিক এনক্রিপশন: দুটি কী ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করা হয়।
- হ্যাশিং: ডেটার একমুখী হ্যাশ তৈরি করে, যা ডেটা পুনরুদ্ধার করা যায় না।
- Hybrid Encryption: সিমেট্রিক এবং অ্যাসিমেট্রিক এনক্রিপশনের মিশ্রণ।
- End-to-End Encryption: ডেটা শুধু প্রেরক এবং প্রাপক এর মধ্যে এনক্রিপ্ট থাকে।
এনক্রিপশন ব্যবহারে ডেটার নিরাপত্তা বাড়ানো হয় এবং সাইবার আক্রমণ থেকে রক্ষা করা হয়।
Read more