এনক্রিপশন হলো সাধারণ ডেটাকে (plaintext) কোডে (ciphertext) রূপান্তর করা, আর ডিক্রিপশন হলো সেটাকে আবার পড়ার মতো অবস্থায় ফিরিয়ে আনা। এর ফলে কম্পিউটার সিস্টেমে সংরক্ষিত তথ্য কিংবা ইন্টারনেটের মতো নেটওয়ার্কের মাধ্যমে প্রেরিত ডেটা নিরাপদ থাকে।
এনক্রিপশন ব্যবহারের মাধ্যমে আপনার প্রেরিত, গ্রহণকৃত ও সংরক্ষিত ডেটাকে সুরক্ষিত রাখা সম্ভব। অর্থাৎ, পাঠযোগ্য টেক্সটকে এমনভাবে রূপান্তর করা হয় যাতে কেবল সেই ব্যক্তি পড়তে পারে যার কাছে গোপন কোড বা ডিক্রিপশন কী রয়েছে। ফলে সংবেদনশীল তথ্যের গোপনীয়তা ও নিরাপত্তা বজায় থাকে।
পেমেন্ট উদাহরণ: কোনো POS টার্মিনাল যখন গ্রাহকের PIN ব্যাংকে পাঠায়, তখন সেটি আগে এনক্রিপ্ট করা হয়। পরে ব্যাংকের HSM সেটি ডিক্রিপ্ট/ভেরিফাই করে।
সিমেট্রিক ও অ্যাসিমেট্রিক এনক্রিপশন:
এনক্রিপশন কাজ করে একটি বিশেষ কী-এর মাধ্যমে। এই কী মূলত একটি সংখ্যার সিরিজ, যা এনক্রিপশন অ্যালগরিদম দ্বারা তৈরি হয়। প্রতিটি কী-ই এলোমেলো এবং একক/অনন্য। ক্রিপ্টোগ্রাফির ক্ষেত্রে দুটি মূল এনক্রিপশন পদ্ধতি রয়েছে—
- সিমেট্রিক : এখানে একই কী ব্যবহার করা হয় এনক্রিপশন ও ডিক্রিপশনের জন্য। দ্রুত কাজ করে এবং বড় ডেটার জন্য ব্যবহৃত হয়।
- উদাহরণ: DUKPT (Derived Unique Key Per Transaction) প্রযুক্তিতে প্রতিটি ট্রানজ্যাকশনের জন্য নতুন কী তৈরি হয়।
- অ্যাসিমেট্রিক : এখানে দুটি কী থাকে, পাবলিক কী ও প্রাইভেট কী। পাবলিক দিয়ে এনক্রিপশন বা ভেরিফিকেশন হয়, আর প্রাইভেট দিয়ে ডিক্রিপশন বা সাইনিং।
- উদাহরণ: RSA EMV কার্ড সার্টিফিকেট ভেরিফিকেশনে ব্যবহার হয়;
- TLS হ্যান্ডশেক-এ সার্ভার/ক্লায়েন্টের মধ্যে কী এক্সচেঞ্জে ব্যবহার হয়।

