গত পোস্টে সিমেট্রিক এনক্রিপশনের এলগরিদম নিয়ে আলোচনা করেছি । আজকে অ্যাসিমেট্রিক এনক্রিপশনের এলগরিদম এবং আরও কিছু ভিন্ন এলগরিদম নিয়ে আলোচনা করব।
RSA / Thales RSA
RSA হলো পাবলিক-কী অ্যালগরিদম। Thales-এর মতো HSM ভেন্ডররা নিরাপদ RSA ইমপ্লিমেন্টেশন সরবরাহ করে। উদাহরণ: EMV কার্ড সার্টিফিকেট ভেরিফিকেশন, অথবা HSM-এ কী সাইনিং।
Diffie–Hellman Key Exchange (DHE/ECDH)
দুই পক্ষ নিরাপদে একটি সিক্রেট কী শেয়ার করতে পারে, এমনকি অনিরাপদ চ্যানেলেও। উদাহরণ: TLS হ্যান্ডশেক-এ DHE বা ECDHE দিয়ে সেশন কী তৈরি হয়, যা পরে সিমেট্রিক এনক্রিপশনে ব্যবহৃত হয়।
Shamir’s Secret Sharing (SSS)
কোনো সিক্রেটকে একাধিক অংশে ভাগ করা যায়, যেখানে নির্দিষ্ট সংখ্যক অংশ একত্র করলে মূল সিক্রেট পাওয়া যায়। HSM-এর মাস্টার কী কয়েকজন কাস্টডিয়ানের মধ্যে ভাগ করে রাখা হয়, যাতে এককভাবে কেউ পুরো কী না পায়। প্রত্যেক ভাগ কে Component # নামে ডাকা হয়। যেমন নিচের টেবিলে একটি ১২৮ বিট কী কে ৩টি Component এ ভাগ করা হয়েছে।
Combined Key | 6FF2F4F1C8E3F46D 7BE711E90DBDDE76 | 7561DB (KCV) |
Component 1 | AFE83463A5663DF89A0CB5B7DE92CB26 | BF31D3 (KCV) |
Component 2 | 0298B838B2350373D5D16DBA6F98EE40 | 34EA4E (KCV) |
Component 3 | C28278AADFB0CAE6343AC9E4BCB7FB10 | CA134D (KCV) |
Elliptic-Curve Cryptography (ECC, ECDSA, ECDH)
RSA-এর মতো পাবলিক-কী সিস্টেম, তবে অনেক ছোট কী দিয়ে একই নিরাপত্তা দেয়। কনট্যাক্টলেস কার্ড বা নতুন প্রজন্মের EMV সিস্টেমে ECDSA (সিগনেচার) এবং ECDH (কী এক্সচেঞ্জ) ব্যবহৃত হয়।
Format Preserving Encryption (FPE)
এনক্রিপশনের পরেও ডেটার ফরম্যাট একই থাকে। উদাহরণ: ১৬-ডিজিট PAN এনক্রিপ্ট করলে আউটপুটও ১৬-ডিজিট নাম্বার হবে। তাই ডেটাবেস/লেগেসি সিস্টেমে কাজ করে।
Hash Function
ডেটা থেকে নির্দিষ্ট দৈর্ঘ্যের ফিঙ্গারপ্রিন্ট (ডাইজেস্ট) তৈরি করে; একমুখী, উল্টানো যায় না। API সিগনেচার ভেরিফিকেশন বা টোকেনাইজেশনে PAN ট্রাঙ্কেশন করতে ব্যবহৃত হয়।
Padding এবং Cipher Modes (ECB, CBC, OAEP)
- Padding: ব্লক সাইজের সাথে মিল না হলে বাড়তি ডেটা যোগ করা হয়।
- ECB: প্রতিটি ব্লক আলাদা এনক্রিপ্ট হয় — ঝুঁকিপূর্ণ, কারণ প্যাটার্ন বের হয়ে যায়।
- CBC: প্রতিটি ব্লক আগের ব্লকের সাথে XOR করে এনক্রিপ্ট হয়, তাই নিরাপদ।
- OAEP: RSA এনক্রিপশনের জন্য বিশেষ প্যাডিং, যাতে রিপিটেবল আক্রমণ ঠেকানো যায়। উদাহরণ: কার্ড ডেটা এনক্রিপশনে CBC ব্যবহার হয়; RSA দিয়ে কী এনক্রিপ্ট করলে OAEP দরকার হয়।
MAC (Message Authentication Code) — CMAC, HMAC, DSS/DSA, ECDSA
- MAC (সিমেট্রিক): মেসেজের অখণ্ডতা ও সত্যতা যাচাই করতে ব্যবহৃত হয়। যেমন: CMAC (AES/3DES), HMAC (SHA ভিত্তিক)। উদাহরণ: ISO 8583 মেসেজে MAC দেওয়া হয় যাতে ব্যাংক যাচাই করতে পারে মেসেজ পাল্টানো হয়নি।
- ডিজিটাল সিগনেচার (অ্যাসিমেট্রিক): DSS/DSA, ECDSA → প্রাইভেট কী দিয়ে সাইন, পাবলিক কী দিয়ে ভেরিফাই। উদাহরণ: EMV সার্টিফিকেট চেইনে সিগনেচার ভেরিফিকেশন।
Randomness এবং Key Derivation
- Randomness: শক্তিশালী র্যান্ডম নাম্বার দরকার সঠিক কী, নন্স, IV তৈরির জন্য। দুর্বল হলে পুরো সিস্টেম ভেঙে পড়বে।
- Key Derivation Function (KDF): একটি মাস্টার কী থেকে আলাদা কনটেক্সটে নতুন কী তৈরি করে। উদাহরণ: DUKPT-এ প্রতিটি ট্রানজ্যাকশনের জন্য নতুন কী; TLS-এ শেয়ারড সিক্রেট থেকে সেশন কী তৈরি হয়।
Key Trust এবং Certificates (TLS, mTLS)
সার্ভার/ক্লায়েন্ট সার্টিফিকেট (X.509) দিয়ে তাদের পরিচয় যাচাই হয়। TLS Handshake এর মাধ্যমে ব্রাউজার পেমেন্ট গেটওয়ের মধ্যে নিরাপদ কানেকশন গড়ে তোলে। অপরদিকে mTLS এর উভয় দিকেই অথেন্টিকেশন হয় এর মানে ক্লায়েন্ট ও সার্ভার উভয়ই সার্টিফিকেট প্রেজেন্ট করে। আমরা দৈনন্দিন ইন্টারনেট ব্যবহারে এটি হর হামেশাই ব্যবহার করি। এটি নিয়ে আমি সামনে আরও বিস্তারিত পোস্ট করব। উদাহরণ: অনলাইন পেমেন্ট গেটওয়ের API কল সাধারণত mTLS দিয়ে সুরক্ষিত হয়।
সামারি হল, আধুনিক POS-এ AES-DUKPT ব্যবহার করা হয়, 3DES ধীরে ধীরে বাদ দেওয়া হচ্ছে। API ও ISO-8583 মেসেজে MAC (CMAC/HMAC) ব্যবহার করা হয় এখন। ওয়েব/API ট্রান্সপোর্টে TLS (ECDHE suites) ব্যবহার করা হয়। ডেটাবেসে PAN সংরক্ষণের ক্ষেত্রে FPE বা টোকেনাইজেশন ব্যবহার করুন। মাস্টার কী সবসময় HSM-এ রাখতে হয়, প্রয়োজনে Shamir Secret Sharing দিয়ে ভাগ করে কী কাস্টডিয়ান / কী অফিসার এর মাধ্যমে আদান প্রদান করা হয়।
Key / Certs জেনারেশন ও দেখার জন্য আরেকটি দরকারী টুল হল KeyStore Explorer। এছাড়া EFTLab er Cryptographic Calculator বেশ ভাল কাজে দেয়। কিন্তু এখন এটি পেইড টুল হয়ে গেছে।
