FreeBSD pkg 2.8.0 রিলিজ থেকে পর্যায়ক্রমে SHA-256 বাতিল করে চেকসামের জন্য Blake2b ব্যবহার করা হচ্ছে (কোয়ান্টাম সুরক্ষা?)
হ্যালো, আমি অযোগ্য।
যখন freebsd/pkg-এর রিলিজটি গিটহাব টাইমলাইনে ভেসে এল, তখন হঠাৎ করেই আমার চোখে পড়ল Blake2b শব্দটি।
https://github.com/freebsd/pkg/releases#release-2.8.0
- চেকসামের জন্য যেখানে সম্ভব Blake2b ব্যবহার করা হয়েছে; রিপোজিটরিগুলোতে sha256-এর পরিবর্তে blake2 ব্যবহার করা হচ্ছে
মূলত, এই Blake2b নিজেই ২০১৬ সালে GNU coreutils-এর অন্তর্ভুক্ত হয়ে রিলিজ হয়েছিল বলে মনে হয়।
Blake2b আসলে কী?
আগে একবার হালকা করে দেখেছিলাম, তাই শুধু জানতাম এটি একটি হ্যাশ অ্যালগরিদম। তাই আরেকবার যাচাই করে নিলাম।
Rust-এ Blake2 (Blake2b) ইমপ্লিমেন্ট করা #Security - Qiita
Blake2 দুই ধরনের হয়: সাধারণ সংস্করণ Blake2b এবং ছোট সংস্করণ Blake2s। Blake2b ৬৪-বিট আর্কিটেকচারের জন্য এবং Blake2s ৮-৩২ বিটের জন্য।
বুঝতে পেরেছি।
RFC:
RFC 7693 - BLAKE2 ক্রিপ্টোগ্রাফিক হ্যাশ এবং মেসেজ অথেন্টিকেশন কোড (MAC)
এটি Argon2 পাসওয়ার্ড হ্যাশিংয়েও ব্যবহৃত হয়। তাহলে কি ভবিষ্যতে পাসওয়ার্ড হ্যাশিংয়ের জন্য বর্তমানের bcrypt-এর বদলে Argon2 এবং সাধারণ ক্রিপ্টোগ্রাফিক হ্যাশিংয়ের জন্য বর্তমানের SHA-256-এর বদলে Blake2 ব্যবহার করাই আধুনিক ডিজাইন হয়ে উঠবে? যেহেতু ইতিমধ্যে অনেক ইমপ্লিমেন্টেশনে Argon2 ব্যবহার হতে দেখা যাচ্ছে, তাই এটি সম্ভব বলে মনে হয়। তবে, md5sum-এর মতো বিষয়গুলো এখনও হালকা এবং দ্রুত হ্যাশ হিসেবে ব্যবহৃত হচ্ছে, যা সাধারণ ইন্টিগ্রিটি চেক করার জন্য সুবিধাজনক। এমনকি WebSocket হ্যান্ডশেকের ক্ষেত্রেও RFC-তে SHA-1 ব্যবহারের কথা বলা হয়েছে, কারণ WS-এর ক্ষেত্রে এটি পরিবর্তন করার কোনো প্রয়োজন নেই।
এই নথিতে বর্ণিত WebSocket হ্যান্ডশেক SHA-1-এর নিরাপত্তা বৈশিষ্ট্যগুলোর (যেমন সংঘর্ষ প্রতিরোধ বা দ্বিতীয় প্রি-ইমেজ আক্রমণের বিরুদ্ধে প্রতিরোধ) ওপর নির্ভর করে না ([RFC4270]-এ বর্ণিত)।
এই প্রশ্নটি নিয়ে আমি ChatGPT (GPT 5.6)-এর সাথে আলোচনা করেছি।
উপসংহার হলো, আধুনিকীকরণের জন্য Argon2-এ স্থানান্তর সঠিক, কিন্তু ক্রিপ্টোগ্রাফিক হ্যাশ হিসেবে এটি কেবল একটি নতুন বিকল্প যোগ করার মতো।
তবে, FreeBSD যে তাদের pkg-এর checksum ব্যবহারের পদ্ধতি পরিবর্তন করেছে, তা বেশ চমকপ্রদ। ভবিষ্যতে এটি কি স্ট্যান্ডার্ড হয়ে উঠবে?
নিচে GPT 5.6-এর সাথে কথোপকথন দেওয়া হলো:
প্রশ্ন: পাসওয়ার্ড হ্যাশিংয়ের জন্য বর্তমানের bcrypt-এর বদলে Argon2 এবং সাধারণ ক্রিপ্টোগ্রাফিক হ্যাশিংয়ের জন্য বর্তমানের SHA-256-এর বদলে Blake2 ব্যবহার করাই কি আধুনিক ডিজাইন?
উত্তর: হ্যাঁ, পাসওয়ার্ড সংরক্ষণের জন্য bcrypt থেকে Argon2id-এ স্থানান্তরকে নিশ্চিতভাবে "আধুনিকীকরণ" বলা যায়। অন্যদিকে, সাধারণ ক্রিপ্টোগ্রাফিক হ্যাশ হিসেবে SHA-256 থেকে BLAKE2-তে স্থানান্তর সবসময় কেবল একটি প্রজন্মের পরিবর্তন নয়।
পাসওয়ার্ডের ক্ষেত্রে বর্তমান অগ্রাধিকারগুলো হলো:
| ব্যবহার | প্রচলিত | বর্তমান সুপারিশ |
|---|---|---|
| পাসওয়ার্ড সংরক্ষণ | bcrypt | Argon2id |
| পাসওয়ার্ড সংরক্ষণের বিকল্প | PBKDF2 / scrypt | Argon2id / scrypt |
| সাধারণ হ্যাশ | SHA-256 | SHA-256 / SHA-3 / BLAKE2 / BLAKE3 |
| MAC | HMAC-SHA256 | HMAC-SHA256 / keyed BLAKE2 |
| দ্রুত ইন্টিগ্রিটি চেক | SHA-256 | BLAKE2 / BLAKE3 |
OWASP-ও নতুন সিস্টেমের জন্য Argon2id-কে প্রথম পছন্দ হিসেবে সুপারিশ করে এবং bcrypt-কে মূলত বিদ্যমান সিস্টেমের জন্য রেখে দিয়েছে। Argon2id একটি memory-hard KDF, যা CPU লোডের পাশাপাশি মেমরি ব্যবহারকেও আক্রমণের খরচ হিসেবে যুক্ত করে, তাই এটি GPU/ASIC ব্যবহার করে পাসওয়ার্ড ক্র্যাক করার বিরুদ্ধে bcrypt-এর চেয়ে বেশি কার্যকর। (OWASP Cheat Sheet Series)
উদাহরণস্বরূপ, নতুন ইমপ্লিমেন্টেশনের ক্ষেত্রে:
password
↓
Argon2id(
salt = random 128bit,
memory = 64 MiB,
iterations = 3,
parallelism = যথাযথ
)
↓
$argon2id$v=19$m=65536,t=3,p=...
এই ধরনের কনফিগারেশন স্বাভাবিক। RFC 9106-ও Argon2id-এর সুপারিশ করে। (RFC এডিটর)
অন্যদিকে,
SHA-256 → BLAKE2
এর বিষয়টি কিছুটা ভিন্ন।
SHA-256 পুরনো বা অনিরাপদ হয়ে যায়নি।
SHA-256-এর বিরুদ্ধে বর্তমানে কোনো ব্যবহারিক সংঘর্ষ বা প্রি-ইমেজ আক্রমণ জানা নেই এবং সাধারণ ক্রিপ্টোগ্রাফিক ব্যবহারের জন্য এটি এখনও যথেষ্ট শক্তিশালী।
BLAKE2-এর সুবিধাগুলো মূলত:
দ্রুত
+
উচ্চ নিরাপত্তা
+
স্ট্যান্ডার্ড হিসেবে keyed hashing সুবিধা
+
সহজ ইমপ্লিমেন্টেশন
তাই,
পুরনো আধুনিক
bcrypt ───────→ Argon2id
↑বেশ স্পষ্ট
SHA-256 ───────→ BLAKE2
↑
অগত্যা প্রতিস্থাপন নয়
এই বোঝাপড়াটিই কাছাকাছি।
বরং বর্তমান ডিজাইনে,
Password
└─ Argon2id
Cryptographic digest
├─ SHA-256
├─ SHA-3
├─ BLAKE2
└─ BLAKE3
Message authentication
├─ HMAC-SHA256
└─ keyed BLAKE2
এর মতো ব্যবহার অনুযায়ী নির্বাচন করা আধুনিক পদ্ধতি।
বিশেষ করে নতুন কোনো সফটওয়্যার ডিজাইন করার সময়, যদি প্রোটোকল সামঞ্জস্যের মতো কোনো সীমাবদ্ধতা না থাকে, তবে আমি মনে করি:
Password hashing
→ Argon2id
সাধারণ দ্রুত হ্যাশ
→ BLAKE2b / BLAKE3
বাহ্যিক মান/প্রোটোকলের সাথে সামঞ্জস্যের গুরুত্ব
→ SHA-256
MAC
→ HMAC-SHA256
অথবা keyed BLAKE2
এইভাবে চিন্তা করা ভালো।
এবং গুরুত্বপূর্ণ বিষয় হলো BLAKE2 এবং BLAKE3। নতুন ডিজাইনে যদি উদ্দেশ্য হয় "SHA-256 এর চেয়ে নতুন কোনো দ্রুত হ্যাশ ব্যবহার করা", তবে ২০২৬ সালের প্রেক্ষাপটে শুধু BLAKE2 নয়, BLAKE3-কেও বিবেচনায় রাখা উচিত। BLAKE3 সমান্তরালকরণ (parallelization), SIMD এবং বড় ডেটার হ্যাশিংয়ের ক্ষেত্রে অত্যন্ত দ্রুত।
তবে,
SHA-256 → BLAKE3
এটি "নিরাপত্তার খাতিরে SHA-256 বর্জন করা" নয়, বরং,
পারফরম্যান্স এবং এপিআই ডিজাইনের সুবিধা অর্জনের একটি পছন্দ
মাত্র।
অর্থাৎ, আপনার করা প্রশ্ন দুটির বিষয় একই নয়,
bcrypt → Argon2id
নিরাপত্তা ডিজাইনের ক্ষেত্রে স্পষ্টভাবে আধুনিকীকরণের দিকে যাওয়া।
SHA-256 → BLAKE2/BLAKE3
নিরাপত্তার জন্য বাধ্যতামূলক স্থানান্তর নয়, বরং নতুন ডিজাইনে পারফরম্যান্স এবং ব্যবহারের সুবিধার কথা ভেবে নির্বাচন করা।
এই পার্থক্যটি রয়েছে।
যদি বিষয়টি এমন হয় যে "২০২৬ সালে শূন্য থেকে অথেন্টিকেশন, সিগনেচার, এনক্রিপশন এবং ফাইল হ্যাশিং পর্যন্ত এপিআই ডিজাইন করতে হলে কী বেছে নেব", তবে Argon2id / BLAKE3 / XChaCha20-Poly1305 / Ed25519 / X25519-কে কেন্দ্র করে এগোলে তা বেশ আধুনিক একটি কনফিগারেশন হবে।