সিমেট্রিক এনক্রিপশনের জন্য জনপ্রিয় এলগরিদমগুলো হল Double DES, Triple DES এবং AES.
DES (Single DES)
অ্যালগরিদমটি একটি 64-bit plaintext block নেয় এবং সেটিকে 16 রাউন্ডে এনক্রিপ্ট করে, যেখানে মূলত 56-bit key ব্যবহার হয়। সুতরাং DES key হলো 64-bit লম্বা যাকে বলা হয় Single-length DES Key কিন্তু এর মধ্যে 8-bit parity checking এর জন্য সংরক্ষিত থাকে (প্রতি 7-bit এর জন্য 1 parity bit) । ফলে প্রকৃত এনক্রিপশনের জন্য থাকে 56-bit এবং তাই effective key strength = 56-bit।
বর্তমানে DES অসুরক্ষিত হিসেবে বিবেচিত। কারণ 56-bit key খুবই ছোট, আধুনিক কম্পিউটার brute-force attack ব্যবহার করে এক দিনেরও কম সময়ে DES ভেঙে ফেলতে পারে।
উদাহরন: 9E2C9D0207D5EFE0
Double DES (2DES)
এখানে ব্যবহার হয় দুটি আলাদা 64-bit key — KeyA এবং KeyB। ফলে মোট key length দাঁড়ায় 128-bit এজন্য একে বলা হয় Double-length Key (128-bit DES key)। তবে parity checking এর কারনেEffective strength = 112-bit (2 × 56)। এখানে ডেটা এনক্রিপ্ট হয় দুই ধাপে
- Plaintext প্রথমে KeyA দিয়ে এনক্রিপ্ট হয়।
- সেই ciphertext আবার KeyB দিয়ে এনক্রিপ্ট হয়।
Single DES থেকে এটি শক্তিশালী হলেও 2DES আসলে নিরাপদ নয়। কারণ এটি meet-in-the-middle attack-এর জন্য দুর্বল। এই আক্রমণে এনক্রিপশন ভাঙতে সময় ও পরিশ্রম অনেক কম লাগে। ফলস্বরূপ, এর কার্যকরী নিরাপত্তা DES-এর তুলনায় খুব সামান্য বেশি।
উদাহরন: 16101C83012A3B97 61705B38F780BAC4
Triple-DES (3DES)
এখানে ব্যবহৃত হয় তিনটি 64-bit key (KeyA, KeyB এবং KeyC)। ফলে মোট key length হয় 192-bit (3-key 3DES)। তবে parity checking এর কারনেEffective strength = 168-bit (3 × 56)
ডেটা এনক্রিপশনের সবচেয়ে প্রচলিত পদ্ধতি হলো EDE (Encrypt–Decrypt–Encrypt) । প্রথমে KeyA দিয়ে Encrypt, তারপর KeyB দিয়ে Decrypt, শেষে আবার KeyC দিয়ে Encrypt। এই কাঠামো বানানো হয়েছিল backward compatibility বজায় রাখার জন্য, অর্থাৎ যদি তিনটি key একই হয়, তবে এটি single DES-এর মতোই কাজ করবে।
DES বা 2DES এর তুলনায় 3DES অনেক বেশি নিরাপদ। তবে এটি অনেক ধীরগতি সম্পন্ন, কারণ একাধিকবার এনক্রিপ্ট করতে হয়। meet-in-the-middle attack এখানে key strength কমিয়ে 168-bit থেকে 112-bit-এ নামিয়ে আনে। এছাড়া 3DES এর 64-bit block size থাকার কারণে এটি Sweet32 attack-এর ঝুঁকিতে থাকে, যদি একই key দিয়ে প্রচুর পরিমাণ ডেটা এনক্রিপ্ট করা হয়।
তাই বাস্তবে অনেক প্রতিষ্টান এখনও Double-length Key (128-bit DES key) ব্যবহার এবং একে 3DES অ্যালগরিদম ব্যবহার করার জন্য KeyA আবার শেষে ব্যবহার করা হয়। ফলে Double-length Key টি একটি Triple -length Key (KeyA, KeyB এবং KeyA) তে পরিণত হয়।
উদাহরন: CC8E39F7608E796C 1FE145E7B6CE134A 2C910614A59B5FD2 ও 16101C83012A3B97 61705B38F780BAC4 16101C83012A3B97
AES:
AES হলো একটি Symmetric Block Cipher Algorithm, যেটি DES এবং 3DES-এর বিকল্প হিসেবে তৈরি করা হয়। বর্তমানে এটি বিশ্বব্যাপী ডেটা এনক্রিপশনের গোল্ড স্ট্যান্ডার্ড। এটি একটি Substitution–Permutation Network (SPN) মডেলে কাজ করে। প্রতিটি রাউন্ডে থাকে: SubBytes, ShiftRows, MixColumns, AddRoundKey।
AES তিনটি key length সাপোর্ট করে 128, 192, 256-bit, যেহেতু এতে কোনো parity bit ব্যবহার হয় না, তাই সবগুলো bit কার্যকরী।
- AES-128 → 128-bit effective (১০ রাউন্ড)
- AES-192 → 192-bit effective (১২ রাউন্ড)
- AES-256 → 256-bit effective (১৪ রাউন্ড – সবচেয়ে নিরাপদ)
POS/HSM-এ আগে 3DES দিয়ে PIN এনক্রিপ্ট হতো, এখন নিরাপত্তার জন্য AES-এ শিফট করা হচ্ছে।
AES 256 bit key এর উদাহরন : 489B8F407E761D06 B7AF44F44B7C9D7F 7187722F9F5BB69A 353E23CE1FF644CF
Parity Bits (Odd vs Even)
Parity bit হলো একটি অতিরিক্ত bit যা ডেটা ট্রান্সমিশন বা স্টোরেজে ত্রুটি (error) শনাক্ত করার জন্য যোগ করা হয়। DES keys-এ প্রতিটি ৮ম bit হলো parity bit (এটি এনক্রিপশনে ব্যবহৃত হয় না)। এর উদ্দেশ্য Key সঠিকভাবে সংরক্ষণ/প্রেরণ হয়েছে কিনা যাচাই করা।
- Odd parity: মোট 1 এর সংখ্যা (parity bit সহ) বেজোড় (odd) হতে হবে। যেমন Byte: 1010001 → (৩টা ১ আছে, বিজোড়) → Parity bit = 0
- Even parity: মোট 1 এর সংখ্যা (parity bit সহ) জোড় (even) হতে হবে। যেমন Byte: 1010010 → (২টা ১ আছে, জোড়) → Parity bit = 1 (যাতে মোট সংখ্যা বিজোড় হয়)
পেমেন্ট সিস্টেমে সাধারণত odd parity ব্যবহৃত হয় (যেমন HSM, Thales, Atalla)।
Key Check Value (KCV)
Key Check Value (KCV) হলো একটি ক্রিপ্টোগ্রাফিক ফিঙ্গারপ্রিন্ট, যা symmetric key-এর সত্যতা যাচাই ও তুলনা করার জন্য ব্যবহার করা হয়—কিন্তু আসল key প্রকাশ না করেই। নির্দিষ্ট একটি ব্লক (যেমন সবগুলো শূন্য বা সবগুলো এক) ডেটা কী দিয়ে এনক্রিপ্ট করা হয় এবং প্রাপ্ত সাইফারটেক্সটের একটি অংশ (যেমন প্রথম 24 বা 40 বিট) নেওয়া হয় KCV হিসেবে। এক কথায় Parity Bit ডেটা পাঠানো/সংরক্ষণের সময় ত্রুটি চেক করে, অপরদিকে KCV হল সিকিউর কী যাচাই করার জন্য ক্রিপ্টোগ্রাফিক ফিঙ্গারপ্রিন্ট।
উদাহরণ: Key = A4C969DB03604A7B, Encrypt(0000) → 176F01540F0AB405 সুতরাং KCV = 176F01
Effective Key Lengths টেবিল
অ্যালগরিদম | Nominal Key Size | Effective Strength |
DES | 64-bit | 56-bit |
Double DES | 128-bit (2×64) | ~112-bit (দুর্বল, তাই আলাদাভাবে খুব কম ব্যবহৃত হয়) |
Triple DES (2 keys) | 128-bit (K1, K2, K1) | 112-bit |
Triple DES (3 keys) | 192-bit (K1, K2, K3) | 168-bit |
AES-128 | 128-bit | 128-bit |
AES-192 | 192-bit | 192-bit |
AES-256 | 256-bit | 256-bit |
আগামী পোস্টে এনক্রিপশনের অ্যাসিমেট্রিক এলগরিদম নিয়ে আলোচনা করব । Key জেনারেশনের জন্য EMVLab এর Keyshare বেশ ভাল কাজে দেয়: https://emvlab.org/keyshares/