FreeBSD pkg 2.8.0 রিলিজ থেকে পর্যায়ক্রমে SHA-256 বাদ দিয়ে চেকসামের জন্য Blake2b ব্যবহার করা হবে বলে মনে হচ্ছে (কোয়ান্টাম সুরক্ষা?)
হ্যালো, আমি অযোগ্য (munou)।
যখন আমি গিটহাব টাইমলাইনে freebsd/pkg-এর রিলিজটি দেখলাম, তখন হঠাৎ করেই আমার চোখে পড়ল Blake2b শব্দটি।
https://github.com/freebsd/pkg/releases#release-2.8.0
- Blake2b used everywhere possible for checksums; repositories use blake2 instead of sha256
মূলত এই Blake2b নিজেই ২০১৬ সালে GNU coreutils-এর অন্তর্ভুক্ত হয়ে রিলিজ হয়েছিল বলে মনে হয়।
Blake2b আসলে কী?
আমি আগে একবার হালকাভাবে দেখেছিলাম এবং শুধু জানতাম যে এটি একটি হ্যাশ অ্যালগরিদম, তাই বিষয়টি আরেকবার যাচাই করে নিলাম।
Rust-এ Blake2 (Blake2b) ইমপ্লিমেন্ট করা #Security - Qiita
Blake2 দুই ধরনের হয়: সাধারণ সংস্করণ Blake2b এবং ছোট সংস্করণ Blake2s। Blake2b ৬৪-বিট সিস্টেমের জন্য এবং Blake2s ৮-৩২ বিটের জন্য।
বুঝতে পেরেছি।
RFC:
RFC 7693 - The BLAKE2 Cryptographic Hash and Message Authentication Code (MAC)
এটি Argon2 পাসওয়ার্ড হ্যাশিংয়েও ব্যবহৃত হয়। তাহলে কি ভবিষ্যতে পাসওয়ার্ড হ্যাশিংয়ের জন্য bcrypt-এর বদলে Argon2 এবং সাধারণ ক্রিপ্টোগ্রাফিক হ্যাশিংয়ের জন্য SHA-256-এর বদলে Blake2 ব্যবহার করাই আধুনিক ডিজাইন হয়ে উঠবে?
যেহেতু বর্তমানেই অনেক জায়গায় Argon2-এর ব্যবহার দেখা যাচ্ছে, তাই এটি সম্ভব বলে মনে হয়। তবে, md5sum-এর মতো টুলগুলো এখনও হালকা ও দ্রুত হ্যাশ হিসেবে ব্যবহৃত হচ্ছে এবং সাধারণ ডেটা ইন্টিগ্রিটি চেক করার জন্য এগুলো সুবিধাজনক। এমনকি WebSocket হ্যান্ডশেকের ক্ষেত্রেও RFC-তে SHA-1 ব্যবহারের কথা উল্লেখ আছে, কারণ WS-এর ক্ষেত্রে এটি পরিবর্তন করার কোনো প্রয়োজন নেই।
এই নথিতে বর্ণিত WebSocket হ্যান্ডশেক SHA-1-এর নিরাপত্তা বৈশিষ্ট্যের (যেমন সংঘর্ষ প্রতিরোধ বা দ্বিতীয় প্রি-ইমেজ আক্রমণের বিরুদ্ধে প্রতিরোধ) ওপর নির্ভর করে না ([RFC4270]-এ বর্ণিত)।
RFC 6455 - The WebSocket Protocol
এই প্রশ্নটি নিয়ে আমি 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 শুধুমাত্র CPU লোড নয়, বরং মেমরি ব্যবহারের ওপর ভিত্তি করে আক্রমণ খরচ নির্ধারণ করে (memory-hard KDF), যা 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 Editor)
অন্যদিকে,
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 সমান্তরাল প্রসেসিং, SIMD এবং বড় ডেটা হ্যাশ করার ক্ষেত্রে অত্যন্ত দ্রুত।
তবে,
SHA-256 → BLAKE3
এটিও "নিরাপত্তার খাতিরে SHA-256 বর্জন করা" নয়, বরং:
পারফরম্যান্স এবং এপিআই ডিজাইনের সুবিধা গ্রহণ করার একটি সিদ্ধান্ত
মাত্র।
অর্থাৎ, প্রশ্নের দুটি বিষয় একই সারির নয়, বরং:
bcrypt → Argon2id
নিরাপত্তা ডিজাইনের ক্ষেত্রে স্পষ্টভাবে আধুনিকীকরণের দিকে যাওয়া।
SHA-256 → BLAKE2/BLAKE3
নিরাপত্তার জন্য বাধ্যতামূলক স্থানান্তর নয়, বরং নতুন ডিজাইনে পারফরম্যান্স এবং ব্যবহারের সুবিধার কথা ভেবে নির্বাচন করা।
এই পার্থক্যটি রয়েছে।
যদি বিষয়টি আরও প্রসারিত করে বলি যে, "২০২৬ সালে শূন্য থেকে অথেন্টিকেশন, সিগনেচার, এনক্রিপশন এবং ফাইল হ্যাশসহ এপিআই ডিজাইন করতে হলে কী বেছে নেব?" তবে Argon2id / BLAKE3 / XChaCha20-Poly1305 / Ed25519 / X25519-কে কেন্দ্র করে এগোলে তা বেশ আধুনিক একটি কনফিগারেশন হবে।